FFmpeg is a free and open-source software project consisting of a large suite of libraries and programs for handling video, audio, and other multimedia files and streams. At its core is the FFmpeg program itself, designed for command-line-based processing of video and audio files. It is widely used for format transcoding, basic editing (trimming and concatenation), video scaling, video post-production effects and standards compliance (SMPTE, ITU).

FFmpeg includes libavcodec, an audio/video codec library used by many commercial and free software products, libavformat (Lavf),[7] an audio/video container mux and demux library, and the core ffmpeg command-line program for transcoding multimedia files.

FFmpeg is part of the workflow of hundreds of other software projects, and its libraries are a core part of software media players such as VLC, and has been included in core processing for YouTube and iTunes. Codecs for the encoding and/or decoding of most audio and video file formats is included, making it highly useful for the transcoding of common and uncommon media files into a single common format.

The name of the project is inspired by the MPEG video standards group, together with "FF" for "fast forward".[8] The logo uses a zigzag pattern that shows how MPEG video codecs handle entropy encoding.[9]

FFmpeg is published under the GNU Lesser General Public License 2.1+ or GNU General Public License 2+ (depending on which options are enabled).[10]


The project was started by Fabrice Bellard[10] (using the pseudonym "Gérard Lantau") in 2000, and was led by Michael Niedermayer from 2004 until 2015.[11] Some FFmpeg developers were also part of the MPlayer project.

On January 10, 2014, two Google employees announced that over 1000 bugs had been fixed in FFmpeg during the previous two years by means of fuzz testing.[12]

In January 2018, the ffserver command-line program – a long-time component of FFmpeg – was removed.[13] The developers had previously deprecated the program citing high maintenance efforts due to its use of internal application programming interfaces.[14]

The project publishes a new release every three months on average. While release versions are available from the website for download, FFmpeg developers recommend that users compile the software from source using the latest build from their source code Git version control system.[15]

Codec history

Two video coding formats with corresponding codecs and one container format have been created within the FFmpeg project so far. The two video codecs are the lossless FFV1, and the lossless and lossy Snow codec. Development of Snow has stalled, while its bit-stream format has not been finalized yet, making it experimental since 2011. The multimedia container format called NUT is no longer being actively developed, but still maintained.[16]

In summer 2010, Fiona Glaser, Ronald Bultje, and David Conrad of the FFmpeg Team announced the ffvp8 decoder. Through testing, they determined that ffvp8 was faster than Google's own libvpx decoder.[17][18] Starting with version 0.6, FFmpeg also supported WebM and VP8.[19]

In October 2013, a native VP9[20] and the OpenHEVC decoder, an open source High Efficiency Video Coding (HEVC) decoder, were added to FFmpeg.[21] In 2016 the native AAC encoder was considered stable, removing support for the two external AAC encoders from VisualOn and FAAC. FFmpeg 3.0 (nicknamed "Einstein") retained build support for the Fraunhofer FDK AAC encoder.[22] Since version 3.4 "Cantor" FFmpeg supported the FITS image format.[23] Since November 2018 in version 4.1 "al-Khwarizmi" AV1 can be muxed in MP4 and Matroska incl. WebM.[24][25]


On March 13, 2011, a group of FFmpeg developers decided to fork the project under the name "Libav".[26][27][28] The event was related to an issue in project management, in which developers disagreed with the leadership of FFmpeg.[29][30][31]


Command line tools