在商业C / C ++应用程序中使用ffmpeg共享库

时间:2017-05-09 00:12:27

标签: ffmpeg

我们有一个基于C ++的应用程序,可在Windows,Mac和Linux上运行。我现在需要在此应用程序中添加h.264和h.265解码。似乎ffmpeg会做到这一点。

由于我们是商业应用,我们无法向公众披露源代码。但是,据我所知,FFMpeg基于LGPL许可要求。通过关于LGPL要求的各种文章,似乎我可以使用ffmpeg而不透露我们的源代码,只要:

  1. 我将ffmpeg构建为共享库,并确保我不会使用" - enable-gpl"配置期间的标志。
  2. 我在“关于”对话框中确认我们正在使用ffmpeg共享库。
  3. 有人可以验证这是否符合要求?问候。

    请注意,我只需要ffmpeg进行解码而不进行编码。因此,我不必使用" - enable-libx264"和" - enable-libx265"标志。

2 个答案:

答案 0 :(得分:6)

作为一名FFmpeg开发人员,我希望您遵循我们website中提到的注意事项:

  1. 在没有“--enable-gpl”的情况下编译FFmpeg “--enable-非自由”。
  2. 使用动态链接(在Windows上,这意味着 链接到dll)以便与FFmpeg库链接。
  3. 分发 FFmpeg的源代码,无论你是否修改它。
  4. 请 确保源代码完全对应于您的库二进制文件 正在分发。
  5. 运行命令“git diff> changes.diff” FFmpeg源代码的根目录,仅用于创建文件 变化。
  6. 解释你如何编译FFmpeg,例如 configure行,在一个文本文件中添加到的根目录 源代码。
  7. 使用tarball或zip文件分发源代码 代码。
  8. 将FFmpeg源代码托管在与之相同的网络服务器上 你要分发的二进制文件。
  9. 添加“此软件使用FFmpeg下许可的LGPLv2.1代码,其源代码可以在此处下载[此处为源代码链接]”到您网站的每个页面 哪里有你的应用程序的下载链接。
  10. 提及“这个 软件使用LGPLv2.1下的FFmpeg项目中的库“ 在您的程序“关于框”。
  11. 在您的EULA中提及您的计划 在LGPLv2.1下使用FFmpeg。
  12. 如果您的EULA声称拥有权 代码,你必须明确提到你没有FFmpeg, 并且可以找到相关所有者。
  13. 删除任何禁令 从您的EULA进行逆向工程。
  14. 对所有人应用相同的更改 您的EULA的翻译。
  15. 不要拼错FFmpeg(两个首都F 和小写“mpeg”)。
  16. 不要将FFmpeg dll重命名为某些混淆 名称,但添加后缀或前缀很好(重命名为“avcodec.dll” “MyProgDec.dll”不太好,但是“avcodec-MyProg.dll”就是)。
  17. 转到 通过所有LGPL外部库的所有项目你 编译成FFmpeg(例如LAME)。
  18. 确保您的计划是 不使用任何GPL库(特别是libx264)。
  19. 从你到目前为止所说的话来看,我认为你只是在点1-2,9-11,15-18。您需要制作包含修改(3-5,7-8)的源代码(包括FFmpeg)以及您的应用程序,提及构建说明(6),删除对FFmpeg的所有权声明,删除逆向工程禁止(如果有),并检查你的EULA(12-14)。

答案 1 :(得分:1)

是的,使用lgpl,您可以将它用作dll /共享库,而您不需要提供源代码。 但是你应该知道,代码的许可不是商业用途的问题,而是围绕h.264 / h.265的专利,你需要许可证。 AFAIK,即使您只想解码,您仍然需要获得许可。

MPEGLA是h264编解码器专利池的许可机构。