Warum sollte ich Libav gegenüber FFmpeg wählen, oder gibt es überhaupt einen Unterschied?

72

Nach allem, was ich gesehen habe, scheint es mir, als würde Libavs avconvNachfolger werden ffmpeg- ist das richtig?

Wenn das stimmt, warum ist das so? Was genau macht libav besser und warum sollte ich es über ffmpeg wählen?

Ich bin auf dieses "Problem" gestoßen, als ich Ubuntu 12.04.1 LTS auf einer VM installiert habe und als ich ffmpeg installiert habe, kam die Meldung, dass mit ffmpeg veraltet ist und ich dachte zuerst "wtf?".

Kann ich avconvmeine Skripte je nach ffmpeg mehr oder weniger einfach nach libav migrieren? Ich verwende es hauptsächlich zum Schreiben von Metadaten und zur Audiokonvertierung (wav, flac, vorbis, mp3, aac).

Burzum
quelle
1
ffmpeg ist mit Sicherheit nicht veraltet, es ist ziemlich gut in der Rasse für das, was es tut.
James Campbell

Antworten:

94

Zunächst einmal sieht Wer kann mir sagen , den Unterschied und Beziehung zwischen ffmpeg, libav und avconv . Ein Großteil der Verwirrung ist das Ergebnis von:

  1. Benutzer, die nicht zwischen den Projekten FFmpeg und libav und ihren jeweiligen Befehlszeilentools unterscheiden, ffmpegund avconv.
  2. Die schlecht formulierten Nachrichten, die Benutzer erhalten, wenn sie versuchen, libavs zu verwenden ffmpeg.

FFmpeg vs ffmpegund libav vsavconv

  • FFmpeg ist der Projektname. ffmpegist der Name des Befehlszeilentools.
  • libav ist der Projektname. avconvist der Name des Befehlszeilentools. Für kurze Zeit hatte libav auch eine ffmpeg.

Benutzer denken oft "Projekt", wenn "Werkzeug" diskutiert wird, was zu ...

Eine schlecht formulierte Nachricht

Also, wie wir aus dem Who can tell me ... Link erfahren haben , haben sie , als libav von FFmpeg gabelte, auch vorübergehend ihre Version von geliefert ffmpeg. Als Mitglied von libav entschied sich der ffmpeg-Betreuer in Debian und Ubuntu, die Distribution auf libav umzustellen. Aus der Sicht von libav war dies ihr bester Schritt: eine große Benutzergemeinschaft zu zwingen, die Gabel zu benutzen.

Ubuntu wechselte während der Übergangszeit, als libav sowohl ihre Version ffmpegals auch ihr umbenanntes Tool zur Verfügung stellte avconv. Wenn Benutzer versuchten, libav zu verwenden ffmpeg, wurde die folgende Meldung angezeigt :

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

In diesem Fall war das in der Nachricht erwähnte "ffmpeg" die temporäre Version von libav, die später entfernt wurde (genau wie die Nachricht). Erinnern Sie sich an den Unterschied zwischen FFmpeg und ffmpeg? Natürlich hat diese Nachricht viele Benutzer zutiefst verwirrt, die verständlicherweise nicht zwischen Projekt und Tool unterschieden haben. Besonders Ubuntu-Benutzer, die nicht wussten, dass ihre Distribution ein Switcharoo durchführte, oder Benutzer, die noch nie von libav gehört haben. Ich weiß nicht, ob libav beabsichtigte, dies zu überlegen, aber sie haben diesen Nebeneffekt wahrscheinlich genossen.

Einige Ubuntu-Benutzer dachten, die Nachricht sei zu irreführend und wurde später geändert in:

***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).

Eine kleine Verbesserung meiner Meinung nach, aber ich habe das Gefühl, dass es nicht klar genug ist.

Welches verwende ich?

Niemand kann Ihnen sagen, welchen Sie verwenden sollen. Der Hauptunterschied für Benutzer ist, dass FFmpeg viele Commits von libav zusammenführt, aber es ist nicht so gegenseitig, da libav so zu tun scheint, als ob FFmpeg nicht existiert, und nur gelegentlich Cherry-Picks von FFmpeg.

Für den Gelegenheitsnutzer sollte es keine großen Unterschiede geben. Für Ubuntu-Benutzer, die FFmpeg verwenden möchten, können Sie es wie folgt kompilieren: FFmpeg und x264 kompilieren , Jon Severinssons FFmpeg-PPA verwenden oder eine einfache statische Binärdatei herunterladen, die über die FFmpeg-Downloadseite verlinkt ist .

Weitere Informationen finden Sie unter Die FFmpeg / Libav-Situation .

Logan
quelle
27
Es geht über eine schlecht formulierte Nachricht hinaus, es ist absolut falsch. FFmpeg hat die Entwicklung überhaupt nicht gestoppt, in der Tat hat FFmpeg eine weitaus größere Community als LibAV ... Die Ubuntu-Betreuer haben diese Nachricht verfasst, um Benutzer dazu zu verleiten, LibAV zu verwenden, aus der irrtümlichen Annahme heraus, dass FFmpeg tot ist. Es ist 100% reine Bosheit.
MarcusJ
1
avconv unterstützt nicht einmal LADSPA
Vassilis
5
@MarcusJ ... technisch gesehen waren es die Debian-Betreuer. Aber ja, ich stimme zu; es ist betrügerisch.
Wyatt8740
Abgestimmt für die Phrase "Eine schlecht formulierte Nachricht", bei der dies nicht der Fall war. Es war ein vorsätzliches Fehlverhalten.
Anwar
1
@Anwar Ja, so schien es. Das ist der Grund, warum ich sagte, es sei "schlecht formuliert", aber ich denke, das war schlecht formuliert.
28.
32

Update (Anfang 2016)

  • Die Gewinnchancen bleiben zugunsten von ffmpeg. Die meisten Distributionen haben zurückgeschaltet / wechseln zurück zu ffmpeg ( Gentoo , Debian )
  • Ein praktischer Vorteil von ffmpeg ist die breite Verfügbarkeit von Binärdateien für viele Plattformen. Das Googeln nach statischen Bibliotheken / dynamischen Bibliotheken / Binärdateien liefert gute Ergebnisse für Linux, Mac, Windows, iOS und Android für ffmpeg, während ich nur Linux- und Windows-Builds für libav finden konnte. Dies kann ein wichtiger Punkt sein, wenn Sie wenig Erfahrung mit C / makefiles haben.

Die aktuelle Situation (Mitte 2015)

Es scheint besser zu sein, sich an FFmpeg zu halten. Die ganze Situation ist ziemlich chaotisch und hässlich. Ich habe gerade vor ein paar Tagen angefangen, auf der Gabel nachzulesen. Das ganze Drama ignorierend, sind hier, was scheint, Tatsachen zu sein:

  • FFmpeg enthält Änderungssätze von libav, während libav dies nur ungern tut (siehe Debian-Debatte ).
  • Chrome verwendet ffmpeg und Google hat große Anstrengungen unternommen, um es sicher zu machen. libav übernimmt diese Änderungen ebenfalls, allerdings langsamer ( google blog post )
  • FFmpeg versucht, so viele Codecs wie möglich zu behalten, während libav einige verworfen hat ( libav-Mailingliste , Post von einem libav-Entwickler )
  • Die FFmpeg-Community ist größer als libav, und der engagierteste Entwickler (michael niedermayer) hat sich an FFmpeg ( Commit-Statistik ) gehalten.
  • Die Ubuntu / Debian-Betreuer für FFmpeg waren Teil der libav-Fork. Einige Befehlszeilentools erhielten Verfallsmeldungen, die darauf hinwiesen, dass ffmpeg veraltet ist. dies sorgte für viel Verwirrung. Sowohl debian als auch ubuntu wechseln zurück zu ffmpeg.
kritzikratzi
quelle
Mir ist Google Michael Niedermayer passiert und ich habe diesen Beitrag erhalten , in dem er zurücktritt.
bzeaman
1
@ bzeaman ja, ich erinnere mich, dass ich darauf gestoßen bin. aber er scheint immer noch einen Durchschnitt von 2 Merges
kritzikratzi
hmm kein install kandidat in deb. Was hat es jetzt ersetzt?
Stígandr
NVM Geist bekam es libav-tools
Stígandr
1
Niedermayer war der Grund für die Gabelung. Das heißt, er hat sich sehr verändert.
Ismael Luceno
9

Wenn Sie hierher gehen, werden Sie feststellen, dass das letzte Update September 2012 ist (vor einigen Monaten).

Es sieht aus wie diese sagt , es ist nur spezifisch für Ubuntu und Debian zu diesem Zeitpunkt.

Vor einiger Zeit spaltete sich ffmpeg in zwei Gabeln unter dem Namen ffmpeg und libav auf.

Debian folgt der libav-Verzweigung in seiner Distribution und in einem bevorstehenden Upload wird die Binärdatei / usr / bin / ffmpeg durch / usr / bin / avconv ersetzt.

Soweit ich weiß, ist es nicht notwendig, sofort zu wechseln, aber Winff sollte aktualisiert werden, um beide Binärdateien zuzulassen (aus der Debian-Perspektive mit einer Vorliebe für avconv). Ich weiß, dass Sie den Speicherort der Binärdatei in den Voreinstellungen festlegen können, aber ich denke, dass Winff mit dem festgelegten Speicherort die richtige Binärdatei finden sollte.

Ich denke in Zukunft könnten auch Windows und andere Distributionen von diesem Problem betroffen sein.

Um Ihre Frage zu beantworten, ob es genau dasselbe ist oder nicht:

Ich habe die Überprüfungen für die richtige Binärdatei in meinem lokalen Checkout implementiert, aber beim Lesen von 1 sehe ich, dass es einige Inkonsistenzen zwischen avconv und ffmpeg gibt. Dieses Problem ist größer, da die voreingestellte Datei angepasst werden muss und insbesondere die Art und Weise, wie die Befehlszeile erstellt wird, geändert werden muss. Die Optionen, die für die Eingabedatei gelten, müssen VOR der Eingabedatei "-i" angegeben werden.

Bitte beachten Sie, dass dies spezifisch für die Windows-Version sein kann. Dies wurde in Bezug auf die Linux-Version gepostet:

Das Audio / Video-Konvertierungstool FFmpeg heißt jetzt AVConv (meiner Meinung nach ein besserer Name). Das Kommandozeilen-Tool "ffmpeg" ist veraltet und "avconv" sollte verwendet werden. Soweit mir aufgefallen ist, sind alle Parameter gleich geblieben, aber es sollten weitere Untersuchungen durchgeführt werden. Einige Änderungen müssen in CIS vorgenommen werden.

Aufgaben:

Installieren Sie AVConv auf den Computern, auf denen CIS ausgeführt wird. Normalerweise sollte avconv das Update von ffmpeg sein (das unter Ubuntu funktionierte; nicht für Debian getestet). Ersetzen Sie "ffmpeg" durch "avconv" in cis / api / ffmpeg.py, Klasse FFmpegTranscoder, Feld prog_bin, das die ausführbare Datei des Konvertierungstools darstellt. Refactor-Dateinamen, Klassennamen, Methodennamen, Variablennamen usw., die "FFmpeg" oder "ffmpeg" enthalten, so dass sie AVConv enthalten. Eine IDE wie Eclipse könnte dies automatisch tun. Prüfung! Wenn Probleme festgestellt werden, debuggen Sie!

Everett
quelle
9
Ich bin mit dem Beitrag, der besagt "ffmpeg ist veraltet und avconv sollte verwendet werden", absolut nicht einverstanden.
Slhck
@slhck Das scheint Standard zu sein, wenn Sie ein Projekt forken. Je mehr Benutzer Sie hereinlegen können, dass der Hauptzweig veraltet ist, desto besser für Ihre Gabel.
user253751