AVAssetImageGenerator copyCGImageAtTime: actualTime: error: генерирует 8-битные изображения из 10-битного видео - PullRequest
0 голосов
/ 25 октября 2018

На моем Mac есть 10-битное видео, которое я хочу извлечь из кадров в полных 10-битных / канальных данных.Я загружаю свой ресурс и проверяю, что он 10-битный:

CMFormatDescriptionRef formatDescriptions = (__bridge CMFormatDescriptionRef)(track.formatDescriptions[0]);
float frameRate = track.nominalFrameRate;     
int bitDepth = ((NSNumber*)CMFormatDescriptionGetExtension(formatDescriptions, (__bridge CFStringRef)@"BitsPerComponent")).intValue;

bitDepth - это 8 для многих видео, но 10 для этого видео (что я знаю , что я записал вВ любом случае, 10-бит), поэтому AVFoundation правильно распознает битовую глубину канала.

Однако я хочу сгенерировать отдельные кадры из видео, используя AVAssetImageGenerator copyCGImageAtTime:actualTime:error: метод:

NSError *err;
NSImage *img = [[NSImage alloc] initWithCGImage:[imageGenerator copyCGImageAtTime:time actualTime:NULL error:&err] size:dimensions];

Изображение сгенерировано успешно, без ошибок, но когда я проверяю его, я вижу, что оно 8 бит / канал:

(lldb) po img
<NSImage 0x600001793f80 Size={3840, 2160} Reps=(
    "<NSCGImageSnapshotRep:0x6000017a5a40 cgImage=<CGImage 0x100520800> 
    (DP)\n\t<<CGColorSpace 0x60000261ae80> (kCGColorSpaceICCBased; 
      kCGColorSpaceModelRGB; Composite NTSC)>\n\t\twidth = 3840, height = 2160,
      bpc = 8, bpp = 32, row bytes = 15360 
      \n\t\tkCGImageAlphaPremultipliedFirst | kCGImageByteOrder32Big  |
      kCGImagePixelFormatPacked \n\t\tis mask? No, has masking color? No, 
      has soft mask? No, has matte? No, should interpolate? Yes>"
)>

Как создать полный 10-бит без потерь (или, длясовместимость, 16-битные или 32-битные) кадры из 10-битного видео?

Я на macOS 10.14.

1 Ответ

0 голосов
/ 26 октября 2018

Из-за отсутствия какой-либо информации об этом я отказался от AVAssetImageGenerator и пошел с включением ffmpeg в мое приложение и вызывал его для извлечения 10-битных кадров.

...