在Apple的AVAssetReaderTrackOutput
文档中,它指出了使用outputSettings
+[AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:outputSettings:]
的参数的以下内容
值为nil将输出配置为以指定曲目存储的原始格式提供样本。
在例如使用它时如果是MP4视频资产,它似乎会以解码顺序逐帧(即无序显示),但使用CMSampleBufferRef
传递给CMSampleBufferGetImageBuffer
个对象的所有查询都会产生NULL
CVImageBufferRef
个对象。
我可以确保传送图像缓冲区对象的唯一方法是为outputSettings:
提供像素缓冲区格式,例如kCVPixelFormatType_32ARGB
字典条目的kCVPixelBufferPixelFormatTypeKey
。
这样做的另一个有趣的副作用是,然后以显示顺序传递帧,并且抽象/隐藏帧的基础解码顺序。
为什么会出现这种情况?
答案 0 :(得分:0)
就像您期望的那样,将outputSettings
设置为nil
会导致输出本机格式的视频帧,但事实并非如此,您必须指定一些内容才能获得有效的{{1 }}。
所有内容都不会丢失,使用“几乎没有”字典似乎以其原始格式输出帧,
CVSampleBufferRef
IOSurfaceOptions仅是默认设置-进一步阅读以供参考:https://developer.apple.com/documentation/corevideo/kcvpixelbufferiosurfacepropertieskey?language=objc