Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';将iphone摄像头直播到媒体服务器的最佳方式是什么?_Iphone_Ios4_Ffmpeg_Video Streaming_Avfoundation - Fatal编程技术网

什么';将iphone摄像头直播到媒体服务器的最佳方式是什么?

什么';将iphone摄像头直播到媒体服务器的最佳方式是什么?,iphone,ios4,ffmpeg,video-streaming,avfoundation,Iphone,Ios4,Ffmpeg,Video Streaming,Avfoundation,根据这一点,可以从iphone摄像头获取压缩数据,但正如我在AVFoundation参考资料中所读到的,您只能获取未压缩的数据 因此,问题是: 1) 如何从iPhone的摄像头获取压缩帧和音频 2) 使用ffmpeg的API对未压缩的帧进行编码是否足够快,以实现实时流媒体 任何帮助都将不胜感激 谢谢。你很可能已经知道 1) 如何从iPhone的摄像头获取压缩帧和音频 你不能这样做。avfoundationapi从各个角度防止了这种情况。我甚至尝试了命名管道和其他一些狡猾的unix foo。没有这

根据这一点,可以从iphone摄像头获取压缩数据,但正如我在AVFoundation参考资料中所读到的,您只能获取未压缩的数据

因此,问题是:

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

2) 使用ffmpeg的API对未压缩的帧进行编码是否足够快,以实现实时流媒体

任何帮助都将不胜感激


谢谢。

你很可能已经知道

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

你不能这样做。avfoundationapi从各个角度防止了这种情况。我甚至尝试了命名管道和其他一些狡猾的unix foo。没有这样的运气。您别无选择,只能将其写入文件。在您的链接帖子中,用户建议设置回调以传递编码帧。据我所知,这对于H.264流是不可能的。捕获代理将提供以特定像素格式编码的图像。是电影编剧和编剧进行了编码

2) 使用ffmpeg的API对未压缩的帧进行编码是否足够快,以实现实时流媒体

是的。但是,您必须使用libx264,这将使您进入GPL领域。这与应用商店不完全兼容


出于效率考虑,我建议使用AVFoundation和AVAssetWriter。

我同意Steve的观点。我想补充一点,在尝试使用苹果的API时,你将不得不进行一些非常恶劣的黑客攻击。默认情况下,AVAssetWriter在将缓冲区溢出到文件之前会花费一秒钟的时间。我还没有找到一种方法来改变设置。解决方法似乎是使用多个AvassetWriter强制小文件写入和文件关闭。但这会带来很多开销。这不漂亮

如果你是iOS开发者,一定要向苹果提交一个新的功能请求。我们这样做的人越多,他们就越有可能添加某种可以写入缓冲区和/或流的写入程序


我想补充一下Steve在x264 GPL问题上所说的话,我认为你可以获得比GPL更好的商业许可证,但当然要花钱。但这意味着你仍然可以使用它,并获得相当不错的结果,而不必打开自己的应用程序源代码。不如使用硬件编解码器的增强型Apple API好,但也不错。

实际上1有部分错误。我已经编写了一个库,可以在不使用私有API的情况下实时传输H.264数据。您能与我们共享这个库吗?如果有一种替代方法可以在不使用libx264的情况下获得此H.264流,那将是非常好的。这就是我最终使用FFmpeg的mpeg编解码器的原因。@AlexandreOS不幸的是,我的库只有商业许可。我将来可能会以双重许可证发布。@SteveMcFarlin您编写的库是否使用avassetwriterinput和像素缓冲区?请纠正我。@SteveMcFarlin在您提到的第一点上向我们其他人提供一些见解方面有什么最新进展吗?我最终从AVFoundation获得了未压缩的数据(帧和音频),并使用FFmpeg的API编码+流媒体。它在iPhone4上运行得非常好,分辨率为192x240,每秒30帧。在更高的分辨率下,它会掉太多的帧。@AlexandreOS如何做到这一点请分享,这对我们很有帮助,Thanks@Ron,然后转换每个。您可以使用FFmpeg对AVPicture实例进行编码。以FFmpeg文件为例,说明如何实现此编码部分。希望这对你有帮助。