【问题标题】:Android - FFmpeg Alternative to get video frames. (Due to licensing)Android - 获取视频帧的 FFmpeg 替代方案。 (由于许可)
【发布时间】: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。

标签: android opengl-es 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 的很好的总结:stackoverflow.com/a/1114076/675078
  • 我明白。在我联系上级之前,我只是想澄清一些关于许可的想法。
猜你喜欢
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2010-11-07
  • 2013-05-25
  • 2021-05-02
相关资源
最近更新 更多