ffmpeg 和 libav 有什么区别,如何查看应用中使用的是哪一个?

IBr*_*IBr 2 ffmpeg libav

我正在使用一些基于 gstreamer 的应用程序和一些其他流媒体内容,但我有些困惑:libav 和 ffmpeg 之间有什么区别?

我没有找到解释它们是什么以及它们有何不同。还有更多的工具叫做 ffmpeg,而其他的也有同样的东西。甚至那些项目标志也是一样的。更糟糕的是,即使使用它们的外部应用程序也会错误地命名它们,混合它们(gstreamer-0.10 指的是 ffmpeg,而 gstreamer-1.0 指的是 libav)。

有没有简单的方法可以找出应用程序真正需要和使用哪个库?是否有任何技术(非政治软件许可废话)差异为什么项目分裂,我应该知道何时应该与他们合作?

更新:评论中有人提供了与图书馆历史和有用信息相关的问题的链接。但是我怀疑我的问题是完全重复的:

  1. 我要求方法本身来检测库。
  2. 列表或类似的东西,警告甚至暗示图书馆如何与另一个不同,而不是意见哪个更好,也没有许可社区如何与另一个不同。

sza*_*ary 7

很久以前有个项目叫FFmpeg。FFmpeg 项目创建了一个名为ffmpeg. 在项目早期的某个时候,人们决定 FFmpeg 非常复杂,应该分解成较小的库,以便其他人可以在他们的应用程序中使用。这些库被称为 libav*。它们包括 livavformat、libavcodec、libavutil 等。该ffmpeg应用程序只是通过命令行与这些库进行交互的一种方式。

在某些时候,FFmpeg 的一些贡献者不喜欢该项目的管理方式(我认为他们想要更多的版本而不太重视稳定性和向后兼容性,但我可能是错的),所以他们分手了。他们开始修复不一致的 API,添加新的编解码器等。他们发布了 CLI 前端调用avconv来替换ffmpeg可执行文件。许多原本希望ffmpeg在系统上看到的软件坏了。所以avconv可执行文件被重命名ffmpeg

现在 Libav 项目与 libav* 库配合得很好。于是 FFmpeg 项目开始合并 Libav 所做的更改。从而使线条更加模糊。

所以,回答你的问题。您不需要考虑太多政治问题,但是两者之间的某些命令/API 可能略有不同。然而,这不应该是一个太大的问题。您可以将它们视为同一事物的不同版本。