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.
Architecture fit
php-ffmpeg/php-ffmpeg by Alchemy) is a thin, object-oriented wrapper that shells out to the ffmpeg/ffprobe binaries via Symfony Process. It is framework-agnostic and drops into Laravel cleanly: no service provider needed, config is constructor-injected, and it composes well with Storage, queued jobs, and Horizon.php-ffmpeg from prior work, and it makes the API more predictable to reason about from upstream docs.ffmpeg invocation may be cheaper to own.Integration feasibility
TranscodeMedia job dispatched to a dedicated queue, writing to a temp disk and publishing to S3/CDN on success. That is well-trodden and low-risk to prototype.1.x tag. Evaluate this as a major-version change until the diff says otherwise.Technical risk
composer.json diff. PHP ceiling and Symfony Process major-version compatibility must be re-verified from scratch; a rebase is exactly when these move silently.libx264/GPL builds where policy requires it).Key questions
composer.json diff say?Stack fit
Storage (S3 or equivalent) for assets, a Redis-backed queue, Horizon for supervision, and FFmpeg baked into the application container image at a pinned version.MediaProcessor interface from day one. This remains the single most valuable decision: it converts an unmaintained dependency into a swappable implementation detail, and it makes the upstream-vs-fork question fully reversible. v1.2.0 tracking upstream makes that swap cheaper still, since the fork's API now resembles upstream's more closely.Migration path
php-ffmpeg/php-ffmpeg (upstream) and apply the fork's reverts as a small local patch or a Composer VCS fork of upstream pinned to a commit. v1.2.0 makes this materially easier than before, because it gives us a clean, recent upstream base to fork from and an articulated set of reverts to reapply.vcs Composer repository at the exact v1.2.0 tag or commit and vendor-lock it. No floating constraint.exec('ffmpeg ...') calls, if any, migrate behind the same interface so there is one code path to observe and rate-limit.Compatibility
composer.json and the lockfile between the previous tag and v1.2.0 before upgrading, and assert the PHP constraint ceiling in CI on both 8.2 and 8.3. Do not accept --ignore-platform-reqs as a fix; treat any need for it as an escalation.ffmpeg -version and fails fast.Sequencing
Maintenance
Support
Scaling
Failure modes
ffmpeg processes are the classic symptom.ffprobe and a dedicated temp volume with a quota.Ramp-up
How can I help you explore Laravel packages today?