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