Por que eu escolheria o Libav sobre o FFmpeg ou há alguma diferença?

60

Pelo que vi, parece-me que o avconv do Libav é considerado um sucessor de ffmpeg - está correto?

Se isso for verdade, por que isso acontece? O que exatamente a libav está fazendo melhor e por que eu gostaria de escolher sobre o ffmpeg?

Eu cheguei a 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 ffmpeg estava obsoleto e pensei "wtf?".

Se eu usar avconv Será possível migrar meus scripts dependendo do ffmpeg mais ou menos fácil de libav? Eu estou usando principalmente para escrever metadados e fazer conversão de áudio (wav, flac, vorbis, mp3, aac).

    
por burzum 18.11.2012 / 19:01

3 respostas

91

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

  1. Usuários que não diferenciam os projetos, o FFmpeg e a libav e suas respectivas ferramentas de linha de comando, ffmpeg e avconv .
  2. A mensagem mal redigida que os usuários recebem quando tentam usar o ffmpeg da libav.

FFmpeg vs ffmpeg e libav vs avconv

  • 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, a libav também tinha um ffmpeg .

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

Uma mensagem mal redigida

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

O Ubuntu mudou durante o período de transição quando a libav forneceu a versão de ffmpeg e a ferramenta renomeada avconv . Quando os usuários tentaram usar o ffmpeg da libav, 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).

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

Alguns usuários do Ubuntu acharam a mensagem muito enganosa e depois mudaram 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 melhora na minha opinião, mas sinto que não está claro o suficiente.

Qual deles eu uso?

Ninguém pode dizer qual usar. A principal diferença para os usuários é que o FFmpeg mescla muitos commits da libav, mas não é tão recíproco, já que a 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 x264 , use < https://launchpad.net/~jon-severinsson/+archive/ffmpeg "> FFmpeg PPA de Jon Severinsson , ou obter um simples binário estático vinculado a partir do FFmpeg download página.

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

    
por 19.11.2012 / 01:05
28

Atualização (início de 2016)

  • As chances permanecem em favor do ffmpeg. A maioria das distros mudou de volta / está retornando ao ffmpeg ( Gentoo , Debian )
  • Uma vantagem prática do ffmpeg é a ampla disponibilidade de binários para muitas plataformas. Pesquisando por libs estáticas / libs dinâmicas / binários produz bons resultados para o linux, mac, windows, ios e android para o ffmpeg, enquanto eu só encontrei o Linux e o Windows compilados para o libav. Este pode ser um ponto importante se você tiver pouca experiência com arquivos 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 no garfo há alguns dias atrás. Ignorando todo o drama, aqui estão o que parecem ser fatos:

  • O FFmpeg incorpora conjuntos de mudanças da libav, enquanto a libav está relutante em fazer isso (veja debate debian )
  • O Chrome usa o ffmpeg e o Google fez um grande esforço para torná-lo seguro. A libav também está incorporando essas mudanças, mas em um ritmo mais lento ( post do blog do Google )
  • O FFmpeg tenta manter tantos codecs quanto possível, enquanto a libav derrubou alguns ( libav mailing listar , postar de um libav dev )
  • A comunidade FFmpeg é maior que libav e o desenvolvedor mais dedicado (michael niedermayer) ficou com o FFmpeg ( commit stats )
  • 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, insinuando que o ffmpeg está obsoleto. isso causou muita confusão. ambos debian e ubuntu estão voltando para o ffmpeg.
por 17.07.2015 / 04:37
9

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

Parece que isto diz que é apenas específico para o Ubuntu e o Debian neste momento .

Some time ago ffmpeg split into two forks under the name of ffmpeg and libav.

Debian is following the libav fork in it's distribution and in an upcoming upload the binary /usr/bin/ffmpeg will be replaced by /usr/bin/avconv.

As far as I know it is not necessary to switch immediately, but Winff should be upgraded to allow for either binary (from the Debian perspective, with a preference for avconv). I know you can set the location of the binary in the preferences, but I think that with the location set, Winff should be able to find the proper binary.

I think in the future also Windows and other distributions might be hit by this issue.

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

I have implemented the checks for the correct binary in my local checkout, but reading up 1, I see that there are some inconsistencies between avconv and ffmpeg. That issue is larger, because the preset file will need adjustment and especially the way we create the command line will have to change. The options that operate on the input file need to go BEFORE the input file "-i".

Por favor, note que isso pode ser específico para a versão do Windows. Isso foi postado sobre a versão do Linux:

FFmpeg audio/video conversion tool is now known as AVConv (a better name in my opinion). So "ffmpeg" command line tool is obsolete and "avconv" should be used. As far as I noticed all parameters remained the same, but further investigations should be made. Some modifications need to be done in CIS.

Tasks:

Install AVConv on the machine(s) that run CIS. Usually avconv should appear be updating ffmpeg (that worked on Ubuntu; not tested for Debian). Replace "ffmpeg" with "avconv" in cis/api/ffmpeg.py, class FFmpegTranscoder, field prog_bin, which represents the conversion tool executable. Refactor file names, class names, method names, variable names etc. that contain "FFmpeg" or "ffmpeg" such that they contain AVConv. An IDE like Eclipse could do this automatically. Test! If problems are noticed, debug!

    
por 18.11.2012 / 19:07

Tags