Quali sono le differenze e le somiglianze tra ffmpeg, libav e avconv?


246

Quando corro ffmpegsu Ubuntu, mostra:

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

Oppure mostra (a seconda della versione di 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.

Ho trovato avconv su http://libav.org . Sono solo perplesso da loro.


1
Ciò implica che stai fornendo argomenti della riga di comando errati.
Dipan Mehta,

18
This program is not developed anymore and is only provided for compatibility. Use avconv instead
perché il

1
Cosa stai cercando di fare? ffmpegè principalmente libreria e la ffmpegriga di comando principale è più per la dimostrazione delle sue funzionalità (anche se non importa che usi se aiuta). Se vuoi usare solo come comando, ci sono molte applicazioni che usano ffmpeg per fare quello che vuoi fare.
Dipan Mehta,

19
C'è una spiegazione utile dell'intero affare su blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
Tronic

4
Non posso dirti tutte le differenze, ma: avconv -ss 00:01:42 -t 00:00:32 -i nome file sorgente -acodec copia nomefile target non funziona e ffmpeg -ss 00:01:42 -t 00:00 : 32 -i sourcefilename -acodec copy targetfilename funziona come previsto anche se la documentazione corrisponde

Risposte:


473

Messaggi confusi

Questi messaggi sono piuttosto fuorvianti e comprensibilmente una fonte di confusione. Le versioni precedenti di Ubuntu utilizzavano Libav, che è un fork del progetto FFmpeg. FFmpeg è tornato in Ubuntu 15.04 "Vivid Vervet".

Il fork è stato sostanzialmente un risultato non amichevole di personalità contrastanti e stili di sviluppo all'interno della comunità FFmpeg. Vale la pena notare che il manutentore di Debian / Ubuntu è passato da FFmpeg a Libav da solo perché coinvolto nel fork di Libav.

Il vero ffmpegcontro quello falso

Per un po 'sia Libav che FFmpeg hanno sviluppato separatamente la loro versione di ffmpeg.

Libav ha quindi ribattezzato il suo bizarro ffmpegper avconvprendere le distanze dal progetto FFmpeg. Durante il periodo di transizione è stato visualizzato il messaggio "non più sviluppato" per indicare agli utenti di iniziare a utilizzare avconvanziché la versione contraffatta di ffmpeg. Ciò ha confuso gli utenti nel pensare che FFmpeg (il progetto) sia morto, il che non è vero. Una cattiva scelta di parole, ma non posso immaginare che Libav non si aspetti una simile risposta da parte degli utenti generici.

Questo messaggio è stato rimosso a monte quando il falso " ffmpeg" è stato finalmente rimosso dalla fonte Libav, ma, a seconda della versione, può ancora essere visualizzato in Ubuntu perché la fonte Libav che Ubuntu utilizza proviene dal periodo di transizione da ffmpeg ad avconv.

Nel giugno 2012, il messaggio è stato riformulato per il pacchetto libav - 4:0.8.3-0ubuntu0.12.04.1. Sfortunatamente il nuovo messaggio "obsoleto" ha causato ulteriore confusione da parte dell'utente.

A partire da Ubuntu 15.04 "Vivid Vervet", FFmpeg ffmpegè di nuovo nei repository .

libav vs Libav

Per complicare ulteriormente le cose, Libav ha scelto un nome che è stato storicamente usato da FFmpeg per riferirsi alle sue librerie (libavcodec, libavformat, ecc.). Ad esempio la mailing list dell'utente libav , per domande e discussioni sull'uso delle librerie FFmpeg, non è correlata al progetto Libav.

Come dire la differenza

Se stai usando, avconvstai usando Libav. Se stai usando ffmpegpotresti usare FFmpeg o Libav. Fare riferimento alla prima riga nell'output della console per dire la differenza: l'avviso sul copyright menzionerà FFmpeg o Libav.

In secondo luogo, gli schemi di numerazione delle versioni differiscono. Ciascuna delle librerie FFmpeg o Libav contiene version.hun'intestazione che mostra un numero di versione. FFmpeg terminerà con tre cifre, ad esempio 57.67. 100 e Libav terminerà con una cifra come 57.67. 0 . È inoltre possibile visualizzare i numeri di versione della libreria eseguendo ffmpego avconvvisualizzando l'output della console.

Se vuoi usare il reale ffmpeg

Ubuntu 15.04 "Vivid Vervet" o più recente

Il vero ffmpegè nel repository, quindi puoi installarlo con:

apt-get install ffmpeg

Per le versioni precedenti di Ubuntu

Le tue opzioni sono:

Questi metodi sono non invasivi, reversibili e non interferiranno con il sistema o con nessun pacchetto di repository.

Un'altra possibile opzione è l'aggiornamento a Ubuntu 15.04 "Vivid Vervet" o più recente e basta utilizzarlo ffmpegdal repository.

Vedi anche

Per un interessante articolo di blog sulla situazione, nonché una discussione sulle principali differenze tecniche tra i progetti, vedere La situazione FFmpeg / Libav .


89
sembra che sia un problema personale
mirza

1
Se anche dopo aver installato il vero ffmpeg non sei in grado di farlo funzionare. Dovresti rimuovere ffmpeg predefinito fornito con Ubuntu come libav-tools, vedi: askubuntu.com/questions/162740/how-do-i-uninstall-ffmpeg .
user568109

@ user568109 Dipende da come hai installato ffmpeg. Vedi Come compilare FFmpeg su Ubuntu, Debian o Mint o usare semplicemente una build di Linuxffmpeg . Entrambi questi metodi dovrebbero funzionare se è installato anche il pacchetto repository.
llogan,

1
Ho creato ffmpeg ma quando eseguivo ffmpeg dal terminale era in esecuzione quello predefinito fornito e facendo apt-get remove ffmpeg non lo rimuoveva. Quindi ho lasciato un messaggio per chi è bloccato con questo problema, solo per chiarire la confusione. Viene spedito come libav-tools.
user568109

Sembra che un sistema "marchio" sia necessario nella comunità open source per evitare queste situazioni !!!
rkachach,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.