¿Cuáles son las diferencias y similitudes entre ffmpeg, libav y avconv?

246

Cuando ejecuto ffmpegen Ubuntu, muestra:

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

O se muestra (dependiendo de la versión de 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.

Encontré avconv en http://libav.org . Estoy perplejo por ellos.

por qué
fuente
1
Esto implica que está dando argumentos de línea de comando incorrectos.
Dipan Mehta
18
This program is not developed anymore and is only provided for compatibility. Use avconv instead
por qué
1
¿Que estás tratando de hacer? ffmpeges la biblioteca principalmente y la ffmpeglínea de comandos principal es más para demostrar sus características (aunque no importa que use si ayuda). Si desea usar solo como un comando, hay muchas aplicaciones que usan ffmpeg para hacer lo que quiere hacer.
Dipan Mehta
19
Hay una explicación útil de todo el asunto en blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
Tronic
44
No puedo decirte todas las diferencias, pero: avconv -ss 00:01:42 -t 00:00:32 -i sourcefilename -acodec copy targetfilename no funciona, y ffmpeg -ss 00:01:42 -t 00:00 : 32 -i sourcefilename -acodec copy targetfilename funciona como se esperaba aunque la documentación coincida

Respuestas:

472

Mensajes confusos

Estos mensajes son bastante engañosos y comprensiblemente una fuente de confusión. Las versiones anteriores de Ubuntu usaban Libav, que es una bifurcación del proyecto FFmpeg. FFmpeg regresó en Ubuntu 15.04 "Vivid Vervet".

La bifurcación fue básicamente un resultado no amistoso de personalidades en conflicto y estilos de desarrollo dentro de la comunidad FFmpeg. Vale la pena señalar que el mantenedor de Debian / Ubuntu cambió de FFmpeg a Libav por su propia cuenta debido a estar involucrado con la bifurcación de Libav.

El Real ffmpeg vs lo falso

Durante un tiempo, tanto Libav como FFmpeg desarrollaron por separado su propia versión de ffmpeg .

Libav luego rebautizado su bizarro ffmpega avconvdistanciarse del proyecto FFmpeg. Durante el período de transición, se mostró el mensaje "no desarrollado más" para indicar a los usuarios que comiencen a usar en avconvlugar de su versión falsificada deffmpeg . Esto confundió a los usuarios al pensar que FFmpeg (el proyecto) está muerto, lo cual no es cierto. Una mala elección de palabras, pero no puedo imaginar que Libav no espere tal respuesta por parte de los usuarios en general.

Este mensaje se eliminó en sentido ascendente cuando el " ffmpeg" falso se eliminó finalmente de la fuente de Libav, pero, dependiendo de su versión, todavía puede aparecer en Ubuntu porque la fuente de Libav que Ubuntu utiliza es del período de transición de ffmpeg a avconv.

En junio de 2012, el mensaje se reformuló para el paquete libav - 4:0.8.3-0ubuntu0.12.04.1. Lamentablemente, el nuevo mensaje "obsoleto" ha causado confusión adicional al usuario.

Comenzando con Ubuntu 15.04 "Vivid Vervet", FFmpeg's ffmpegestá nuevamente en los repositorios .

libav vs Libav

Para complicar aún más las cosas, Libav eligió un nombre que FFmpeg usó históricamente para referirse a sus bibliotecas (libavcodec, libavformat, etc.). Por ejemplo, la lista de correo del usuario libav , para preguntas y debates sobre el uso de las bibliotecas FFmpeg, no está relacionada con el proyecto Libav.

Como decir la diferencia

Si está utilizando, avconventonces está utilizando Libav. Si estas usandoffmpeg , podría estar utilizando FFmpeg o Libav. Consulte la primera línea en la salida de la consola para ver la diferencia: el aviso de copyright mencionará FFmpeg o Libav.

En segundo lugar, los esquemas de numeración de versiones difieren. Cada una de las bibliotecas FFmpeg o Libav contiene un version.hencabezado que muestra un número de versión. FFmpeg terminará en tres dígitos, como 57.67. 100 , y Libav terminará en un dígito como 57.67. 0 . También puede ver los números de versión de la biblioteca ejecutando ffmpego avconvviendo la salida de la consola.

Si quieres usar lo real ffmpeg

Ubuntu 15.04 "Vivid Vervet" o más reciente

Lo real ffmpegestá en el repositorio, por lo que puede instalarlo con:

apt-get install ffmpeg

Para versiones anteriores de Ubuntu

Sus opciones son:

Estos métodos no son intrusivos, son reversibles y no interferirán con el sistema ni con ningún paquete de repositorio.

Otra opción posible es actualizar a Ubuntu 15.04 "Vivid Vervet" o más reciente y simplemente usarlo ffmpegdesde el repositorio.

Ver también

Para obtener un interesante artículo de blog sobre la situación, así como una discusión sobre las principales diferencias técnicas entre los proyectos, consulte La situación de FFmpeg / Libav .

lema
fuente
89
parece que es un problema personal
mirza
1
Si incluso después de instalar el ffmpeg real no puede hacerlo funcionar. Debe eliminar el ffmpeg predeterminado que se envía con ubuntu como libav-tools, consulte: askubuntu.com/questions/162740/how-do-i-uninstall-ffmpeg .
user568109
@ user568109 Depende de cómo haya instalado ffmpeg. Vea Cómo compilar FFmpeg en Ubuntu, Debian o Mint o simplemente use una compilación de Linuxffmpeg . Cualquiera de estos métodos debería funcionar si el paquete de repositorio también está instalado.
llogan
1
Construí ffmpeg, pero cuando ejecuté ffmpeg desde el terminal, el predeterminado enviado se estaba ejecutando y haciendo apt-get remove ffmpeg no lo eliminó. Así que dejé un mensaje para aquellos atrapados en este problema, solo para aclarar la confusión. Se envía como libav-tools.
user568109
¡Parece que se necesita algún sistema de "marca registrada" en la comunidad de código abierto para evitar estas situaciones!
rkachach