Libav

Short description: Multimedia framework

Libav

Screenshot of the movie Sintel being played using the avplay program from the Libav project.

Developer(s)| Libav team
Initial release| March 13, 2011 (2011-03-13)[1]
Final release| 12.3 (February 12, 2018; 8 years ago (2018-02-12)) [±]
Written in| C[2]
Operating system| Linux, BSD, macOS, Microsoft Windows, AmigaOS, MorphOS[3]
Platform| IA-32, x86-64, PowerPC, ARM, DEC Alpha, SPARC, and MIPS[3]
Type| Multimedia framework
License| LGPL-2.1-or-later
GPL-2.0-or-later[4]
Website| libav.org

Libav is an abandoned[5] free software project, forked from FFmpeg in 2011, that contains libraries and programs for handling multimedia data.

## Contents

* 1 History
* 1.1 Fork from FFmpeg
* 1.2 Confusion
* 1.3 Software using Libav instead of FFmpeg
* 2 Legal aspects
* 2.1 Codecs
* 2.2 Logo
* 3 Google Summer of Code participation
* 4 Technical details
* 4.1 Components
* 4.2 Contained codecs
* 4.2.1 Video codecs
* 4.2.2 Audio codecs
* 4.3 Supported file formats
* 4.4 Supported protocols
* 5 See also
* 6 References
* 7 External links

## History

### Fork from FFmpeg

The Libav project was a fork of the FFmpeg project.[6] It was announced on March 13, 2011 by a group of FFmpeg developers.[7][8][9] 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 and developers wanted to improve the state of the code and take the time to design better APIs.[10][11]

The maintainer of the FFmpeg packages for Debian[12] and Ubuntu,[13] 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. On July 8, 2015, Debian announced it would return to FFmpeg[14] for various, technical reasons.[15] Several arguments justified this step. Firstly, FFmpeg 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 in FFmpeg were fixed in a timely manner, while Libav was still affected by various bugs.[16] Finally, FFmpeg supported a far wider variety of codecs and containers than Libav.

As of 2022,[update] Libav is an abandoned software project, with Libav developers either returning to FFmpeg, moving to other multimedia projects like the AV1 video codec,[17] or leaving the multimedia field entirely.

### 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.[citation needed]

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.[18][19]

### 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).[20]

MPlayer2, a defunct fork of MPlayer, used Libav exclusively, but could be used with GStreamer with its public API. The MPV media player no longer supports Libav due to missing API changes.[21]

## Legal aspects

### Codecs

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

### Logo

The Libav logo uses a zigzag pattern that references how MPEG video codecs handle entropy encoding.[24] 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.[25] FFmpeg subsequently altered their logo into a 3D version.[26]

## Google Summer of Code participation

Libav participated in the Google Summer of Code program in 2011 and 2012.[27]

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.[27]

## Technical details

### Components

Libav primarily consists of libavcodec, which is an audio/video codec library used by several other projects, libavformat, which is an audio/video container muxing and demuxing library, and avconv, which is a multimedia manipulation tool similar to FFmpeg's ffmpeg or Gstreamer gst-launch-1.0 command.

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 and 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 Adler-32, CRC, MD5, SHA-1, 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:[28]

* Adobe Flash Player related video codecs: Screen video, Screen video 2, Sorenson 3 Codec, VP6 and Flash Video (FLV)
* Asus v1
* Asus v2
* AVS (decoding only)
* CamStudio (decoding only)
* Cinepak (decoding only)
* Creative YUV (CYUV, decoding only)
* Dirac (via libschroedinger)
* DNxHD
* Duck TrueMotion v1 (decoding only)
* Duck TrueMotion v2 (decoding only)
* Flash Screen Video
* FFV1
* ITU-T video standards: H.261,[29] H.262/MPEG-2 Part 2, H.263[29] and H.264/MPEG-4 AVC[29]
* H.263
* H.264/MPEG-4 AVC (native decoder, encoding through x264)
* H.265/HEVC since 2014-02-12[30][31]
* Huffyuv
* id Software RoQ Video
* Intel Indeo (decoding only)
* ISO/IEC/ITU-T JPEG image standards: JPEG, JPEG-LS and JPEG 2000
* Lagarith (decoding only)
* LOCO (decoding only)
* DVD Forum standards related / Dolby audio codecs: MLP (a.k.a. TrueHD) and AC-3
* Mimic (decoding only)
* MJPEG
* MPEG-1
* MPEG-2/H.262
* ISO/IEC MPEG video standards: MPEG-1 Part 2, H.262/MPEG-2 Part 2, MPEG-4 Part 2 and H.264/MPEG-4 AVC

* MPEG-4 Part 2 (the format used for example by the popular DivX and Xvid codecs)
* On2 VP8 (native decoder, encoding through libvpx)
* On2: Duck TrueMotion 1, Duck TrueMotion 2, VP3, VP5,[29] VP6[29] and VP8
* Apple ProRes
* Apple Computer QuickDraw (decoding only)
* QuickTime related video codecs: Cinepak, Motion JPEG, ProRes, Sorenson 3 Codec, Animation codec (RLE), Apple Video (RPZA), Graphics Codec (SMC)
* RAD Game Tools: Smacker video and Bink video
* RenderWare: TXD[32]
* RealVideo RV10 and RV20
* RealVideo RV30 and RV40 (decoding only)
* RealPlayer related video codecs: RealVideo 1, 2, 3 and 4
* VC-1 (decoding only)
* Smacker video (decoding only)
* Sorenson SVQ1
* Sorenson SVQ3 (decoding only)
* Theora (native decoder, encoding through libtheora)
* Sierra VMD Video (decoding only)
* VMware VMnc (decoding only)
* Westwood Studios VQA (decoding only)
* Windows Media Player related video codecs: Microsoft RLE, Microsoft Video 1, Cinepak, Indeo 2, 3 and 5,[29] Motion JPEG, Microsoft MPEG-4 v1, v2 and v3, WMV1, WMV2 and WMV3 (a.k.a. VC-1)
* SMPTE video standards: VC-1 (a.k.a. WMV3), VC-2 (a.k.a. Dirac), VC-3 (a.k.a. AVID DNxHD) and DPX image
* Wing Commander/Xan Video (decoding only)

|

#### Audio codecs

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

* 8SVX (decoding only)
* Adobe Flash Player related audio codecs: Adobe SWF ADPCM and Nellymoser Asao
* AAC
* AC-3
* 3GPP vocoder standards: AMR-NB, AMR-WB (a.k.a. G.722.2)
* ITU-T vocoder standards: G.711 μ-law, G.711 A-law, G.721 (a.k.a. G.726 32k), G.722, G.722.2 (a.k.a. AMR-WB), G.723 (a.k.a. G.726 24k and 40k), G.723.1, G.726, G.729 and G.729D
* Apple Lossless
* ATRAC3 (decoding only)
* Cook Codec (decoding only)
* DTS (encoder is highly experimental)
* EA ADPCM (decoding only)
* E-AC-3
* FLAC (24/32 bit support for decoding only[34])
* GSM 06.10 (native decoder, encoding through libgsm)
* GSM related voice codecs: Full Rate
* Intel Music Coder (decoding only)
* Meridian Lossless Packing / Dolby TrueHD (decoding only)
* Monkey's Audio (decoding only)
* MP2
* MP3 (native decoder, encoding through LAME)
* ISO/IEC MPEG audio standards: MP1, MP2, MP3, AAC, HE-AAC and MPEG-4 ALS
* Nellymoser Asao Codec in Flash

* NTT: TwinVQ
* Opus (via libopus)
* QCELP (decoding only)
* QDM2 (decoding only)
* QuickTime related audio codecs: QDesign Music Codec 2 and ALAC
* RealAudio 1.0
* RealAudio 2.0 (decoding only)
* RealPlayer related audio codecs: RealAudio 3, 6, 7, 8, 9 and 10 (a.k.a. ralf for RealAudioLosslessFormat)
* RealPlayer related voice codecs: RealAudio 1, 2 (variant of G.728), 4 and 5
* Shorten (decoding only)
* SMPTE audio standards: SMPTE 302M
* Sony: ATRAC1 and ATRAC3[29]
* Speex (via libspeex)
* Truespeech
* TTA (decoding only)
* TwinVQ (decoding only)
* Vorbis
* WavPack (decoding only)
* Windows Media Audio 1
* Windows Media Audio 2
* Windows Media Audio 9 Professional (decoding only)
* Windows Media Audio Voice (decoding only)
* Windows Media Player related audio codecs: WMA1, WMA2, WMA Pro, and WMA Lossless
* Windows Media Player related voice codecs: WMA Voice and MS-GSM

|

### 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 denomination.):

* ASF
* AVI and also input from AviSynth
* BFI[35]
* CAF
* FLV
* GXF, General eXchange Format, SMPTE 360M
* IFF[36]
* RL2[37]
* ISO base media file format (including QuickTime, 3GP and MP4)
* Matroska (including WebM)
* Maxis XA[38]
* MPEG program stream

* MPEG transport stream (including AVCHD)
* MXF, Material eXchange Format, SMPTE 377M
* MSN Webcam stream[39]
* NUT
* NUV (MythTV NuppelVideo file format)
* Ogg
* OMA[40]
* TXD[32]
* WTV
* WebP

|

### 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

* VLC media player uses libavcodec as its codec base, adds other codecs, cross platform[41]
* Open source codecs and containers

## References

1. ↑ "Libav Home/News Page". libav.org. 2012-05-09. https://www.libav.org/.
2. ↑ "Developer Documentation". libav.org. 2011-12-08. https://libav.org/developer.html.
3. ↑ 3.0 3.1 "FATE". libav.org. https://fate.libav.org/.
4. ↑ "Libav License and Legal Considerations". libav.org. https://www.libav.org/legal.html.
5. ↑ "FFmpeg Maintainer remarks on end of libav". https://lists.libav.org/pipermail/libav-devel/2020-April/086589.html.
6. ↑ "About Libav". libav.org. https://www.libav.org/about.html. "... 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"
7. ↑ "Libav project site". libav.org. https://www.libav.org/.
8. ↑ Ronald S. Bultje (2011-03-14). "Project renamed to Libav". gmane.org. http://article.gmane.org/gmane.comp.video.ffmpeg.devel/129579.
9. ↑ "A group of FFmpeg developers just forked as Libav". phoronix.com. Phoronix. 2011-03-14. https://www.phoronix.com/scan.php?page=news_item&px=OTIwNw.
10. ↑ "What happened to FFmpeg". multimedia.cx. 2011-03-30. http://codecs.multimedia.cx/?p=339.
11. ↑ "FFMpeg turmoil". lwn.net. 2011-01-19. https://lwn.net/Articles/423702/.
12. ↑ "transition: Libav 0.7". debian.org. 2011-05-01. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624807.
13. ↑ "Ubuntu Release Management: Transition: "Libav"". canonical.com. http://people.canonical.com/~ubuntu-archive/transitions/libav.html.
14. ↑ "libav and FFmpeg: switch over". debian.org. 2015-08-02. https://lists.debian.org/debian-devel-announce/2015/07/msg00001.html.
15. ↑ "Debate/libav-provider/ffmpeg - Debian Wiki". debian.org. 2015-08-02. https://wiki.debian.org/Debate/libav-provider/ffmpeg.
16. ↑ "FFmpeg and a thousand fixes". 10 January 2014. https://j00ru.vexillium.org/2014/01/ffmpeg-and-the-tale-of-a-thousand-fixes/.
17. ↑ "Luca Barbato's (Libav developer) blog". 9 April 2019. https://blogs.gentoo.org/lu_zero/tag/rav1e/.
18. ↑ "What are the differences and similarities between ffmpeg, libav, and avconv?". February 28, 2012. https://stackoverflow.com/questions/9477115/who-can-tell-me-the-difference-and-relation-between-ffmpeg-libav-and-avconv/9477756#9477756.
19. ↑ "The FFmpeg/Libav situation". 30 June 2012. http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html.
20. ↑ "Debian to switch back to ffmpeg". July 8, 2015. https://lwn.net/Articles/650495/.
21. ↑ "mpv - README - FFmpeg vs. Libav". April 20, 2018. https://github.com/mpv-player/mpv/blob/7af6cabcba434dfe47619866526bd3c739789d32/README.md.
22. ↑ "Supported File Formats and Codecs". https://libav.org/general.html#Supported-File-Formats-and-Codecs.
23. ↑ "Libav License and Legal Considerations". https://libav.org/legal.html.
24. ↑ FFmpeg logo \- FFMpeg mailing list, 20 Feb 2007
25. ↑ Legal Threat \- ffmpeg.org 28 May 2011
26. ↑ "FFmpeg License and Legal Considerations". 2011-05-31. http://ffmpeg.org/legal.html.
27. ↑ 27.0 27.1 "FFmpeg/Libav Summer of Code". multimedia.cx. http://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code.
28. ↑ "General Documentation". libav.org. https://www.libav.org/general.html.
29. ↑ 29.0 29.1 29.2 29.3 29.4 29.5 29.6 banan (17 April 2007). "Changelog". mplayerhq.hu. http://svn.mplayerhq.hu/ffmpeg/trunk/Changelog?revision=8747&view=marku. [yes|permanent dead link|dead link}}]
30. ↑ "Add libx265 encoder". https://github.com/libav/libav/commit/50ea93158d4c480f64069e8bd1da388486dcf4ba.
31. ↑ "OpenHEVC/Libav · GitHub". https://github.com/OpenHEVC/libav.
32. ↑ 32.0 32.1 ivo (7 May 2007). "FFmpeg development mailing list". mplayerhq.hu. http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-May/028760.html.
33. ↑ "General Documentation". libav.org. https://www.libav.org/general.html#SEC7.
34. ↑ "#210 (24bit flac encoding) - FFmpeg". Ffmpeg.org. http://ffmpeg.org/trac/ffmpeg/ticket/210.
35. ↑ vitor (13 April 2008). "FFmpeg development mailing list". mplayerhq.hu. https://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-April/013231.html. [yes|permanent dead link|dead link}}]
36. ↑ vitor (30 March 2008). "FFmpeg development mailing list". mplayerhq.hu. https://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-March/012963.html. [yes|permanent dead link|dead link}}]
37. ↑ faust3 (21 March 2008). "FFmpeg development mailing list". mplayerhq.hu. http://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-March/012799.html.
38. ↑ benoit (14 April 2008). "FFmpeg development mailing list". mplayerhq.hu. https://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-April/013245.html. [yes|permanent dead link|dead link}}]
39. ↑ ramiro (18 March 2008). "FFmpeg development mailing list". mplayerhq.hu. http://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-March/012708.html.
40. ↑ banan (8 June 2008). "FFmpeg development mailing list". mplayerhq.hu. http://lists.mplayerhq.hu/pipermail/ffmpeg-cvslog/2008-June/014417.html.
41. ↑ "Page showing Libav and FFmpeg snapshots VLC uses (people can compile VLC with either FFmpeg or Libav)". videolan.org. http://git.videolan.org/?p=vlc.git;a=blob;f=contrib/src/ffmpeg/rules.mak;h=948d76d2d52836c8abfb76eebec103014fe3c92b;hb=HEAD.

## External links

0.00

(0 votes)

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:Libav&oldid=3896802"