Dlaczego miałbym wybierać Libav zamiast FFmpeg, czy jest nawet różnica?


72

Z tego, co widziałem, wydaje mi się, że Libav avconvuważa się za następcę ffmpeg- czy to prawda?

Jeśli to prawda, dlaczego tak jest? Co dokładnie libav ma się lepiej i dlaczego miałbym wybierać go zamiast ffmpeg?

Do tego „problemu” doszedłem podczas instalowania Ubuntu 12.04.1 LTS na maszynie wirtualnej, a kiedy zainstalowałem ffmpeg, pojawił się komunikat informujący, że mit ffmpeg jest przestarzały i po raz pierwszy pomyślałem „wtf?”.

Jeśli avconvużyję Czy będę mógł migrować moje skrypty w zależności od ffmpeg mniej lub bardziej łatwego do libav? Używam go głównie do pisania metadanych i konwersji audio (wav, flac, vorbis, mp3, aac).


1
ffmpeg z pewnością nie jest przestarzały, jest prawie najlepszy w swojej rasie do tego, co robi.
James Campbell

Odpowiedzi:


94

Przede wszystkim zobacz Kto może mi powiedzieć różnicę i relacje między ffmpeg, libav i avconv . Duża część zamieszania wynika z:

  1. Użytkownicy bez rozróżnienia między projektami, FFmpeg i libav oraz ich odpowiednimi narzędziami wiersza poleceń, ffmpegoraz avconv.
  2. Źle sformułowane wiadomości, które użytkownicy otrzymują, gdy próbują użyć libav ffmpeg.

FFmpeg vs ffmpegi libav vsavconv

  • FFmpeg to nazwa projektu. ffmpegto nazwa narzędzia wiersza poleceń.
  • libav to nazwa projektu. avconvto nazwa narzędzia wiersza poleceń. Przez krótki czas libav miał również ffmpeg.

Użytkownicy często myślą o „projekcie” podczas dyskusji o „narzędziu”, co prowadzi do ...

Źle sformułowana wiadomość

Tak więc, jak dowiedzieliśmy się z linku Kto może mi powiedzieć ... , kiedy libav rozwidlił się z FFmpeg, tymczasowo dostarczył również swoją wersję ffmpeg. Jako członek libav, opiekun ffmpeg w Debianie i Ubuntu postanowił zmienić dystrybucję, aby używać libav. Z punktu widzenia libav był to ich najlepszy ruch: zmusić dużą społeczność użytkowników do korzystania z widelca.

Ubuntu zmieniło się w okresie przejściowym, kiedy libav dostarczył zarówno swoją wersję, jak ffmpegi narzędzie o zmienionej nazwie avconv. Gdy użytkownicy próbowali użyć libav, ffmpegotrzymali następujący komunikat:

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

W tym przypadku wspomniana w komunikacie „ffmpeg” była tymczasową wersją libav, która została później usunięta (podobnie jak wiadomość). Pamiętasz różnicę między FFmpeg a ffmpeg? Oczywiście ta wiadomość całkowicie pomieszała wielu użytkowników, którzy, co zrozumiałe, nie wprowadzili rozróżnienia między projektem a narzędziem; szczególnie użytkownicy Ubuntu, którzy nie byli świadomi, że ich dystrybucja zrobiła switcharoo lub użytkownicy, którzy nigdy nie słyszeli o libav. Nie wiem, czy libav chciał, aby użytkownicy tak myśleli, ale prawdopodobnie podobał im się ten efekt uboczny.

Niektórzy użytkownicy Ubuntu uważają, że wiadomość jest zbyt myląca, a później zmieniono ją na:

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

Moim zdaniem niewielka poprawa, ale wydaje mi się, że nie jest to wystarczająco jasne.

Z którego korzystam?

Nikt nie może powiedzieć, którego użyć. Główną różnicą dla użytkowników jest to, że FFmpeg łączy wiele zatwierdzeń z libav, ale nie jest to tak wzajemne, ponieważ libav wydaje się udawać, że FFmpeg nie istnieje, a tylko okazjonalnie wybiera FFmpeg.

Dla zwykłego użytkownika nie powinno być dużych różnic. Dla użytkowników Ubuntu, którzy chcą korzystać z FFmpeg, możesz go skompilować, postępując zgodnie z instrukcją Jak skompilować FFmpeg i x264 , użyć PPA FFmpeg Jona Severinssona lub uzyskać prosty plik binarny połączony ze strony pobierania FFmpeg .

Aby uzyskać więcej informacji, zobacz Sytuacja FFmpeg / Libav .


27
To coś więcej niż źle sformułowana wiadomość, zupełnie błędne. FFmpeg wcale nie zatrzymał rozwoju, w rzeczywistości FFmpeg ma znacznie większą społeczność niż LibAV ... opiekunowie Ubuntu przekazali tę wiadomość, aby oszukać użytkowników do korzystania z LibAV z błędnego przekonania, że ​​FFmpeg nie żyje. to w 100% czysta złośliwość.
MarcusJ

1
avconv nawet nie obsługuje LADSPA
Vassilis

5
@MarcusJ ... technicznie rzecz biorąc, to byli opiekunowie Debiana. Ale tak, zgadzam się; to jest kłamliwe.
Wyatt8740,

Doceniony za frazę „Słabo sformułowana wiadomość” tam, gdzie jej nie było. To było umyślne wykroczenie.
Anwar

1
@Anwar Tak, tak to wyglądało. Dlatego powiedziałem, że było „źle sformułowane”, ale wydaje mi się, że było źle sformułowane.
llogan

32

Aktualizacja (początek 2016 r.)

  • Szanse pozostają na korzyść ffmpeg. Większość dystrybucji wróciło / wraca do ffmpeg ( Gentoo , Debian )
  • Jedną praktyczną zaletą ffmpeg jest szeroka dostępność plików binarnych dla wielu platform. Googling dla statycznych bibliotek lib / dynamicznych bibliotek / plików binarnych daje dobre wyniki dla Linuksa, Maca, Windowsa, iOS i Androida dla ffmpeg, podczas gdy ja mogłem tylko znaleźć kompilacje Linuksa i Windowsa dla libav. Może to być ważny punkt, jeśli masz niewielkie doświadczenie z C / makefiles.

Obecna sytuacja (połowa 2015 r.)

Wydaje się, że lepiej trzymać się FFmpeg. Cała sytuacja jest raczej niechlujna i brzydka. Właśnie zacząłem czytać na widelcu kilka dni temu. Ignorując cały dramat, oto, co wydaje się być faktami:

  • FFmpeg zawiera zestawy zmian z libav, podczas gdy libav nie chce tego robić (patrz debata na temat Debiana )
  • Chrome używa ffmpeg, a Google dołożył wszelkich starań, aby był bezpieczny. libav również wprowadza te zmiany, ale w wolniejszym tempie ( post na blogu Google )
  • FFmpeg próbuje zachować jak najwięcej kodeków, podczas gdy libav upuścił trochę ( lista mailingowa libav , post od dewelopera libav )
  • Społeczność FFmpeg jest większa niż libav, a najbardziej oddany programista (Michael Niedermayer) utknął z FFmpeg ( statystyki zatwierdzania )
  • Opiekunowie Ubuntu / debian dla FFmpeg byli częścią rozwidlenia libav. dodali komunikaty przestarzałe do niektórych narzędzi wiersza poleceń, sugerując, że ffmpeg jest przestarzałe. spowodowało to wiele zamieszania. zarówno debian, jak i ubuntu wracają do ffmpeg.

Zdarzyło mi się Google Michael Niedermayer i skończyłem z tym postem , w którym rezygnuje.
bzeaman

1
@bzeaman tak, pamiętam, że natrafiłem na to. ale wciąż wydaje się, że średnio przy 2 połączeniach / zobowiązaniach dziennie: git.videolan.org/…
kritzikratzi

hmm brak kandydata do instalacji w deb. Co go teraz zastąpiło?
Stígandr

nvm mind ma to libav-tools
Stígandr

1
Niedermayer był przyczyną rozwidlenia. Powiedział, że bardzo się zmienił.
Ismael Luceno

9

Po przejściu tutaj zobaczysz, że najnowsza aktualizacja to wrzesień 2012 r. (Kilka miesięcy temu).

Wygląda na to , że w tym momencie jest to specyficzne dla Ubuntu i Debiana.

Jakiś czas temu ffmpeg podzielił się na dwa rozwidlenia pod nazwą ffmpeg i libav.

Debian podąża za rozwidleniem libav w swojej dystrybucji, aw nadchodzącym przesyłaniu plik binarny / usr / bin / ffmpeg zostanie zastąpiony przez / usr / bin / avconv.

O ile wiem, nie jest konieczne natychmiastowe przełączanie, ale Winff powinien zostać zaktualizowany, aby zezwolić na oba pliki binarne (z perspektywy Debiana, z preferencją avconv). Wiem, że możesz ustawić lokalizację pliku binarnego w preferencjach, ale myślę, że przy ustawieniu lokalizacji Winff powinien być w stanie znaleźć odpowiedni plik binarny.

Myślę, że w przyszłości ten problem może dotyczyć również systemu Windows i innych dystrybucji.

Aby odpowiedzieć na pytanie, czy jest dokładnie takie samo:

Zaimplementowałem sprawdzanie poprawności pliku binarnego w mojej lokalnej kasie, ale czytając 1 , widzę, że istnieją pewne niespójności między avconv a ffmpeg. Ten problem jest większy, ponieważ plik predefiniowany będzie wymagał korekty, a zwłaszcza sposób tworzenia wiersza poleceń będzie musiał ulec zmianie. Opcje działające na pliku wejściowym muszą przejść PRZED plikiem wejściowym „-i”.

Uwaga: może to być specyficzne dla wersji systemu Windows. Zostało to opublikowane w odniesieniu do wersji Linux:

Narzędzie do konwersji audio / wideo FFmpeg jest teraz znane jako AVConv (moim zdaniem lepsza nazwa). Tak więc narzędzie wiersza poleceń „ffmpeg” jest przestarzałe i należy użyć „avconv”. O ile zauważyłem, wszystkie parametry pozostały takie same, ale należy przeprowadzić dalsze badania. Niektóre modyfikacje należy wprowadzić w CIS.

Zadania:

Zainstaluj AVConv na komputerach z systemem CIS. Zazwyczaj avconv powinien pojawiać się podczas aktualizacji ffmpeg (działającego na Ubuntu; nie testowany dla Debiana). Zamień „ffmpeg” na „avconv” w cis / api / ffmpeg.py, klasa FFmpegTranscoder, pole prog_bin, które reprezentuje plik wykonywalny narzędzia konwersji. Refaktoryzuj nazwy plików, nazwy klas, nazwy metod, nazwy zmiennych itp., Które zawierają „FFmpeg” lub „ffmpeg”, tak aby zawierały AVConv. IDE takie jak Eclipse może to zrobić automatycznie. Test! Jeśli zauważysz problemy, debuguj!


9
Zdecydowanie nie zgadzam się z postem, który mówi: „ffmpeg jest przestarzały i należy użyć avconv”.
slhck

@slhck To wydaje się być standardową praktyką przy rozwiązywaniu projektów. Im więcej użytkowników da się oszukać, że główna gałąź jest przestarzała, tym lepiej dla widelca.
user253751,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.