当前位置: 首页>>技术问答>>正文


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”中返回。

该分支基本上是一个non-amicable结果,在FFmpeg社区中存在冲突的个性和发展风格。值得注意的是,由于参与了Libav fork,Debian /Ubuntu的维护者自己从FFmpeg切换到了Libav。

真正的ffmpeg与假的

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

然后,Libav将他们的bizarro ffmpeg重命名为avconv,以便与FFmpeg项目保持距离。在过渡期间,显示“不再开发”消息,告诉用户开始使用avconv而不是伪造版本的ffmpeg。这让用户误以为FFmpeg(项目)已经死了,这不是真的。一个糟糕的选择,但我无法想象Libav不会期待一般用户的这样的回应。

当假冒“ffmpeg”最终从Libav源中删除时,上游删除了此消息,但是,根据您的版本,它仍然可以显示在Ubuntu中,因为Libav源Ubuntu使用的是来自ffmpeg-to-avconv过渡期。

2012年6月,the message was re-worded为包libav - 4:0.8.3-0ubuntu0.12.04.1。不幸的是,新的”deprecated”消息引起了额外的用户混淆。

从Ubuntu 15.04 “Vivid Vervet”开始,FFmpeg的ffmpeg再次为back in the repositories

利比亚与利比亚

更复杂的是,Libav选择了FFmpeg历史上用来引用其库(libavcodec,libavformat等)的名称。例如,有关使用FFmpeg库的问题和讨论,libav-user mailing list与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版本

你的选择是:

  • 下载最新的ffmpeg Linux版本,

  • 按照step-by-step指南编译ffmpeg

  • 或使用Doug McMahon’s PPA(适用于Ubuntu 14.04 LTS “Trusty Tahr”)

这些方法是non-intrusive,可逆,并且不会干扰系统或任何存储库包。

另一种可能的选择是升级到Ubuntu 15.04 “Vivid Vervet”或更新版本,只需从存储库中使用ffmpeg即可。

另见

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6909.html,未经允许,请勿转载。