FFmpeg
From Wikipedia, the free encyclopedia
Developed by | FFmpeg team |
---|---|
Latest release | 0.5 / 2009-03-10 |
Written in | C |
Operating system | Cross-platform |
Development status | active |
Type | Multimedia framework |
License | GNU Lesser General Public License |
Website | ffmpeg.org |
FFmpeg is a computer program that can record, convert and stream digital audio and video in numerous formats.[1] FFmpeg is a command line tool that is composed of a collection of free software / open source libraries. It includes libavcodec, an audio/video codec library used by several other projects, and libavformat, an audio/video container mux and demux library. The name of the project comes from the MPEG video standards group, together with "FF" for "fast forward".[2]
The project was started by Fabrice Bellard (using the pseudonym “Gerard Lantau”), and is now maintained by Michael Niedermayer. Many FFmpeg developers are also part of the MPlayer project, and FFmpeg is hosted at the MPlayer project server.
FFmpeg is developed under GNU/Linux, but it can be compiled under most operating systems, including Apple Inc. Mac OS X, Microsoft Windows and AmigaOS. Recently version .5 was released, although previously FFmpeg developers recommended using the latest Subversion snapshot as development attempts to maintain a stable trunk.[3] Published under the GNU Lesser General Public License or GNU General Public License (depending on which sub-libraries one would include), FFmpeg is free software.
There are two video codecs invented in the FFmpeg project during its development. They are the lossless FFV1, and the lossless or lossy Snow codec, for which a version 1.0 is still in development.
Contents |
[edit] Design
This section requires expansion. |
[edit] Components
The project is made of several components:
- ffmpeg is a command line tool to convert one video file format to another. It can also grab and encode in real time from a TV card.
- ffserver is an HTTP (RTSP is being developed) multimedia streaming server for live broadcasts. It can also time shift live broadcast.
- ffplay is a simple media player based on SDL and on the FFmpeg libraries.
- libavcodec is a library containing all the FFmpeg audio/video encoders and decoders. Most codecs were developed from scratch to ensure best performance and high code reusability.
- libavformat 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 include adler32, crc, md5, sha1, lzo decompressor, Base64 encoder/decoder, des encrypter/decrypter, rc4 encrypter/decrypter and aes encrypter/decrypter.
- libpostproc is a library containing video postprocessing routines.
- libswscale is a library containing video image scaling routines.
- libavfilter is the substitute for vhook which allows the video to be modified or examined between the decoder and the encoder.
[edit] Codecs, formats and protocols supported
[edit] Codecs
Codecs with the origin in the project:
The FFmpeg developers have implemented among others:
- ATRAC3[4]
- H.261,[4] H.263[4] and H.264/MPEG-4 AVC[4]
- Indeo 2 and 3[4]
- QDesign Music Codec 2, used by many QuickTime movies prior to QuickTime 7.
- Smacker video
- Sorenson 3 Codec used by many QuickTime movies
- Theora (together with Vorbis makes a base for the .ogg format)
- Truespeech
- TXD[5]
- VP5[4] and VP6[4]
- Vorbis
- Windows Media Audio
- Some Windows Media Video codecs, including WMV1, WMV2 and WMV3
The default MPEG-4 codec used by FFmpeg for encoding has the FourCC of FMP4.
[edit] Formats
- ASF
- AVI
- BFI[6]
- IFF[7]
- RL2[8]
- FLV
- Material Exchange Format
- Matroska
- Maxis XA[9]
- MSN Webcam stream[10]
- MPEG transport stream
- TXD[5]
- OMA[11]
[edit] Protocols
[edit] Supported multimedia frameworks
FFmpeg does not currently have a native wrapper for multimedia frameworks but there are some wrappers that are available from external projects.
- DirectShow/VFW
- ffdshow (external project)
- QuickTime
- Perian (external project)
- GStreamer
- GStreamer FFmpeg plug-in (external project)
[edit] Legal status
FFmpeg's legal status varies by country. Practically all included codecs (i.e. all codecs that perform compression) could be claimed by patent holders. Such claims may be enforceable in countries like the United States which have implemented software patents, but are considered unenforceable or void in countries that have not implemented software patents. Furthermore, many of these codecs are only released under terms that forbid reverse engineering, even for purposes of interoperability. However, these terms of use are forbidden in certain countries. For example, some European Union nations have not implemented software patents and/or have laws expressly allowing reverse engineering for purposes of interoperability.[12] Most Linux distributions do not include FFmpeg to avoid legal complications,[13] instead providing such software at unofficial repositories.
[edit] See also
- MPlayer, the media player that takes much of its source code from FFmpeg
- MEncoder, the encoder variant of MPlayer, which is similar to FFmpeg
- MediaCoder, a media transcoding application for Windows OSs, also related to MPlayer
- VLC media player uses FFmpeg at codec base, adds other codecs, cross platform
- Open source codecs and containers
[edit] References
- ^ FFmpeg Documentation
- ^ Bellard, Fabrice (18 February 2006). "FFmpeg naming and logo". FFmpeg developer mailing list. Mplayer website. http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2006-February/007707.html. Retrieved on 2007-03-29.
- ^ "FFmpeg Download and SVN". FFmpeg website. http://ffmpeg.org/download.html. Retrieved on 2008-03-22.
- ^ a b c d e f g banan (17 April 2007). "Changelog". FFmpeg trunk SVN. FFmpeg website. http://svn.mplayerhq.hu/ffmpeg/trunk/Changelog?revision=8747&view=marku. Retrieved on 2007-04-26.
- ^ a b banan (7 May 2007). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-May/028761.html. Retrieved on 2007-06-01.
- ^ vitor (2008-04-13). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. https://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-April/013231.html. Retrieved on 2008-04-14.
- ^ vitor (2008-03-30). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. https://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-March/012963.html. Retrieved on 2008-03-30.
- ^ faust3 (2008-03-21). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. http://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-March/012799.html. Retrieved on 2008-03-21.
- ^ benoit (2008-04-14). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. https://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-April/013245.html. Retrieved on 2008-04-14.
- ^ ramiro (2008-03-18). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. http://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-March/012708.html. Retrieved on 2008-03-18.
- ^ banan (2008-06-08). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. http://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-June/014417.html. Retrieved on 2008-06-08.
- ^ . Council Directive 91/250/EEC of 14 May 1991 on the legal protection of computer programs.
- ^ "Information about this on FFmpeg's website". http://ffmpeg.org/legal.html.