FFmpeg is a
free and open-source software
Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
project consisting of a suite of
libraries and
programs
Program, programme, programmer, or programming may refer to:
Business and management
* Program management, the process of managing several related projects
* Time management
* Program, a part of planning
Arts and entertainment Audio
* Programm ...
for handling video, audio, and other
multimedia files and streams. At its core is the
command-line ffmpeg
tool itself, designed for processing of video and audio files. It is widely used for format
transcoding, basic editing (trimming and
concatenation),
video scaling
A video scaler is a system which converts video signals from one display resolution to another; typically, scalers are used to convert a signal from a lower resolution (such as 480p standard definition) to a higher resolution (such as 1080i hig ...
, video
post-production
Post-production is part of the process of filmmaking, video production, audio production, and photography. Post-production includes all stages of production occurring after principal photography or recording individual program segments.
The ...
effects and standards compliance (
SMPTE,
ITU).
FFmpeg also includes other tools:
ffplay
, a simple media player and
ffprobe
, a command-line tool to display media information. Among included libraries are
libavcodec, an audio/video
codec library used by many commercial and free software products, libavformat (Lavf),
an audio/video
container mux and demux library, and libavfilter, a library for enhancing and editing filters through a
Gstreamer-like filtergraph.
FFmpeg is part of the workflow of many 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
Bilibili
Bilibili (stylized bilibili), nicknamed B Site, is a video sharing website based in Shanghai where users can submit, view and add overlaid commentary on videos. Since the mid-2010s, Bilibili began to expand to a broader audience from its origi ...
. Encoders and decoders for many audio and video file formats are included, making it highly useful for the transcoding of common and uncommon media files.
FFmpeg is published under the
LGPL-2.1-or-later or
GPL-2.0-or-later, depending on which options are enabled.
History
The project was started by
Fabrice Bellard (using the
pseudonym "Gérard Lantau") in 2000, and was led by Michael Niedermayer from 2004 until 2015.
Some FFmpeg developers were also part of the
MPlayer project.
The name of the project is inspired by the
MPEG video standards group, together with "FF" for "fast forward". The logo uses a
zigzag pattern that shows how MPEG video codecs handle
entropy encoding.
On March 13, 2011, a group of FFmpeg developers decided to fork the project under the name
Libav. The event was related to an issue in project management, in which developers disagreed with the leadership of FFmpeg.
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
Fuzz may refer to:
* ''Fuzz'' (film), a 1972 American comedy
* '' Fuzz: When Nature Breaks the Law'', a nonfiction book by Mary Roach
* The fuzz, a slang term for police officers
Music
* Fuzz (electric guitar), distortion effects to create "wa ...
.
In January 2018, the ''ffserver'' command-line program – a long-time component of FFmpeg – was removed. The developers had previously deprecated the program citing high maintenance efforts due to its use of internal
application programming interface
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how t ...
s.
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.
Codec history
Two
video coding formats with corresponding codecs and one
container format
A container format (informally, sometimes called a wrapper) or metafile is a file format that allows multiple data streams to be embedded into a single file, usually along with metadata for identifying and further detailing those streams. Notab ...
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.
In summer 2010, FFmpeg developers Fiona Glaser, Ronald Bultje, and David Conrad, announced the ffvp8 decoder. Through testing, they determined that ffvp8 was faster than Google's own
libvpx decoder. Starting with version 0.6, FFmpeg also supported
WebM and
VP8.
In October 2013, a native
VP9 decoder and OpenHEVC, an open source
High Efficiency Video Coding (HEVC) decoder, were added to FFmpeg.
In 2016 the native
AAC
AAC may refer to:
Aviation
* Advanced Aircraft, a company from Carlsbad, California
* Alaskan Air Command, a radar network
* American Aeronautical Corporation, a company from Port Washington, New York
* American Aviation, a company from Cleveland, ...
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.
Since version 3.4 ''"Cantor"'' FFmpeg supported the
FITS
Flexible Image Transport System (FITS) is an open standard defining a digital file format useful for storage, transmission and processing of data: formatted as multi-dimensional arrays (for example a 2D image), or tables. FITS is the most com ...
image format.
Since November 2018 in version 4.1 ''"al-Khwarizmi"''
AV1 can be muxed in
MP4 and
Matroska incl.
WebM.
Components
Command line tools
* ''ffmpeg'' is a command-line tool that converts audio or video formats. It can also capture and encode in real-time from various hardware and software sources such as a TV capture card.
* ''ffplay'' is a simple media player utilizing
SDL and the FFmpeg libraries.
* ''ffprobe'' is a command-line tool to display media information (text,
CSV,
XML,
JSON
JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other ser ...
), see also
Mediainfo.
Libraries
* ''libswresample'' is a library containing audio
resampling routines.
* ''libavresample'' is a library containing audio resampling routines from the
Libav project, similar to ''libswresample'' from ''ffmpeg''.
* ''
libavcodec'' is a library containing all of the native FFmpeg audio/video encoders and decoders. Most codecs were developed from scratch to ensure best performance and high code reusability.
* ''libavformat'' (Lavf)
is a library containing demuxers and muxers for audio/video container formats.
* ''libavutil'' is a helper library containing routines common to different parts of FFmpeg. This library includes hash functions, ciphers,
LZO decompressor and
Base64 encoder/decoder.
* ''libpostproc'' is a library containing older
H.263
H.263 is a video compression standard originally designed as a low-bit-rate compressed format for videotelephony. It was standardized by the ITU-T Video Coding Experts Group (VCEG) in a project ending in 1995/1996. It is a member of the H.26x fam ...
based
video postprocessing routines.
* ''libswscale'' is a library containing video
image scaling and
colorspace/pixelformat conversion routines.
* ''libavfilter'' is the substitute for vhook which allows the video/audio to be modified or examined between the decoder and the encoder. Filters have been ported from many projects including
MPlayer and
avisynth.
* ''libavdevice'' is a library containing audio/video io through internal and external devices.
Supported hardware
CPUs
FFmpeg encompasses software implementations of video and audio compressing and decompressing algorithms. These can be compiled and run on diverse instruction sets.
Many widespread
instruction set
In computer science, an instruction set architecture (ISA), also called computer architecture, is an abstract model of a computer. A device that executes instructions described by that ISA, such as a central processing unit (CPU), is called an ' ...
s are supported by FFmpeg, including
x86 (
IA-32 and
x86-64), PPC (
PowerPC
PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
),
ARM,
DEC Alpha,
SPARC, and
MIPS.
Special purpose hardware
There are a variety of
application-specific integrated circuits (ASICs) for audio/video compression and decompression. These ASICs can partially or completely offload the computation from the host CPU. Instead of a complete implementation of an algorithm, only the
API is required to use such an ASIC.
Use with the FFmpeg utility
Internal hardware acceleration decoding is enabled through the
-hwaccel
option. It starts decoding normally, but if a decodable stream is detected in hardware, then the decoder designates all significant processing to that hardware, thus accelerating the decoding process. Whereas if no decodable streams are detected (as happens on an unsupported codec or profile), hardware acceleration will be skipped and it will still be decoded in software.
-hwaccel_device
option is applied when the hardware requires a particular device to function especially when there are several graphic cards available.
Supported codecs and formats
Image formats
FFmpeg supports many common and some uncommon image formats.
The PGMYUV image format is a homebrewn variant of the binary (P5) PGM
Netpbm format. FFmpeg also supports 16-bit depths of the PGM and PPM formats, and the binary (P7)
PAM format with or without alpha channel, depth 8 bit or 16 bit for
pix_fmts
''monob, gray, gray16be, rgb24, rgb48be, ya8, rgba, rgb64be''.
Supported formats
In addition to
FFV1 and Snow formats, which were created and developed from within FFmpeg, the project also supports the following formats:
The data can be passed through without being processed through
-c copy
. One use is cutting video footage without requiring the time and processing of re-encoding.
Muxers
Output formats (container formats and other ways of creating output streams) in FFmpeg are called "muxers". FFmpeg supports, among others, the following:
*
AIFF
*
ASF
*
AVI
Avi is a given name, usually masculine, often a diminutive of Avram, Avraham, etc. It is sometimes feminine and a diminutive of the Hebrew spelling of Abigail.
People with the given name include:
* Avi (born 1937), Newbery award-winning Americ ...
and also input from
AviSynth
* BFI
*
CAF
*
FLV
*
GIF
The Graphics Interchange Format (GIF; or , see pronunciation) is a bitmap image format that was developed by a team at the online services provider CompuServe led by American computer scientist Steve Wilhite and released on 15 June 1987. ...
*
GXF, General eXchange Format, SMPTE 360M
*
HLS, HTTP Live Streaming
*
IFF
In logic and related fields such as mathematics and philosophy, "if and only if" (shortened as "iff") is a biconditional logical connective between statements, where either both statements are true or both are false.
The connective is bicondi ...
*
ISO base media file format (including
QuickTime
QuickTime is an extensible multimedia framework developed by Apple Inc., capable of handling various formats of digital video, picture, sound, panoramic images, and interactivity. Created in 1991, the latest Mac version, QuickTime X, is avai ...
,
3GP
3GP (3GPP file format) is a multimedia container format defined by the Third Generation Partnership Project (3GPP) for 3G UMTS multimedia services. It is used on 3G mobile phones but can also be played on some 2G and 4G phones.
3G2 (3GPP2 ...
and
MP4)
*
Matroska (including
WebM)
*
Maxis XA
*
MPEG-DASH
*
MPEG program stream
*
MPEG transport stream
MPEG transport stream (MPEG-TS, MTS) or simply transport stream (TS) is a standard digital container format for transmission and storage of audio, video, and Program and System Information Protocol (PSIP) data. It is used in broadcast systems ...
(including
AVCHD)
*
MXF, Material eXchange Format, SMPTE 377M
* MSN Webcam stream
* NUT
*
Ogg
*
OMA
*
RL2
* Segment, for creating segmented video streams
*
Smooth Streaming
Adaptive bitrate streaming is a technique used in streaming multimedia over computer networks. While in the past most video or audio streaming technologies utilized streaming protocols such as RTP with RTSP. Today's adaptive streaming technol ...
* TXD
*
WTV
Pixel formats
FFmpeg supports many pixel formats. Some of these formats are only supported as input formats. The command
ffmpeg -pix_fmts
provides a list of supported pixel formats.
FFmpeg does not support IMC1-IMC4, AI44, CYMK,
RGBE, Log RGB and other formats. It also does not yet support
ARGB 1:5:5:5,
2:10:10:10, or other
BMP bitfield formats that are not commonly used.
Supported protocols
Open standards
*IETF
RFCs:
**
FTP
**
Gopher
**
HLS
**
HTTP
**
HTTPS
**
RTP
**
RTSP
**
SCTP
**
SDP
**
SRTP
**
TCP
TCP may refer to:
Science and technology
* Transformer coupled plasma
* Tool Center Point, see Robot end effector
Computing
* Transmission Control Protocol, a fundamental Internet standard
* Telephony control protocol, a Bluetooth communication s ...
**
TLS
TLS may refer to:
Computing
* Transport Layer Security, a cryptographic protocol for secure computer network communication
* Thread level speculation, an optimisation on multiprocessor CPUs
* Thread-local storage, a mechanism for allocating vari ...
**
UDP
**
UDP-Lite
* IETF
I-Ds:
**
SFTP (via libssh)
* Microsoft
OSP
Osp (; it, Ospo) is a village in the City Municipality of Koper in the Littoral region of Slovenia.
Overview
The Osp Valley is a passage through the karst and coastal region of Istria. It extends from below the village of Črni Kal to the sea ...
:
**
CIFS/SMB (via libsmbclient)
**
MMS over TCP (MS-MMSP)
**MMS over HTTP (MS-WMSP)
*
CENELEC
**
SAT>IP
*
OASIS
In ecology, an oasis (; ) is a fertile area of a desert or semi-desert environment'ksar''with its surrounding feeding source, the palm grove, within a relational and circulatory nomadic system.”
The location of oases has been of critical imp ...
standards:
**
AMQP 0-9-1 (via librabbitmq)
*
SRT Alliance SRT may refer to:
Automotive
* SRT, (Speed & Racing Technology) American high-performance automobile group associated with Dodge, Chrysler and Jeep.
* Suter Racing Technology, a Swiss Moto2 constructor
* Selleslagh Racing Team, Belgium
* Swiss ...
standard:
**
SRT SRT may refer to:
Automotive
* SRT, (Speed & Racing Technology) American high-performance automobile group associated with Dodge, Chrysler and Jeep.
* Suter Racing Technology, a Swiss Moto2 constructor
* Selleslagh Racing Team, Belgium
* Swiss ...
(via libsrt)
De facto standards
* RTSP over TLS
*
Icecast protocol
* Adobe
RTMP, RTMPT, RTMPE, RTMPTE and RTMPS
* RealMedia RTSP/
RDT
*
ZeroMQ (via libzmq)
*
RIST (librist)
Supported filters
FFmpeg supports, among others, the following filters.
Audio
*
Resampling (aresample)
* Pass/Stop filters
**
Low-pass filter (lowpass)
**
High-pass filter (highpass)
**
All-pass filter (allpass)
**
Butterworth Band-pass filter (bandpass)
** Butterworth
Band-stop filter (bandreject)
*
Arbitrary Finite Impulse Response Filter (afir)
*
Arbitrary Infinite Impulse Response Filter (aiir)
*
Equalizer
** Peak Equalizer (equalizer)
** Butterworth/
Chebyshev Type I/Type II Multiband Equalizer (anequalizer)
**
Low Shelving filter (bass)
** High Shelving filter (treble)
** Xbox 360 rqulizer
** FIR equalizer (firequalizer)
**
Biquad filter
Electronic filter topology defines electronic filter circuits without taking note of the values of the components used but only the manner in which those components are connected.
Filter design characterises filter circuits primarily by their t ...
(biquad)
* Remove/Add
DC offset (dcshift)
*
Expression evaluation
**
Time domain expression evaluation (aeval)
**
Frequency domain expression evaluation (afftfilt)
* Dynamics
**
Limiter (alimiter)
**
Compressor
A compressor is a mechanical device that increases the pressure of a gas by reducing its volume. An air compressor is a specific type of gas compressor.
Compressors are similar to pumps: both increase the pressure on a fluid and both can transp ...
(acompressor)
** Dynamic range expander ()
**
Side-chain Compressor (sidechaincompress)
**
Compander (compand)
**
Noise gate (agate)
** Side-chain Noise gate(sidechaingate)
* Distortion
**
Bitcrusher (acrusher)
*
Emphasis (aemphasis)
* Amplify/Normalizer
** Volume (volume)
** Dynamic Audio Normalizer (dynaudnorm)
**
EBU R 128 loudness normalizer (loudnorm)
* Modulation
**
Sinusoidal Amplitude Modulation (tremolo)
**
Sinusoidal Phase Modulation (vibrato)
**
Phaser (aphaser)
**
Chorus (chorus)
**
Flanger (flanger)
** Pulsator (apulsator)
* Echo/Reverb
**
Echo (aecho)
* Routing/
Panning
** Stereo widening (stereowiden)
** Increase channel differences (extrastereo)
**
M/S to L/R (stereotools)
** Channel mapping (channelmap)
** Channel splitting (channelsplit)
**
Channel panning (pan)
** Channel merging (amerge)
** Channel joining (join)
** for
Headphones
Headphones are a pair of small loudspeaker drivers worn on or around the head over a user's ears. They are electroacoustic transducers, which convert an electrical signal to a corresponding sound. Headphones let a single user listen to an au ...
*** Stereo to Binaural (earwax, ported from SoX)
***
Bauer Stereo to Binaural (bs2b, via libbs2b)
***
Crossfeed (crossfeed)
*** Multi-channel to Binaural (sofalizer, requires libnetcdf)
**
Delay
*** Delay (adelay)
*** Delay by distance (compensationdelay)
* Fade
**
Fader (afade)
**
Crossfader
In audio engineering, a fade is a gradual increase or decrease in the level of an audio signal. The term can also be used for film cinematography or theatre lighting in much the same way (see fade (filmmaking) and fade (lighting)).
A recor ...
(acrossfade)
*
Audio time stretching and pitch scaling
** Time stretching (atempo)
** Time-stretching and Pitch-shifting (rubberband, via librubberband)
* Editing
**
Trim (atrim)
** Silence-padding (apad)
** Silence remover (silenceremove)
* Show frame/channel information
** Show frame information (ashowinfo)
** Show channel information (astats)
** Show silence ranges (silencedetect)
** Show audio volumes (volumedetect)
**
ReplayGain scanner (replaygain)
* Modify frame/channel information
** Set output format (aformat)
** Set number of sample (asetnsamples)
** Set sampling rate (asetrate)
*
Mixer (amix)
*
Synchronization
Synchronization is the coordination of events to operate a system in unison. For example, the conductor of an orchestra keeps the orchestra synchronized or ''in time''. Systems that operate with all parts in synchrony are said to be synchronou ...
(asyncts)
*
HDCD data decoder (hdcd)
* Plugins
**
LADSPA (ladspa)
**
LV2 (lv2)
* Do nothing ()
Video
* Transformations
**
Cropping (crop, cropdetect)
**
Fading
In wireless communications, fading is variation of the attenuation of a signal with various variables. These variables include time, geographical position, and radio frequency. Fading is often modeled as a random process. A fading channel is a ...
(fade)
**
Scaling (scale)
** Padding (pad)
** Rotation (rotate)
** Transposition (transpose)
** Others:
*** Lens correction (lenscorrection)
***
OpenCV filtering (ocv)
*** Perspective correction (perspective)
* Temporal editing
**
Framerate (fps, framerate)
** Looping (loop)
** Trimming (trim)
*
Deinterlacing (bwdif, idet, kerndeint, nnedi, yadif, w3fdif)
*
Inverse Telecine
* Filtering
**
Blurring (boxblur, gblur, avgblur, sab, smartblur)
**
Convolution filters
*** Convolution (convolution)
***
Edge detection (edgedetect)
***
Sobel Filter
The Sobel operator, sometimes called the Sobel–Feldman operator or Sobel filter, is used in image processing and computer vision, particularly within edge detection algorithms where it creates an image emphasising edges. It is named after I ...
(sobel)
***
Prewitt Filter (prewitt)
***
Unsharp masking (unsharp)
*
Denoising (atadenoise, bitplanenoise, dctdnoiz, owdenoise, removegrain)
* Logo removal (delogo, removelogo)
*
Subtitles
Subtitles and captions are lines of dialogue or other text displayed at the bottom of the screen in films, television programs, video games or other visual media. They can be transcriptions of the screenplay, translations of it, or informati ...
(
ASS
Ass most commonly refers to:
* Buttocks (in informal American English)
* Donkey or ass, ''Equus africanus asinus''
**any other member of the subgenus ''Asinus''
Ass or ASS may also refer to:
Art and entertainment
* ''Ass'' (album), 1973 albu ...
, subtitles)
*
Alpha
Alpha (uppercase , lowercase ; grc, ἄλφα, ''álpha'', or ell, άλφα, álfa) is the first letter of the Greek alphabet. In the system of Greek numerals, it has a value of one. Alpha is derived from the Phoenician letter aleph , whic ...
channel editing (alphaextract, alphamerge)
*
Keying
Keying may refer to:
* Keying (electrical connector), used by electrical connectors to prevent mating in incorrect orientation
* Keying (graphics), a technique for compositing two full frame images together
* Keying (official) (1787–1858), a M ...
(chromakey, colorkey, lumakey)
* Frame detection
** Black frame detection (blackdetect, blackframe)
** Thumbnail selection (thumbnail)
* Frame Blending (blend, tblend, overlay)
*
Video stabilization (vidstabdetect, vidstabtransform)
* Color and Level adjustments
**
Balance and levels (colorbalance, colorlevels)
** Channel mixing (colorchannelmixer)
**
Color space (colorspace)
** Parametric adjustments (curves, eq)
* Histograms and visualization
** CIE Scope (ciescope)
**
Vectorscope (vectorscope)
**
Waveform monitor (waveform)
**
Color histogram (histogram)
* Drawing
*
OCR
* Quality measures
**
SSIM (ssim)
**
PSNR (psnr)
* Lookup Tables
** lut, lutrgb, lutyuv, lut2, lut3d, haldclut
Supported test patterns
*
SMPTE color bars
SMPTE color bars are a television test pattern used where the NTSC video standard is utilized, including countries in North America. The Society of Motion Picture and Television Engineers (SMPTE) refers to the pattern as Engineering Guideline ( ...
(smptebars and smptehdbars)
* EBU color bars (pal75bars and pal100bars)
Supported LUT formats
*
cineSpace LUT format
*
Iridas Cube
*
Adobe After Effects 3dl
*
DaVinci Resolve dat
*
Pandora
In Greek mythology, Pandora (Greek: , derived from , ''pān'', i.e. "all" and , ''dōron'', i.e. "gift", thus "the all-endowed", "all-gifted" or "all-giving") was the first human woman created by Hephaestus on the instructions of Zeus. As Hes ...
m3d
Supported media and interfaces
FFmpeg supports the following devices via external libraries.
Media
*
Compact disc (via libcdio; input only)
Physical interfaces
*
IEEE 1394 (a.k.a. FireWire; via libdc1394 and libraw1394; input only)
*
IEC 61883 (via libiec61883; input only)
*
DeckLink
*
Brooktree video capture chip (via bktr driver; input only)
Audio IO
*
Advanced Linux Sound Architecture (ALSA)
*
Open Sound System (OSS)
*
PulseAudio
*
JACK Audio Connection Kit (JACK; input only)
*
OpenAL (input only)
*
sndio
sndio is the software layer of the OpenBSD operating system that manages sound cards and MIDI ports. It provides an optional sound server and a documented application programming interface to access either the server or the audio and MIDI har ...
*
Core Audio (for
macOS)
**
AVFoundation (input only)
** AudioToolbox (output only)
Video IO
*
Video4Linux2
*
Video for Windows (input only)
* Windows
DirectShow
* Android Camera (input only)
Screen capture and output
*
Simple DirectMedia Layer 2 (output only)
*
OpenGL
OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardwa ...
(output only)
*
Linux framebuffer (fbdev)
*
Graphics Device Interface (GDI; input only)
*
X Window System (X11; via
XCB; input only)
*
X video extension
The X video extension, often abbreviated as XVideo or Xv, is a video output mechanism for the X Window System. The protocol was designed by David Carver; the specification for version 2 of the protocol was written in July 1991. It is mainly us ...
(XV; via
Xlib; output only)
*
Kernel Mode Setting
The Direct Rendering Manager (DRM) is a subsystem of the Linux kernel responsible for interfacing with GPUs of modern video cards. DRM exposes an API that user-space programs can use to send commands and data to the GPU and perform operations su ...
(via libdrm; input only)
Others
*
ASCII art
ASCII art is a graphic design technique that uses computers for presentation and consists of pictures pieced together from the 95 printable (from a total of 128) characters defined by the ASCII Standard from 1963 and ASCII compliant chara ...
(via libcaca; output only)
Applications
Legal aspects
FFmpeg contains more than 100 codecs, most of which use compression techniques of one kind or another. Many such compression techniques may be subject to legal claims relating to
software patents. Such claims may be enforceable in countries like the United States which have implemented software patents, but are considered unenforceable or void in member countries of the
European Union, for example. Patents for many older codecs, including AC3 and all MPEG-1 and MPEG-2 codecs, have expired.
FFmpeg is licensed under the LGPL license, but if a particular build of FFmpeg is linked against any GPL libraries (notably
x264), then the entire binary is licensed under the GPL.
Projects using FFmpeg
FFmpeg is used by software such as
Blender,
Cinelerra-GG Infinity,
HandBrake,
Kodi,
MPC-HC,
Plex,
Shotcut
Shotcut is a free and open-source, cross-platform video, audio, and image editing program for FreeBSD, Linux, macOS and Windows. Started in 2011 by Dan Dennedy, Shotcut is developed on the MLT Multimedia Framework, in development since 200 ...
, VirtualDub2 (a
VirtualDub fork),
VLC media player,
xine and
YouTube.
[.] It handles video and audio playback in
Google Chrome
Google Chrome is a cross-platform web browser developed by Google. It was first released in 2008 for Microsoft Windows, built with free software components from Apple WebKit and Mozilla Firefox. Versions were later released for Linux, macOS ...
and the Linux version of Firefox.
GUI front-ends for FFmpeg have been developed, including Multimedia Xpert and
XMedia Recode.
FFmpeg is used by
ffdshow, FFmpegInterop, the
GStreamer FFmpeg plug-in
GStreamer is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows. For instance, GStreamer can be used to build a system that reads files in one format, processes them, ...
, LAV Filters and
OpenMAX IL to expand the encoding and decoding capabilities of their respective multimedia platforms.
As part of
NASA's
Mars 2020 mission, FFmpeg is used by the
Perseverance rover on Mars for image and video compression before footage is sent to Earth.
See also
*
MEncoder, a similar project
*
List of open-source codecs
References
External links
*
{{Compression software
Assembly language software
Command-line software
C (programming language) libraries
Cross-platform free software
Free codecs
Free computer libraries
Free music software
Free software programmed in C
Free video conversion software
Multimedia frameworks
Software that uses FFmpeg
Software using the LGPL license