ffmpeg,libav和avconv之间有什么异同?


246

当我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.

我在http://libav.org上找到了avconv 。我只是对他们感到困惑。


1
这意味着您输入了错误的命令行参数。
Dipan Mehta'2

18
This program is not developed anymore and is only provided for compatibility. Use avconv instead
为什么

1
你想做什么?ffmpeg主要是库,主ffmpeg命令行更多地用于演示其功能(尽管有帮助也可以使用)。如果只想用作命令,则有许多应用程序使用ffmpeg来完成您想做的事情。
Dipan Mehta 2012年

19
有关整个交易的有用说明,请访问blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
Tronic

4
我无法告诉您所有差异,但是:avconv -ss 00:01:42 -t 00:00:32 -i源文件名-acodec复制目标文件名不起作用,而ffmpeg -ss 00:01:42 -t 00:00 :32 -i源文件名-acodec复制目标文件名确实可以按预期工作,即使文档匹配

Answers:


472

令人困惑的消息

这些消息具有误导性,可以理解是造成混乱的原因。较早的Ubuntu版本使用Libav,它是FFmpeg项目的分支。FFmpeg在Ubuntu 15.04“ Vivid Vervet”中返回。

叉子基本上是FFmpeg社区内个性和发展风格冲突的不友好结果。值得注意的是,Debian / Ubuntu的维护者由于与Libav分支有关而自行从FFmpeg转到Libav。

真实ffmpeg与假货

有一段时间,Libav和FFmpeg分别开发了自己的ffmpeg

Libav然后改名为他们比扎罗ffmpegavconv从FFmpeg的项目撇清。在过渡期间,显示“不再开发”消息,告诉用户开始使用avconv而不是其伪造版本的ffmpeg。这使用户误以为FFmpeg(该项目)已死,这是不正确的。单词选择不好,但是我无法想象Libav不会期望普通用户做出这样的回应。

ffmpeg最终从Libav源中删除了伪造的“ ” 消息后,该消息已在上游被删除,但是根据您的版本,它仍然可以在Ubuntu中显示,因为Ubuntu使用的Libav源是从ffmpeg到avconv过渡时期。

在2012年6月,该消息被重新包装libav - 4:0.8.3-0ubuntu0.12.04.1。不幸的是,新的“已弃用”消息已引起其他用户混乱。

从Ubuntu 15.04“ Vivid Vervet”开始,FFmpeg ffmpeg回到了存储库中

利巴vs利巴夫

为了进一步使事情复杂化,Libav选择了FFmpeg过去使用的名称来引用其库(libavcodec,libavformat等)。例如,关于使用FFmpeg库的问题和讨论的libav用户邮件列表与Libav项目无关。

如何分辨差异

如果您使用的avconv是Libav。如果您使用的ffmpeg是FFmpeg或Libav。请参考控制台输出中的第一行来说明区别:版权声明中将提及FFmpeg或Libav。

其次,版本编号方案不同。每个FFmpeg或Libav库都包含一个version.h显示版本号的标头。FFmpeg将以三位数结尾,例如57.67。100,Libav将以一位数字结尾,例如57.67。0。您还可以通过运行ffmpegavconv查看控制台输出来查看库版本号。

如果您想使用真实 ffmpeg

Ubuntu 15.04“ Vivid Vervet”或更高版本

真实目录ffmpeg位于存储库中,因此您可以使用以下命令进行安装:

apt-get install ffmpeg

对于旧版Ubuntu

您的选择是:

这些方法是非侵入性的,可逆的,并且不会干扰系统或任何存储库软件包。

另一个可能的选择是升级到Ubuntu 15.04“ Vivid Vervet”或更高版本,并仅从ffmpeg存储库中使用。

另见

有关这种情况的有趣博客文章,以及有关项目之间主要技术差异的讨论,请参阅FFmpeg / Libav情况


89
似乎是个人问题
mirza 2012年

1
如果即使安装了真正的ffmpeg,也无法使其正常工作。您应该删除ubuntu附带的默认ffmpeg作为libav-tools,请参阅:askubuntu.com/questions/162740/how-do-i-uninstall-ffmpeg
user568109 2013年

@ user568109这取决于您如何安装ffmpeg。请参阅如何在Ubuntu,Debian或Mint上编译FFmpeg或仅使用Linux构建ffmpeg。如果还安装了存储库软件包,则这些方法中的任何一种都应该起作用。
llogan 2013年

1
我确实构建了ffmpeg,但是从终端运行ffmpeg时,一个出厂默认值正在运行,并且执行apt-get remove ffmpeg并没有将其删除。因此,我向那些仍在处理此问题的人留言,只是为了消除混乱。它作为libav-tools交付。
user568109 2013年

似乎在开源社区中需要一些“商标”系统来避免这些情况!
rkachach
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.