ffmpeg、libav和avconv有哪些区别和相似之处?

260

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


1
这意味着您正在提供错误的命令行参数。 - Dipan Mehta
19
这个程序不再继续开发,只提供兼容性支持。请使用avconv代替。 - why
1
你想做什么?ffmpeg主要是一个库,而主要的ffmpeg命令行更多地用于演示其功能(尽管如果有帮助的话使用它并不重要)。如果你只想用作命令,有许多应用程序使用ffmpeg来完成你想做的事情。 - Dipan Mehta
19
可以在http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html找到对整个情况的有用解释。 - Tronic
4
我不能告诉你所有的区别,但是:avconv -ss 00:01:42 -t 00:00:32 -i 源文件名 -acodec copy 目标文件名 不起作用,而 ffmpeg -ss 00:01:42 -t 00:00:32 -i 源文件名 -acodec copy 目标文件名 却按照预期工作, 尽管文档看起来是一致的。 - user2629227
1个回答

506

Libav已经死亡

最后一次提交是在2019年8月21日,他们关闭了git仓库。请使用FFmpeg。

令人困惑的信息

问题中提到的信息相当误导人,可以理解为造成了混淆。

这个分支基本上是FFmpeg社区内存在的个性冲突和开发风格不同的结果,而且并不友好。

真正的ffmpeg与假的ffmpeg

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

然后,Libav将他们奇怪的ffmpeg重命名为avconv,以远离FFmpeg项目。在过渡期间,“不再开发”消息被显示,告诉用户开始使用avconv而不是他们的伪造版本ffmpeg。这让用户认为FFmpeg(该项目)已经死亡,这是不正确的。选择用词不当,但我无法想象Libav不会预料到普通用户会有这样的反应。

当假的“ffmpeg”最终从Libav源中删除时,此消息被上游删除。

2012年6月,Ubuntu针对软件包libav - 4:0.8.3-0ubuntu0.12.04.1重新措辞信息。不幸的是,新的“已弃用”消息导致了额外的用户混淆。

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

libav与Libav

更进一步地,Libav选择了一个历史上由FFmpeg用于引用其库(如libavcodec、libavformat等)的名称。例如,用于有关使用FFmpeg库的问题和讨论的libav-user邮件列表与Libav项目无关。

如何区分

如果您正在使用avconv,则是在使用Libav。如果您正在使用ffmpeg,则可能在使用FFmpeg或Libav。请参考控制台输出中的第一行以区分它们:版权声明将提到FFmpeg或Libav。
其次,版本编号方案不同。每个FFmpeg或Libav库都包含一个version.h头文件,其中显示了版本号。FFmpeg将以三位数字结尾,例如57.67.100,而Libav将以一位数字结尾,例如57.67.0。您还可以运行ffmpegavconv并查看控制台输出来查看库版本号。

还可参见

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

104
看起来这是一个个人问题。 - mirza
1
如果即使安装了真正的FFmpeg后仍然无法使其工作,您应该删除Ubuntu默认附带的libav-tools中的默认FFmpeg。请参见:http://askubuntu.com/questions/162740/how-do-i-uninstall-ffmpeg。 - user568109
这取决于您如何安装 ffmpeg。请参见在 Ubuntu、Debian 或 Mint 上编译 FFmpeg 的方法,或者只需使用 Linux 版的 ffmpeg。如果存储库软件包也已安装,则这两种方法都应该有效。 - llogan
1
我已经构建了FFmpeg,但是当我从终端运行FFmpeg时,默认情况下运行的是预装的版本,并且使用apt-get remove ffmpeg命令无法将其删除。因此,我留下了一条消息,以消除困惑。它被打包为libav-tools。 - user568109
2
此外,Libav似乎已经死亡(最后提交于2019年8月),而FFmpeg仍在积极开发中。 - OrangeDog
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接