It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. It contains libavcodec, libavutil, libavformat, libavfilter, libavdevice, libswscale and libswresample which can be used by applications. As well as ffmpeg, ffserver, ffplay and ffprobe which can be used by end users for transcoding, streaming and playing

The FFmpeg project tries to provide the best technically possible solution for developers of applications and end users alike. To achieve this we combine the best free software options available. We slightly favor our own code to keep the dependencies on other libs low and to maximize code sharing between parts of FFmpeg. Wherever the question of "best" cannot be answered we support both options so the end user can choose.

Security is a high priority and code review is always done with security in mind. Though due to the very large amounts of code touching untrusted data security issues are unavoidable and thus we provide as quick as possible updates to our last stable releases when new security issues are found.

Everyone is welcome in FFmpeg and all contributions are welcome too. We are happy to receive patches, pull requests, bug reports, donations or any other type of contribution.

FFmpeg provides various tools:

  • ffmpeg is a command line tool to convert multimedia files between formats.
  • ffserver is a multimedia streaming server for live broadcasts.
  • ffplay is a simple media player based on SDL and the FFmpeg libraries.
  • ffprobe is a is a simple multimedia stream analyzer.

and developers libraries:

  • libavutil is a library containing functions for simplifying programming, including random number generators, data structures, mathematics routines, core multimedia utilities, and much more.
  • libavcodec is a library containing decoders and encoders for audio/video codecs.
  • libavformat is a library containing demuxers and muxers for multimedia container formats.
  • libavdevice is a library containing input and output devices for grabbing from and rendering to many common multimedia input/output software frameworks, including Video4Linux, Video4Linux2, VfW, and ALSA.
  • libavfilter is a library containing media filters.
  • libswscale is a library performing highly optimized image scaling and color space/pixel format conversion operations.
  • libswresample is a library performing highly optimized audio resampling, rematrixing and sample format conversion operations.

What's New

The more important highlights of the release are that the VVC decoder, merged as experimental in version 7.0, has had enough time to mature and be optimized enough to be declared as stable. The codec is starting to gain traction with broadcast standardization bodies.
Support has been added for a native AAC USAC (part of the xHE-AAC coding system) decoder, with the format starting to be adopted by streaming websites, due to its extensive volume normalization metadata.
MV-HEVC decoding is now supported. This is a stereoscopic coding tool that begun to be shipped and generated by recent phones and VR headsets.
LC-EVC decoding, an enhancement metadata layer to attempt to improve the quality of codecs, is now supported via an external library.

Support for Vulkan encoding, with H264 and HEVC was merged. This finally allows fully Vulkan-based decode-filter-encode pipelines, by having a sink for Vulkan frames, other than downloading or displaying them. The encoders have feature-parity with their VAAPI implementation counterparts. Khronos has announced that support for AV1 encoding is also coming soon to Vulkan, and FFmpeg is aiming to have day-one support.

In addition to the above, this release has had a lot of important internal work done. By far, the standout internally are the improvements made for full-range images. Previously, color range data had two paths, no negotiation, and was unreliably forwarded to filters, encoders, muxers. Work on cleaning the system up started more than 10 years ago, however this stalled due to how fragile the system was, and that breaking behaviour would be unacceptable. The new system fixes this, so now color range is forwarded correctly and consistently everywhere needed, and also laid the path for more advanced forms of negotiation.
Cropping metadata is now supported with Matroska and MP4 formats. This metadata is important not only for archival, but also with AV1, as hardware encoders require its signalling due to the codec not natively supporting one.

As usual, we recommend that users, distributors, and system integrators to upgrade unless they use current git master.