如何将带有图像数据的CMSampleBuffer转换为适合通过网络连接发送的格式?

时间:2019-02-01 20:14:43

标签: ios swift avcapturesession network.framework

我想通过网络连接发送视频流的帧,因此我实现了AVCaptureVideoDataOutputSampleBufferDelegate函数:

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection)

我应该如何使用NWConnection函数将CMSampleBuffer转换为Data:

func send(content: Data?, contentContext: NWConnection.ContentContext = default, isComplete: Bool = default, completion: NWConnection.SendCompletion)
我用于联网的

希望将Data作为其内容参数?

1 个答案:

答案 0 :(得分:1)

您可能想在通过网络发送之前压缩视频帧,因为比你有可用的未压缩的视频帧,可能需要更多的带宽。而且,您将需要使用硬件压缩器来提高速度。

您可以使用the VideoToolbox framework访问硬件压缩器和解压缩器。

您应该观看WWDC 2014会议513,“Direct Access to Video Encoding and Decoding”。这是引言中的一句话:

  

伴随着这种情况,有时您有来自相机或其他地方的图像流,您想对其进行压缩,但可以直接访问这些压缩的样本缓冲区,以便可以将其发送出去。网络或随他们喜欢做什么。

可以在找到所述会话的转录ASCIIwwdc