Jakie są różnice i podobieństwa między ffmpeg, libav i avconv?

246

Kiedy uruchamiam ffmpegna Ubuntu, pokazuje:

$ ffmpeg 
ffmpeg version v0.8, Copyright (c) 2000-2011 the Libav developers
  built on Feb 28 2012 13:27:36 with gcc 4.6.1
This program is not developed anymore and is only provided for compatibility. Use avconv instead (see Changelog for the list of incompatible changes).

Lub pokazuje (w zależności od wersji Ubuntu):

$ ffmpeg
ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
  built on Jan 24 2013 14:49:20 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

Znalazłem avconv na http://libav.org . Jestem po prostu zakłopotany.

czemu
źródło
1
Oznacza to, że podajesz nieprawidłowe argumenty wiersza poleceń.
Dipan Mehta
18
This program is not developed anymore and is only provided for compatibility. Use avconv instead
dlaczego
1
Co próbujesz zrobić? ffmpegjest głównie biblioteką, a główny ffmpegwiersz poleceń służy raczej do demonstracji jego funkcji (chociaż nie ma znaczenia, że ​​używasz, jeśli pomaga). Jeśli chcesz używać tylko jako polecenia, istnieje wiele aplikacji, które używają ffmpeg do robienia tego, co chcesz.
Dipan Mehta
19
Pomocne wyjaśnienie całej umowy znajduje się na blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
Tronic
4
Nie mogę powiedzieć ci wszystkich różnic, ale: avconv -ss 00:01:42 -t 00:00:32 -i nazwa_źródła -acodec kopia docelowa nazwa pliku nie działa, a ffmpeg -ss 00:01:42 -t 00:00 : 32 -i nazwa_pliku-źródłowego -acodec kopia nazwa_pliku docelowego działa zgodnie z oczekiwaniami, mimo że dokumentacja się zgadza

Odpowiedzi:

473

Mylące wiadomości

Te wiadomości są raczej mylące i, co zrozumiałe, źródłem zamieszania. Starsze wersje Ubuntu używały Libav, który jest rozwidleniem projektu FFmpeg. FFmpeg powrócił w Ubuntu 15.04 „Vivid Vervet”.

Widelec był w zasadzie nie polubownym rezultatem sprzecznych osobowości i stylów rozwoju w społeczności FFmpeg. Warto zauważyć, że opiekun Debiana / Ubuntu przeszedł z FFmpeg na Libav z własnej woli, ponieważ był zaangażowany w rozwidlenie Libav.

Prawdziwy ffmpegkontra fałszywy

Przez jakiś czas zarówno Libav, jak i FFmpeg osobno opracowali własną wersję ffmpeg.

Libav następnie przemianowany ich Bizarro ffmpegdo avconvzdystansowania się od projektu FFmpeg. W okresie przejściowym wyświetlał się komunikat „już nie opracowano”, aby poinformować użytkowników, aby zaczęli używać avconvzamiast ich podrobionej wersji ffmpeg. Zdezorientowało to użytkowników do myślenia, że ​​FFmpeg (projekt) nie żyje, co nie jest prawdą. Zły wybór słów, ale nie wyobrażam sobie, żeby Libav nie oczekiwał takiej odpowiedzi od zwykłych użytkowników.

Ta wiadomość została usunięta, gdy fałszywe „ ffmpeg” zostało ostatecznie usunięte ze źródła Libav, ale w zależności od wersji może nadal pojawiać się w Ubuntu, ponieważ używane przez Ubuntu źródło Libav pochodzi z okresu przejściowego ffmpeg-to-avconv.

W czerwcu 2012 r . Wiadomość została ponownie sformułowana dla pakietu libav - 4:0.8.3-0ubuntu0.12.04.1. Niestety nowy komunikat „przestarzałe” spowodował dodatkowe zamieszanie użytkowników.

Począwszy od Ubuntu 15.04 „Żywe Vervet”, FFmpeg ffmpegjest z powrotem w repozytoriach ponownie.

libav vs Libav

Aby jeszcze bardziej skomplikować sprawy, Libav wybrał nazwę, która była historycznie używana przez FFmpeg w odniesieniu do jego bibliotek (libavcodec, libavformat itp.). Na przykład lista mailingowa użytkownika libav do pytań i dyskusji na temat korzystania z bibliotek FFmpeg nie ma związku z projektem Libav.

Jak odróżnić różnicę

Jeśli używasz avconv, to używasz Libav. Jeśli używasz, ffmpegmożesz używać FFmpeg lub Libav. Sprawdź różnicę w pierwszym wierszu wyjścia konsoli: w informacji o prawach autorskich będzie mowa o FFmpeg lub Libav.

Po drugie, schematy numeracji wersji różnią się. Każda z bibliotek FFmpeg lub Libav zawiera version.hnagłówek, który pokazuje numer wersji. FFmpeg kończy się trzema cyframi, na przykład 57.67. 100 , a Libav skończy się na jednej cyfrze, na przykład 57.67. 0 . Można również wyświetlić numery wersji biblioteki, uruchamiając ffmpeglub avconvprzeglądając dane wyjściowe konsoli.

Jeśli chcesz użyć prawdziwego ffmpeg

Ubuntu 15.04 „Vivid Vervet” lub nowszy

Rzeczywistość ffmpegznajduje się w repozytorium, więc możesz zainstalować ją za pomocą:

apt-get install ffmpeg

Dla starszych wersji Ubuntu

Twoje opcje to:

Metody te są nieinwazyjne, odwracalne i nie będą zakłócały działania systemu ani pakietów repozytorium.

Inną możliwą opcją jest aktualizacja do Ubuntu 15.04 „Vivid Vervet” lub nowszej i po prostu użycie ffmpegz repozytorium.

Zobacz także

Aby znaleźć interesujący artykuł na blogu na temat sytuacji, a także dyskusję na temat głównych różnic technicznych między projektami, zobacz Sytuacja FFmpeg / Libav .

Llogan
źródło
89
wygląda na to, że to sprawa osobista
mirza
1
Jeśli nawet po zainstalowaniu prawdziwego ffmpeg nie będziesz w stanie go uruchomić. Powinieneś usunąć domyślny ffmpeg dostarczany z Ubuntu jako libav-tools, patrz: askubuntu.com/questions/162740/how-do-i-uninstall-ffmpeg .
user568109 16.09.13
@ user568109 To zależy od sposobu zainstalowania ffmpeg. Zobacz Jak skompilować FFmpeg na Ubuntu, Debian lub Mint lub po prostu użyj kompilacji Linuksaffmpeg . Każda z tych metod powinna działać, jeśli pakiet repozytorium jest również zainstalowany.
llogan
1
Zbudowałem ffmpeg, ale kiedy uruchomiłem ffmpeg z terminala, domyślnie działał ten dostarczony domyślnie, a wykonanie apt-get remove ffmpeg go nie usunęło. Więc zostawiłem wiadomość dla tych, którzy utknęli z tym problemem, tylko po to, aby usunąć zamieszanie. Jest dostarczany jako narzędzia libav.
user568109 16.09.13
Wydaje się, że potrzebny jest jakiś system „znaków towarowych” w społeczności open source, aby uniknąć takich sytuacji !!!
rkachach