我想将视频从iPhone相机流式传输到Mac上运行的应用。想想视频聊天,但只有一种方式,从设备到接收器应用程序(它不是视频聊天)。
到目前为止我的基本理解:
我对上述事情是对的还是我已经偏离了轨道?
Apple Tech Q&A 1702提供了一些关于将单个帧保存为图像的信息 - 这是最好的解决方法吗?只需保存30fps然后像ffmpeg那样压缩'em?
有很多关于iPhone直播的讨论,但关于发送实时视频的人的信息要少得多。我希望能有一些广泛的笔触让我指向正确的方向。
答案 0 :(得分:24)
您可以使用AVCaptureVideoDataOutput
和sampleBufferDelegate
来捕获原始压缩帧,然后您只需要通过网络传输它们。 AVFoundation
提供了一个API,用于将帧编码为本地视频文件,但不提供任何流式传输到网络。最好的办法是找到一个通过网络传输原始帧的库。我从ffmpeg开始;我相信libavformat支持RTSP,请查看ffserver代码。
请注意,您应该配置AVCaptureVideoDataOutput
为您提供压缩帧,这样您就可以避免在没有硬件编码的情况下压缩原始视频帧。
答案 1 :(得分:20)
这很大程度上取决于您的目标分辨率以及您定位的帧速率性能类型。
从抽象的角度来看,我可能有一个捕获线程直接从AVCaptureOutput填充缓冲区,并且一个通信线程发送并重新填充缓冲区(如果需要,填充)到每个以前指定的主机x 毫秒。
完成初始数据传输后,我将努力以最低分辨率实现15fps,然后继续工作直到缓冲区溢出,然后通信线程才能传输,这需要平衡图像分辨率,缓冲区大小(可能取决于GSM) ,很快将成为CDMA帧大小),最后是传输缓冲区的最大速率。