libavcodec is a free and open-source[4] library of codecs for encoding and decoding video and audio data.[5]

libavcodec
Developer(s)FFmpeg team
Stable release60.31.102 (included in FFmpeg 6.1.1)[1] (December 31, 2023; 10 months ago (2023-12-31)) [±]
Preview releaseGit [±]
Repository
Written inC99
Operating systemAvailable for Windows, OS X, Linux but may be compiled for any other OS[2]
PlatformAvailable for x86 but may be compiled for any desktop computer or supercomputer
TypeMultimedia Library
LicenseGNU LGPL 2.1+ or GNU GPL 2+ or non-redistributable if compiled as such[3]
Websiteffmpeg.org

libavcodec is an integral part of many open-source multimedia applications and frameworks. The popular MPV, xine and VLC media players use it as their main, built-in decoding engine that enables playback of many audio and video formats on all supported platforms. It is also used by the ffdshow tryouts decoder as its primary decoding library. libavcodec is also used in video editing and transcoding applications like Avidemux, MEncoder or Kdenlive for both decoding and encoding.

libavcodec contains decoder and sometimes encoder implementations of several proprietary formats, including ones for which no public specification has been released. As such, a significant reverse engineering effort is part of libavcodec development. Having such codecs available within the standard libavcodec framework gives a number of benefits over using the original codecs, most notably increased portability, and in some cases also better performance, since libavcodec contains a standard library of highly optimized implementations of common building blocks, such as DCT and color space conversion. However, while libavcodec does strive to achieve decoding that is bit-exact to their official format implementations, occasional bugs and missing features in such re-implementations can sometimes introduce playback compatibility problems for certain files.

Implemented video codecs

edit

libavcodec includes video decoders and/or encoders for the following formats, this list is not exhaustive:[6]

Implemented audio codecs

edit

libavcodec includes decoders and encoders for the following formats:[6]

edit

Libavcodec contains more than 100 codecs,[8] most of which do not just store uncompressed data. Most codecs that compress information could be claimed by patent holders.[9] 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. These terms of use are forbidden in certain countries. For example, some European Union nations have not implemented software patents and have laws expressly allowing reverse engineering for purposes of interoperability.[10]

Libraries that depend on libavcodec

edit
  • libavformat (part of FFmpeg)
  • libgegl (optional part of GEGL)
    • libgimp (part of GIMP)
  • libmpcodecs (part of MPlayer)
    • libmpdemux (part of MPlayer)

Applications using libavcodec

edit

Video players

edit

Audio players

edit
  • Audacious (Uses in audacious-plugins's ffaudio)
  • Rockbox (Includes only FLAC code)
  • XMMS2

Multimedia players

edit

Video editors

edit

Audio editors

edit

Video converters

edit

Video libraries

edit

Optical disc authoring

edit

Graphics libraries

edit

3D graphics editors

edit

VoIP

edit

Multimedia streaming server

edit

Multimedia frameworks

edit

Computer vision libraries

edit

Browser

edit

Media center

edit

Screen capture

edit

Device utilities

edit
  • BitPim – utilities for CDMA phones

CCTV

edit
  • ZoneMinder – video camera security suite
  • Motion – video camera security/monitoring program

Games

edit

Others

edit

References

edit
  1. ^ [1]
  2. ^ "Download". ffmpeg.org. FFmpeg. Archived from the original on 2013-09-27. Retrieved 2012-01-04.
  3. ^ libavcodec can be configured to make it a proprietary and non-redistributable library since some optional external libraries are proprietary software and cannot be distributed under the terms of the GPL (e.g. Decklink).
  4. ^ "Libav License and Legal Considerations". libav.org. Archived from the original on 2021-05-15. Retrieved 2013-05-07.
  5. ^ libavcodec – AfterDawn: Glossary of technology terms & acronyms, AfterDawn, 2010-07-02, archived from the original on 2010-02-14, retrieved 2012-01-17
  6. ^ a b General Documentation, Ffmpeg.org, archived from the original on 2019-07-17, retrieved 2021-05-05
  7. ^ "git.ffmpeg.org Git - ffmpeg.git/commit". git.ffmpeg.org. Retrieved 2024-01-03.
  8. ^ "Codecs list". ffmpeg.org. Archived from the original on 2014-06-29. Retrieved 2012-01-01.
  9. ^ "Legal information on FFmpeg's website". ffmpeg.org. Archived from the original on 2010-09-18. Retrieved 2012-01-04.
  10. ^ Council Directive 91/250/EEC of 14 May 1991 on the legal protection of computer programs
  11. ^ Wieckowski, Adam; Lehmann, Christian; Bross, Benjamin; Marpe, Detlev; Biatek, Thibaud; Raulet, Mickael; Jean Le Feuvre (2021). "A Complete End to End Open Source Toolchain for the Versatile Video Coding (VVC) Standard". Proceedings of the 29th ACM International Conference on Multimedia. pp. 3795–3798. arXiv:2107.13385. doi:10.1145/3474085.3478320. ISBN 9781450386517. S2CID 236469263.
  12. ^ Gumster, Jason van (13 April 2009), Blender for Dummies, Wiley, p. 320, ISBN 9780470471586, archived from the original on 2022-03-14, retrieved 2012-01-17
  13. ^ Bradski, Gary; Kaehler, Adrian (2008-09-24), Learning OpenCV: computer vision with the OpenCV library, "O'Reilly Media, Inc.", p. 9, ISBN 9780596554040, archived from the original on 2021-08-27, retrieved 2012-01-17
  14. ^ whatwg MPEG-1 subset proposal for HTML5 video codec, Lists.whatwg.org, archived from the original on 2012-02-19, retrieved 2012-01-17
  15. ^ "Firefox Source Code Libavcodec". Firefox source code repository. Retrieved 2024-01-08.
  16. ^ Russo, Barbara; Damiani, Ernesto; Hissam, Scott; Lundell, Björn; Succi, Giancarlo (17 July 2008), Open Source Development, Communities and Quality: IFIP 20th World Computer, Springer, p. 167, ISBN 9780387096834, archived from the original on 2021-08-29, retrieved 2012-01-17
  17. ^ pulseaudio.git/tree – src/pulsecore/ffmpeg/, Git.0pointer.de, archived from the original on 2012-07-13, retrieved 2012-01-17