pbmedia/laravel-ffmpeg
Laravel 10 integration for FFmpeg via PHP-FFMpeg with seamless Laravel Filesystem/config/logging support. Create HLS (encrypted/rotating keys), thumbnails/frames, mosaics/sprites, VTT previews, watermarks, concat, multi I/O, complex filters and timelapses.
ffmpeg-php directly)?composer require pbmedia/laravel-ffmpeg
Add FFmpeg binaries to PATH or configure via .env:
FFMPEG_BINARIES=/usr/bin/ffmpeg
FFMPEG_FORMATS=...
php artisan vendor:publish --provider="Protonemedia\LaravelFFMpeg\LaravelFFMpegServiceProvider"
Customize config/laravel-ffmpeg.php (e.g., paths, formats, threads).use FFMpeg\FFMpeg;
use FFMpeg\Format\Video\X264;
$ffmpeg = app('ffmpeg');
$video = $ffmpeg->open('path/to/input.mp4');
$video->filters()->resize(320, 240);
$video->save('path/to/output.mp4');
use Illuminate\Bus\Queueable;
use Protonemedia\LaravelFFMpeg\Jobs\FFMpegJob;
class ProcessVideoJob extends Job {
use Queueable;
public function handle() {
$ffmpeg = app('ffmpeg');
// ... processing logic
}
}
.env, config/laravel-ffmpeg.php).ffmpeg.org static builds).ffprobe or Laravel Horizon.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| FFmpeg binary missing | All video processing fails | Dockerize FFmpeg or use system package managers. |
| Queue worker crashes | Unprocessed jobs pile up | Supervisor/queue retries, dead-letter queues. |
| Storage permission denied | Files not saved/read | Configure proper IAM roles (S3) or chmod (local). |
| Corrupt input file | FFmpeg crashes or produces errors | Validate files pre-processing; fallback formats. |
| Laravel service container fail | FFMpeg instance unavailable | Health checks, retries with fresh container. |
| High load on shared hosting | Timeouts or killed processes | Offload to dedicated workers or serverless. |
How can I help you explore Laravel packages today?