根据这篇文章,从iPhone相机获取压缩数据是可能的,但根据我在AVFoundation参考文献中所读到的,你只能获得未压缩数据。
所以问题是:
1)如何从iPhone相机获取压缩的帧和音频?
2)使用ffmpeg的API编码未压缩的帧是否足够快以进行实时流媒体传输?
非常感谢您的任何帮助!
谢谢。
所以问题是:
1)如何从iPhone相机获取压缩的帧和音频?
2)使用ffmpeg的API编码未压缩的帧是否足够快以进行实时流媒体传输?
非常感谢您的任何帮助!
谢谢。
很遗憾,您无法实现此功能。AVFoundation API已经从各个角度阻止了这一点。我甚至尝试过命名管道和其他一些诡计,但都没有成功。您别无选择,只能将其写入文件。在您的链接帖子中,有用户建议设置回调以传递编码帧。据我所知,对于H.264流,这是不可能的。捕获委托将提供以特定像素格式编码的图像。是电影制片人和AVAssetWriter进行编码。1)如何从iPhone相机获取压缩帧和音频?
是的,它是可以的。但是,您必须使用libx264,这会让您进入GPL领域。这与应用商店并不兼容。2)使用ffmpeg的API对未压缩帧进行编码是否足够快以进行实时流媒体?
我同意Steve的观点。我要补充的是,如果你尝试使用苹果的API,你将不得不进行一些非常恶劣的黑客攻击。默认情况下,AVAssetWriter在将其缓冲区写入文件之前会花费一秒钟的时间。我没有找到通过设置更改它的方法。解决这个问题的方法似乎是强制进行小文件写入并使用多个AVAssetWriters关闭文件。但这会引入很多开销,不太美观。
如果你是iOS开发者,一定要向苹果提出新的功能请求。我们越多,他们就越有可能添加一些可以写入缓冲区和/或流的编写器。
我想对Steve关于x264 GPL问题的观点做出一个补充,那就是我认为你可以获得商业许可证,这比GPL更好,但当然需要花费一些钱。但这意味着你仍然可以使用它并获得相当不错的结果,而不必公开自己的应用程序源代码。虽然不如使用硬件编解码器增强的苹果API好,但也不错。