我从ARSessionDelegate获得了CVPixelBuffer。
我的应用程序还有另一个不可更改的部分,我需要CMSampleBuffer对象。所以我试图从CVPixelBuffer创建一个CMSampleBuffer。
我正在使用此方法创建CMSampleBuffer:
func CMSampleBufferCreateReadyWithImageBuffer(_ allocator: CFAllocator?,
_ imageBuffer: CVImageBuffer,
_ formatDescription: CMVideoFormatDescription,
_ sampleTiming: UnsafePointer<CMSampleTimingInfo>,
_ sBufOut: UnsafeMutablePointer<CMSampleBuffer?>) -> OSStatus
此函数有5个参数:
这是我尝试创建CMVideoFormatDescription的尝试:
let w = CVPixelBufferGetWidth(pixelBuffer)
let h = CVPixelBufferGetHeight(pixelBuffer)
var format: CMVideoFormatDescription?
CMVideoFormatDescriptionCreate(nil, kCMVideoCodecType_HEVC, Int32(w), Int32(h), nil, &format)
我很确定我不应该对kCMVideoCodecType_HEVC
进行硬编码,但是我不确定如何确定编解码器类型。
答案 0 :(得分:1)
使用CMVideoFormatDescriptionCreateForImageBuffer
直接从CVPixelBuffer(它是CVImageBuffer)创建格式说明。
答案 1 :(得分:0)
var formatDescription: CMVideoFormatDescription?
CMVideoFormatDescriptionCreateForImageBuffer(allocator: nil,
imageBuffer: yourCVPixelBuffer,
formatDescriptionOut: &formatDescription)