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 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 tradition ...
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 commands from a user in the form of lines of text. This provides a means of setting parameters for the environment, invoking executables and pro ...
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 devic ...
, basic editing (trimming and
concatenation
In formal language, formal language theory and computer programming, string concatenation is the operation of joining character string (computer science), character strings wikt:end-to-end, end-to-end. For example, the concatenation of "sno ...
),
video scaling, 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
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
The International Telecommunication Union is a specialized agency of the United Nations responsible for many matters related to information and communication technologies. It was established on 17 May 1865 as the International Telegraph Unio ...
).
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 use ...
, 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 da ...
library used by many commercial and free software products, libavformat (Lavf),
an audio/video
container
A container is any receptacle or enclosure for holding a product used in storage, packaging, and transportation, including shipping.
Things kept inside of a container are protected on several sides by being inside of its structure. The term ...
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 them, ...
-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 platform, online video sharing and social media, 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 ...
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
Fabrice Bellard (; born 1972) is a French computer programmer known for writing FFmpeg, QEMU, and the Tiny C Compiler. He developed Bellard's formula for calculating single digits of pi. In 2012, Bellard co-founded Amarisoft, a telecommunication ...
(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 DOS usi ...
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 International Organization for Standardization, ISO and International Electrotechnical Commission, IEC that sets standards for media coding, includ ...
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
In information theory, an entropy coding (or entropy encoding) is any lossless data compression method that attempts to approach the lower bound declared by Shannon's source coding theorem, which states that any lossless data compression method ...
.
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 on ...
. 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), ''Fuzz'' (film), a 1972 American comedy
* ''Fuzz: When Nature Breaks the Law'', a nonfiction book by Mary Roach
* The fuzz, a List of slang terms for police officers, slang term for police officers
Music
* Fuzz ...
.
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
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
Git
Git () is a distributed version control system: tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development. Its goals include speed, data in ...
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 algo ...
s with corresponding codecs and one
container format have been created within the FFmpeg project so far. The two video codecs are the lossless
FFV1
FFV1 (short for FF Video 1) is a lossless intra-frame video coding format. It can use either variable-length coding or arithmetic coding for entropy coding. The encoder and decoder are part of the free, open-source library libavcodec in the pr ...
, 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
libvpx is a free software video codec library from Google and the Alliance for Open Media (AOMedia). It serves as the reference software implementation for the VP8 and VP9 video coding formats, and for AV1 a special fork named libaom that ...
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 sponsored ...
and
VP8
VP8 is an open and royalty-free video compression format released by On2 Technologies in 2008.
Initially released as a proprietary successor to On2's previous VP7 format, VP8 was released as an open and royalty-free format in May 2010 after Goo ...
.
In October 2013, a native
VP9
VP9 is an open and royalty-free video coding format developed by Google.
VP9 is the successor to VP8 and competes mainly with MPEG's High Efficiency Video Coding (HEVC/H.265).
At first, VP9 was mainly used on Google's video platform YouTube. ...
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 compar ...
(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
VisualOn is a Silicon Valleybased multimedia software company that provides high-definition audio and video entertainment to smartphones, tablets, laptops, connected TVs and other mobile and convergent devices. VisualOn's patented technology is ...
and
FAAC
FAAC or Freeware Advanced Audio Coder is a software project which includes the AAC encoder FAAC and decoder FAAD2. It supports MPEG-2 AAC as well as MPEG-4 AAC. It supports several MPEG-4 Audio object types (LC, Main, LTP for encoding and S ...
. FFmpeg 3.0 (nicknamed ''"Einstein"'') retained build support for the
Fraunhofer FDK AAC
Fraunhofer FDK AAC is an open-source library for encoding and decoding digital audio in the Advanced Audio Coding (AAC) format. Fraunhofer IIS, developed this library for Android 4.1. It supports several Audio Object Types including MPEG-2 and ...
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
AOMedia Video 1 (AV1) is an open, royalty-free video coding format initially designed for video transmissions over the Internet. It was developed as a successor to VP9 by the Alliance for Open Media (AOMedia), a consortium founded in 2015 th ...
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 Adva ...
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 sponsored ...
.
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. T ...
,
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
MediaInfo is a free, cross-platform and open-source program that displays technical information about media files, as well as tag information for many audio and video files. It is used in many programs such as XMedia Recode, MediaCoder, eMule, a ...
.
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 on ...
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 use ...
'' 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 based
video postprocessing The term post-processing (or postproc for short) is used in the video/film business for quality-improvement image processing (specifically digital image processing) methods used in video playback devices, such as stand-alone DVD-Video players; video ...
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
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 ...
/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 DOS usi ...
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 communi ...
.
* ''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
x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel based on the Intel 8086 microprocessor and its 8088 variant. The 8086 was introd ...
(
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 mod ...
), 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
In human anatomy, the arm refers to the upper limb in common usage, although academically the term specifically means the upper arm between the glenohumeral joint (shoulder joint) and the elbow joint. The distal part of the upper limb between th ...
,
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 computers ...
,
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
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 (computing), interface, offering a service to other pieces of software. A document or standa ...
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
Netpbm (formerly Pbmplus) is an open-source package of graphics programs and a programming library. It is used mainly in the Unix world, where one can find it included in all major open-source operating system distributions, but also works on Micr ...
. 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
FFV1 (short for FF Video 1) is a lossless intra-frame video coding format. It can use either variable-length coding or arithmetic coding for entropy coding. The encoder and decoder are part of the free, open-source library libavcodec in the pr ...
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 File ...
*
ASF
ASF may refer to:
Arts and entertainment
* Alabama Shakespeare Festival, a drama festival
* ''Asimov's Science Fiction'', a U.S.-based English-language science fiction magazine containing SF stories
Science and technology
Biological
* A ...
*
AVI 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 communi ...
* BFI
*
CAF
*
FLV
Flash Video is a container file format used to deliver digital video content (e.g., TV shows, movies, etc.) over the Internet using Adobe Flash Player version 6 and newer. Flash Video content may also be embedded within SWF files. There are t ...
*
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 bicon ...
*
ISO base media file format
The ISO base media file format (ISOBMFF) is a container file format that defines a general structure for files that contain time-based multimedia data such as video and audio.
It is standardized in ISO/IEC 14496-12, a.k.a. MPEG-4 Part 12, and w ...
(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 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 Adva ...
(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 sponsored ...
)
*
Maxis XA
*
MPEG-DASH
Dynamic Adaptive Streaming over HTTP (DASH), also known as MPEG-DASH, is an adaptive bitrate streaming technique that enables high quality streaming of media content over the Internet delivered from conventional HTTP web servers. Similar to Apple ...
*
MPEG program stream
Program stream (PS or MPEG-PS) is a container format for multiplexing digital audio, video and more. The PS format is specified in MPEG-1 Part 1 (ISO/IEC 11172-1) and MPEG-2 Part 1, Systems (ISO/IEC standard 13818-1/ITU-T H.222.0). The MPEG-2 Pr ...
*
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
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 t ...
)
*
MXF MXF or mxf may refer to:
* Material Exchange Format, a container format for professional digital video and audio media
* MXF, the IATA and FAA LID code for Maxwell Air Force Base, Alabama, United States
* mxf, the ISO 639-3 code for Malgbe language ...
, 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 d ...
*
OMA
*
RL2
* Segment, for creating segmented video streams
*
Smooth Streaming
* 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
The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data ...
**
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 are ...
**
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 enc ...
**
RTP
**
RTSP
The Real Time Streaming Protocol (RTSP) is an application-level network protocol designed for multiplexing and packetizing multimedia transport streams (such as interactive media, video and audio) over a suitable transport protocol. RTSP i ...
**
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
**
TLS
**
UDP
**
UDP-Lite
UDP-Lite (Lightweight User Datagram Protocol) is a connectionless protocol that allows a potentially damaged data payload to be delivered to an application rather than being discarded by the receiving station. This is useful as it allows decisi ...
* IETF
I-Ds:
**
SFTP (via libssh)
* Microsoft
OSP:
**
CIFS/SMB (via libsmbclient)
**
MMS MMS may refer to:
Science and technology Network communication protocols
* Multimedia Messaging Service for mobile phones
* Microsoft Media Server, a content-streaming protocol (mms://)
* Manufacturing Message Specification for real time proces ...
over TCP (MS-MMSP)
**MMS over HTTP (MS-WMSP)
*
CENELEC
CENELEC (french: Comité Européen de Normalisation Électrotechnique; en, European Committee for Electrotechnical Standardization) is responsible for European standardization in the area of electrical engineering. Together with ETSI (telecommun ...
**
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
The Advanced Message Queuing Protocol (AMQP) is an open standard application layer protocol for message-oriented middleware. The defining features of AMQP are message orientation, queuing, routing (including point-to-point and publish-and-su ...
0-9-1 (via librabbitmq)
*
SRT Alliance standard:
**
SRT (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 b ...
s
* RTSP over TLS
*
Icecast
Icecast is a streaming media project released as free software maintained by the Xiph.Org Foundation. It also refers specifically to the server program which is part of the project. Icecast was created in December 1998/January 1999 by Jack Mof ...
protocol
* Adobe
RTMP, RTMPT, RTMPE, RTMPTE and RTMPS
* RealMedia RTSP/
RDT
*
ZeroMQ
ZeroMQ (also spelled ØMQ, 0MQ or ZMQ) is an asynchronous messaging library, aimed at use in distributed or concurrent applications. It provides a message queue, but unlike message-oriented middleware, a ZeroMQ system can run without a dedicated ...
(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 dra ...
(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 filter des ...
(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 frequency d ...
(highpass)
**
All-pass filter
An all-pass filter is a signal processing filter that passes all frequencies equally in gain, but changes the phase relationship among various frequencies. Most types of filter reduce the amplitude (i.e. the magnitude) of the signal applied to i ...
(allpass)
**
Butterworth Butterworth may refer to:
Places
* Butterworth (ancient township), a former township centred on Milnrow, in the then Parish of Rochdale, England, United Kingdom
* Butterworth, Eastern Cape, now also known as Gcuwa, a town located in South Africa
...
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-por ...
(bandpass)
** Butterworth
Band-stop filter
In signal processing, a band-stop filter or band-rejection filter is a filter that passes most frequencies unaltered, but attenuates those in a specific range to very low levels. It is the opposite of a band-pass filter. A notch filter is a ba ...
(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 (biquad)
* Remove/Add
DC offset
In signal processing, when describing a periodic function in the time domain, the DC bias, DC component, DC offset, or DC coefficient is the mean amplitude of the waveform. If the mean amplitude is zero, there is no DC bias. A waveform with no DC ...
(dcshift)
*
Expression evaluation
A formula calculator is a software calculator that can perform a calculation in two steps:
# Enter the calculation by typing it in from the keyboard.
# Press a single button or key to see the final result.
This is unlike button-operated calculato ...
**
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 cas ...
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 signa ...
expression evaluation (afftfilt)
* Dynamics
**
Limiter
In electronics, a limiter is a circuit that allows signals below a specified input power or level to pass unaffected while attenuating (lowering) the peaks of stronger signals that exceed this threshold. Limiting is a type of dynamic range compr ...
(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
In telecommunication and signal processing, companding (occasionally called compansion) is a method of mitigating the detrimental effects of a channel with limited dynamic range. The name is a portmanteau of the words compressing and expanding, ...
(compand)
**
Noise gate
A noise gate or gate is an electronic device or software that is used to control the volume of an audio signal. Comparable to a compressor, which attenuates signals ''above'' a threshold, such as loud attacks from the start of musical notes, no ...
(agate)
** Side-chain Noise gate(sidechaingate)
* Distortion
**
Bitcrusher
A Bitcrusher is an audio effect that produces distortion by reducing of the resolution or bandwidth of digital audio data. The resulting quantization noise may produce a "warmer" sound impression, or a harsh one, depending on the amount of reduct ...
(acrusher)
*
Emphasis (aemphasis)
* Amplify/Normalizer
** Volume (volume)
** Dynamic Audio Normalizer (dynaudnorm)
**
EBU R 128
EBU R 128 is a recommendation for loudness normalisation and maximum level of audio signals. It is primarily followed during audio mixing of television and radio programmes and adopted by broadcasters to measure and control programme loudness. ...
loudness normalizer (loudnorm)
* Modulation
**
Sinusoidal Amplitude Modulation (tremolo)
**
Sinusoidal Phase Modulation (vibrato)
**
Phaser (aphaser)
**
Chorus
Chorus may refer to:
Music
* Chorus (song) or refrain, line or lines that are repeated in music or in verse
* Chorus effect, the perception of similar sounds from multiple sources as a single, richer sound
* Chorus form, song in which all verse ...
(chorus)
**
Flanger
Flanging is an audio signal processing, audio effect produced by mixing two identical audio signal, signals together, one signal delayed by a small and (usually) gradually changing period, usually smaller than 20 milliseconds. This produces a s ...
(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 list ...
(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
Stereophonic sound, or more commonly stereo, is a method of sound reproduction that recreates a multi-directional, 3-dimensional audible perspective. This is usually achieved by using two independent audio channels through a configuration ...
(crossfeed)
*** Multi-channel to Binaural (sofalizer, requires libnetcdf)
**
Delay
Delay (from Latin: dilatio) may refer to:
Arts, entertainment, and media
* ''Delay 1968'', a 1981 album by German experimental rock band Can
* ''The Delay'', a 2012 Uruguayan film
People
* B. H. DeLay (1891–1923), American aviator and acto ...
*** 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 is the process of changing the speed or duration of an audio signal without affecting its pitch. Pitch scaling is the opposite: the process of changing the pitch without affecting the speed. Pitch shift is pitch scaling implement ...
** Time stretching (atempo)
** Time-stretching and Pitch-shifting (rubberband, via librubberband)
* Editing
**
Trim
Trim or TRIM may refer to:
Cutting
* Cutting or trimming small pieces off something to remove them
** Book trimming, a stage of the publishing process
** Pruning, trimming as a form of pruning often used on trees
Decoration
* Trim (sewing), or ...
(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
ReplayGain is a proposed technical standard published by David Robinson in 2001 to measure and normalize the perceived loudness of audio in computer audio formats such as MP3 and Ogg Vorbis. It allows media players to normalize loudness for indi ...
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
High Definition Compatible Digital (HDCD) is a proprietary audio encode-decode process that claims to provide increased dynamic range over that of standard Compact Disc Digital Audio, while retaining backward compatibility with existing compact d ...
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 de ...
(ladspa)
**
LV2
LV2 (LADSPA Version 2) is a set of royalty-free open standards for plug-in (computing), plug-ins and matching host applications. It includes support for the audio synthesis, synthesis and digital signal processing, processing of digital audio and ...
(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
Scaling may refer to:
Science and technology
Mathematics and physics
* Scaling (geometry), a linear transformation that enlarges or diminishes objects
* Scale invariance, a feature of objects or laws that do not change if scales of length, energ ...
(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 Int ...
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 be ca ...
(fps, framerate)
** Looping (loop)
** Trimming (trim)
*
Deinterlacing
Deinterlacing is the process of converting interlaced video into a non-interlaced or Progressive scan, progressive form. Interlaced video signals are commonly found in analog television, digital television (HDTV) when in the 1080i format, some D ...
(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 fi ...
* Filtering
**
Blurring (boxblur, gblur, avgblur, sab, smartblur)
**
Convolution
In mathematics (in particular, functional analysis), convolution is a operation (mathematics), mathematical operation on two function (mathematics), functions ( and ) that produces a third function (f*g) that expresses how the shape of one is ...
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 discontinuitie ...
(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 ...
(sobel)
***
Prewitt Filter (prewitt)
***
Unsharp masking
Unsharp masking (USM) is an image sharpening technique, first implemented in darkroom photography, but now commonly used in digital image processing software. Its name derives from the fact that the technique uses a blurred, or "unsharp", negat ...
(unsharp)
*
Denoising
Noise reduction is the process of removing noise from a signal. Noise reduction techniques exist for audio and images. Noise reduction algorithms may distort the signal to some degree. Noise rejection is the ability of a circuit to isolate an un ...
(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, 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 (chromakey, colorkey, lumakey)
* Frame detection
** Black frame detection (blackdetect, blackframe)
** Thumbnail selection (thumbnail)
* Frame Blending (blend, tblend, overlay)
*
Video stabilization
Image stabilization (IS) is a family of techniques that reduce blurring associated with the motion of a camera or other imaging device during exposure.
Generally, it compensates for pan and tilt (angular movement, equivalent to yaw and pit ...
(vidstabdetect, vidstabtransform)
* Color and Level adjustments
**
Balance
Balance or balancing may refer to:
Common meanings
* Balance (ability) in biomechanics
* Balance (accounting)
* Balance or weighing scale
* Balance as in equality or equilibrium
Arts and entertainment Film
* ''Balance'' (1983 film), a Bulgarian ...
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 represent ...
(colorspace)
** Parametric adjustments (curves, eq)
* Histograms and visualization
** CIE Scope (ciescope)
**
Vectorscope
A vectorscope is a special type of oscilloscope used in both audio and video applications. Whereas an oscilloscope or waveform monitor normally displays a plot of signal vs. time, a vectorscope displays an X-Y plot of two signals, which can r ...
(vectorscope)
**
Waveform monitor
A waveform monitor is a special type of oscilloscope used in television production applications. It is typically used to measure and display the level, or voltage, of a video signal with respect to time.
The level of a video signal usually corre ...
(waveform)
**
Color histogram
In image processing and photography, a color histogram is a representation of the distribution of colors in an image. For digital images, a color histogram represents the number of pixels that have colors in each of a fixed list of color ranges, ...
(histogram)
* Drawing
*
OCR
* Quality measures
**
SSIM
The structural similarity index measure (SSIM) is a method for predicting the perceived quality of digital television and cinematic pictures, as well as other kinds of digital images and videos. SSIM is used for measuring the similarity between tw ...
(ssim)
**
PSNR
Peak signal-to-noise ratio (PSNR) is an engineering term for the ratio between the maximum possible power of a Signal (information theory), signal and the power of corrupting noise that affects the fidelity of its representation. Because many sign ...
(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
Cospective Pty Ltd, formerly Rising Sun Research, is an Australian software firm located in Adelaide, South Australia. It is the Australian arm of the international ftrack organisation.
The company originated as a technology spin-off from the ...
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 Eff ...
3dl
*
DaVinci Resolve
DaVinci Resolve (originally known as da Vinci Resolve) is a color grading, color correction, visual effects, and audio post-production video editing application for macOS, Windows, and Linux, originally developed by da Vinci Systems, and now deve ...
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 media, 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 rele ...
(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 an ...
(a.k.a. FireWire; via libdc1394 and libraw1394; input only)
*
IEC 61883 IEC 61883 Consumer Audio/Video Equipment - Digital Interface is a technical standard for a digital interface that is used by IEEE 1394 ( FireWire) devices for audio and video equipment. The standard for these devices is maintained by the Internat ...
(via libiec61883; input only)
*
DeckLink
*
Brooktree
Brooktree was an American company founded in 1983 by Henry Katzenstein to commercialize a faster hardware architecture for digital to analog converters, three to eight times faster than the converters then on the market.
The company was bough ...
video capture chip (via bktr driver; input only)
Audio IO
*
Advanced Linux Sound Architecture
Advanced Linux Sound Architecture (ALSA) is a software framework and part of the Linux kernel that provides an application programming interface (API) for sound card device drivers.
Some of the goals of the ALSA project at its inception w ...
(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 the ...
(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 operating ...
*
JACK Audio Connection Kit
JACK Audio Connection Kit (or JACK; a recursive acronym) is a professional sound server Application programming interface, API and pair of daemon (computing), daemon implementations to provide real-time, low-latency connections for both audio and ...
(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 hard ...
*
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 Ma ...
(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 computers. Within the market of desktop and lapt ...
)
**
AVFoundation
AVFoundation is a multimedia framework with APIs in Objective-C and Swift, which provides high-level services for working with time-based audiovisual media on Apple Darwin-based operating systems: iOS, macOS, tvOS, and watchOS. It was first int ...
(input only)
** AudioToolbox (output only)
Video IO
*
Video4Linux
Video4Linux (V4L for short) is a collection of device drivers and an API for supporting realtime video capture on Linux systems. It supports many USB webcams, TV tuners, and related devices, standardizing their output, so programmers can easily ad ...
2
*
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 9 ...
(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 ear ...
* Android Camera (input only)
Screen capture and output
*
Simple DirectMedia Layer
Simple DirectMedia Layer (SDL) is a cross-platform software development library designed to provide a hardware abstraction layer for computer multimedia hardware components. Software developers can use it to write high-performance computer games ...
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
The Linux framebuffer (fbdev) is a linux subsystem used to show graphics on a computer monitor, typically on the system console.
It was designed as a hardware-independent API to give user space software access to the framebuffer (the part of ...
(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 ...
(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 wit ...
(X11; via
XCB
XCB (''X protocol C-language Binding'') is a library implementing the client-side of the X11 display server protocol. XCB is written in the C programming language and distributed under the MIT License. The project was started in 2001 by B ...
; 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 use ...
(XV; via
Xlib
Xlib (also known as libX11) is an X Window System protocol client library written in the C programming language. It contains functions for interacting with an X server. These functions allow programmers to write programs without knowing the d ...
; output only)
*
Kernel Mode Setting (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 patent
A software patent is a patent on a piece of software, such as a computer program, libraries, user interface, or algorithm.
Background
A patent is a set of exclusionary rights granted by a state to a patent holder for a limited period of time, u ...
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 des ...
, 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
x264 is a free and open-source software library and a command-line utility developed by VideoLAN for encoding video streams into the H.264/MPEG-4 AVC video coding format. It is released under the terms of the GNU General Public License.
History ...
), 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 appliance, kitchen and laboratory appliance used to mix, crush, purée or emulsion, emulsify food and other substances. A stationary blender consists of a blender ...
,
Cinelerra-GG Infinity
Cinelerra is a video editing and composition program (an NLE, Non-Linear Editor) designed for Linux. It is free software distributed under the open source GNU General Public License. In addition to editing, it supports advanced composition operati ...
,
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 programm ...
,
MPC-HC
Media Player Classic (MPC), Media Player Classic - Home Cinema (MPC-HC), and Media Player Classic - Black Edition (MPC-BE) are a family of free and open-source, compact, lightweight, and customizable media players for 32-bit and 64-bit Microsoft ...
,
Plex,
Shotcut
Shotcut is a free and open-source, cross-platform Video editing software, video, Audio editing software, audio, and Graphics software, image editing program for FreeBSD, Linux, macOS and Windows. Started in 2011 by Dan Dennedy, Shotcut is develo ...
, VirtualDub2 (a
VirtualDub
VirtualDub is a free and open-source video capture and video processing utility for Microsoft Windows written by Avery Lee. It is designed to process linear video streams, including filtering and recompression. It uses AVI container format to ...
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 desk ...
,
xine
xine is a multimedia playback engine for Unix-like operating systems released under the GNU General Public License. xine is built around a shared library (xine-lib) that supports different frontend player applications. xine uses libraries ...
and
YouTube
YouTube is a global online video platform, online video sharing and social media, 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 ...
.
[.] 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
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
front-ends for FFmpeg have been developed, including Multimedia Xpert and
XMedia Recode
XMedia Recode is a freeware video and audio transcoding program for Microsoft Windows developed by Sebastian Dörfler. It can import and export many types of files such as WMV, MP4, MP3, 3GP, Matroska and more. XMedia Recode can convert unprotect ...
.
FFmpeg is used by
ffdshow
ffdshow is an open-source unmaintained codec library that is mainly used for decoding of video in the MPEG-4 ASP (e.g. encoded with DivX or Xvid) and H.264/MPEG-4 AVC video formats, but it supports numerous other video and audio formats as we ...
, FFmpegInterop, the
GStreamer FFmpeg plug-in, LAV Filters and
OpenMAX IL
OpenMAX (Open Media Acceleration), often shortened as "OMX", is a non-proprietary and royalty-free cross-platform set of C (programming language), C-language programming interfaces. It provides abstractions for routines that are especially useful ...
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, succeeding t ...
'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 Ear ...
mission, FFmpeg is used by the
Perseverance rover
''Perseverance'', nicknamed ''Percy'', is a car-sized Mars rover designed to explore the Jezero crater on Mars as part of NASA's Mars 2020 mission. It was manufactured by the Jet Propulsion Laboratory and launched on July 30, 2020, at 11:50 ...
on Mars for image and video compression before footage is sent to Earth.
See also
*
MEncoder
MEncoder is a free command line transcoding tool released under the GNU General Public License. It is a sibling of MPlayer, and can convert all the formats that MPlayer understands into a variety of compressed and uncompressed formats using differ ...
, a similar project
*
List of open-source codecs
This is a listing of open-source codecs—that is, open-source software implementations of audio or video coding formats. Many of the codecs listed implement media formats that are restricted by patents and are hence not open formats. For exampl ...
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