0

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

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

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

func send(content: Data?, contentContext: NWConnection.ContentContext = default, isComplete: Bool = default, completion: NWConnection.SendCompletion)

我用于网络的期望 Data 作为其内容参数?

4

1 回答 1

1

您可能希望在通过网络发送视频帧之前对其进行压缩,因为未压缩的视频帧可能需要比您可用的更多的带宽。你会想使用硬件压缩器来提高速度。

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

您应该观看 WWDC 2014 session 513,“Direct Access to Video Encoding and Decoding”</a>。下面是引言中的一段话:

随之而来的情况是,您有来自相机或其他地方的图像流,您希望压缩这些图像,但可以直接访问这些压缩的样本缓冲区,以便您可以通过网络将它们发送出去或对他们做任何你喜欢的事。

您可以在ASCIIwwdc找到会议记录。

于 2019-02-01T20:31:32.000 回答