我正在使用AVAssetReader/AVAssetWriter将视频进行转换。我的问题是:如何以实时转换的方式显示当前帧的预览。我考虑将CMSampleBufferRef转换为UIImage,然后应用到UIImageView中。有更好的方法吗?
AVSampleBufferDisplayLayer
是您所需要的。CALayer
子类,可以显示CMSampleBuffer
,我想它比通过UIImage
和UIImageView
来显示要快得多。AVSampleBufferDisplayLayer
作为后端的UIView
实现(用Swift编写):class SampleBufferView: UIView {
override class func layerClass() -> AnyClass {
return AVSampleBufferDisplayLayer.self
}
func enqueueSampleBuffer(sampleBuffer: CMSampleBuffer!) {
let displayLayer = self.layer as! AVSampleBufferDisplayLayer
displayLayer.enqueueSampleBuffer(sampleBuffer)
}
}