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

Pet*_*ter 3 ffmpeg

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

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

  1. 我将ffmpeg构建为共享库,并确保在配置期间不使用"--enable-gpl"标志.
  2. 我在"关于"对话框中确认我们正在使用ffmpeg共享库.

有人可以验证这或多或少符合要求吗?问候.

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

Ron*_*tje 6

作为FFmpeg开发人员,我希望您遵循我们网站上提到的注意事项:

  1. 编译没有"--enable-gpl"且没有"--enable-nonfree"的FFmpeg.
  2. 使用动态链接(在窗口上,这意味着链接到dll)用于链接FFmpeg库.
  3. 分发FFmpeg的源代码,无论您是否进行了修改.
  4. 确保源代码与您正在分发的库二进制文件完全对应.
  5. 在FFmpeg源代码的根目录中运行命令"git diff> changes.diff"以创建仅包含更改的文件.
  6. 解释如何在添加到源代码根目录的文本文件中编译FFmpeg,例如configure行.
  7. 使用tarball或zip文件分发源代码.
  8. 在与您分发的二进制文件相同的Web服务器上托管FFmpeg源代码.
  9. 添加"此软件使用LGPLv2.1许可的FFmpeg代码,其源代码可以在这里[这里是源代码的链接]"下载到您网站上有应用程序下载链接的每个页面.
  10. 在您的程序"about box"中提及"此软件使用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. 对于编译为FFmpeg的任何LGPL外部库(例如LAME),再次浏览所有项目.
  18. 确保您的程序没有使用任何GPL库(特别是libx264).

从你到目前为止所说的话来看,我认为你只做了1-2,9-11,15-18.您需要制作包含修改(3-5,7-8)的源代码(包括FFmpeg)以及您的应用程序,提及构建说明(6),删除对FFmpeg的所有权声明,删除逆向工程禁止(如果有),并检查你的EULA(12-14).