根据这个What Techniques Are Best To Live Stream iPhone Video Camera Data To a Computer?可以从iphone相机获取压缩数据,但正如我在AVFoundation参考中读到的那样,你只能得到未压缩的数据。
所以问题是:
1)如何从iPhone相机中获取压缩帧和音频?
2)用ffmpeg的API编码未压缩的帧对于实时流是否足够快?
任何帮助都将非常感激。
感谢。
答案 0 :(得分:8)
你很可能已经知道....
1)如何从iPhone相机中获取压缩帧和音频?
你不能这样做。 AVFoundation API已经从各个角度防止了这种情况。我甚至尝试过命名管道和其他一些偷偷摸摸的unix foo。没有这样的运气。你别无选择,只能把它写到文件中。在您的链接帖子中,用户建议设置回调以提供编码的帧。据我所知,这对H.264流是不可能的。捕获代表将提供以特定像素格式编码的图像。正是Movie Writers和AVAssetWriter进行编码。
2)用ffmpeg的API编码未压缩的帧对于实时流是否足够快?
是的。但是,您必须使用libx264才能进入GPL领域。这与app商店并不完全兼容。
出于效率原因,我建议使用AVFoundation和AVAssetWriter。
答案 1 :(得分:4)
我同意史蒂夫。我想尝试使用Apple的API时,你将不得不做一些严重讨厌的黑客行为。默认情况下,AVAssetWriter会在将其缓冲区溢出到文件之前花费一秒钟。我还没有找到一种方法来改变设置。通过这种方式似乎是通过使用多个AVAssetWriters来强制小文件写入和文件关闭。但那会带来很多开销。它不漂亮。
绝对向Apple提交新功能请求(如果您是iOS开发人员)。我们做的越多,他们就越有可能添加某种可以写入缓冲区和/或流的编写器。
史蒂夫在x264 GPL问题上所说的一个补充是,我认为你可以获得比GPL更好的商业许可,但当然要花钱。但这意味着你仍然可以使用它并获得相当不错的结果,而不必打开自己的应用程序源。不如使用硬件编解码器的扩充Apple API好,但还不错。