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

75504
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 Antworten auf die Frage

91
LordNeckbeard

Zuerst sehen Sie, wer mir den Unterschied und die Beziehung zwischen ffmpeg, libav und avconv erklären kann . Ein großer Teil der Verwirrung ist das Ergebnis von:

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

FFmpeg vs ffmpegund libav vsavconv

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

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

Eine schlecht formulierte Nachricht

Wie wir aus dem Wer kann mir sagen ... Link erfahren haben, als libav sich von FFmpeg verabschiedete, lieferten sie auch temporär ihre Version ffmpeg. Als Mitglied von libav entschied sich der ffmpeg-Betreuer in Debian und Ubuntu dann, die Distribution auf libav umzustellen. Aus der Sicht von Libav war dies der beste Schritt: eine große Benutzergemeinschaft zur Verwendung der Gabel zwingen.

Ubuntu wechselte während der Übergangszeit, als libav sowohl die Version ffmpegals auch das umbenannte Tool lieferte avconv. Als Benutzer versuchten, libavs 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 (wie auch die Nachricht) entfernt wurde. Erinnern Sie sich an den Unterschied zwischen FFmpeg und ffmpeg? Natürlich verwirrte diese Nachricht viele Benutzer gründlich, die verständlicherweise nicht zwischen Projekt und Werkzeug unterschieden. vor allem Ubuntu-Benutzer, die nicht wussten, dass ihre Distribution ein Switcharoo gemacht hat, oder Benutzer, die noch nie von libav gehört haben. Ich weiß nicht, ob libav die Benutzer dazu auffordert, dies zu denken, aber sie haben diesen Nebeneffekt wahrscheinlich genossen.

Einige Ubuntu-Benutzer waren der Meinung, dass die Nachricht zu irreführend war und später geändert wurde:

***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 benutze ich?

Niemand kann Ihnen sagen, welchen Sie verwenden sollen. Der Hauptunterschied für Benutzer besteht darin, dass FFmpeg viele Commits aus libav zusammenführt, aber es ist nicht so gegenseitig, da Libav so zu tun scheint, als gäbe es FFmpeg nicht und nur gelegentlich Kirschpicks 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 kompilieren, indem Sie die Anweisungen unter So kompilieren Sie FFmpeg und x264 befolgen, Jon Severinssons FFmpeg-PPA verwenden oder eine einfache statische Binärdatei von der FFmpeg-Downloadseite aus aufrufen.

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

Es ist jenseits einer schlecht formulierten Nachricht, es ist völlig falsch. FFmpeg hat die Entwicklung überhaupt nicht gestoppt, tatsächlich hat FFmpeg eine weitaus größere Community als LibAV ... Die Ubuntu-Betreuer machten diese Nachricht, um Benutzer dazu zu verleiten, LibAV aus dem Irrglauben, FFmpeg sei tot, zu täuschen. Es ist 100% reine Bosheit. MarcusJ vor 9 Jahren 23
avconv unterstützt nicht einmal LADSPA Vassilis vor 8 Jahren 1
@MarcusJ ... technisch waren es die Debian-Betreuer. Aber ja, ich stimme zu; es ist trügerisch. Wyatt8740 vor 7 Jahren 4
28
kritzikratzi

Update (Anfang 2016)

  • Die Chancen bleiben zugunsten von ffmpeg. Die meisten Distros sind zurückgegangen / wechseln wieder zu ffmpeg ( Gentoo, Debian )
  • Ein praktischer Vorteil von ffmpeg ist die breite Verfügbarkeit von Binärdateien für viele Plattformen. Das Durchsuchen von statischen Bibliotheken / dynamischen Bibliotheken / Binärdateien führt zu guten Ergebnissen 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, bei FFmpeg zu bleiben. Die ganze Situation ist ziemlich unordentlich und hässlich. Ich habe vor ein paar Tagen angefangen, an der Gabel zu lesen. Das ganze Drama ignorierend, scheinen folgende 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 auch diese Änderungen, aber langsamer ( google blog post )
  • FFmpeg versucht, so viele Codecs wie möglich beizubehalten, während libav einige gelöscht hat ( libav-Mailingliste, Post aus einem libav-dev ).
  • Die FFmpeg-Community ist größer als libav und der engagierteste Entwickler (michael niedermayer) bleibt bei FFmpeg ( commit stats ).
  • Die Ubuntu / Debian-Betreuer für FFmpeg waren Teil der libav-Fork. Sie fügten einigen Befehlszeilentools Verfallsnachrichten hinzu, die darauf hinweisen, dass ffmpeg veraltet ist. Das hat viel Verwirrung verursacht. Sowohl Debian als auch Ubuntu wechseln zurück zu ffmpeg.
Ich bin zufällig mit Michael Michael Niedermayer zusammengekommen und habe [diesen Beitrag] (https://ffmpeg.org/pipermail/ffmpeg-devel/2015-July/176489.html) beendet, in dem er zurücktritt. bzeaman vor 8 Jahren 0
@bzeaman ja, ich erinnere mich daran, dass ich darauf gestoßen bin. er scheint aber immer noch durchschnittlich bei 2 Zusammenführungen / Commits pro Tag zu liegen: http://git.videolan.org/?p=ffmpeg.git;a=search;s=Michael+Niedermayer;st=author kritzikratzi vor 8 Jahren 1
hmm kein installierter Kandidat in deb. Was hat es jetzt ersetzt? Stígandr vor 7 Jahren 0
nvm mind hat es libav-tools bekommen Stígandr vor 7 Jahren 0
Niedermayer war der Grund für die Gabel. Das heißt, er hat sich sehr verändert. Ismael Luceno vor 7 Jahren 1
9
Everett

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

Es sieht so aus, als wäre dies zu dieser Zeit nur für Ubuntu und Debian spezifisch.

Vor einiger Zeit hat sich ffmpeg unter dem Namen ffmpeg und libav in zwei Gabeln aufgeteilt.

Debian folgt der libav-Abzweigung in seiner Distribution und in einem kommenden Upload wird das binäre / usr / bin / ffmpeg durch / usr / bin / avconv ersetzt.

Soweit ich weiß, ist es nicht notwendig, sofort umzuschalten, aber Winff sollte aktualisiert werden, um eines der beiden Binärdateien zuzulassen (aus der Debian-Perspektive mit Vorrang für avconv). Ich weiß, dass Sie die Position der Binärdatei in den Voreinstellungen festlegen können, aber ich denke, dass Winff mit der festgelegten Position die richtige Binärdatei finden kann.

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 auf die korrekte 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 vor allem die Art, wie wir die Befehlszeile erstellen, geändert werden muss. Die Optionen für die Eingabedatei müssen VOR der Eingabedatei "-i" angegeben werden.

Bitte beachten Sie, dass dies möglicherweise spezifisch für die Windows-Version ist. Dies wurde bezüglich der Linux-Version gepostet:

Das Audio / Video-Konvertierungswerkzeug von FFmpeg ist jetzt als AVConv bekannt (ein besserer Name meiner Meinung nach). Das Befehlszeilentool "ffmpeg" ist daher veraltet und "avconv" sollte verwendet werden. Soweit ich feststellte, blieben alle Parameter gleich, es sollten jedoch weitere Untersuchungen vorgenommen werden. Einige Änderungen müssen in CIS vorgenommen werden.

Aufgaben:

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

Dem Beitrag, der besagt, dass "ffmpeg veraltet ist und avconv verwendet werden sollte", stimme ich nicht zu. slhck vor 9 Jahren 7
@slhck Das scheint Standard zu sein, wenn Sie ein Projekt fälschen. Je mehr Benutzer Sie glauben können, der Hauptzweig sei veraltet, desto besser für Ihre Gabel. user20574 vor 7 Jahren 0