首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CVPixelBuffer创建CMSampleBuffer

从CVPixelBuffer创建CMSampleBuffer
EN

Stack Overflow用户
提问于 2017-12-27 21:57:39
回答 1查看 6.9K关注 0票数 8

我从ARSessionDelegate得到了一个CVPixelBuffer:

代码语言:javascript
复制
func session(_ session: ARSession, didUpdate frame: ARFrame) {
    frame.capturedImage // CVPixelBufferRef
}

但我的应用程序的另一部分(我不能更改)使用了CMSampleBuffer。

CMSampleBuffer是CVPixelBuffer的容器。

为了创建一个CMSampleBuffer,我可以使用这个函数:

代码语言:javascript
复制
func CMSampleBufferCreateReadyWithImageBuffer(_ allocator: CFAllocator?, 
                                            _ imageBuffer: CVImageBuffer, 
                                            _ formatDescription: CMVideoFormatDescription, 
                                            _ sampleTiming: UnsafePointer<CMSampleTimingInfo>, 
                                            _ sBufOut: UnsafeMutablePointer<CMSampleBuffer?>) -> OSStatus

我唯一缺少的参数是sampleTiming --我如何从CVPixelBuffer中提取它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-05 13:32:32

sampleTiming主要包含presentationTimeStamp,您可以通过以下代码轻松创建:

代码语言:javascript
复制
let scale = CMTimeScale(NSEC_PER_SEC)
let pts = CMTime(value: CMTimeValue(frame.timestamp * Double(scale)),
                 timescale: scale)
var timingInfo = CMSampleTimingInfo(duration: kCMTimeInvalid,
                                    presentationTimeStamp: pts,
                                    decodeTimeStamp: kCMTimeInvalid)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47993457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档