В документации Apple для AVAssetReaderTrackOutput
он указывает следующее о параметре для outputSettings
при создании экземпляра с использованием +[AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:outputSettings:]
Значение nil конфигурирует выходные данные для продажи сэмплов в их оригинальном формате, как они сохраняются указанной дорожкой.
При использовании, например, на видео актив MP4, по-видимому, будет проходить через кадры в порядке декодирования (то есть не в порядке относительно отображения), однако все запросы к доставленным CMSampleBufferRef
объектам с использованием CMSampleBufferGetImageBuffer
дают NULL
CVImageBufferRef
объектов.
Единственный способ обеспечить доставку объектов буфера изображения - это предоставить пиксельный формат буфера для outputSettings:
, например kCVPixelFormatType_32ARGB
для словарной записи kCVPixelBufferPixelFormatTypeKey
.
Другим интересным побочным эффектом этого является то, что кадры затем доставляются в порядке отображения, а основной порядок декодирования кадров абстрагируется / скрывается.
Есть идеи, почему это так?