HOME

TheInfoList



OR:

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 A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
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 Multimedia is a form of communication that uses a combination of different content forms such as text, audio, images, animations, or video into a single interactive presentation, in contrast to tradi ...
files and streams. At its core is the
command-line A command-line interpreter or command-line processor uses a command-line interface (CLI) to receive command (computing), commands from a user in the form of lines of text. This provides a means of setting parameters for the environment, invokin ...
ffmpeg tool itself, designed for processing of video and audio files. It is widely used for format
transcoding Transcoding is the direct digital-to-digital conversion of one encoding to another, such as for video data files, audio files (e.g., MP3, WAV), or character encoding (e.g., UTF-8, ISO/IEC 8859). This is usually done in cases where a target ...
, basic editing (trimming and
concatenation In formal language theory and computer programming, string concatenation is the operation of joining character strings end-to-end. For example, the concatenation of "snow" and "ball" is "snowball". In certain formalisations of concatenat ...
),
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. Th ...
effects and standards compliance (
SMPTE The Society of Motion Picture and Television Engineers (SMPTE) (, rarely ), founded in 1916 as the Society of Motion Picture Engineers or SMPE, is a global professional association of engineers, technologists, and executives working in the m ...
, 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 libavcodec is a free and open-source library of codecs for encoding and decoding video and audio data. libavcodec is an integral part of many open-source multimedia applications and frameworks. The popular MPV, xine and VLC media players u ...
, an audio/video
codec A codec is a device or computer program that encodes or decodes a data stream or signal. ''Codec'' is a portmanteau of coder/decoder. In electronic communications, an endec is a device that acts as both an encoder and a decoder on a signal or ...
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 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 the ...
-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 YouTube is a global online video sharing and social media platform headquartered in San Bruno, California. It was launched on February 14, 2005, by Steve Chen, Chad Hurley, and Jawed Karim. It is owned by Google, and is the second most ...
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 orig ...
. 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 A pseudonym (; ) or alias () is a fictitious name that a person or group assumes for a particular purpose, which differs from their original or true name (orthonym). This also differs from a new name that entirely or legally replaces an individua ...
"Gérard Lantau") in 2000, and was led by Michael Niedermayer from 2004 until 2015. Some FFmpeg developers were also part of the
MPlayer MPlayer is a free and open-source media player software application. It is available for Linux, OS X and Microsoft Windows. Versions for OS/2, Syllable, AmigaOS, MorphOS and AROS Research Operating System are also available. A port for ...
project. The name of the project is inspired by the
MPEG The Moving Picture Experts Group (MPEG) is an alliance of working groups established jointly by ISO and IEC that sets standards for media coding, including compression coding of audio, video, graphics, and genomic data; and transmission and fi ...
video standards group, together with "FF" for "fast forward". The logo uses a
zigzag A zigzag is a pattern made up of small corners at variable angles, though constant within the zigzag, tracing a path between two parallel lines; it can be described as both jagged and fairly regular. In geometry, this pattern is described as a ...
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 Libav is an abandoned free software project, forked from FFmpeg in 2011, that contains libraries and programs for handling multimedia data. History Fork from FFmpeg The Libav project was a fork of the FFmpeg project. It was announced ...
. 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 interfaces. 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 In computing, source code, or simply code, is any collection of code, with or without comment (computer programming), comments, written using a human-readable programming language, usually as plain text. The source code of a Computer program, p ...
Git
version control system In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
.


Codec history

Two
video coding format A video coding format (or sometimes video compression format) is a content representation format for storage or transmission of digital video content (such as in a data file or bitstream). It typically uses a standardized video compression alg ...
s 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 WebM is an audiovisual media file format. It is primarily intended to offer a royalty-free alternative to use in the HTML5 video and the HTML5 audio elements. It has a sister project, WebP, for images. The development of the format is sponso ...
and VP8. In October 2013, a native VP9 decoder and OpenHEVC, an open source
High Efficiency Video Coding High Efficiency Video Coding (HEVC), also known as H.265 and MPEG-H Part 2, is a video compression standard designed as part of the MPEG-H project as a successor to the widely used Advanced Video Coding (AVC, H.264, or MPEG-4 Part 10). In compa ...
(HEVC) decoder, were added to FFmpeg. 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. 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 comm ...
image format. Since November 2018 in version 4.1 ''"al-Khwarizmi"'' AV1 can be muxed in MP4 and
Matroska Matroska is a project to create a container format that can hold an unlimited number of video, audio, picture, or subtitle tracks in one file. The Matroska Multimedia Container is similar in concept to other containers like AVI, MP4, or Advan ...
incl.
WebM WebM is an audiovisual media file format. It is primarily intended to offer a royalty-free alternative to use in the HTML5 video and the HTML5 audio elements. It has a sister project, WebP, for images. The development of the format is sponso ...
.


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 Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. ...
,
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 s ...
), see also Mediainfo.


Libraries

* ''libswresample'' is a library containing audio resampling routines. * ''libavresample'' is a library containing audio resampling routines from the
Libav Libav is an abandoned free software project, forked from FFmpeg in 2011, that contains libraries and programs for handling multimedia data. History Fork from FFmpeg The Libav project was a fork of the FFmpeg project. It was announced ...
project, similar to ''libswresample'' from ''ffmpeg''. * ''
libavcodec libavcodec is a free and open-source library of codecs for encoding and decoding video and audio data. libavcodec is an integral part of many open-source multimedia applications and frameworks. The popular MPV, xine and VLC media players u ...
'' 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 In computer programming, Base64 is a group of binary-to-text encoding schemes that represent binary data (more specifically, a sequence of 8-bit bytes) in sequences of 24 bits that can be represented by four 6-bit Base64 digits. Common to all bina ...
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 In computer graphics and digital imaging, image scaling refers to the resizing of a digital image. In video technology, the magnification of digital material is known as upscaling or resolution enhancement. When scaling a vector graphic image ...
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 MPlayer is a free and open-source media player software application. It is available for Linux, OS X and Microsoft Windows. Versions for OS/2, Syllable, AmigaOS, MorphOS and AROS Research Operating System are also available. A port for ...
and
avisynth AviSynth is a frameserver program for Microsoft Windows, Linux and macOS initially developed by Ben Rudiak-Gould, Edwin van Eggelen, Klaus Post, Richard Berg and Ian Brabham in May 2000 and later picked up and maintained by the open source commu ...
. * ''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 a ...
s are supported by FFmpeg, including x86 (
IA-32 IA-32 (short for "Intel Architecture, 32-bit", commonly called i386) is the 32-bit version of the x86 instruction set architecture, designed by Intel and first implemented in the 80386 microprocessor in 1985. IA-32 is the first incarnation of ...
and
x86-64 x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging ...
), 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– IBM ...
), ARM,
DEC Alpha Alpha (original name Alpha AXP) is a 64-bit reduced instruction set computer (RISC) instruction set architecture (ISA) developed by Digital Equipment Corporation (DEC). Alpha was designed to replace 32-bit VAX complex instruction set computer ...
,
SPARC SPARC (Scalable Processor Architecture) is a reduced instruction set computer (RISC) instruction set architecture originally developed by Sun Microsystems. Its design was strongly influenced by the experimental Berkeley RISC system developed ...
, 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 Audio Interchange File Format (AIFF) is an audio file format standard used for storing sound data for personal computers and other electronic audio devices. The format was developed by Apple Inc. in 1988 based on Electronic Arts' Interchange Fil ...
* 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 AviSynth is a frameserver program for Microsoft Windows, Linux and macOS initially developed by Ben Rudiak-Gould, Edwin van Eggelen, Klaus Post, Richard Berg and Ian Brabham in May 2000 and later picked up and maintained by the open source commu ...
* BFI * CAF * FLV * GIF * 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 a ...
,
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 Matroska is a project to create a container format that can hold an unlimited number of video, audio, picture, or subtitle tracks in one file. The Matroska Multimedia Container is similar in concept to other containers like AVI, MP4, or Advan ...
(including
WebM WebM is an audiovisual media file format. It is primarily intended to offer a royalty-free alternative to use in the HTML5 video and the HTML5 audio elements. It has a sister project, WebP, for images. The development of the format is sponso ...
) * 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 syste ...
(including
AVCHD AVCHD (Advanced Video Coding High Definition) is a file-based format for the digital recording and playback of high-definition video. It is H.264 and Dolby AC-3 packaged into the MPEG transport stream, with a set of constraints designed around the ...
) * MXF, Material eXchange Format, SMPTE 377M * MSN Webcam stream * NUT *
Ogg Ogg is a free, open container format maintained by the Xiph.Org Foundation. The authors of the Ogg format state that it is unrestricted by software patents and is designed to provide for efficient streaming and manipulation of high-quality di ...
* 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 RGBA stands for red green blue alpha. While it is sometimes described as a color space, it is actually a three-channel RGB color model supplemented with a fourth ''alpha channel''. Alpha indicates how opaque each pixel is and allows an image to ...
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 Pocket gophers, commonly referred to simply as gophers, are burrowing rodents of the family Geomyidae. The roughly 41 speciesSearch results for "Geomyidae" on thASM Mammal Diversity Database are all endemic to North and Central America. They ar ...
** HLS **
HTTP The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, ...
**
HTTPS Hypertext Transfer Protocol Secure (HTTPS) is an extension of the Hypertext Transfer Protocol (HTTP). It is used for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protocol is e ...
** RTP ** RTSP **
SCTP The Stream Control Transmission Protocol (SCTP) is a computer networking communications protocol in the transport layer of the Internet protocol suite. Originally intended for Signaling System 7 (SS7) message transport in telecommunication, the p ...
** 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 environmentAMQP 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 standard A ''de facto'' standard is a custom or convention that has achieved a dominant position by public acceptance or market forces (for example, by early entrance to the market). is a Latin phrase (literally "in fact"), here meaning "in practice but ...
s

* RTSP over TLS * Icecast protocol * Adobe RTMP, RTMPT, RTMPE, RTMPTE and RTMPS * RealMedia RTSP/ RDT * ZeroMQ (via libzmq) *
RIST Rist is a surname. Notable people with the surname include: * Boy Rist, Norwegian officer and WWII resistance fighter * Charles Rist (1874–1955), French economist * Gilbert Rist (born 1938), Swiss academic * Johann Rist (1607–1667), German ...
(librist)


Supported filters

FFmpeg supports, among others, the following filters.


Audio

* Resampling (aresample) * Pass/Stop filters **
Low-pass filter A low-pass filter is a filter that passes signals with a frequency lower than a selected cutoff frequency and attenuates signals with frequencies higher than the cutoff frequency. The exact frequency response of the filter depends on the filt ...
(lowpass) **
High-pass filter A high-pass filter (HPF) is an electronic filter that passes signals with a frequency higher than a certain cutoff frequency and attenuates signals with frequencies lower than the cutoff frequency. The amount of attenuation for each frequenc ...
(highpass) ** All-pass filter (allpass) ** Butterworth
Band-pass filter A band-pass filter or bandpass filter (BPF) is a device that passes frequencies within a certain range and rejects ( attenuates) frequencies outside that range. Description In electronics and signal processing, a filter is usually a two- ...
(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 Time domain refers to the analysis of mathematical functions, physical signals or time series of economic or environmental data, with respect to time. In the time domain, the signal or function's value is known for all real numbers, for the ...
expression evaluation (aeval) **
Frequency domain In physics, electronics, control systems engineering, and statistics, the frequency domain refers to the analysis of mathematical functions or signals with respect to frequency, rather than time. Put simply, a time-domain graph shows how a ...
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 trans ...
(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 In audio signal processing and acoustics, an echo is a reflection of sound that arrives at the listener with a delay after the direct sound. The delay is directly proportional to the distance of the reflecting surface from the source and the li ...
(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 *** 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 (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 (asyncts) * HDCD data decoder (hdcd) * Plugins **
LADSPA LADSPA is an acronym for Linux Audio Developer's Simple Plugin API. It is an application programming interface (API) standard for handling audio filters and audio signal processing effects, licensed under LGPL-2.1-or-later. It was originally d ...
(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 ...
(fade) ** Scaling (scale) ** Padding (pad) ** Rotation (rotate) ** Transposition (transpose) ** Others: *** Lens correction (lenscorrection) ***
OpenCV OpenCV (''Open Source Computer Vision Library'') is a library of programming functions mainly aimed at real-time computer vision. Originally developed by Intel, it was later supported by Willow Garage then Itseez (which was later acquired by I ...
filtering (ocv) *** Perspective correction (perspective) * Temporal editing **
Framerate Frame rate (expressed in or FPS) is the frequency (rate) at which consecutive images ( frames) are captured or displayed. The term applies equally to film and video cameras, computer graphics, and motion capture systems. Frame rate may also b ...
(fps, framerate) ** Looping (loop) ** Trimming (trim) *
Deinterlacing Deinterlacing is the process of converting interlaced video into a non-interlaced or progressive form. Interlaced video signals are commonly found in analog television, digital television (HDTV) when in the 1080i format, some DVD titles, and a ...
(bwdif, idet, kerndeint, nnedi, yadif, w3fdif) *
Inverse Telecine Telecine ( or ) is the process of transferring film into video and is performed in a color suite. The term is also used to refer to the equipment used in the post-production process. Telecine enables a motion picture, captured originally on ...
* Filtering ** Blurring (boxblur, gblur, avgblur, sab, smartblur) **
Convolution In mathematics (in particular, functional analysis), convolution is a mathematical operation on two functions ( and ) that produces a third function (f*g) that expresses how the shape of one is modified by the other. The term ''convolution' ...
filters *** Convolution (convolution) ***
Edge detection Edge detection includes a variety of mathematical methods that aim at identifying edges, curves in a digital image at which the image brightness changes sharply or, more formally, has discontinuities. The same problem of finding discontinuiti ...
(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 (
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 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 A color space is a specific organization of colors. In combination with color profiling supported by various physical devices, it supports reproducible representations of colorwhether such representation entails an analog or a digital representa ...
(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 (smptebars and smptehdbars) * EBU color bars (pal75bars and pal100bars)


Supported LUT formats

* cineSpace LUT format * Iridas Cube *
Adobe After Effects Adobe After Effects is a digital visual effects, motion graphics, and compositing application developed by Adobe Inc., and used in the post-production process of film making, video games and television production. Among other things, After ...
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 The compact disc (CD) is a digital optical disc data storage format that was co-developed by Philips and Sony to store and play digital audio recordings. In August 1982, the first compact disc was manufactured. It was then released in Octo ...
(via libcdio; input only)


Physical interfaces

*
IEEE 1394 IEEE 1394 is an interface standard for a serial bus for high-speed communications and isochronous real-time data transfer. It was developed in the late 1980s and early 1990s by Apple in cooperation with a number of companies, primarily Sony ...
(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 The Open Sound System (OSS) is an interface for making and capturing sound in Unix and Unix-like operating systems. It is based on standard Unix devices system calls (i.e. POSIX read, write, ioctl, etc.). The term also sometimes refers to ...
(OSS) *
PulseAudio PulseAudio is a network-capable sound server program distributed via the freedesktop.org project. It runs mainly on Linux, various BSD distributions such as FreeBSD and OpenBSD, macOS, as well as Illumos distributions and the Solaris oper ...
* JACK Audio Connection Kit (JACK; input only) *
OpenAL OpenAL (Open Audio Library) is a cross-platform audio application programming interface (API). It is designed for efficient rendering of multichannel three-dimensional positional audio. Its API style and conventions deliberately resemble those ...
(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 Core Audio is a low-level API for dealing with sound in Apple's macOS and iOS operating systems. It includes an implementation of the cross-platform OpenAL. Apple's Core Audio documentation states that "in creating this new architecture on ...
(for
macOS macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac (computer), Mac computers. Within the market of ...
) ** AVFoundation (input only) ** AudioToolbox (output only)


Video IO

* Video4Linux2 *
Video for Windows Video for Windows was a suite of video playing and editing software introduced by Microsoft in 1992. A runtime version for viewing videos only was made available as a free add-on to Windows 3.1, which then became an integral component of Windows ...
(input only) * Windows
DirectShow DirectShow (sometimes abbreviated as DS or DShow), codename Quartz, is a multimedia framework and API produced by Microsoft for software developers to perform various operations with media files or streams. It is the replacement for Microsoft's e ...
* 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 ha ...
(output only) * Linux framebuffer (fbdev) *
Graphics Device Interface The Graphics Device Interface (GDI) is a legacy component of Microsoft Windows responsible for representing graphical objects and transmitting them to output devices such as monitors and printers. Windows apps use Windows API to interact with ...
(GDI; input only) *
X Window System The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems. X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting ...
(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) character (computing), characters defined by the ASCII Standard from 1963 an ...
(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 patent A software patent is a patent on a piece of software, such as a computer program, Library (computing), libraries, user interface, or algorithm. Background A patent is a set of exclusionary rights granted by a State (polity), state to a patent h ...
s. 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 The European Union (EU) is a supranational political and economic union of member states that are located primarily in Europe. The union has a total area of and an estimated total population of about 447million. The EU has often been ...
, 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 A blender (sometimes called a mixer or liquidiser in British English) is a kitchen and laboratory appliance used to mix, crush, purée or emulsify food and other substances. A stationary blender consists of a blender container with a rotating me ...
, Cinelerra-GG Infinity, HandBrake,
Kodi KODI (1400 AM) is a radio station broadcasting a news/talk format. Licensed to Cody, Wyoming, United States, the station is currently owned by the Big Horn Radio Network, a division of Legend Communications of Wyoming, LLC, and features prog ...
, 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 VLC media player (previously the VideoLAN Client and commonly known as simply VLC) is a free and open-source, portable, cross-platform media player software and streaming media server developed by the VideoLAN project. VLC is available for d ...
, xine and
YouTube YouTube is a global online video sharing and social media platform headquartered in San Bruno, California. It was launched on February 14, 2005, by Steve Chen, Chad Hurley, and Jawed Karim. It is owned by Google, and is the second most ...
.. 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, macO ...
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 The National Aeronautics and Space Administration (NASA ) is an independent agency of the US federal government responsible for the civil space program, aeronautics research, and space research. NASA was established in 1958, succeedi ...
's
Mars 2020 Mars 2020 is a Mars rover mission forming part of NASA's Mars Exploration Program that includes the rover '' Perseverance'', the small robotic, coaxial helicopter '' Ingenuity'', and associated delivery vehicles. Mars 2020 was launched from ...
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