What are the differences and similarities between ffmpeg, libav, and avconv?

158,332

Libav is dead

Last commit was on 2019-08-21. Use FFmpeg.

Confusing messages

The messages mentioned in the question are rather misleading and understandably a source of confusion.

The fork was basically a non-amicable result of conflicting personalities and development styles within the FFmpeg community.

The real ffmpeg vs the fake one

For a while both Libav and FFmpeg separately developed their own version of ffmpeg.

Libav then renamed their bizarro ffmpeg to avconv to distance themselves from the FFmpeg project. During the transition period the "not developed anymore" message was displayed to tell users to start using avconv instead of their counterfeit version of ffmpeg. This confused users into thinking that FFmpeg (the project) is dead, which is not true. A bad choice of words, but I can't imagine Libav not expecting such a response by general users.

This message was removed upstream when the fake "ffmpeg" was finally removed from the Libav source.

In June 2012, the message was re-worded in Ubuntu for the package libav - 4:0.8.3-0ubuntu0.12.04.1. Unfortunately the new "deprecated" message has caused additional user confusion.

Starting with Ubuntu 15.04 "Vivid Vervet", FFmpeg's ffmpeg is returned to the repositories.

libav vs Libav

To further complicate matters, Libav chose a name that was historically 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.

How to tell the difference

If you are using avconv then you are using Libav. If you are using ffmpeg you could be using FFmpeg or Libav. Refer to the first line in the console output to tell the difference: the copyright notice will either mention FFmpeg or Libav.

Secondly, the version numbering schemes differ. Each of the FFmpeg or Libav libraries contains a version.h header which shows a version number. FFmpeg will end in three digits, such as 57.67.100, and Libav will end in one digit such as 57.67.0. You can also view the library version numbers by running ffmpeg or avconv and viewing the console output.

Also see

For an interesting blog article on the situation, as well as a discussion about the main technical differences between the projects, see The FFmpeg/Libav situation.

Share:
158,332

Related videos on Youtube

why
Author by

why

Updated on May 27, 2021

Comments

  • why
    why almost 3 years

    When I run ffmpeg on Ubuntu, it shows:

    $ ffmpeg 
    ffmpeg version v0.8, Copyright (c) 2000-2011 the Libav developers
      built on Feb 28 2012 13:27:36 with gcc 4.6.1
    This program is not developed anymore and is only provided for compatibility. Use avconv instead (see Changelog for the list of incompatible changes).
    

    Or it shows (depending on the Ubuntu version):

    $ ffmpeg
    ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
      built on Jan 24 2013 14:49:20 with gcc 4.7.2
    *** THIS PROGRAM IS DEPRECATED ***
    This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
    

    I found avconv on http://libav.org. I am just perplexed by them.

    • Dipan Mehta
      Dipan Mehta about 12 years
      This implies that you are giving wrong command line arguments.
    • why
      why about 12 years
      This program is not developed anymore and is only provided for compatibility. Use avconv instead
    • Dipan Mehta
      Dipan Mehta about 12 years
      What are you trying to do? ffmpeg is library mostly and main ffmpeg commandline is more for demonstration of its features (though it doesn't matter that you use if it helps). If you want to use only as a command, there are many applications that use ffmpeg to do what you want to do.
    • Tronic
      Tronic over 11 years
      There is a helpful explanation of the whole deal at blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
    • Admin
      Admin almost 11 years
      I cannot tell you all the differences, but: avconv -ss 00:01:42 -t 00:00:32 -i sourcefilename -acodec copy targetfilename does not work, and ffmpeg -ss 00:01:42 -t 00:00:32 -i sourcefilename -acodec copy targetfilename does work as expected even though the documentations match
  • mirza
    mirza almost 12 years
    looks like it's a personal issue
  • user568109
    user568109 over 10 years
    If even after installing the real ffmpeg you are not able to get it working. You should remove default ffmpeg shipped with ubuntu as libav-tools, see : askubuntu.com/questions/162740/how-do-i-uninstall-ffmpeg.
  • llogan
    llogan over 10 years
    @user568109 It depends on how you installed ffmpeg. See How to Compile FFmpeg on Ubuntu, Debian, or Mint or just use a Linux build of ffmpeg. Either of these methods should work if the repository package is also installed.
  • user568109
    user568109 over 10 years
    I did build ffmpeg but when running ffmpeg from terminal the one shipped default was running and doing apt-get remove ffmpeg did not remove it. So I left a message for those stuck with this issue, just to clear the confusion. It is shipped as libav-tools.
  • rkachach
    rkachach about 5 years
    It seems like some "trademark" system is needed in the open-source community to avoid these situations !!!
  • OrangeDog
    OrangeDog over 3 years
    An additional note: Libav refused to incorporate any changes from FFmpeg, but FFmpeg was perfectly happy to take Libav's fixes, so FFmpeg was usually the better software.
  • OrangeDog
    OrangeDog over 3 years
    Also Libav seems to be dead now (last commit Aug 2019), while FFmpeg continues active development