FFmpeg 9.0, a major update to the open-source multimedia framework that powers countless applications from video players to large-scale transcoding services, has been released. Codenamed "Reade," this version introduces support for the next-generation Versatile Video Coding (VVC) standard, implements a new versioning system, and delivers a host of new filters, hardware acceleration improvements, and API changes. The official release notes detail the full scope of the update.
For developers and system administrators, the release signifies both new capabilities and necessary integration work. As a foundational component of the internet's media infrastructure, updates to FFmpeg have a cascading effect, enabling new formats and efficiencies in software like VLC, Plex, OBS Studio, and web browsers. This release is particularly notable for its structural changes to the project itself and for providing the first tools for a post-HEVC video landscape.
A New Naming Convention
One of the most immediate changes in FFmpeg 9.0 is the project's versioning scheme. The long-standing major.minor system (e.g., 6.0, 6.1) has been retired in favor of a single, incrementing integer. This release is simply version 9, and the next is expected to be 10.
This change reflects a shift in development philosophy. Rather than debating whether a set of features constitutes a "major" or "minor" release, the project has adopted a more streamlined, time-based approach. The goal is to issue a new release approximately every six months, with the version number serving as a simple marker for that release cycle. This aligns FFmpeg with other large-scale open-source projects that have moved to a more predictable and less semantically-loaded versioning cadence.
For users who compile FFmpeg from source or package it for distributions, this simplifies tracking. For developers using the FFmpeg libraries, the more important signal of change remains the major version number of the individual libraries (libavcodec, libavformat, etc.), all of which have been bumped in this release to indicate API and ABI breaks.
The Next Generation of Video: VVC Support
The headline feature of FFmpeg 9.0 is the introduction of support for Versatile Video Coding (VVC), also known as H.266. VVC is the formal successor to High Efficiency Video Coding (HEVC/H.265), developed to deliver significantly better compression efficiency. The goal is to provide the same visual quality as HEVC at a substantially lower bitrate, which is critical for 4K/8K streaming, cloud gaming, and other bandwidth-intensive applications.
FFmpeg 9.0 includes several key components for the VVC ecosystem:
- A native VVC decoder: This allows applications built on FFmpeg to play back video encoded with VVC.
- An experimental VVC encoder: The encoder is not yet considered production-ready, but its inclusion allows developers and researchers to begin experimenting with VVC content creation.
- VVC demuxer and muxer for the MP4 container: This provides the necessary tooling to package VVC video streams into standard
.mp4files.
The inclusion of VVC in FFmpeg is a critical first step toward its broader adoption. While hardware support in consumer devices is still nascent, the availability of a robust software decoder in the industry's most-used multimedia framework enables the development and testing that must precede any mainstream rollout. However, like its predecessor HEVC, the adoption of VVC will also be heavily influenced by its patent licensing landscape, which remains complex.
Expanded Filtering and Processing Capabilities
Beyond new codecs, FFmpeg's power lies in its vast library of audio and video filters. Version 9.0 adds several new tools that simplify complex operations and enable new types of analysis.
Most notably, the new xfadechain (video) and afadechain (audio) filters allow users to define a complex series of crossfades and transitions in a simple text file. Previously, chaining multiple fades required constructing a long and often unwieldy filtergraph in the command line. With these new filters, a user can specify a list of input files, their durations, and the transitions between them externally.
For example, a command might look like this:
ffmpeg -f concat -i playlist.txt -filter_complex xfadechain -c:v libx264 -preset medium out.mp4
Where playlist.txt contains the instructions for the filter. This dramatically improves the usability of FFmpeg for creating simple edits, slideshows, or concatenating clips with professional transitions without resorting to a full non-linear editor.
Other new filters include:
showspatial: A video filter that visualizes the spatial relationship between pixels, useful for analyzing the behavior of other spatial filters.ssim360: A filter designed to calculate the Structural Similarity Index (SSIM), a metric for measuring image quality, specifically for 360-degree/equirectangular video.corr: A video filter that calculates the correlation between two video streams, which can be used for synchronization and analysis tasks.
Hardware Acceleration and Platform Support
As video resolutions and frame rates increase, software-only processing becomes less practical. FFmpeg continues to expand its support for hardware-accelerated video decoding, encoding, and filtering. The 9.0 release brings several important updates:
- Direct3D 12 Support: FFmpeg now supports video decoding and processing via the Direct3D 12 API on Windows. This modernizes its integration with the Windows graphics stack, potentially offering better performance and interoperability with other D3D12-based applications.
- Intel Quick Sync Video (QSV): The QSV implementation, which leverages dedicated media hardware on Intel CPUs, now supports AV1 10-bit 4:2:2 encoding.
- Loongson Architecture: The release adds support for the LoongArch instruction set architecture and Loongson SIMD extensions, providing optimized performance on Loongson CPUs.
- VAAPI: The Video Acceleration API, primarily used on Linux, has received improvements for use with AMD hardware.
These updates ensure that FFmpeg can take advantage of specialized hardware across a wider range of platforms, reducing CPU load and improving performance for common multimedia tasks.
For Developers: API and Library Changes
FFmpeg 9.0 is a major release, and as such, it includes breaking changes to its core libraries. The major version numbers of all libav* libraries (e.g., libavutil, libavcodec, libavformat) have been incremented. Developers who dynamically or statically link against FFmpeg will need to recompile their applications and adapt their code to the new APIs.
Key API changes highlighted in the release notes include:
- A new, more extensible
AVChannelLayoutAPI for managing audio channel layouts. - The addition of a
frameratefield to theAVCodecParametersstruct, simplifying the process of retrieving frame rate information. - New functions for deriving hardware device contexts, such as
av_hwdevice_ctx_create_derived.
The project also continues its ongoing effort to modernize the codebase by deprecating older functions. The function avcodec_get_context_defaults3() has been deprecated, and developers are encouraged to migrate away from it.
Deprecations and Housekeeping
A sign of a healthy, evolving project is the willingness to remove old, unmaintained, or superseded code. FFmpeg 9.0 continues this practice by removing several components:
- The wrapper for the external
libvo-aacenclibrary has been removed. FFmpeg has long had a superior internal AAC encoder, making the wrapper redundant. - The native Indeo Video 3 decoder has been removed.
- Support for VAAPI Vulkan interoperability was removed due to a lack of maintenance and known issues.
This cleanup reduces the maintenance burden on the FFmpeg development team and streamlines the codebase by focusing on modern, high-quality components.
What to Watch Next
The release of FFmpeg 9.0 sets the stage for the next phase of digital media. For developers, the immediate task is to adapt to the updated APIs and begin integrating the new features. For the broader ecosystem, the most significant long-term development is the introduction of VVC support. While its widespread adoption is still years away and contingent on hardware availability and licensing, its presence in FFmpeg is a necessary prerequisite.
The project's move to a faster, single-integer release cycle suggests that users can expect FFmpeg 10 within the next year, continuing a steady pace of innovation. The focus will likely remain on improving support for new codecs like VVC, expanding hardware acceleration capabilities, and refining the vast toolset that has made FFmpeg an indispensable part of modern software.