Por que eu escolheria o Libav ao invés do FFmpeg, ou há alguma diferença?


72

Pelo que vi, parece-me que o de Libav avconvé pensado para se tornar um sucessor de ffmpeg- isso está correto?

Se isso é verdade, por que isso acontece? O que exatamente o libav está fazendo melhor e por que eu gostaria de escolhê-lo em vez de ffmpeg?

Eu vim para esse "problema" ao instalar o Ubuntu 12.04.1 LTS em uma VM e quando instalei o ffmpeg, ele apareceu com uma mensagem dizendo que o mit ffmpeg está obsoleto e pensei primeiro em "wtf?".

Se eu usar, avconvpoderei migrar meus scripts, dependendo do ffmpeg, mais ou menos fácil para o libav? Estou usando principalmente para escrever metadados e fazer conversões de áudio (wav, flac, vorbis, mp3, aac).


11
O ffmpeg certamente não é obsoleto, é praticamente o melhor da raça para o que faz.
James Campbell

Respostas:


94

Antes de tudo, veja Quem pode me dizer a diferença e a relação entre ffmpeg, libav e avconv . Grande parte da confusão é resultado de:

  1. Usuários que não diferenciam entre os projetos, FFmpeg e libav, e suas respectivas ferramentas de linha de comando, ffmpege avconv.
  2. As mensagens mal formuladas que os usuários recebem quando tentam usar o libav ffmpeg.

FFmpeg vs ffmpege libav vsavconv

  • FFmpeg é o nome do projeto. ffmpegé o nome da ferramenta de linha de comando.
  • libav é o nome do projeto. avconvé o nome da ferramenta de linha de comando. Por um curto período, o libav também teve um ffmpeg.

Os usuários costumam pensar em "projeto" quando "ferramenta" está sendo discutida, o que leva a ...

Uma mensagem mal formulada

Então, como aprendemos no link Quem pode me dizer ... , quando o libav bifurcou no FFmpeg, eles também forneceram temporariamente sua versão do ffmpeg. Como membro do libav, o mantenedor do ffmpeg no Debian e no Ubuntu decidiu mudar a distribuição para usar o libav. Do ponto de vista do libav, essa foi a melhor decisão: forçar uma grande comunidade de usuários a usar o fork.

O Ubuntu mudou durante o período de transição, quando o libav forneceu sua versão ffmpege sua ferramenta renomeada avconv. Quando os usuários tentaram usar o libav, ffmpegeles receberam a seguinte mensagem:

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

Nesse caso, o "ffmpeg" mencionado na mensagem era a versão temporária do libav que foi removida posteriormente (como foi a mensagem). Lembre-se da diferença entre FFmpeg e ffmpeg? É claro que esta mensagem confundiu completamente muitos usuários que, compreensivelmente, não fizeram a distinção entre projeto e ferramenta; especialmente usuários do Ubuntu que não estavam cientes de que sua distribuição fazia um switcharoo ou usuários que nunca ouviram falar de libav. Não sei se o libav pretendia que os usuários pensassem isso, mas provavelmente gostaram desse efeito colateral.

Alguns usuários do Ubuntu acharam a mensagem muito enganadora e depois foi alterada para:

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

Uma pequena melhoria na minha opinião, mas sinto que não está claro o suficiente.

Qual eu uso?

Ninguém pode lhe dizer qual usar. A principal diferença para os usuários é que o FFmpeg mescla muitos commits do libav, mas não é tão recíproco, pois o libav parece fingir que o FFmpeg não existe e apenas ocasionalmente escolhe o FFmpeg.

Para o usuário casual, não deve haver grandes diferenças. Para usuários do Ubuntu que desejam usar o FFmpeg, você pode compilá-lo seguindo Como compilar o FFmpeg e o x264 , usar o PPA do FFmpeg de Jon Severinsson ou obter um binário estático simples vinculado na página de download do FFmpeg .

Para mais informações, consulte A situação do FFmpeg / Libav .


27
Está além de uma mensagem mal formulada, é totalmente errado. O FFmpeg não interrompeu o desenvolvimento, na verdade o FFmpeg tem uma comunidade muito maior que o LibAV ... os mantenedores do Ubuntu fizeram essa mensagem para induzir os usuários a usarem o LibAV com a crença equivocada de que o FFmpeg estava morto. é 100% pura malícia.
MarcusJ

11
avconv nem mesmo suporta LADSPA
Vassilis

5
@ MarcusJ ... tecnicamente eram os mantenedores do debian. Mas sim, eu concordo; é enganoso.
Wyatt8740

Voto negativo para a frase "Uma mensagem mal formulada" onde não estava. Foi um erro deliberado.
Anwar

11
@ Anwar Sim, parecia assim. Foi por isso que eu disse que era "mal escrito", mas acho que foi mal escrito.
llogan

32

Atualização (início de 2016)

  • As probabilidades permanecem a favor do ffmpeg. A maioria das distros retornou / está retornando ao ffmpeg ( Gentoo , Debian )
  • Uma vantagem prática do ffmpeg é a ampla disponibilidade de binários para muitas plataformas. Pesquisando por bibliotecas estáticas / bibliotecas dinâmicas / binários produz bons resultados para linux, mac, windows, ios e android para ffmpeg, enquanto eu só conseguia encontrar compilações linux e windows para libav. Este poderia ser um ponto importante se você tiver pouca experiência com C / makefiles.

A situação atual (meados de 2015)

Parece ser melhor ficar com o FFmpeg. Toda a situação é bastante confusa e feia. Eu comecei a ler o garfo há alguns dias. Ignorando todo o drama, eis o que parecem ser fatos:

  • O FFmpeg incorpora conjuntos de alterações do libav, enquanto o libav reluta em fazê-lo (veja o debate debian )
  • O Chrome usa ffmpeg, e o Google se esforçou bastante para torná-lo seguro. O libav também está incorporando essas mudanças, mas em um ritmo mais lento ( postagem no blog do google )
  • O FFmpeg tenta manter o maior número possível de codecs, enquanto o libav descartou alguns ( lista de discussão do libav , publicação de um dev de libav )
  • A comunidade FFmpeg é maior que o libav, e o desenvolvedor mais dedicado (michael niedermayer) ficou com o FFmpeg ( estatísticas de confirmação )
  • Os mantenedores do ubuntu / debian para o FFmpeg faziam parte do fork do libav. eles adicionaram mensagens de reprovação a algumas ferramentas de linha de comando, sugerindo que o ffmpeg está obsoleto. isso causou muita confusão. o debian e o ubuntu estão voltando ao ffmpeg.

Eu encontrei o Google Michael Niedermayer e acabei com este post , no qual ele renuncia.
bzeaman

11
@bzeaman sim, lembro-me de encontrar isso. mas ele ainda parece média em 2 fusões / comete um dia: git.videolan.org/...
kritzikratzi

hmm nenhum candidato a instalação no deb. O que o substituiu agora?
Stígandr 16/10

mente da nvm entendi libav-tools
Stígandr 16/16

11
Niedermayer foi o motivo do garfo. Dito isto, ele mudou muito.
Ismael Luceno

9

Quando você for aqui, verá que a atualização mais recente é setembro de 2012 (há alguns meses).

Parece que isso diz que é apenas específico para Ubuntu e Debian no momento.

Algum tempo atrás, o ffmpeg se dividiu em dois garfos com o nome de ffmpeg e libav.

O Debian está seguindo o fork do libav em sua distribuição e em um próximo upload o binário / usr / bin / ffmpeg será substituído por / usr / bin / avconv.

Até onde eu sei, não é necessário mudar imediatamente, mas o Winff deve ser atualizado para permitir um binário (da perspectiva Debian, com preferência pelo avconv). Eu sei que você pode definir o local do binário nas preferências, mas acho que, com o local definido, o Winff deve ser capaz de encontrar o binário adequado.

Penso que no futuro também o Windows e outras distribuições poderão ser atingidos por esse problema.

Para responder sua pergunta sobre se é ou não exatamente o mesmo:

Eu implementei as verificações para o binário correto no meu checkout local, mas ao ler 1 , vejo que existem algumas inconsistências entre avconv e ffmpeg. Esse problema é maior, porque o arquivo predefinido precisará de ajustes e, especialmente, a maneira como criamos a linha de comando terá que mudar. As opções que operam no arquivo de entrada precisam ir ANTES do arquivo de entrada "-i".

Observe que isso pode ser específico para a versão do Windows. Foi postada sobre a versão do Linux:

A ferramenta de conversão de áudio / vídeo FFmpeg agora é conhecida como AVConv (um nome melhor na minha opinião). Portanto, a ferramenta de linha de comando "ffmpeg" está obsoleta e "avconv" deve ser usado. Tanto quanto eu notei, todos os parâmetros permaneceram os mesmos, mas investigações adicionais devem ser feitas. Algumas modificações precisam ser feitas no CIS.

Tarefas:

Instale o AVConv nas máquinas que executam o CIS. Normalmente, o avconv deve estar atualizando o ffmpeg (que funcionou no Ubuntu; não foi testado para o Debian). Substitua "ffmpeg" por "avconv" em cis / api / ffmpeg.py, classe FFmpegTranscoder, campo prog_bin, que representa a ferramenta de conversão executável. Refatore nomes de arquivos, nomes de classes, nomes de métodos, nomes de variáveis ​​etc. que contenham "FFmpeg" ou "ffmpeg" para que contenham AVConv. Um IDE como o Eclipse poderia fazer isso automaticamente. Teste! Se houver problemas, depure!


9
Discordo totalmente do post que diz "ffmpeg está obsoleto e o avconv deve ser usado".
slhck

@slhck Essa parece ser uma prática comum quando você está criando um projeto. Quanto mais usuários você pensar que o ramo principal é obsoleto, melhor para o seu garfo.
user253751
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.