protonemedia/php-ffmpeg
A PHP wrapper for FFmpeg that simplifies video and audio processing. Convert formats, generate thumbnails, resize and clip media, extract frames, and read metadata through a clean, object-oriented API. Requires the FFmpeg binaries to be installed on your server.
Feature-level decisions (the capability class, not this fork specifically):
exec() calls and hand-rolled command strings (cheap now, expensive to maintain) vs. an object-oriented wrapper that models formats, filters, codecs, and progress callbacks.Specific to this package: it should not be used to make any of the above decisions. With 1 star, 0 dependents, and no release since January 2022, it carries no adoption signal and no maintenance guarantee. It is a fork of the widely used php-ffmpeg/php-ffmpeg inside the Protone Media org — the interesting artifact from that org is its Laravel integration (pbmedia/laravel-ffmpeg, formerly protonemedia/laravel-ffmpeg), not this vendored fork.
Consider the category (a PHP FFmpeg wrapper) when:
Look elsewhere when:
php-ffmpeg/php-ffmpeg upstream, or a higher-level Laravel wrapper that tracks it, and add Spatie Media Library if you also need storage/URL lifecycle management.For executives: "We need video thumbnails and preview clips to ship feature X. There are two paths: outsource encoding to a managed service at roughly $Y per minute of video, or run FFmpeg on servers we already pay for. The self-hosted path is cheaper at our current volume but makes us responsible for the encoding binary, queue capacity, and failures. A PHP library is what makes the self-hosted path cheap to build — it's a thin wrapper, days of work, not a platform project."
For engineering: "A PHP FFmpeg wrapper gives us an object-oriented API for formats, filters, codecs, and progress callbacks, so media logic reads like application code instead of shell strings, and it sits naturally in queued jobs. Be explicit about the dependency: the specific fork linked here is effectively abandoned — one star, zero dependents, last release January 2022 — so the recommendation is upstream php-ffmpeg/php-ffmpeg or a maintained Laravel wrapper such as pbmedia/laravel-ffmpeg, with the FFmpeg binary pinned in the image. Budget for the unglamorous parts: container image size, worker CPU sizing, temp-file cleanup, timeouts, and retry semantics. If any of those turn into a recurring tax, that's our signal to move to a managed encoder — and we should keep the wrapper behind an interface so that swap stays a weekend, not a quarter."
Bottom line: the capability is worth adopting; this artifact is not. Approve the feature on the strength of a maintained wrapper, and revisit build-vs-buy when monthly encoding volume or on-call load crosses a threshold we agree on up front.
How can I help you explore Laravel packages today?