Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ffmpeg Bundle Laravel Package

fmonts/ffmpeg-bundle

A Symfony bundle that integrates FFmpeg into your PHP applications via the PHP-FFMpeg library, making it easy to transcode video and audio, extract thumbnails, read media metadata, and apply filters or watermarks through a simple, service-based API.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for media plumbing. This package is not a transcoding engine — it is a thin Symfony DI wrapper around php-ffmpeg/php-ffmpeg. The real build/buy decision is "direct PHP-FFmpeg vs. managed service (Mux, Cloudflare Stream, AWS Elemental)," and this bundle only informs the small "how much glue code do we write" slice of that.
  • Feature scoping for video/audio ingestion. Useful when roadmap items are thumbnails, preview clips, format normalization, or audio extraction on upload — i.e., transcoding as a supporting capability, not the product.
  • Framework-alignment check. This is a Symfony bundle, not a Laravel package. 0.8.7 extends the supported range to Symfony 5, 6, 7, and 8. If our stack is Laravel, this remains a non-option and the decision collapses to "use php-ffmpeg/php-ffmpeg directly" or "buy managed." Flag this before it burns estimation time.
  • Buy-vs-fork on maintenance. The package exists because the upstream was forked to support newer Symfony versions. 0.8.7 is a positive signal — the maintainer is actively tracking Symfony's release train (Symfony 8 constraint added, Symfony 7.4 deprecation in the XML service config fixed). But it also confirms the pattern: this wrapper's roadmap is dictated entirely by Symfony's deprecation schedule, not by our media needs. Every Symfony upgrade becomes a dependency-upgrade task.
  • Sizing the integration estimate. If we are on Symfony, this realistically saves a few hours of service-definition and config-parameter wiring. It does not reduce the hard parts: queue workers, FFmpeg binary provisioning, storage I/O, timeout/retry, and progress reporting. The 0.8.7 XML→PHP config migration is internal plumbing and does not change that estimate.

When to Consider This Package

Adopt (or, more precisely, evaluate) when all of the following hold:

  • We are on Symfony 5, 6, 7, or 8. On Laravel or framework-agnostic PHP, skip it.
  • We are on Symfony 7.4+ and would otherwise eat deprecation noise — in that case 0.8.7 is the minimum acceptable version, since it is the release that replaces the XML service configuration causing the Symfony 7.4 deprecation. Do not evaluate older tags.
  • Transcoding is peripheral to the product (a handful of jobs per day, not a media pipeline), so a small convenience wrapper is proportionate.
  • We need fast wiring — injecting an FFmpeg service via the container rather than hand-rolling config and factory code.
  • We are willing to own it: pin the version, vendor or mirror the source, and accept that a low-star, zero-dependent repo has a bus factor of roughly one — even with a responsive maintainer.
  • Legal has cleared the license. NOASSERTION is not a license — it means the metadata could not be machine-classified. 0.8.7 does not change this. Do not ship this into a commercial codebase until someone reads the actual LICENSE file and confirms terms and fork obligations.

Look elsewhere when:

  • Stack is Laravel or non-Symfony — use php-ffmpeg/php-ffmpeg directly; the bundle adds nothing.
  • Volume or SLA matters — high-throughput transcoding belongs on dedicated workers or a managed service, not a DI wrapper invoked in-request.
  • Dependency governance is strict — the recent releases improve the story but do not create a release cadence guarantee, downstream validation, or a support commitment. An unmaintained wrapper is a future forced migration.
  • License provenance is unresolved — NOASSERTION alone is often enough to disqualify a dependency in regulated or IP-sensitive contexts.
  • You need capabilities beyond FFmpeg invocation — adaptive bitrate ladders, DRM, CDN integration, per-title encoding: buy managed.

Mitigation if adopted: pin >= 0.8.7, wrap it behind an internal MediaTranscoder interface so the bundle is a swappable detail rather than an architectural commitment. Because 0.8.7 changes container configuration from XML to PHP, add a smoke test that boots the container and resolves the FFmpeg service on our target Symfony version — service IDs and config keys are the most likely place for a silent change. The escape hatch (call php-ffmpeg directly) costs roughly a day.

How to Pitch It (Stakeholders)

To executives: This is a small, low-cost convenience library, not a strategic dependency. It would save our engineers a few hours of plumbing if we are on Symfony (versions 5–8); it saves nothing if we are on Laravel. The newest release is a maintenance release — added Symfony 8 support and fixed a deprecation on Symfony 7.4 — which is reassuring but also illustrates the risk: this library's roadmap is driven by framework churn, so each Symfony upgrade becomes a small dependency task for us. The material risks remain governance, not technology: very low adoption, no downstream users, a single maintainer, and a license we cannot machine-verify. Recommendation stands: treat the underlying php-ffmpeg library as the real dependency, keep it behind our own interface, and revisit managed media services if transcoding becomes customer-facing at scale. No budget decision required beyond a legal review of the license.

To engineering: 0.8.7 adds a Symfony 8 composer constraint and migrates the service config from XML to PHP to clear the Symfony 7.4 deprecation. If you are on Symfony 7.4 or planning 8, pin 0.8.7 or later — earlier tags will emit deprecation notices, and older tags cannot install on Symfony 8. Expect no consumer-facing API change from the XML→PHP swap, but verify: boot the kernel, resolve the FFmpeg service, and check any overridden service IDs/config parameters still bind. Note the Symfony 8 support is a composer.json constraint change, so confirm CI actually exercises it before we rely on it. Otherwise the guidance from the prior assessment is unchanged: container-injected FFmpeg in an afternoon, vendor and pin the source, keep it out of domain code, and assume we inherit maintenance — the fork exists precisely because upstream Symfony support lapsed. On Laravel, this is still a dead end: go straight to php-ffmpeg/php-ffmpeg and write the ~20 lines of service wiring yourself.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels