2

I am working with some gstreamer based application and some other streaming stuff and I came to some confusion: What is difference between libav and ffmpeg?

I found no explanation what are they and how they differ. Even more one have tool called ffmpeg while other does have the same thing too. Also even those project logos are the same. And to make matters worse even external application who uses them misnames them, mix them (gstreamer-0.10 refers to ffmpeg, while gstreamer-1.0 refers to libav).

Is there easy way to find out which library is really needed and used by application? Is there any technical (non political software licensing nonsense) difference why projects split away and I should be aware of when I should work with them?

Update: Someone in comments put the links to questions related to history of both libraries and usefull info. However I doubt that my question is exact duplicate:

  1. I am asking method itself to detect libraries.
  2. List or something like that, caveats or even hints how libraries work different one from another, not opinion which is better, neither how licensing communities differ one from another.
IBr
  • 183

1 Answers1

7

A long time ago there was a project called FFmpeg. The FFmpeg project created a program called ffmpeg. At some point early in the project, it was decided that FFmpeg was so complex it should be broken down into smaller libraries that others could use in their applications. These libraries became know as libav*. They include livavformat, libavcodec, libavutil, and others. The ffmpeg application was simply a way to interact with these libraries via the command line.

At some point some contributors of FFmpeg didn't like the way the project was managed (I think they want more releases with less importance place on stability and back compatibility, but I could be wrong), so they broke away. They started fixing up inconsistent APIs, adding new codecs, etc. They released the CLI frontend called avconv to replace the ffmpeg executable. A lot of software broke that was expecting to see ffmpeg on the system. so the avconv executable was renamed ffmpeg.

Now the Libav project was doing good work with the libav* libraries. So the FFmpeg project started to incorporate the changes made by Libav. Thus blurring the lines a little bit more.

So, to answer your question. You don't need to think about the politics, much, but some commands/API may be slightly different between the two. This should not be too much of an issue however. You can just think of the as different versions of the same thing.

szatmary
  • 3,903