Почему CMSampleBufferGetImageBuffer возвращает NULL

Я создал код для обработки видеофайлов в OSX, кадр за кадром. Ниже приведен отрывок из кода, который строит ОК, открывает файл, находит дорожку видео (только дорожку) и начинает читать CMSampleBuffers без проблем. Однако каждый CMSampleBufferRef, который я получаю, возвращает NULL, когда я пытаюсь извлечь кадр пиксельного буфера. Там'в документации iOS нет указаний на то, почему я мог ожидать NULL-возвращаемое значение или как я мог ожидать, чтобы исправить проблему. Это происходит со всеми видео, на которых ямы проверили его независимо от источника захвата или кодека.

Любая помощь с благодарностью.

NSString *assetInPath = @"/Users/Dave/Movies/movie.mp4";
NSURL *assetInUrl = [NSURL fileURLWithPath:assetInPath];
AVAsset *assetIn = [AVAsset assetWithURL:assetInUrl];

NSError *error;
AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:assetIn error:&error];
AVAssetTrack *track = [assetIn.tracks objectAtIndex:0];
AVAssetReaderOutput *assetReaderOutput = [[AVAssetReaderTrackOutput alloc]
                                              initWithTrack:track
                                              outputSettings:nil];
[assetReader addOutput:assetReaderOutput];

// Start reading
[assetReader startReading];

CMSampleBufferRef sampleBuffer;
do {
       sampleBuffer = [assetReaderOutput copyNextSampleBuffer];

       /**
        ** At this point, sampleBuffer is non-null, has all appropriate attributes to indicate that
        ** it's a video frame, 320x240 or whatever and looks perfectly fine. But the next
        ** line always returns NULL without logging any obvious error message
        **/

       CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);

       if( pixelBuffer != NULL ) {
           size_t width = CVPixelBufferGetWidth(pixelBuffer);
           size_t height = CVPixelBufferGetHeight(pixelBuffer);
           CVPixelBufferLockBaseAddress(pixelBuffer, 0);
           ...
           other processing removed here for clarity
        }
} while( ... );

Чтобы было ясно, яМы удалили весь код проверки ошибок, но в этом коде проблем не было. т.е. AVAssetReader читает, CMSampleBufferRef выглядит нормально и т. д.

Ответы на вопрос(3)

Ваш ответ на вопрос