我正在使用AVPlayerLayer播放视频,有时我需要创建当前视频帧的快照以将其用作占位符。为此,我使用了AVPlayerItemVideoOutput
,然后使用CVPixelBuffer
将CIContext
转换为CGImage(我也尝试过VTCreateCGImageFromCVPixelBuffer
)。一切工作正常,只是图像与原始图像明显不同(第一个图像是实际的AVPlayerLayer
,第二个图像是AVPlayerLayer
的快照):
您会注意到快照图像比原始帧要轻得多。我的AVPlayerItemVideoOutput
是这样创建的:
let playerItemVideoOutput = AVPlayerItemVideoOutput(pixelBufferAttributes:
[kCVPixelBufferPixelFormatTypeKey as String: kCVPixelFormatType_32BGRA,
kCVPixelBufferCGImageCompatibilityKey as String: true])
我也尝试过kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
,但是结果是一样的。有没有办法从AVPlayerItemVideoOutput
生成原始质量的图像(AVAssetImageGenerator
不适合我的目的)。谢谢