1

我正在使用 FFmpeg autogen 将从 PC 实时(60 或 30 fps)捕获的图像流式传输到 Android 应用程序。当我使用 FFmpeg autogen 提供的 h.264 编码示例时,一切都运行良好。

据我了解,FFmpeg autogen 受 LGPL 许可,如果您使用在 LGPL 许可下编译的自定义 FFmpeg 库,例如ffmpeg-win32,您可以动态链接到 FFmpeg autogen 库而不会违反 LGPL 许可,如果您的项目是示例闭源。

所以我认为一切都会好起来的,但后来我发现 h.264 编码在美国获得了专利,而 MPEG LA 代表 AVC/H.264 技术的专利持有人。如果您将它用于免费视频,则可以使用 h.264 编解码器而无需支付版税。尽管如此,我使用编码器的 Windows 程序是免费的,但我的 Android 应用程序不是免费的,所以我想我必须支付版税。

关于这个问题,我有几个问题:

  1. FFmpeg autogen 使用哪个编码器,因为据我所知 x264 受 GPL 许可。我假设它将使用一些内部 FFmpeg 软件编码器?

  2. 您不能在不免费提供其编码视频流且无需支付版税的项目中使用任何来自 FFmpeg(x264 等)的内置标准编码器,对吗?

  3. 经过一些研究,我发现了 openh264。该库由 cisco 构建,他们将支付所有版税,但您不能将其与您的应用程序捆绑在一起,必须在安装过程中下载。它也适用于 FFmpeg,但我如何让它与 FFmpeg autogen 一起使用?我是否需要使用来自 cisco 的 openh264 库的自定义 FFmpeg 构建?

我知道这不是一个律师论坛,但也许有人已经处理了所有这些问题,或者至少可以回答有关 FFmpeg autogen 的问题。我现在在互联网上搜索了一段时间,但不幸的是,h.264 的许可机制似乎并不那么容易理解。

4

1 回答 1

3

我几乎忘记了这个问题,但我想我现在已经理解了一切,所以我会自己回答。也许它对某人有帮助。如果有什么不正确的,请随时纠正我。

据我了解,FFmpeg autogen 受 LGPL 许可,如果您使用在 LGPL 许可下编译的自定义 FFmpeg 库,例如 ffmpeg-win32,您可以动态链接到 FFmpeg autogen 库而不会违反 LGPL 许可,如果您的项目是示例闭源。

这确实是正确的。FFmpeg autogen 受 LGPL 许可,但如果您只是使用zeranoe提供的 FFmpeg 库,那么您就不走运了,因为所有这些构建都受 GPL 许可。这意味着即使 FFmpeg autogen 在 LGPL 下,由于 FFmpeg GPL 库,您的项目仍然必须在 GPL 下发布。

幸运的是,您可以在 LGPL 下编译自己的自定义 FFmpeg 版本,但您会错过一些功能,例如 x264(基本上所有不适合 LGPL 的功能)。编译自定义版本的 FFmpeg 可能非常复杂,但是我在 github 上找到了一个不错的项目,称为media-autobuild_suite。这些脚本基本上为您编译 FFmpeg,并为各种 FFmpeg 功能(如 openh264 等)提供许多自定义功能。我在这里发布了更多细节。

所以我认为一切都会好起来的,但后来我发现 h.264 编码在美国获得了专利,而 MPEG LA 代表 AVC/H.264 技术的专利持有人。如果您将它用于免费视频,则可以使用 h.264 编解码器而无需支付版税。尽管如此,我使用编码器的 Windows 程序是免费的,但我的 Android 应用程序不是免费的,所以我想我必须支付版税。

我联系了 MPEG LA,如果您想获得许可,您的程序是否免费并不重要,您必须联系 MPEG LA 并为您的产品申请许可。只要您的程序每年下载次数不超过 100 000 次,您就不必支付任何费用。您必须每年向 MPEG LA 提供一些报告,其中应包含有关下载的所有信息。如果您有一些问题,请联系MPEG LA,他们通常会非常迅速地回复您。

  1. FFmpeg autogen 使用哪个编码器,因为据我所知 x264 受 GPL 许可。我假设它将使用一些内部 FFmpeg 软件编码器?

如果您只是使用 zeranoe FFmpeg 构建,FFmpeg autogen 将使用 x264 编码器。但总的来说,这取决于您如何编译 FFmpeg。我用openh264编译了FFmpeg,以便将openh264编码器与FFmpeg autogen一起使用,只需像这样加载编码器

ffmpeg.avcodec_find_encoder_by_name("libopenh264");
  1. 您不能在不免费提供其编码视频流且无需支付版税的项目中使用任何来自 FFmpeg(x264 等)的内置标准编码器,对吗?

我不知道这对于 FFmpeg 中的任何其他内置编码器是否正确,但如果不向 MPEG LA 请求许可,您就不能使用 x264。除了openh264,因为cisco会为你支付版税。请记住,您不能将 openh264 与您的应用程序捆绑在一起,否则您有责任向 MPEG LA 而不是 cisco 支付版税。您必须在程序安装过程中下载 openh264,或者您可以在程序运行时提供一些下载可能性。

  1. 经过一些研究,我发现了openh264。该库由 cisco 构建,他们将支付所有版税,但您不能将其与您的应用程序捆绑在一起,必须在安装过程中下载。它也适用于 FFmpeg,但我如何让它与 FFmpeg autogen 一起使用?我是否需要使用来自 cisco 的 openh264 库的自定义 FFmpeg 构建?

是的,您必须在安装过程或程序运行期间下载它,是的,您需要使用 openh264 构建的自定义 FFmpeg LGPL。您可以使用media-autobuild_suite轻松编译您自己的 FFmpeg 版本。

还有一件事,如果您在 LGPL 下使用 FFmpeg,请记住,您必须考虑一些条件,您可以在此处找到它们。目前为止就这样了。我希望这些是一些有用的信息。

于 2018-06-23T14:23:32.677 回答