CVPixelBuffer низкого качества - PullRequest
0 голосов
/ 21 марта 2019

Я играю видео с помощью AVPlayerLayer, и иногда мне нужно создавать снимки текущего видеокадра, чтобы использовать его в качестве заполнителя. Я использую AVPlayerItemVideoOutput для этой цели, а затем конвертирую CVPixelBuffer в CGImage, используя CIContext (я тоже пробовал 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 не подходит для моих целей). Спасибо

...