ffmpeg,libav和avconv有什么区别和相似之处?
当我在Ubuntu上运行ffmpeg
时,它显示:
$ 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。 我只是被他们困惑。
混淆消息
这些信息相当具有误导性,可以理解为混淆的来源。 较旧的Ubuntu版本使用了Libav,这是FFmpeg项目的一个分支。 FFmpeg在Ubuntu 15.04“Vivid Vervet”中返回。
这个分支基本上是FFmpeg社区中个性和开发风格相互冲突的不友好的结果。 值得注意的是,Debian / Ubuntu的维护者由于涉及到Libav fork而自己从FFmpeg切换到Libav。
真正的ffmpeg
与假的
Libav和FFmpeg分别开发了自己的ffmpeg
版本。
Libav然后将他们的bizarro ffmpeg
重命名为avconv
以便与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
又回到了库中 。
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版本
您的选择是:
- 下载最新的
ffmpeg
Linux版本 , - 按照一步一步的指导来编译
ffmpeg
, - 或者使用Doug McMahon的PPA (Ubuntu 14.04 LTS“Trusty Tahr”)
这些方法是非侵入式的,可逆的,不会干扰系统或任何仓库软件包。
另一个可能的选择是升级到Ubuntu 15.04“Vivid Vervet”或更新版本,只需使用存储库中的ffmpeg
。
另见
有关这种情况的一篇有趣的博客文章,以及有关项目之间主要技术差异的讨论,请参见FFmpeg / Libav情况 。