如何创建 CMVideoFormatDescription 对象



I get a CVPixelBuffer from ARSessionDelegate.

我的应用程序中还有另一个不可更改的部分,我需要CMSampleBuffer对象。所以我正在尝试从CVPixelBuffer创建一个CMSampleBuffer。

我正在使用此方法创建CMSampleBuffer:

func CMSampleBufferCreateReadyWithImageBuffer(_ allocator: CFAllocator?, 
_ imageBuffer: CVImageBuffer, 
_ formatDescription: CMVideoFormatDescription, 
_ sampleTiming: UnsafePointer<CMSampleTimingInfo>, 
_ sBufOut: UnsafeMutablePointer<CMSampleBuffer?>) -> OSStatus

此函数采用 5 个参数:

  1. CFAllocator - 我相信这不是必需的。
  2. imageBuffer - 这是 CVPixelBuffer。
  3. CMVideo格式说明 -如何正确创建它?
  4. 示例时间:我可以弄清楚如何使用这个答案来创建它。
  5. sBufOut - 只是一个指向我要创建的 CMSampleBuffer 对象的指针。

这是我创建CMVideoFormatDescription的尝试:

let w = CVPixelBufferGetWidth(pixelBuffer)
let h = CVPixelBufferGetHeight(pixelBuffer)
var format: CMVideoFormatDescription?
CMVideoFormatDescriptionCreate(nil, kCMVideoCodecType_HEVC, Int32(w), Int32(h), nil, &format)

我很确定我不应该硬编码kCMVideoCodecType_HEVC但我不确定如何找出编解码器类型。

使用CMVideoFormatDescriptionCreateForImageBuffer直接从 CVPixelBuffer(这是一个 CVImageBuffer(创建格式描述。

var formatDescription: CMVideoFormatDescription?
CMVideoFormatDescriptionCreateForImageBuffer(allocator: nil,
imageBuffer: yourCVPixelBuffer,
formatDescriptionOut: &formatDescription)

相关内容

  • 没有找到相关文章

最新更新