FFmpeg vs libav: A distribution maintainer point of view almost two years after the split.

It’s been a while since I wanted to write about this and since there recently has been a sort of hijack without any kind of discussion to let libav be the default implementation for Gentoo, this motivated me.

Exactly two years ago, a group consisting of the majority of FFmpeg developers took over its maintainership. While I didn’t like the methods, I’m not an insider so my opinion stops here, especially since if you pay attention to who was involved: Luca was part of it. Luca has been a Gentoo developer since probably most of us even used Gentoo and I must admit I’ve never seen him heating any discussion, rather the contrary, and it’s always been a pleasure to work with him. What happened next, after a lot of turmoil, is that the developers split in two groups: libav formed by the “secessionists” and FFmpeg.

Good, so what do we chose now? One of the first things that was done on the libav side was to “cleanup” the API with the 0.7 release, meaning we had to fix almost all its consumers: Bad idea if you want wide adoption of a library that has an history of frequently changing its API and breaking all its consumers. Meanwhile, FFmpeg maintained two branches: the 0.7 branch compatible with the old API and the 0.8 one with the new API. The two branches were supposed to be identical except for the API change. On my side the choice was easy: Thanks but no thanks sir, I’ll stay with FFmpeg.
FFmpeg, while having its own development and improvements, has been doing daily merges of all libav changes, often with an extra pass of review and checks, so I can even benefit from all the improvements from libav while using FFmpeg.

So why should we use libav? I don’t know. Some projects use libav within their release process, so they are likely to be much more tested with libav than FFmpeg. However, until I see real bugs, I consider this as pure supposition and I have yet to see real facts. On the other hand, I can see lots of false claims, usually without any kind of reference: Tomáš claims that there’s no failure that is libav specific, well, some bugs tend to say the contrary and have been open for some time (I’ll get back to XBMC later). Another false claim is that FFmpeg-1.1 will have the same failures as libav-9: Since Diego made a tinderbox run for libav-9, I made the tests for FFmpeg 1.1 and made the failures block our old FFmpeg 0.11 tracker. If you click the links, you will see that the number of blockers is much smaller (something like 2/3) for the FFmpeg tracker. Another false claim I have seen is that there will be libav-only packages: I have yet to see one; the example I had as an answer is gst-plugins-libav, which unfortunately is in the same shape for both implementations.

In theory FFmpeg-1.1 and libav-9 should be on par, but in practice, after almost two years of disjoint development, small differences have started to accumulate. One of them is the audio resampling library: While libswresample has been in FFmpeg since the 0.9 series, libav developers did not want it and made another one, with a very similar API, called libavresample that appeared in libav-9. This smells badly as a NIH syndrome, but to be fair, it’s not the first time such things happen: libav and FFmpeg developers tend to write their own codecs instead of wrapping external libraries and usually achieve better results. The audio resampling library is why XBMC being broken with libav is, at least partly, my fault: While cleaning up its API usage of FFmpeg/libav, I made it use the public API for audio resampling, initially with libswresample but made sure it worked with libavresample from libav. At that time, this would mean it required libav git master since libav-9 was not even close to be released, so there was no point in trying to make it compatible with such a moving target. libswresample from FFmpeg was present since the 0.9 series, released more than one year ago. Meanwhile, XBMC-12 has entered its release process, meaning it will probably not work with libav easily. Too late, too bad.

Another important issue I’ve raised is the security holes: Nowadays, we are much more exposed to them. Instead of having to send a specially crafted video to my victim and make him open it with the right program, I only have to embed it in an HTML5 webpage and wait. This is why I am a bit concerned that security issues fixed 7 months ago in FFmpeg have only been fixed with the recently released libav-0.8.5. I’ve been told that these issues are just crashes are have been fixed in a better way in libav: This is probably true but I still consider the delay huge for such an important component of modern systems, and, thanks to FFmpeg merging from libav, the better fix will also land in FFmpeg. I have also been told that this will improve on the libav side, but again, I want to see facts rather than claims.

As a conclusion: Why is the default implementation changed? Some people seem to like it better and use false claims to force their preference. Is it a good idea for our users? Today, I don’t think so (remember: FFmpeg merges from libav and adds its own improvements), maybe later when we’ll have some clear evidence that libav is better (the improvements might be buggy or the merges might lead to subtle bugs). Will I fight to get the default back to FFmpeg ? No. I use it, will continue to use and maintain it, and will support people that want the default back to FFmpeg but that’s about it.

About these ads

23 Responses to “FFmpeg vs libav: A distribution maintainer point of view almost two years after the split.”

  1. me Says:

    ” Some people seem to like it better and use false claims to force their preference.”

    Seems unfortunately common nowadays. Mostly for fame, ego, and what not. Oh dear, what the Internet made us be.

    When I opened this blog post, I sort of wanted to read:

    Title: FFmpeg vs libav: A distribution maintainer point of view almost two years after the split.

    Body: Fuck you projects!
    ;-)

  2. Ondrej Grover Says:

    Thank you for raising the discussion, I’m glad there are more opinions out there. A move like this really ought to be discussed.

    However, if you believe this move may have negative consequences (and your arguments support that view) and not official, I suggest you take this discussion to the Gentoo council. In the end, that’s why this body is there, to prevent developers from making authoritative decisions with great consequences without a full discussion.

    Tomas has presented it on his blog as if it was quite official and prepared. So if it’s not, I hope you’ll make sure the real authorities know about that.

    If nothing else, it could at least prompt the responsible devs to compile a list of facts and referenced bugs supporting their claims as you have done.

  3. nobody Says:

    ffmpeg has Michael Niedermayer. libav has a bunch of guys touting strict review policy.

    I am sticking with ffmpeg.

  4. hussam Says:

    sticking with ffmpeg too. I don’t really like the “rebel and fork attitude” especially from snobs who patronise and belittle end users.

  5. Jacques Hervé Says:

    Thanks to you and everyone else who contribute to the maintenance of FFmpeg and MPlayer in Gentoo.

    I’m just a simple user, but I’ve been using ffmpeg and MPlayer (whose MPlayer2 split is often brought forth when talking about Libav) for nearly a decade without significant issue, and I’ve grown quite attached to them, as I watch a lot of videos every day.

    Considering some core FFmpeg and MPlayer people stayed, and the way the splits were made (in both cases, most notably, a will to confuse users and make the splits appear as “the next evolution of the original project”, notably by first trying to use the same “FFmpeg” name, and the same website, in the first case, and by using the “MPlayer2″ name in the second case), I have always been quite reluctant to switch, unless really technically useful (and contrary to libav which seems mostly equivalent to ffmpeg for most users, it seems to me that in the case of MPlayer2, seeing the devel/commit/users mailing lists, it is currently far less active than MPlayer) or really required (hoping it wasn’t simply pushed without much reason).

    I have, beside some initial decisions, absolutely nothing against the splitters (and I certainly appreciate what they did in the original projects, and the work on Gentoo from the Gentoo maintainers on the libav and Mplayer2 “sides”), and from my point of view, they had merit splitting (although in a better world, we sure would far better be working together, but, as I understand it, there were issues on both “sides”).

    But I really currently do not see any importance for me in switching to Libav and MPlayer2. And considering, from what I understand, that the main problems were the refusal or difficulty of introducing some relatively specific new features, they may have been better presented as simple experimental branches, with a new project name if desired, and included in distributions as such, for the users who wanted these new features (until hopefully they were finally introduced in the main branch by the developers who continued working on it).

    I don’t want to reduce any issue the splitters had with the original projects (which I do understand), but from my point of view as a simple user, it seemed to me that the LibreOffice split a few months influenced these two other splits a lot, even though the situations in practice were quite different (starting with the difference between company vs. community, and community vs. community conflicts). I suppose the Mplayer2 and Libav “sides” thought the entire community would switch rapidly, and thus they pushed very hard to fit the picture. In practice, the massive switch did not happen, and the push appeared, and still appear today, as malignant, however sincere they were. Libav seems to be progressing in various places, but I’m still here wondering whether it’s still illusions and pushing, or if it really is for the best. I certainly want to trust the Gentoo developers on the Libav “side”, at the very least. And for this, I suppose there should be more official discussion about this issue, at the highest level of the Gentoo project, considering FFmpeg and MPlayer are major projects.

  6. Links 19/1/2013: Links for the day | Techrights Says:

    [...] FFmpeg vs libav: A distribution maintainer point of view almost two years after the split. [...]

  7. Fitzcarraldo Says:

    ffmpeg and mplayer work nicely for me, so I do not have any interest in changing to libav and mplayer2. As long as ffmpeg and mplayer continue to do a good job on my machine, I’m sticking with what I know and what works.

  8. Dr. Robert Marmorstein Says:

    Much rather stick with Niedermayer’s ffmpeg than use libav. Was sad to see the default change in Gentoo, but the beauty of portage is that I have choices! Thanks so much for keeping the FFmpeg packages live and maintained!

  9. Paulo Says:

    Is a default really needed? Why not simply return a USE missing error when installing something that depends on either and ask for one to be explicitly defined?

  10. http://tinyurl.com/statpedro27312 Says:

    I really found this blog post , “FFmpeg vs libav: A distribution maintainer point of view almost two years after the split.
    | Alexis Balliers blog”, quite engaging not to mention the post was indeed a terrific read.
    Thanks for the post-Kiera

  11. http://tinyurl.com/msncburn15000 Says:

    Thanks a lot for composing “FFmpeg vs libav: A distribution maintainer point of view almost two years after the split.
    | Alexis Ballier’s blog” lehelmakara . I actuallymay absolutely end up being coming back for much more reading and commenting soon enough. Thank you, Heather

  12. how to get rid of warts around the eye Says:

    Then it is important to apply general amount involving any medical cream like Clearasil
    on your own face. Another available treatment option that can be done at home without a prescription is a
    topical ointment. This sounds drastic but as long as you pay due care and
    attention when carrying the task out the removal should happen without a
    hitch.

  13. attractivechaos Says:

    I knew little about the relationship between ffmpeg/mplayer and libav/mplayer2 before. This morning I wanted to install a command-line player on my Mac. I found mplayer-1.1.1 is much easier to build than mplayer2, which I haven’t achieved due to its non-standard python3 only builder (it seems to me weird to require python3 for building a C program!). At least in this aspect, mplayer1 is better. Just my 2c.

  14. lsm Says:

    还是用FFmpeg

  15. amigosdivebelize.com Says:

    Dave is excited by the responses both acts are getting.
    Subway entrances feature a gray concrete structure
    with a symbolized lamp box. see something you desire for yourself bless it and also bless its owner.

  16. Roger Says:

    So will having two librairies increase my chances that one will work?

  17. eMusic Says:

    I will right away grasp your rss as I can not find your email subscription link or newsletter service.
    Do you have any? Kindly permit me recognize so that I may
    subscribe. Thanks.

  18. amazon coupon and offers Says:

    Useful info. Lucky me I found your site by accident,
    and I am surprised why this twist of fate did not took place earlier!
    I bookmarked it.

  19. classification essay topics Says:

    English Writing

    [...] Every once in a while we choose blogs that we read. Listed below are the latest sites that we choose[...]

  20. Anon Says:

    The libav guys took the prize for the most tasteless split in the history of opensource.
    - They announced taking over ffmpeg on the mailing list without prior discussion in a most disgusting manner. This was a spit in the face for many long-time developers.
    - They don’t give a shit about their users and other developers who used ffmpeg beforehand. Currently libav is not compatible with ffmpeg anymore.
    - They managed to raise the level of confusion for the average user by their little turf war.
    - They started using the name mplayer2 like it is newer, better version of Mplayer.

    For these reasons I will always support FFMPEG.

  21. homepage Says:

    An impressive share! I’ve just forwarded this onto a friend who was conducting a little research on
    this. And he in fact ordered me breakfast because I discovered it for him…
    lol. So allow me to reword this…. Thank YOU
    for the meal!! But yeah, thanx for spending time to talk about this subject here on your web page.

  22. http://tinyurl.com/correohotmailentrar Says:

    I am sure this piece of writing has touched all
    the internet visitors, its really really pleasant post on building
    up new blog.

  23. HTML newsletters Says:

    That is a very good tip particularly to those new to the
    blogosphere. Short but very accurate information… Many thanks for
    sharing this one. A must read article!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.

%d bloggers like this: