2010-12-17 147 views
9

根据这What Techniques Are Best To Live Stream iPhone Video Camera Data To a Computer?是可能从iPhone相机获得压缩数据,但正如我一直在AVFoundation参考中阅读,你只能得到未压缩的数据。什么是直播iPhone摄像头到媒体服务器的最佳方式?

所以问题是:

1)如何从iPhone的摄像头得到压缩帧和音频?

2)使用ffmpeg的API编码未压缩的帧对于实时流式传输足够快吗?

任何帮助将非常感激。

谢谢。

+1

你是如何解决这个问题的? – DivineDesert 2012-08-18 12:14:58

+0

我最终通过使用FFmpeg的API获取AVFoundation和编码+流媒体的未压缩数据(帧和音频)。它在iPhone 4中运行得非常好,分辨率达到192x240,可达到30 FPS。在更高的分辨率下,会降低太多的帧数。 – 2012-08-22 13:46:54

+0

@AlexandreOS如何做到这一点,请分享它,它对我们有帮助,谢谢 – Ron 2012-09-13 05:36:32

回答

8

你很可能已经知道....

1)如何从iPhone的摄像头压缩帧和音频?

你不能这样做。 AVFoundation API从各个角度阻止了这一点。我甚至尝试过命名管道和其他一些鬼鬼祟祟的unix foo。没有这样的运气。你别无选择,只能将它写入文件。在你的链接文章中,用户建议设置回调来传递编码帧。据我所知,这是不可能的H.264流。捕获代理将传递以特定像素格式编码的图像。这是编码的电影作家和AVAssetWriter。

2)使用ffmpeg的API对未压缩帧进行​​编码对于实时流是足够快的吗?

是的。但是,你将不得不使用libx264,它可以让你进入GPL领域。这与应用商店不完全兼容。

为了提高效率,我建议使用AVFoundation和AVAssetWriter。

+3

其实1是部分错误。我编写了一个库,可以在不使用私有API的情况下编码,从而实时传送H.264数据。 – 2011-05-13 04:30:30

+1

你能和我们分享这个图书馆吗?在没有使用libx264的情况下获得这个H.264流的替代方法将是非常好的。这就是为什么我最终使用FFmpeg的MPEG编解码器。 – 2012-08-22 13:53:24

+0

@AlexandreOS不幸的是我的图书馆只有商业许可。我将来可能会在双授权下发布它。 – 2012-08-23 21:54:20

4

我同意史蒂夫。我想补充一点,在尝试使用Apple的API时,您将不得不做一些严重恶意的黑客行为。默认情况下,AVAssetWriter在将缓冲区溢出到文件之前花费一秒。我还没有找到改变设置的方法。解决方法似乎是强制使用多个AVAssetWriters将小文件写入和文件关闭。但是那会带来很多开销。这并不漂亮。

肯定地向Apple申请一项新功能请求(如果您是iOS开发人员)。我们做得越多,他们就越有可能添加某种可以写入缓冲区和/或流的作者。

另外,我会对史蒂夫在x264 GPL问题上所说的一个补充是,我认为您可以获得比GPL更好的商业许可证,但当然要花费您的钱。但这意味着您仍然可以使用它并获得相当不错的结果,而不必打开自己的应用程序源。不如使用其硬件编解码器的增强Apple API,但并不坏。

相关问题