Android - 获取视频帧的 FFmpeg 替代方案。 (由于许可)
Posted
技术标签:
【中文标题】Android - 获取视频帧的 FFmpeg 替代方案。 (由于许可)【英文标题】:Android - FFmpeg Alternative to get video frames. (Due to licensing) 【发布时间】:2012-02-14 04:07:09 【问题描述】:场景:
我正在开发一个 android 项目,我在一个特定的 openGL 页面中显示视频。
FFmpeg 用于从视频中获取帧(因为 openGL 不支持视频作为纹理),我正在使用这些帧来获取视频效果。
我在项目中使用预编译的 FFmpeg 二进制文件。
我不知道使用 FFmpeg 库的法律影响程度。 我的上级注意到了这个FFmpeg legal reference
问题:
我不是法律专家,所以我唯一了解的是,在商业免费应用程序中使用 FFmpeg(但服务需要付费)会给我和我的公司带来麻烦 :(
绝对不能放出项目的源代码或任何部分源代码。(客户对此非常严格。)
有问题吗?
1) 是否有任何替代 FFmpeg(使用 Apache 或 MIT 许可证)可用于获取视频帧的方法? 2)在openGL中,获取视频帧并循环播放-这是播放视频的唯一方法吗?有没有其他方法可以实现这个功能?
【问题讨论】:
这是在服务器端运行,还是让 FFMPEG 以某种方式运行 Android?法律问题仅与 FFMPEG 许可证有关,还是与某些可以编译到其中的编解码器有关? 元数据检索器怎么样? Android有一个MetadataRetriever类developer.android.com/reference/android/media/…有一个获取视频帧的方法getFrameAtTime(long, int) @Brad - FFmpeg 从 Android 程序运行(不知何故让它与我的项目融为一体 :))是的,法律问题与 FFmpeg 许可证有关。 @alex.veprik - 谢谢,但 MetaDataReceiver 不保证返回视频帧(文档中有)。我实际上是先尝试过,然后转到 FFmpeg。 【参考方案1】:IANAL,但 LGPL 意味着,如果您将 ffmpeg 编译并用作共享库(.so 文件)或独立可执行文件,那么您就可以了 - 即使在您出售的封闭源代码应用程序中也是如此。
【讨论】:
“但是,FFmpeg 包含了 GNU 通用公共许可证 (GPL) 第 2 版或更高版本所涵盖的几个可选部分和优化。如果这些部分得到使用,则 GPL 适用于所有 FFmpeg。”我如何确定这些部件是否没有在内部使用? 在构建ffmpeg时,必须将--enable-gpl传递给ffmpeg的./configure脚本,以启用GPL下的代码。如果您不指定此开关,则编译后的二进制文件将不包含 GPL 下的代码。写在这里:ffmpeg.org/legal.html 谢谢 Martins - 我对“18) 确保您的程序没有使用任何 GPL 库(尤其是 libx264)感到困惑。”你能告诉我这 18 点是否都是强制性的(即第 9、10 或 11 点)可以忽略吗?是否有任何官方链接说可以在不发布源代码的情况下使用“LGPL”?我需要向我的上级解释。(如果没有真实的证据,我的论点不会有力)谢谢你的努力。 不要相信我的话,我不是法律专家 100% 确定 - 找律师并检查许可证如何适用于您的具体案件。但这里有一个关于 LGPL 的很好的总结:***.com/a/1114076/675078 我明白。在我联系上级之前,我只是想澄清一些关于许可的想法。以上是关于Android - 获取视频帧的 FFmpeg 替代方案。 (由于许可)的主要内容,如果未能解决你的问题,请参考以下文章