为什么我会选择 Libav 而不是 FFmpeg,或者有什么区别?

flo*_*ank 89 ffmpeg libav

从我所见,在我看来,Libavavconv被认为是继任者ffmpeg——这是正确的吗?

如果这是真的,为什么会这样?libav 究竟在什么方面做得更好,为什么我要选择它而不是 ffmpeg?

我在 VM 中安装 Ubuntu 12.04.1 LTS 时遇到了这个“问题”,当我安装 ffmpeg 时,它出现了一条消息,告诉 mit ffmpeg 已被弃用,我首先想到的是“wtf?”。

如果我使用avconv我是否能够根据 ffmpeg 或多或少地轻松地将我的脚本迁移到 libav?我主要用它来编写元数据和进行音频转换(wav、flac、vorbis、mp3、aac)。

llo*_*gan 120

更新 (2019-12-13):Libav 开发活动几乎停止

过去 6 个月的提交:

  • FFmpeg:1988
  • Libav:1

一些 Libav 开发人员现在再次参与 FFmpeg。这部分是由于 Jean-Baptiste Kempf(VideoLAN 总裁)最近带头重新组织了社区。已经创建了一个 5 人技术决议委员会,其中(前)Libav 成员拥有两个席位,欢迎 Libav 开发人员加入大会——决策的投票委员会。讨论和会议仍在进行中,但在分叉后 8 年之后,这可能标志着重新整合的开始。


原答案:

首先看谁能告诉我ffmpeg、libav和avconv的区别和关系。大部分混乱是由于:

  1. 用户不区分项目、FFmpeg 和 libav 及其各自的命令行工具,ffmpeg以及avconv.
  2. 用户在尝试使用 libav 的ffmpeg.

FFmpeg vsffmpeg和 libav vsavconv

  • FFmpeg 是项目名称。ffmpeg是他们的命令行工具的名称。
  • libav 是项目名称。avconv是他们的命令行工具的名称。有一段时间,libav 也有一个ffmpeg.

用户在讨论“工具”时通常会想到“项目”,这导致...

一个措辞不好的消息

因此,正如我们从Who can tell me...链接中了解到的那样,当 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).
Run Code Online (Sandbox Code Playgroud)

在这种情况下,消息中提到的“ffmpeg”是 libav 的临时版本,后来被删除(消息也是如此)。还记得 FFmpeg 和ffmpeg? 当然,这条消息彻底混淆了许多用户,他们可以理解没有区分项目和工具;特别是不知道他们的发行版做了 switcharoo 的 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).
Run Code Online (Sandbox Code Playgroud)

在我看来是一个小小的改进,但我觉得好像还不够清楚。

我使用哪一种?

没有人能告诉你该用哪一个。用户的主要区别在于 FFmpeg 合并了来自 libav 的许多提交,但它并不是那么互惠,因为 libav 似乎假装 FFmpeg 不存在并且只是偶尔从 FFmpeg 中挑选。

对于普通用户来说,应该不会有太大的差异。要获得 FFmpeg,您可以按照编译指南或在FFmpeg 下载页面上查看可执行文件的下载链接。

有关更多信息,请参阅FFmpeg/Libav 情况

  • 这不仅仅是一个措辞不好的信息,它完全是错误的。FFmpeg 根本没有停止开发,事实上 FFmpeg 的社区比 LibAV 大得多……Ubuntu 维护者发出这条消息是为了欺骗用户使用 LibAV,因为他们错误地认为 FFmpeg 已经死了。这是100%纯恶意。 (32认同)
  • @MarcusJ ...从技术上讲,它是 debian 维护者。但是,是的,我同意;这是欺骗性的。 (6认同)

kri*_*tzi 37

更新(2016 年初)

  • 有利于 ffmpeg 的可能性仍然存在。大多数发行版已经切换回/正在切换回 ffmpeg ( Gentoo , Debian )
  • ffmpeg 的一个实际优势是二进制文件在许多平台上的广泛可用性。对于 ffmpeg 的 linux、mac、windows、ios 和 android,谷歌搜索静态库/动态库/二进制文件产生了良好的结果,而我只能找到 libav 的 linux 和 windows 版本。如果您对 C/makefile 没有多少经验,这可能是一个重要的点。

现状(2015年中)

坚持使用 FFmpeg 似乎更好。整个情况相当混乱和丑陋。几天前我刚开始在叉子上阅读。忽略所有的戏剧性,以下是事实:

  • FFmpeg 结合了 libav 的变更集,而 libav 不愿意这样做(参见debian 辩论
  • Chrome 使用 ffmpeg,而 google 已投入大量精力使其安全。libav 也在合并这些变化,但速度较慢(谷歌博客文章
  • FFmpeg 尝试保留尽可能多的编解码器,而 libav 删除了一些(libav 邮件列表来自 libav dev 的帖子
  • FFmpeg 社区比 libav 大,最敬业的开发人员 (michael niedermayer) 坚持使用 FFmpeg ( commit stats )
  • FFmpeg 的 ubuntu/debian 维护者是 libav fork 的一部分。他们向一些命令行工具添加了弃用消息,暗示 ffmpeg 已弃用。这引起了很多混乱。两者的DebianUbuntu的是切换回ffmpeg的。


Eve*_*ett 9

当您转到此处时,您会看到最近的更新是 2012 年 9 月(几个月前)。

看起来表示它目前仅适用于 Ubuntu 和 Debian。

前段时间ffmpeg分裂成两个分支,分别命名为ffmpeg和libav。

Debian 在其发行版中遵循 libav 分支,在即将上传的二进制文件 /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中的“ffmpeg”替换为“avconv”,FFmpegTranscoder类,prog_bin字段,代表转换工具可执行文件。重构包含“FFmpeg”或“ffmpeg”的文件名、类名、方法名、变量名等,使其包含 AVConv。像 Eclipse 这样的 IDE 可以自动执行此操作。测试!如果发现问题,调试!