什么技术最适合将iPhone视频摄像机数据直播到计算机?

时间:2010-10-19 00:04:15

标签: iphone ios ios4 video-streaming avfoundation

我想将视频从iPhone相机流式传输到Mac上运行的应用。想想视频聊天,但只有一种方式,从设备到接收器应用程序(它不是视频聊天)。

到目前为止我的基本理解:

  1. 您可以使用AVFoundation获取“实时”视频摄像机数据而无需保存到文件,但它是未压缩的数据,因此我必须自己处理压缩。
  2. 没有内置的AVCaptureOutput支持发送到网络位置,我必须独自完成这项工作。
  3. 我对上述事情是对的还是我已经偏离了轨道?

    Apple Tech Q&A 1702提供了一些关于将单个帧保存为图像的信息 - 这是最好的解决方法吗?只需保存30fps然后像ffmpeg那样压缩'em?

    有很多关于iPhone直播的讨论,但关于发送实时视频的人的信息要少得多。我希望能有一些广泛的笔触让我指向正确的方向。

2 个答案:

答案 0 :(得分:24)

您可以使用AVCaptureVideoDataOutputsampleBufferDelegate来捕获原始压缩帧,然后您只需要通过网络传输它们。 AVFoundation提供了一个API,用于将帧编码为本地视频文件,但不提供任何流式传输到网络。最好的办法是找到一个通过网络传输原始帧的库。我从ffmpeg开始;我相信libavformat支持RTSP,请查看ffserver代码。

请注意,您应该配置AVCaptureVideoDataOutput为您提供压缩帧,这样您就可以避免在没有硬件编码的情况下压缩原始视频帧。

答案 1 :(得分:20)

这很大程度上取决于您的目标分辨率以及您定位的帧速率性能类型。

从抽象的角度来看,我可能有一个捕获线程直接从AVCaptureOutput填充缓冲区,并且一个通信线程发送并重新填充缓冲区(如果需要,填充)到每个以前指定的主机x 毫秒。

完成初始数据传输后,我将努力以最低分辨率实现15fps,然后继续工作直到缓冲区溢出,然后通信线程才能传输,这需要平衡图像分辨率,缓冲区大小(可能取决于GSM) ,很快将成为CDMA帧大小),最后是传输缓冲区的最大速率。