Why would I choose Libav over FFmpeg, or is there even a difference?

75302
burzum

From what I've seen it looks to me like Libav's avconv is thought to become a successor of ffmpeg — is that correct?

If that's true, why is that so? What exactly is libav doing better and why would I want to choose it over ffmpeg?

I came to this "issue" while installing Ubuntu 12.04.1 LTS in a VM and when I've installed ffmpeg it came up with a message telling mit ffmpeg is deprecated and I first thought "wtf?".

If I use avconvWill I be able to migrate my scripts depending on ffmpeg more or less easy to libav? I'm mostly using it for writing meta data and doing audio conversion (wav, flac, vorbis, mp3, aac).

60

3 ответа на вопрос

91
LordNeckbeard

First of all see Who can tell me the difference and relation between ffmpeg, libav, and avconv. Much of the confusion is the result of:

  1. Users not differentiating between the projects, FFmpeg and libav, and their respective command-line tools, ffmpeg and avconv.
  2. The poorly worded message(s) users get when they try to use libav's ffmpeg.

FFmpeg vs ffmpeg and libav vs avconv

  • FFmpeg is the project name. ffmpeg is the name of their command line tool.
  • libav is the project name. avconv is the name of their command line tool. For a short time libav also had a ffmpeg.

Users often think "project" when "tool" is being discussed which leads to...

A poorly worded message

So, as we learned from the Who can tell me... link, when libav forked from FFmpeg they also temporarily supplied their version of ffmpeg. As a member of libav, the ffmpeg maintainer in Debian and Ubuntu then decided to switch the distro to use libav. From the perspective of libav this was their best move: to force a large user community to use the fork.

Ubuntu switched during the transitional period when libav supplied both their version of ffmpeg and their renamed tool avconv. When users attempted to use libav's ffmpeg they got the following message:

This program is not developed anymore and is only provided for compatibility. Use avconv instead (see Changelog for the list of incompatible changes). 

In this case the "ffmpeg" mentioned in the message was libav's temporary version which was later removed (as was the message). Remember the difference between FFmpeg and ffmpeg? Of course this message thoroughly confused many users who understandably did not make the distinction between project and tool; especially Ubuntu users who were not aware that their distro did a switcharoo or users who never heard of libav. I don't know if libav intended users to think this, but they probably enjoyed this side-effect.

Some Ubuntu users thought the message was too misleading and it was later changed to:

***THIS PROGRAM IS DEPRECATED*** This program is not developed anymore and is only provided for compatibility. Use avconv instead (see Changelog for the list of incompatible changes). 

A small improvement in my opinion, but I feel as if it is not clear enough.

Which one do I use?

Nobody can tell you which one to use. The main difference for users is that FFmpeg merges many commits from libav, but it's not so reciprocal since libav seems to pretend that FFmpeg does not exist and only occasionally cherry-picks from FFmpeg.

To the casual user, there should not be huge differences. For Ubuntu users who want to use FFmpeg, you can compile it by following How To Compile FFmpeg and x264, use Jon Severinsson's FFmpeg PPA, or get a simple static binary linked from the FFmpeg download page.

For more info see The FFmpeg/Libav situation.

Это за пределами плохо сформулированного сообщения, это совершенно неправильно. FFmpeg совсем не остановил разработку, на самом деле FFmpeg имеет гораздо большее сообщество, чем LibAV ... Сопровождающие Ubuntu сделали это сообщение, чтобы обманом заставить пользователей использовать LibAV из-за ошибочного убеждения, что FFmpeg мертв. это 100% чистая злоба. MarcusJ 9 лет назад 23
avconv даже не поддерживает LADSPA Vassilis 8 лет назад 1
@MarcusJ ... технически это были сопровождающие Debian. Но да, я согласен; это обманчиво Wyatt8740 7 лет назад 4
28
kritzikratzi

Обновление (начало 2016 года)

  • Шансы остаются в пользу ffmpeg. Большинство дистрибутивов переключились обратно / переключаются обратно на ffmpeg ( Gentoo, Debian )
  • Одним из практических преимуществ ffmpeg является широкая доступность двоичных файлов для многих платформ. Поиск в Google для статических библиотек libs / dynamic libs / binaries дает хорошие результаты для linux, mac, windows, ios и android для ffmpeg, в то время как я мог только найти сборки linux и windows для libav. Это может быть важным моментом, если у вас мало опыта работы с C / make-файлами.

Текущая ситуация (середина 2015 года)

Кажется, лучше придерживаться FFmpeg. Вся ситуация довольно грязная и безобразная. Я только начал читать на развилке несколько дней назад. Игнорируя всю драму, вот что представляется фактами:

  • FFmpeg включает в себя наборы изменений из libav, в то время как libav не хочет этого делать (см. Дискуссию по Debian )
  • Chrome использует ffmpeg, и Google приложил серьезные усилия для обеспечения его безопасности. libav также включает эти изменения, но более медленными темпами ( запись в блоге Google )
  • FFmpeg пытается сохранить как можно больше кодеков, в то время как libav отбросил некоторые ( список рассылки libav, сообщение от разработчика libav )
  • Сообщество FFmpeg больше, чем libav, и самый преданный разработчик (Майкл Нидермайер) придерживается FFmpeg ( коммит статистики )
  • Сопровождающие ubuntu / debian для FFmpeg входили в состав libav. они добавили сообщения об устаревании в некоторые инструменты командной строки, намекая на то, что ffmpeg устарела. это вызвало много путаницы. и Debian, и Ubuntu переключаются обратно на ffmpeg.
Я попал в Google Майкла Нидермайера и закончил [этой записью] (https://ffmpeg.org/pipermail/ffmpeg-devel/2015-July/176489.html), в которой он уходит в отставку. bzeaman 8 лет назад 0
@bzeaman да, я помню, что сталкивался с этим. но он по-прежнему в среднем составляет 2 слияния / коммитов в день: http://git.videolan.org/?p=ffmpeg.git;a=search;s=Michael+Niedermayer;st=author kritzikratzi 8 лет назад 1
хм нет установки кандидата в деб. Что заменило это сейчас? Stígandr 7 лет назад 0
nvm mind получил это libav-tools Stígandr 7 лет назад 0
Niedermayer был «причиной» для развилки. Тем не менее, он сильно изменился. Ismael Luceno 7 лет назад 1
9
Everett

When you go here you'll see that the most recent update is September 2012 (a few months ago).

It looks like this says it's just specific to Ubuntu and Debian at this time.

Some time ago ffmpeg split into two forks under the name of ffmpeg and libav.

Debian is following the libav fork in it's distribution and in an upcoming upload the binary /usr/bin/ffmpeg will be replaced by /usr/bin/avconv.

As far as I know it is not necessary to switch immediately, but Winff should be upgraded to allow for either binary (from the Debian perspective, with a preference for avconv). I know you can set the location of the binary in the preferences, but I think that with the location set, Winff should be able to find the proper binary.

I think in the future also Windows and other distributions might be hit by this issue.

To answer your question about whether or not it's exactly the same:

I have implemented the checks for the correct binary in my local checkout, but reading up 1, I see that there are some inconsistencies between avconv and ffmpeg. That issue is larger, because the preset file will need adjustment and especially the way we create the command line will have to change. The options that operate on the input file need to go BEFORE the input file "-i".

Please note, this may be specific to the Windows version. This was posted regarding the Linux version:

FFmpeg audio/video conversion tool is now known as AVConv (a better name in my opinion). So "ffmpeg" command line tool is obsolete and "avconv" should be used. As far as I noticed all parameters remained the same, but further investigations should be made. Some modifications need to be done in CIS.

Tasks:

Install AVConv on the machine(s) that run CIS. Usually avconv should appear be updating ffmpeg (that worked on Ubuntu; not tested for Debian). Replace "ffmpeg" with "avconv" in cis/api/ffmpeg.py, class FFmpegTranscoder, field prog_bin, which represents the conversion tool executable. Refactor file names, class names, method names, variable names etc. that contain "FFmpeg" or "ffmpeg" such that they contain AVConv. An IDE like Eclipse could do this automatically. Test! If problems are noticed, debug!

Я категорически не согласен с постом, в котором говорится: «ffmpeg устарел, и следует использовать avconv». slhck 9 лет назад 7
@slhck Это похоже на стандартную практику, когда вы разрабатываете проект. Чем больше пользователей вы можете обмануть, думая, что основная ветвь устарела, тем лучше для вашего форка. user20574 7 лет назад 0

Похожие вопросы