ac/transcoding-bundle
Symfony bundle that wires AC\Transcoding\Transcoder as a container service. Configure FFmpeg and/or HandBrakeCLI paths/timeouts, register custom adapters/presets/listeners via tags, and run CLI commands to transcode files or check adapter/preset status.
transcoder service, which can be consumed anywhere in the application (controllers, services, commands). This minimizes direct dependency sprawl.app/config.yml setup is straightforward, reducing boilerplate. However, environment-specific paths (e.g., ffmpeg, HandBrakeCLI) may require infrastructure coordination.transcoder:transcode) enable non-code workflows (e.g., batch processing), which can be useful for DevOps or scheduled tasks.php-ffmpeg, league/glide for images).composer.json:
composer require ac/transcoding-bundle
app/config.yml:
ac_transcoding:
ffmpeg:
enabled: true
path: /usr/local/bin/ffmpeg
timeout: 30 # Add timeout for safety
handbrake:
enabled: true
path: /usr/local/bin/HandBrakeCLI
use Symfony\Component\DependencyInjection\ContainerInterface;
$transcoder = $container->get('transcoder');
$output = $transcoder->transcodeWithPreset('/input.mp4', 'handbrake.classic', '/output.mp4');
use AC\Transcoding\Transcoder;
public function __construct(private Transcoder $transcoder) {}
transcoder:transcode command works:
php bin/console transcoder:transcode input.mp4 handbrake.classic output.mp4
services.yml):
services:
app.custom_preset:
class: App\Transcoding\CustomPreset
tags: [transcoding.preset]
transcoding.* may need adjustments).AC\Transcoding\Transcoder class and manage dependencies (FFmpeg/HandBrake paths, etc.).RUN apt-get update && apt-get install -y ffmpeg handbrake-cli
AppKernel.php (Symfony2) or config/bundles.php (Symfony3+).app/config.yml paths post-deployment.AmericanCouncils/Transcoding for breaking changes.composer.json to avoid surprises:
"ac/transcoding-bundle": "1.0.*"
# app/config_{env}.yml
ac_transcoding:
ffmpeg:
path: "%env(FFMPEG_PATH)%"
UPGRADE.md.$PATH or misconfigured.timeout in config or implement retries.// Dispatch a message
$message = new TranscodeMessage($inputFile, $preset, $outputFile);
$this->messageBus->dispatch($message);
// Later, process in a worker
public function __invoke(TranscodeMessage $message) {
$transcoder->transcode
How can I help you explore Laravel packages today?