Perché dovrei scegliere Libav su FFmpeg o c'è anche una differenza?


72

Da quello che ho visto mi sembra che avconvsi pensi che quello di Libav diventi un successore di ffmpeg- è corretto?

Se è vero, perché è così? Cosa sta facendo esattamente meglio libav e perché dovrei sceglierlo su ffmpeg?

Sono arrivato a questo "problema" durante l'installazione di Ubuntu 12.04.1 LTS in una VM e quando ho installato ffmpeg mi è venuta in mente un messaggio che diceva che mit ffmpeg è deprecato e ho pensato "wtf?".

Se uso avconvPotrò migrare i miei script a seconda di ffmpeg più o meno facile da liberare? Lo sto usando principalmente per scrivere metadati e fare conversione audio (wav, flac, vorbis, mp3, aac).


1
ffmpeg non è certamente obsoleto, è praticamente il migliore nella razza per quello che fa.
James Campbell,

Risposte:


94

Prima di tutto vedi chi può dirmi la differenza e la relazione tra ffmpeg, libav e avconv . Gran parte della confusione è il risultato di:

  1. Gli utenti non fanno distinzione tra i progetti, FFmpeg e libav, e i rispettivi strumenti da riga di comando ffmpege avconv.
  2. Gli utenti con messaggi scarsamente formulati ottengono quando provano a usare quelli di libav ffmpeg.

FFmpeg vs ffmpege libav vsavconv

  • FFmpeg è il nome del progetto. ffmpegè il nome del loro strumento da riga di comando.
  • libav è il nome del progetto. avconvè il nome del loro strumento da riga di comando. Per un breve periodo libav ha avuto anche a ffmpeg.

Gli utenti spesso pensano "progetto" quando si discute di "strumento" che porta a ...

Un messaggio mal scritto

Quindi, come abbiamo appreso dal link Chi può dirmi ... , quando libav ha eseguito il fork da FFmpeg hanno anche fornito temporaneamente la loro versione di ffmpeg. Come membro di libav, il manutentore di ffmpeg in Debian e Ubuntu ha quindi deciso di cambiare la distribuzione per usare libav. Dal punto di vista di libav questa è stata la loro mossa migliore: costringere una grande comunità di utenti a usare il fork.

Ubuntu è passato durante il periodo di transizione quando libav ha fornito sia la loro versione ffmpegsia il loro strumento rinominato avconv. Quando gli utenti hanno tentato di usare libav's ffmpeghanno ricevuto il seguente messaggio:

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

In questo caso il "ffmpeg" menzionato nel messaggio era la versione temporanea di libav che è stata successivamente rimossa (così come il messaggio). Ricorda la differenza tra FFmpeg e ffmpeg? Naturalmente questo messaggio ha completamente confuso molti utenti che comprensibilmente non hanno fatto la distinzione tra progetto e strumento; specialmente gli utenti di Ubuntu che non erano a conoscenza del fatto che la loro distribuzione faceva un switcharoo o utenti che non avevano mai sentito parlare di libav. Non so se libav abbia voluto che gli utenti lo pensassero, ma probabilmente hanno apprezzato questo effetto collaterale.

Alcuni utenti di Ubuntu hanno ritenuto che il messaggio fosse troppo fuorviante e in seguito è stato modificato 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).

Un piccolo miglioramento secondo me, ma mi sento come se non fosse abbastanza chiaro.

Quale uso?

Nessuno può dirti quale usare. La differenza principale per gli utenti è che FFmpeg unisce molti commit da libav, ma non è così reciproco poiché libav sembra fingere che FFmpeg non esista e solo occasionalmente selezioni da FFmpeg.

Per l'utente occasionale, non dovrebbero esserci differenze enormi. Per gli utenti Ubuntu che desiderano utilizzare FFmpeg, è possibile compilarlo seguendo Come compilare FFmpeg e x264 , utilizzare FFmpeg PPA di Jon Severinsson o ottenere un semplice binario statico collegato dalla pagina di download di FFmpeg .

Per maggiori informazioni, vedi La situazione FFmpeg / Libav .


27
È oltre un messaggio mal scritto, è completamente sbagliato. FFmpeg non ha affatto fermato lo sviluppo, infatti FFmpeg ha una comunità molto più ampia di LibAV ... i manutentori di Ubuntu hanno fatto quel messaggio per indurre gli utenti a usare LibAV per la convinzione errata che FFmpeg fosse morto. è pura malizia al 100%.
MarcusJ,

1
avconv non supporta nemmeno LADSPA
Vassilis

5
@MarcusJ ... tecnicamente erano i manutentori debian. Ma sì, sono d'accordo; è ingannevole.
Wyatt8740,

Downvoted per la frase "Un messaggio mal scritto" dove non lo era. È stata una deliberata trasgressione.
Anwar,

1
@Anwar Sì, sembrava così. Ecco perché ho detto che era "mal formulata", ma immagino che fosse mal formulata.
Llogan,

32

Aggiornamento (inizio 2016)

  • Le probabilità rimangono a favore di ffmpeg. La maggior parte delle distro sono tornate indietro / stanno tornando a ffmpeg ( Gentoo , Debian )
  • Un vantaggio pratico di ffmpeg è l'ampia disponibilità di file binari per molte piattaforme. Googling per librerie statiche / librerie dinamiche / binari produce buoni risultati per linux, mac, windows, ios e android per ffmpeg, mentre potrei trovare solo build Linux e windows per libav. Questo potrebbe essere un punto importante se hai poca esperienza con C / makefile.

La situazione attuale (metà 2015)

Sembra essere meglio attenersi a FFmpeg. L'intera situazione è piuttosto disordinata e brutta. Ho appena iniziato a leggere sul fork qualche giorno fa. Ignorando tutto il dramma, ecco quelli che sembrano fatti:

  • FFmpeg incorpora le serie di modifiche da libav, mentre libav è riluttante a farlo (vedi dibattito debian )
  • Chrome utilizza ffmpeg e google ha fatto uno sforzo serio per renderlo sicuro. libav sta anche incorporando questi cambiamenti, ma a un ritmo più lento ( post sul blog di Google )
  • FFmpeg tenta di mantenere il maggior numero possibile di codec, mentre libav ne elimina un po '( mailing list libav , post da un sviluppatore libav )
  • La comunità FFmpeg è più grande di libav e lo sviluppatore più dedicato (michael niedermayer) bloccato con FFmpeg ( commit commit )
  • I manutentori ubuntu / debian per FFmpeg facevano parte del fork di libav. hanno aggiunto messaggi di deprecazione ad alcuni strumenti della riga di comando, suggerendo che ffmpeg è deprecato. questo ha causato molta confusione. sia debian che ubuntu stanno tornando a ffmpeg.

Mi è capitato a Google Michael Niedermayer e ho finito con questo post , in cui si dimette.
bzeaman,

1
@bzeaman sì, ricordo di essermi imbattuto in questo. ma sembra ancora fare una media di 2 fusioni / commit al giorno: git.videolan.org/…
kritzikratzi

hmm nessun candidato di installazione in deb. Cosa l'ha sostituito adesso?
Stígandr,

nvm mind ha capito libav-tools
Stígandr

1
Niedermayer era il motivo della forchetta. Detto questo, è cambiato molto.
Ismael Luceno,

9

Quando vai qui vedrai che l'aggiornamento più recente è settembre 2012 (qualche mese fa).

Sembra che questo dice che è solo specifico per Ubuntu e Debian in questo momento.

Qualche tempo fa ffmpeg si è diviso in due fork con il nome di ffmpeg e libav.

Debian sta seguendo il fork di libav nella sua distribuzione e in un prossimo caricamento il binario / usr / bin / ffmpeg sarà sostituito da / usr / bin / avconv.

Per quanto ne so, non è necessario passare immediatamente, ma Winff dovrebbe essere aggiornato per consentire entrambi i binari (dal punto di vista di Debian, con una preferenza per avconv). So che puoi impostare la posizione del binario nelle preferenze, ma penso che con la posizione impostata, Winff dovrebbe essere in grado di trovare il binario corretto.

Penso che in futuro anche Windows e altre distribuzioni potrebbero essere colpite da questo problema.

Per rispondere alla tua domanda se è esattamente lo stesso:

Ho implementato i controlli per il file binario corretto nel mio checkout locale, ma leggendo 1 , vedo che ci sono alcune incongruenze tra avconv e ffmpeg. Il problema è più grande, perché il file predefinito dovrà essere modificato e in particolare il modo in cui creiamo la riga di comando dovrà cambiare. Le opzioni che operano sul file di input devono andare PRIMA del file di input "-i".

Si noti che potrebbe essere specifico per la versione di Windows. Questo è stato pubblicato per quanto riguarda la versione Linux:

Lo strumento di conversione audio / video FFmpeg è ora noto come AVConv (un nome migliore secondo me). Quindi lo strumento da riga di comando "ffmpeg" è obsoleto e dovrebbe essere usato "avconv". Per quanto ho notato, tutti i parametri sono rimasti invariati, ma dovrebbero essere condotte ulteriori indagini. Alcune modifiche devono essere fatte nel CIS.

Compiti:

Installa AVConv sui computer che eseguono CIS. Normalmente avconv dovrebbe aggiornare ffmpeg (che ha funzionato su Ubuntu; non testato per Debian). Sostituisci "ffmpeg" con "avconv" in cis / api / ffmpeg.py, classe FFmpegTranscoder, campo prog_bin, che rappresenta l'eseguibile dello strumento di conversione. Nomi di file refactor, nomi di classi, nomi di metodi, nomi di variabili ecc. Che contengono "FFmpeg" o "ffmpeg" in modo tale che contengano AVConv. Un IDE come Eclipse potrebbe farlo automaticamente. Test! Se si notano problemi, eseguire il debug!


9
Non sono assolutamente d'accordo con il post che dice "ffmpeg è obsoleto e dovrebbe essere usato avconv".
slhck,

@slhck Quella sembra essere una pratica standard quando stai biforcando un progetto. Più utenti puoi indurre a pensare che il ramo principale sia obsoleto, meglio è per il tuo fork.
user253751
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.