将iphone相机直播到媒体服务器的最佳方式是什么?

时间:2010-12-17 21:24:53

标签: iphone ios4 ffmpeg video-streaming avfoundation

根据这个What Techniques Are Best To Live Stream iPhone Video Camera Data To a Computer?可以从iphone相机获取压缩数据,但正如我在AVFoundation参考中读到的那样,你只能得到未压缩的数据。

所以问题是:

1)如何从iPhone相机中获取压缩帧和音频?

2)用ffmpeg的API编码未压缩的帧对于实时流是否足够快?

任何帮助都将非常感激。

感谢。

2 个答案:

答案 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好,但还不错。