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 替代方案。 (由于许可)的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用ffmpeg或ffprobe获取h.264每一帧的引用列表吗?

视频抽帧的4种方式

裁剪,使用 ffmpeg 重新排列视频帧的中间

ffmpeg-解码视频一个视频帧的步骤

使用ffmpeg提取帧的最快方法?

如何在Android中获取框架?