Jump to content

Libav

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Bender235 (talk | contribs) at 18:51, 14 September 2016 (Fork from FFmpeg: clean up; HTTP→HTTPS using AWB). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Libav
Developer(s)Libav team
Initial releaseMarch 13, 2011 (2011-03-13)[1]
Stable release12.3 (February 12, 2018; 6 years ago (2018-02-12)) [±]
Written inC[2]
Operating systemCross-platform[which?]
PlatformMulti-platform[which?]
TypeMultimedia framework
LicenseGNU LGPL 2.1+
GNU GPL 2+[3]
Websitelibav.org

Libav is a free software project, forked from FFmpeg in 2011, that produces libraries and programs for handling multimedia data. Libav is developed for many operating systems, including GNU/Linux, the BSDs, OS X, Microsoft Windows, AmigaOS and its heir MorphOS. It supports most common instruction set architectures, including IA-32, x86-64, PowerPC, ARM, DEC Alpha, SPARC, and MIPS.[4]

History

Fork from FFmpeg

The Libav project is a fork of the FFmpeg project[5] which was originally started by Fabrice Bellard[3] (using the pseudonym "Gérard Lantau"). The Libav project was announced on March 13, 2011 by a group of FFmpeg developers.[6][7][8] The event was related to an issue in project management and different goals: FFmpeg supporters wanted to keep development velocity in favour of more features, while Libav supporters wanted to improve the state of the code, take the time to design better APIs.[9][10]

The maintainer of the FFmpeg packages for Debian[11] and Ubuntu,[12] being one of the group of developers who forked FFmpeg, switched the packages to this fork in 2011. Hence, most software on these systems that depended on FFmpeg automatically switched to Libav. In July 8, 2015, Debian announced it would return to FFmpeg[13] for various, technical reasons.[14] Several arguments justified this step. FFmpeg first had a better record of responding to vulnerabilities than Libav. Secondly, Mateusz “j00ru” Jurczyk, a security-oriented developer at Google, argued that all issues he found were fixed in a timely manner, and the situation was entirely different with Libav still affected by various bugs. Finally, the feature gap between FFmpeg and Libav, with FFmpeg supporting a far wider variety of codecs and containers than Libav does.

It has been suggested to merge the two projects back into each other but this has not happened. With Debian and Ubuntu no longer using Libav, its future might be compromised and its development may no longer be sustainable.[15]

Confusion

At the beginning of this fork, Libav and FFmpeg separately developed their own versions of the ffmpeg command. Libav then renamed their ffmpeg to avconv to distance themselves from the FFmpeg project. During the transition period, when a Libav user typed ffmpeg, there was a message telling the user that the ffmpeg command was deprecated and avconv has to be used instead. This confused some users into thinking that FFmpeg (the project) was dead.

This message was removed upstream when ffmpeg was finally removed from the Libav sources. In June 2012, on Ubuntu 12.04, the message was re-worded, but that new "deprecated" message caused even more user confusion. Starting with Ubuntu 15.04 "Vivid", FFmpeg's ffmpeg is back in the repositories again.

To further complicate matters, Libav chose a name that was used by FFmpeg to refer to its libraries (libavcodec, libavformat, etc.). For example, the libav-user mailing list, for questions and discussions about using the FFmpeg libraries, is unrelated to the Libav project.[16][17]

Software using Libav instead of FFmpeg

Debian followed Libav when it was announced, and announced it would return to FFmpeg for Debian Stretch (9.0).[18]

Gentoo users are free to choose between FFmpeg and Libav by the way they install their "virtual" FFmpeg.[19]

MPlayer2, a defunct fork of MPlayer, used Libav exclusively, but could be used with Gstreamer with its public API. mpv can use both.[20] GStreamer can however support Mplayer and Mplayer2 through different plugins.[citation needed]

Codecs

Libav contains more than 100 codecs.[21] Many codecs that compress information have been claimed by patent holders.[22] 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.

The Libav logo uses a zigzag pattern that references how MPEG video codecs handle entropy encoding.[23] It was previously the logo of the FFmpeg project until LibAV was forked from it. Following the fork, in 2011 one of the LibAV developers Måns Rullgård claimed copyright over the logo and requested FFmpeg cease and desist from using it.[24] FFmpeg subsequently altered their logo into a 3D version.[25]

Google Summer of Code participation

Libav participated in the Google Summer of Code program in 2011 and 2012.[needs update][26]

With participation in the Google Summer of Code, Libav has had many new features and improvements developed, including a WMVP/WVP2 decoder, hardware accelerated H.264 decoding on Android, and G.723.1 codec support.[26]

Technical details

Components

an audio/video codec library used by several other projects, libavformat, an audio/video container mux and demux library, and the avconv program for multimedia files

The command line-programs:

avconv
A video and audio converter that can also grab from a live audio/video source.
avserver
A streaming server for both audio and video.
avplay
A very simple and portable media player using the Libav libraries and the SDL library.
avprobe
Gathers information from multimedia streams and prints it in human- and machine-readable fashion.

The libraries:

libavcodec
A library containing all the Libav audio/video encoders and decoders.
libavfilter
The substitute for vhook which allows the video/audio to be modified or examined between the decoder and the encoder.
libavformat
A library containing demuxers and muxers for audio/video container formats.
libavresample
A library containing audio resampling routines.
libavutil
A helper library containing routines common to different parts of Libav.

This library includes adler32, crc, md5, sha1, lzo decompressor, Base64 encoder/decoder, des encrypter/decrypter, rc4 encrypter/decrypter and aes encrypter/decrypter.

libswscale
A library containing video image scaling and colorspace/pixelformat conversion routines.

Contained codecs

Numerous free and open-source implementations of existing algorithms for the (usually lossy) compression and decompression of audio or video data, called codecs, are available. Please note that an algorithm can be subject to patent law in some jurisdictions. Here are lists of the ones contained in the libav library:

Video codecs

Libav includes video decoders and/or encoders for the following formats:[27]

Audio codecs

Libav includes decoders and encoders for the following formats:[32]

Supported file formats

Additionally to the aforementioned codecs, Libav also supports several file formats (file formats designed to contain audio and/or video data and subtitles, are called "containers", but that is just a special denomiation.):

Supported protocols

Support for several communications protocols is also contained in Libav. Here is a list:

  • IETF standards: TCP, UDP, Gopher, HTTP, RTP, RTSP and SDP
  • Apple related protocols: HTTP Live Streaming
  • RealMedia related protocols: RealMedia RTSP/RDT
  • Adobe related protocols: RTMP, RTMPT (via librtmp), RTMPE (via librtmp), RTMPTE (via librtmp) and RTMPS (via librtmp)
  • Microsoft related protocols: MMS over TCP and MMS over HTTP

See also

References

  1. ^ "Libav Home/News Page". libav.org. 2012-05-09.
  2. ^ "Developer Documentation". libav.org. 2011-12-08. Retrieved 2012-05-17.
  3. ^ "FATE". libav.org. Retrieved 2012-05-17.
  4. ^ "About Libav". libav.org. Retrieved 2014-11-30. ... which convinced us to fork "properly" under the name Libav with its own website, mailing lists, IRC channel and repositories, thus completely separating from the old FFmpeg project
  5. ^ "Libav project site". libav.org. Retrieved 2012-01-04.
  6. ^ Ronald S. Bultje (2011-03-14). "Project renamed to Libav". gmane.org. Retrieved 2012-01-04.
  7. ^ "A group of FFmpeg developers just forked as Libav". phoronix.com. Phoronix. 2011-03-14. Retrieved 2012-01-04.
  8. ^ "What happened to FFmpeg". multimedia.cx. 2011-03-30. Retrieved 2012-05-19.
  9. ^ "FFMpeg turmoil". lwn.net. 2011-01-19. Retrieved 2012-01-04.
  10. ^ "transition: Libav 0.7". debian.org. 2011-05-01. Retrieved 2012-01-04.
  11. ^ "Ubuntu Release Management: Transition: "Libav"". canonical.com. Retrieved 2012-01-04.
  12. ^ "libav and FFmpeg: switch over". debian.org. 2015-08-02. Retrieved 2015-08-02.
  13. ^ "Debate/libav-provider/ffmpeg - Debian Wiki". debian.org. 2015-08-02. Retrieved 2015-08-02.
  14. ^ "Why Debian returned to FFmpeg". July 13, 2015. Retrieved August 14, 2015.
  15. ^ "What are the differences and similarities between ffmpeg, libav, and avconv?". February 28, 2012. Retrieved 14 August 2015.
  16. ^ "The FFmpeg/Libav situation". 30 June 2012. Retrieved 14 August 2015.
  17. ^ "Debian to switch back to ffmpeg". July 8, 2015. Retrieved 14 August 2015.
  18. ^ http://packages.gentoo.org/package/virtual/ffmpeg
  19. ^ "mpv - README - Compilation". July 14, 2015. Retrieved August 13, 2015.
  20. ^ "Supported File Formats and Codecs". libav.org. Retrieved 2014-05-04.
  21. ^ "Libav License and Legal Considerations". libav.org. Retrieved 2014-05-04.
  22. ^ FFmpeg logo - FFMpeg mailing list, 20 Feb 2007
  23. ^ Legal Threat - ffmpeg.org 28 May 2011
  24. ^ FFmpeg License and Legal Considerations - ffmpeg.org, June 2011
  25. ^ a b "FFmpeg/Libav Summer of Code". multimedia.cx. Retrieved 2012-05-19.
  26. ^ "General Documentation". libav.org. Retrieved 2012-05-19.
  27. ^ a b c d e f g banan (17 April 2007). "Changelog". mplayerhq.hu. Retrieved 26 April 2007.
  28. ^ http://git.libav.org/?p=libav.git&a=commit&h=50ea93158d4c480f64069e8bd1da388486dcf4ba
  29. ^ https://github.com/OpenHEVC/libav
  30. ^ a b ivo (7 May 2007). "FFmpeg development mailing list". mplayerhq.hu. Retrieved 24 December 2010.
  31. ^ "General Documentation". libav.org. Retrieved 2012-05-19.
  32. ^ "#210 (24bit flac encoding) - FFmpeg". Ffmpeg.org. Retrieved 2012-02-03.
  33. ^ vitor (13 April 2008). "FFmpeg development mailing list". mplayerhq.hu. Retrieved 14 April 2008.
  34. ^ vitor (30 March 2008). "FFmpeg development mailing list". mplayerhq.hu. Retrieved 30 March 2008.
  35. ^ faust3 (21 March 2008). "FFmpeg development mailing list". mplayerhq.hu. Retrieved 21 March 2008.{{cite web}}: CS1 maint: numeric names: authors list (link)
  36. ^ benoit (14 April 2008). "FFmpeg development mailing list". mplayerhq.hu. Retrieved 14 April 2008.
  37. ^ ramiro (18 March 2008). "FFmpeg development mailing list". mplayerhq.hu. Retrieved 18 March 2008.
  38. ^ banan (8 June 2008). "FFmpeg development mailing list". mplayerhq.hu. Retrieved 8 June 2008.
  39. ^ "Page showing Libav snapshot VLC uses". videolan.org. Retrieved 2012-05-24.