据我所见,Libav 似乎avconv
被认为是ffmpeg
……的继任者,对吗?
如果这是真的,那为什么会这样呢?libav 到底有什么优势?为什么我要选择它而不是 ffmpeg?
我在虚拟机中安装 Ubuntu 12.04.1 LTS 时遇到了这个“问题”,当我安装 ffmpeg 时,它出现一条消息,提示 mit ffmpeg 已弃用,我首先想到的是“wtf?”。
如果我使用,avconv
我是否能够更轻松地将依赖 ffmpeg 的脚本迁移到 libav?我主要使用它来编写元数据和进行音频转换(wav、flac、vorbis、mp3、aac)。
答案1
Libav 已去世
上次提交发布于 2019-08-21。使用 FFmpeg。
一些 Libav 开发人员现在再次参与 FFmpeg。这在一定程度上是由于 Jean-Baptiste Kempf(VideoLAN 总裁)最近领导了社区重组。已成立一个由 5 人组成的技术解决委员会,其中 (前) Libav 成员占有两席,并且欢迎 Libav 开发人员加入大会——一个负责决策的投票委员会。讨论和会议仍在进行中,但分叉八年后,这可能标志着重新整合的开始。
原始答案:
首先看到谁能告诉我 ffmpeg、libav、avconv 之间的区别和关系。大部分混乱是由于以下原因造成的:
- 用户不区分 FFmpeg 和 libav 项目及其各自的命令行工具
ffmpeg
和avconv
。 - 当用户尝试使用 libav 时收到措辞不当的消息
ffmpeg
。
FFmpegffmpeg
与 libav 对比avconv
- FFmpeg 是项目名称。
ffmpeg
是其命令行工具的名称。 - libav 是项目名称。
avconv
是其命令行工具的名称。有一段短暂的时间,libav 也有一个ffmpeg
。
当讨论“工具”时,用户经常会想到“项目”,这导致......
措辞不当的信息
因此,正如我们从谁能告诉我...链接,当 libav 从 FFmpeg 分支时,他们也临时提供了他们的版本ffmpeg
。作为 libav 的成员,Debian 和 Ubuntu 中的 ffmpeg 维护者随后决定将发行版切换为使用 libav。从 libav 的角度来看,这是他们最好的举措:迫使大型用户社区使用分支。
在过渡期间,Ubuntu 进行了切换,当时 libav 同时提供了其版本ffmpeg
和重命名的工具avconv
。当用户尝试使用 libav 时,ffmpeg
他们会收到以下消息:
This program is not developed anymore and is only provided for compatibility.
Use avconv instead (see Changelog for the list of incompatible changes).
在这种情况下,消息中提到的“ffmpeg”是 libav 的临时版本,后来被删除(消息也是如此)。还记得 FFmpeg 和 之间的区别吗ffmpeg
?当然,这条消息彻底迷惑了许多用户,他们理所当然地没有区分项目和工具;尤其是那些不知道他们的发行版进行了切换的 Ubuntu 用户或从未听说过 libav 的用户。我不知道 libav 是否希望用户这样想,但他们可能喜欢这种副作用。
一些 Ubuntu 用户认为该消息太具误导性,后来将其更改为:
***THIS PROGRAM IS DEPRECATED***
This program is not developed anymore and is only provided for compatibility.
Use avconv instead (see Changelog for the list of incompatible changes).
在我看来这是一个小小的进步,但是我觉得好像还不够清晰。
我该用哪一个?
没人能告诉你该用哪一个。对用户来说,主要的区别在于 FFmpeg 合并了 libav 的许多提交,但这并不那么互惠,因为 libav 似乎假装 FFmpeg 不存在,只是偶尔从 FFmpeg 中挑选。
对于普通用户来说,差异应该不大。要获取 FFmpeg,您可以按照编译指南或者查看可执行文件的下载链接FFmpeg 下载页。
有关详细信息,请参阅FFmpeg/Libav 的情况。
答案2
更新(2016 年初)
- ffmpeg 仍然占优势。大多数发行版已经或正在改回 ffmpeg(Gentoo,Debian)
- ffmpeg 的一个实际优势是二进制文件适用于许多平台。在 Google 上搜索静态库/动态库/二进制文件,可以找到适用于 linux、mac、windows、ios 和 android 的 ffmpeg 的良好结果,而我只能找到适用于 libav 的 linux 和 windows 版本。如果您对 C/makefile 经验不足,这可能是一个重点。
当前情况(2015 年中)
似乎最好还是坚持使用 FFmpeg。整个情况相当混乱和丑陋。几天前我才开始阅读有关分叉的内容。忽略所有的戏剧性,以下是看似事实的内容:
- FFmpeg 整合了 libav 的变更集,而 libav 却不愿意这样做(参见Debian 辩论)
- Chrome 使用 ffmpeg,谷歌也付出了巨大的努力来确保其安全性。libav 也在整合这些变化,但速度较慢(谷歌博客文章)
- FFmpeg 尝试保留尽可能多的编解码器,而 libav 则删除了一些(libav 邮件列表,来自 libav 开发人员的帖子)
- FFmpeg 社区比 libav 更大,最专注的开发人员 (michael niedermayer) 坚持使用 FFmpeg(提交统计)
- FFmpeg 的 ubuntu/debian 维护者是 libav fork 的一部分。他们在一些命令行工具中添加了弃用消息,暗示 ffmpeg 已被弃用。这造成了很多混乱。德比安和Ubuntu正在切换回 ffmpeg。
答案3
当你去这里您会看到最近的更新是 2012 年 9 月(几个月前)。
看起来像这表示目前它只是针对 Ubuntu 和 Debian。
不久前,ffmpeg 分裂为两个分支,即 ffmpeg 和 libav。
Debian 在其发行版中遵循 libav fork,在即将上传的版本中,二进制文件 /usr/bin/ffmpeg 将被 /usr/bin/avconv 取代。
据我所知,没有必要立即切换,但 Winff 应该升级以允许使用任一二进制文件(从 Debian 的角度来看,优先使用 avconv)。我知道您可以在首选项中设置二进制文件的位置,但我认为设置位置后,Winff 应该能够找到正确的二进制文件。
我认为将来 Windows 和其他发行版也可能会受到这个问题的影响。
回答你关于它是否完全相同的问题:
我已经在本地检查中实现了对正确二进制文件的检查,但阅读1,我发现 avconv 和 ffmpeg 之间存在一些不一致之处。这个问题比较大,因为预设文件需要调整,尤其是我们创建命令行的方式也必须改变。对输入文件进行操作的选项需要放在输入文件“-i”之前。
请注意,这可能特定于 Windows 版本。这是针对 Linux 版本发布的:
FFmpeg 音频/视频转换工具现在称为 AVConv(我认为这个名字更好)。因此,“ffmpeg”命令行工具已过时,应使用“avconv”。据我所知,所有参数都保持不变,但应进行进一步调查。需要在 CIS 中进行一些修改。
任务:
在运行 CIS 的机器上安装 AVConv。通常 avconv 应该会显示正在更新 ffmpeg(在 Ubuntu 上有效;未针对 Debian 进行测试)。在 cis/api/ffmpeg.py、类 FFmpegTranscoder、字段 prog_bin(表示转换工具可执行文件)中将“ffmpeg”替换为“avconv”。重构包含“FFmpeg”或“ffmpeg”的文件名、类名、方法名、变量名等,使其包含 AVConv。Eclipse 等 IDE 可以自动执行此操作。测试!如果发现问题,请调试!