如何从CMSampleBufferRef

时间:2017-07-24 11:16:11

标签: ios avfoundation

我想使用AVFoundation将视频上传到服务器以捕获视频。核心媒体使用CMSampleBuffer代表视频数据,但如何获取视频数据以便将其发送到服务器?有一个例子关于将CMSampleBuffer转换为UIImage对象,但我找不到有关将CMSampleBuffer转换为NSData对象的示例。

1 个答案:

答案 0 :(得分:0)

您可以使用CIContext实例渲染图像并导出生成的图像数据:

guard let buffer = CMSampleBufferGetImageBuffer(self) else { return nil }

let ciImage = CIImage(cvPixelBuffer: buffer)
let context = CIContext()
let colorSpace = CGColorSpaceCreateDeviceRGB()
let data = context.jpegRepresentation(of: ciImage, colorSpace: colorSpace, options:[:])

有关详细信息,请参阅Apple documentation,其他选项包括:tiffRepresentation(of:format:colorSpace:options:)pngRepresentation(of:format:colorSpace:options:)等。