Quais são as diferenças e semelhanças entre ffmpeg, libav e avconv?

246

Quando executo ffmpegno Ubuntu, ele 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).

Ou mostra (dependendo da versão do 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.

Encontrei o avconv em http://libav.org . Estou apenas perplexo com eles.

porque
fonte
1
Isso implica que você está dando argumentos de linha de comando incorretos.
Dipan Mehta 28/02/12
18
This program is not developed anymore and is only provided for compatibility. Use avconv instead
por que
1
O que você está tentando fazer? ffmpegé principalmente a biblioteca e a ffmpeglinha de comando principal é mais para demonstração de seus recursos (embora não importa que você use se isso ajudar). Se você deseja usar apenas como comando, existem muitos aplicativos que usam ffmpeg para fazer o que você deseja fazer.
Dipan Mehta 28/02/12
19
Há uma explicação útil de todo o negócio em blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
Tronic
4
Eu não posso te dizer todas as diferenças, mas: avconv -ss 00:01:42 -t 00:00:32 -i sourcefilename -codec copy targetfilename não funciona e ffmpeg -ss 00:01:42 -t 00:00 : 32 -i sourcefilename -acodec copy targetfilename funciona conforme o esperado, mesmo que a documentação corresponda

Respostas:

472

Mensagens confusas

Essas mensagens são bastante enganadoras e compreensivelmente uma fonte de confusão. Versões mais antigas do Ubuntu usavam o Libav, que é um fork do projeto FFmpeg.O FFmpeg retornou no Ubuntu 15.04 "Vivid Vervet".

O garfo foi basicamente um resultado não amigável de personalidades conflitantes e estilos de desenvolvimento dentro da comunidade FFmpeg. Vale a pena notar que o mantenedor do Debian / Ubuntu mudou do FFmpeg para o Libav por conta própria devido a estar envolvido com o fork do Libav.

O verdadeiro ffmpegvs o falso

Por um tempo, o Libav e o FFmpeg desenvolveram separadamente sua própria versão do ffmpeg.

O Libav renomeou o bizarro ffmpegpara avconvse distanciar do projeto FFmpeg. Durante o período de transição, a mensagem "não está mais desenvolvido" foi exibida para dizer aos usuários para começarem a usar, em avconvvez de sua versão falsificada deffmpeg . Isso confundiu os usuários ao pensarem que o FFmpeg (o projeto) está morto, o que não é verdade. Uma má escolha de palavras, mas não consigo imaginar que o Libav não espere tal resposta dos usuários em geral.

Esta mensagem foi removida antes do " ffmpeg" fluxo " " quando a falsificação foi finalmente removida da fonte Libav, mas, dependendo da sua versão, ela ainda pode aparecer no Ubuntu porque a fonte Libav que o Ubuntu usa é do período de transição ffmpeg para avconv.

Em junho de 2012, a mensagem foi redigida para o pacote libav - 4:0.8.3-0ubuntu0.12.04.1. Infelizmente, a nova mensagem "obsoleta" causou confusão adicional ao usuário.

Começando com o Ubuntu 15.04 "Vivid Vervet", o FFmpeg ffmpeg está de volta aos repositórios novamente.

libav vs Libav

Para complicar ainda mais, o Libav escolheu um nome que foi historicamente usado pelo FFmpeg para se referir às suas bibliotecas (libavcodec, libavformat, etc). Por exemplo, o lista de discussão libav-user , para perguntas e discussões sobre o uso das bibliotecas FFmpeg, não está relacionada ao projeto Libav.

Como saber a diferença

Se você estiver usando avconv, estará usando o Libav. Se você estiver usandoffmpeg poderá usar o FFmpeg ou o Libav. Consulte a primeira linha na saída do console para saber a diferença: o aviso de direitos autorais mencionará FFmpeg ou Libav.

Em segundo lugar, os esquemas de numeração das versões diferem. Cada uma das bibliotecas FFmpeg ou Libav contém um version.hcabeçalho que mostra um número de versão. O FFmpeg terminará em três dígitos, como 57,67. 100 e o Libav terminará em um dígito, como 57,67. 0 . Você também pode visualizar os números de versão da biblioteca executando ffmpegou avconvvisualizando a saída do console.

Se você quiser usar o verdadeiro ffmpeg

Ubuntu 15.04 "Vivid Vervet" ou mais recente

O real ffmpegestá no repositório, para que você possa instalá-lo com:

apt-get install ffmpeg

Para versões mais antigas do Ubuntu

Suas opções são:

Esses métodos são não intrusivos, reversíveis e não interferem no sistema ou em nenhum pacote de repositório.

Outra opção possível é atualizar para o Ubuntu 15.04 "Vivid Vervet" ou mais recente e apenas usá ffmpeg-lo no repositório.

Veja também

Para um artigo interessante do blog sobre a situação, bem como uma discussão sobre as principais diferenças técnicas entre os projetos, consulte A situação do FFmpeg / Libav .

llogan
fonte
89
Parece que é uma questão pessoal
Mirza
1
Se mesmo depois de instalar o ffmpeg real, você não conseguirá fazê-lo funcionar. Você deve remover o ffmpeg padrão fornecido com o ubuntu como libav-tools, consulte: askubuntu.com/questions/162740/how-do-i-uninstall-ffmpeg .
User568109
@ user568109 Depende de como você instalou o ffmpeg. Veja Como compilar o FFmpeg no Ubuntu, Debian ou Mint ou apenas usar uma compilação do Linuxffmpeg . Qualquer um desses métodos deve funcionar se o pacote do repositório também estiver instalado.
Llogan
1
Eu criei o ffmpeg, mas ao executar o ffmpeg no terminal, o padrão enviado estava em execução e o apt-get remove ffmpeg não o removeu. Então, deixei uma mensagem para aqueles que ficaram com esse problema, apenas para esclarecer a confusão. É enviado como ferramentas de libav.
user568109
Parece que é necessário algum sistema de "marca registrada" na comunidade de código aberto para evitar essas situações !!!
Rkachach