Каковы различия и сходства между ffmpeg, libav и avconv?

Когда я запускаю ffmpeg в Ubuntu, он показывает:

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

Или он показывает (в зависимости от версии 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.

Я нашел avconv на http://libav.org. Я просто озадачен ими.

Ответ 1

Сбивание сообщений

Эти сообщения скорее вводят в заблуждение и, по понятным причинам, источник путаницы. В старых версиях Ubuntu использовался Libav, который является вилкой проекта FFmpeg. FFmpeg возвращается в Ubuntu 15.04 "Vivid Vervet".

Вилка была в основном невообразимым результатом противоречивых личностей и стилей развития в сообществе FFmpeg. Стоит отметить, что разработчик Debian/Ubuntu сам по себе переключился с FFmpeg на Libav, связавшись с вилкой Libav.

Реальный ffmpeg против поддельного

Некоторое время Libav и FFmpeg разработали собственную версию ffmpeg.

Затем Libav переименовал свой bizarro ffmpeg в avconv, чтобы дистанцироваться от проекта FFmpeg. В течение переходного периода было отображено сообщение "не разработано больше", чтобы сообщить пользователям начать использовать avconv вместо своей поддельной версии ffmpeg. Это путало пользователей, считая, что FFmpeg (проект) мертв, что неверно. Плохой выбор слов, но я не могу представить, чтобы Libav не ожидал такого ответа от обычных пользователей.

Это сообщение было удалено вверх по течению, когда фальшивый "ffmpeg" был окончательно удален из источника Libav, но, в зависимости от вашей версии, он все равно может отображаться в Ubuntu, потому что источник Libav Ubuntu использует от ffmpeg-to -vconv переходный период.

В июне 2012 года сообщение было переписано для пакета libav - 4:0.8.3-0ubuntu0.12.04.1. К сожалению, новое "устаревшее" сообщение вызвало дополнительную путаницу пользователя.

Начиная с Ubuntu 15.04 "Vivid Vervet", FFmpeg ffmpeg снова снова в репозиториях.

libav vs Libav

Чтобы еще больше усложнить ситуацию, Libav выбрал имя, которое исторически использовалось FFmpeg для ссылки на его библиотеки (libavcodec, libavformat и т.д.). Например, список рассылки libav-user, для вопросов и обсуждений об использовании библиотек FFmpeg, не связан с проектом Libav.

Как сказать разницу

Если вы используете avconv, вы используете Libav. Если вы используете ffmpeg, вы можете использовать FFmpeg или Libav. Обратите внимание на первую строку на выходе консоли, чтобы сообщить о различиях: в уведомлении об авторских правах будут упоминаться FFmpeg или Libav.

Во-вторых, схемы нумерации версий различаются. Каждая из библиотек FFmpeg или Libav содержит заголовок version.h, который показывает номер версии. FFmpeg закончится тремя цифрами, такими как 57.67. 100, а Libav закончится на одну цифру, такую ​​как 57.67. 0. Вы также можете просмотреть номера версий библиотеки, запустив ffmpeg или avconv и просмотрев вывод консоли.

Если вы хотите использовать реальный ffmpeg

Ubuntu 15.04 "Vivid Vervet" или новее

Реальный ffmpeg находится в репозитории, поэтому вы можете установить его с помощью:

apt-get install ffmpeg

Для более старых версий Ubuntu

Ваши варианты:

Эти методы являются неинтрузивными, обратимыми и не будут мешать системе или пакетам репозитория.

Другой возможной возможностью является обновление до Ubuntu 15.04 "Vivid Vervet" или более новая версия и просто использование ffmpeg в репозитории.

Также см.

Для интересной статьи в блоге о ситуации, а также обсуждения основных технических различий между проектами см. Состояние FFmpeg/Libav.