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。我只是对他们感到困惑。

161380 次浏览

利巴夫死了

最后一次提交是在2019-08-21。利用FFmpeg。

混乱的信息

问题中提到的信息是相当具有误导性的,这是可以理解的困惑的来源。

这个分叉基本上是FFmpeg社区内部个性冲突和开发风格冲突的不友好结果。

真正的ffmpeg vs假的

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

Libav随后将他们的ffmpeg改名为avconv,以与FFmpeg项目保持距离。在过渡时期,“不再发展”;显示消息,告诉用户开始使用avconv而不是伪造的ffmpeg。这使得用户认为FFmpeg(项目)已经死了,这是不正确的。用词不当,但我无法想象利巴夫没有料到普通用户会有这样的反应。

当虚假的“ffmpeg"终于从利巴夫的来源中删除了。

2012年6月,这条消息被改写了在Ubuntu中为包libav - 4:0.8.3-0ubuntu0.12.04.1。不幸的是,新的“;消息引起了额外的用户混淆。

从Ubuntu 15.04 "Vivid Vervet"开始,FFmpeg的ffmpeg返回存储库

libav vs libav

更复杂的是,Libav选择了一个FFmpeg曾经使用过的名字来指代它的库(libavcodec, libavformat,等等)。例如,libav用户邮件列表,用于关于使用FFmpeg库的问题和讨论,与Libav项目无关。

如何区分

如果你正在使用avconv,那么你正在使用Libav。如果你正在使用ffmpeg,你可以使用FFmpeg或Libav。请参考控制台输出中的第一行来说明区别:版权声明将提到FFmpeg或Libav。

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

也看到

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