FFmpeg autogen与openh264

时间:2018-03-17 21:32:55

标签: c# ffmpeg h.264 openh264 mpeg-la

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

据我所知,FFmpeg autogen属于LGPL许可证,如果您使用的是根据LGPL许可证编译的自定义FFmpeg库,例如ffmpeg-win32,您可以动态链接到FFmpeg自动库而不违反LGPL许可证如果你的项目是闭源的。

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

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

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

  2. 您不能在没有支付版税的情况下免费使用FFmpeg(x264等)的任何内置标准编码器,对吧?

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

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

1 个答案:

答案 0 :(得分:1)

我几乎忘记了这个问题,但我想我现在已经了解了所有内容,因此我将自己回答。也许对某人有帮助。如果有什么不正确的地方,请随时纠正我。

  

据我了解,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等)提供许多自定义功能。我发布了更多详细信息here

  

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

我已与MPEG LA联系,如果您希望获得许可证的许可,则程序是否免费并不重要,您必须与MPEG LA联系并为您的产品申请许可证。只要您的程序每年被下载的次数不超过10万次,您就不必支付任何费用。您必须每年向MPEG LA提供一些报告,其中应包含有关下载的所有信息。如果您有任何疑问,请与MPEG LA联系,他们通常会做出快速反应,并且回复速度很快。

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

FFmpeg autogen将使用x264编码器。但是总的来说,这取决于您如何编译FFmpeg。为了将openh264编码器与FFmpeg autogen配合使用,我使用openh264编译了FFmpeg

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

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

  
      
  1. 经过一些研究,我找到了openh264。该库是由思科建立的,他们将支付所有使用费,但您不允许   将其与您的应用程序捆绑在一起,则必须在   安装过程。它也可以与FFmpeg一起使用,但是我该怎么做   与FFmpeg autogen合作?我是否需要自定义FFmpeg构建   使用cisco的openh264 lib?
  2.   

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

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