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

246

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

$ 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
Это означает, что вы даете неправильные аргументы командной строки.
Дипан Мехта
18
This program is not developed anymore and is only provided for compatibility. Use avconv instead
почему
1
Что ты пытаешься сделать? ffmpegВ основном это библиотека, а основная ffmpegкомандная строка предназначена для демонстрации ее возможностей (хотя не важно, используете ли вы ее, если это поможет). Если вы хотите использовать только как команду, есть много приложений, которые используют ffmpeg, чтобы делать то, что вы хотите.
Дипан Мехта
19
Есть полезное объяснение всей сделки на blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
Tronic
4
Я не могу сказать вам все различия, но: avconv -ss 00:01:42 -t 00:00:32 -i sourcefilename -acodec copy targetfilename не работает, и ffmpeg -ss 00:01:42 -t 00:00 : 32 -i sourcefilename -acodec copy targetfilename работает должным образом, даже если документация совпадает

Ответы:

473

Запутанные сообщения

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

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

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

Какое-то время и Libav, и FFmpeg по отдельности разработали свою собственную версию ffmpeg.

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

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

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

Начиная с Ubuntu 15.04 «Vivid подопытных», FFmpeg, ffmpegэто еще в хранилищах снова.

Либав против Либав

Чтобы еще больше усложнить ситуацию, 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 .

llogan
источник
89
похоже, это личная проблема
мирза
1
Если даже после установки настоящего ffmpeg вы не сможете заставить его работать. Вы должны удалить ffmpeg по умолчанию, поставляемый с Ubuntu, как libav-tools, см .: askubuntu.com/questions/162740/how-do-i-uninstall-ffmpeg .
user568109
@ user568109 Это зависит от того, как вы установили ffmpeg. Смотрите раздел Как скомпилировать FFmpeg в Ubuntu, Debian или Mint или просто использовать сборку Linuxffmpeg . Любой из этих методов должен работать, если также установлен пакет репозитория.
Llogan
1
Я собрал ffmpeg, но при запуске ffmpeg из терминала работала одна поставленная по умолчанию, а команда apt-get remove ffmpeg не удаляла ее. Поэтому я оставил сообщение для тех, кто застрял в этой проблеме, просто чтобы устранить путаницу. Он поставляется как libav-tools.
user568109
Похоже, что в сообществе открытого исходного кода нужна какая-то система «товарных знаков», чтобы избежать подобных ситуаций !!!
ркачач