除了ffmpeg的x264,还有哪些H264编码器?

11
我正在开发的iPhone应用程序会在用户定义的时间间隔内连续捕捉图像,我正在寻找一种将这些图像合并成H264编码视频的方法。通过在Google上做了一些研究,看起来我需要在iPhone上使用类似ffmpeg/mencoder的东西?(还发现有人将ffmpeg移植到了iPhone,称之为ffmpeg4iPhone)。
然而,我发现x264受GPL许可证的约束,如果我使用ffmpeg,则需要开源我的项目。一些人建议使用Ogg Theora,但如果我想使用它,则需要将其移植到iPhone上(目前我不确定如何做到这一点)。
是否有任何解决方案?有什么想法吗?谢谢。

你不需要使用ffmpeg,因为iOS已经支持通过AVFoundation类直接写入h.264数据。虽然这些类不易使用,但比使用ffmpeg要好得多,因为没有许可问题,并且即使你成功编译了ffmpeg,它的运行速度也非常慢。 - MoDJ
3个回答

8
我认为你被GPL限制了,我有两个建议:
  1. 直接发布你的项目的GPL版本。你可以出售开源软件,应用商店的延迟/惩罚期将为你提供比使用GPL代码的潜在竞争对手更好的领先时间。你在iTunes Store上的位置、你的动力和任何品牌价值可能比源代码更有价值。此外,你还可以让其他人帮你修复bug。 更新:截至2011年1月,GPL和App Store不相容

  2. 让iPhone应用程序将原始图像上传到服务器并在那里进行处理。这样你就不会发布和分发FFmpeg和x264代码,因此也不需要分发它们。

祝你好运,如果你成功发布,请在这里告诉我们!


@damain:这是最近的进展,2011年1月。而且这不是一个特别简单的话题。(Google应用商店GPL VLC)。我会编辑帖子以反映这一点,随意撤消你的投票。 :P - Stu Thompson
1
作为一个曾经发布过 GPL 代码的程序员,我对错误信息很挑剔。 - damian
@damian:谢谢!但是“误传”意味着欺骗,这并不准确。我希望你不认为我原始答案的第一部分是故意错误的。 - Stu Thompson
2
不,我肯定不认为你是有意出错的!维基百科告诉我,“错误信息”是无意的;“虚假信息”才是故意制造的。 - damian

7

似乎现在ffmpeg已经支持了思科的"openh264"(BSD FWIW)编码解码器:

https://www.ffmpeg.org/ffmpeg-codecs.html#libopenh264

顺便提一下,这是我从我的LGPL版本中得到的:

ffmpeg.exe -codecs | grep h264
...
ffmpeg version n3.1.2 Copyright (c) 2000-2016 the FFmpeg developers
 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_qsv ) (encoders: libopenh264 h264_nvenc h264_qsv nvenc nvenc_h264 )

这里提到了一些其他编码器,对于技术人员来说,FFmpeg可能支持更多类型的编码器。


1

如果您不打算使用ffmpeg,我相信您只能找到x264商业版本的实现(可能存在其他几个开源版本,但质量很低)。另外,您需要记住,如果您使用这些编解码器并决定不使用平台/iPhone上的编解码器,则需要支付专利税(我认为每次下载大约1美元)。

如果这仍然适合您的预算,那么我相信您可能会找到一个LGPL版本的旧版ffmpeg。您可以在代码中使用此版本,而无需开源整个项目。您只需要开源对ffmpeg所做的更改。

希望这有所帮助!


谢谢回复!我刚刚在ffmpeg的网站上http://ffmpeg.org/legal.html上检查了一下,它当前的版本是采用LGPL许可证,但使用了几个选用的部分采用了GPL许可证。h264编码器ffmpeg和x264使用的是否不同,并且是否采用LGPL许可证?据我所知,x264采用的是GPL许可证。 - 0pcl
1
是的,FFmpeg采用LGPL许可证,x264采用GPL许可证。FFmpeg使用自己的LGPL解码器,但对于编码它依赖于x264。因此,您不能将其用于商业应用程序。 - Serafeim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接