CVPixelBuffer质量差

时间:2019-03-21 11:09:34

标签: ios swift avplayer cgimage cvpixelbuffer

我正在使用AVPlayerLayer播放视频,有时我需要创建当前视频帧的快照以将其用作占位符。为此,我使用了AVPlayerItemVideoOutput,然后使用CVPixelBufferCIContext转换为CGImage(我也尝试过VTCreateCGImageFromCVPixelBuffer)。一切工作正常,只是图像与原始图像明显不同(第一个图像是实际的AVPlayerLayer,第二个图像是AVPlayerLayer的快照):

AVPlayerLayer: AVPlayerLayer

AVPlayerLayer的快照 Snapshot

您会注意到快照图像比原始帧要轻得多。我的AVPlayerItemVideoOutput是这样创建的:

let playerItemVideoOutput = AVPlayerItemVideoOutput(pixelBufferAttributes:
            [kCVPixelBufferPixelFormatTypeKey as String: kCVPixelFormatType_32BGRA,
             kCVPixelBufferCGImageCompatibilityKey as String: true])

我也尝试过kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,但是结果是一样的。有没有办法从AVPlayerItemVideoOutput生成原始质量的图像(AVAssetImageGenerator不适合我的目的)。谢谢

0 个答案:

没有答案