FFmpeg libavfilter docs detail multi-input filtergraph construction syntax
FFmpeg documentation details the implementation of libavfilter for constructing complex multi-input, multi-output video processing filtergraphs. It describes filtergraph syntax, chaining, and the use of graph2dot for visualization. This documentation is foundational for developers building encoding and video processing pipelines.
Key Takeaways
- Filters in linear chains are separated by commas; distinct parallel chains are separated by semicolons; stream junction points are labeled with bracketed names like [main] and [tmp]
- Filters can have multiple inputs and multiple outputs, enabling split/overlay patterns where a single input is routed through divergent paths and merged back together
- Source filters accept no audio/video input; sink filters produce no audio/video output, providing entry and exit points for filtergraph construction
- graph2dot, included in FFmpeg's tools directory, converts filtergraph descriptions into Graphviz dot format for visual debugging of pipeline topologies
- Filter parameters follow the filter name after an equal sign, separated by colons — e.g., crop=iw:ih/2:0:0
Why It Matters
The filtergraph syntax documented here is the backbone of every FFmpeg-based video processing pipeline, from simple transcodes to the multi-lane encoding workflows that platforms like Meta run at hyperscale. With libavfilter actively evolving — FFmpeg 8.1.1 shipped libavfilter 11.14.101 in May 2026, adding Vulkan compute-based filters and D3D12 filtering options — developers building on filtergraphs now have GPU-accelerated filter implementations alongside the traditional software path. Watch for adoption of the Vulkan compute-based filters added in 8.1, which remove runtime GLSL compilation and reduce initialization time for hardware-accelerated pipelines.
Additional Context
FFmpeg 8.1.1 "Hoare," released May 4, 2026, ships libavfilter 11.14.101 and adds Vulkan compute-based filters including ProRes encode/decode and DPX decode, along with D3D12-based scale, deinterlace, and mestimate filters, per the FFmpeg release announcement (March 2026). The release notes that Vulkan compute-based codecs and filters no longer depend on runtime GLSL compilation, reducing initialization overhead for GPU-accelerated pipelines. Meta's engineering team published a detailed account (per Engineering at Meta, March 2026) of their migration from an internal FFmpeg fork to upstream FFmpeg for all VOD and livestreaming pipelines. The migration relied on two upstreamed features: threaded multi-lane transcoding (finalized in FFmpeg 8.0) and real-time quality metrics via in-loop decoding (available since FFmpeg 7.0). Meta executes ffmpeg and ffprobe binaries tens of billions of times daily, making filtergraph efficiency a material cost driver. The blog credits contributions from FFlabs and VideoLAN developers for the upstreaming effort. Active libavfilter development continues on the master branch. A June 7, 2026 commit by Michael Niedermayer touched 136 libavfilter files to implement per-slice boundary computation via ff_slice_pos(), a behavior-preserving change for non-overflowing cases. A January 2026 commit replaced generic format negotiation functions with type-safe variants across roughly 98 filter files, preventing undefined behavior under the -fshort-enums compiler flag. A Vulkan compute-based v360 filter for 360-degree video projection conversion was added in April 2026, contributing 593 lines across six files.
Read full article at ffmpeg.org
Get this in your inbox → Subscribe
Enjoy our coverage?
Add StreamingMeme as a preferred source on Google to see more of our streaming news at the top of your Search results.
Add as preferred source