Недавно я выполнил задачу декодирования звука с помощью Apple Core Audio C ++ API.
Теперь я заинтересован в декодировании и получении необработанных несжатых данных кадров видеофайла снова с помощью родного OSX API с C ++ (аналог DirectShow или Media Foundation в ОС Windows).
Я посмотрел на доступные API (AVFoundation, Core Video и т. Д.), Но не смог найти среду, которая будет выполнять эту работу и доступна через C ++.
Итак, мой вопрос, какой подход является наиболее подходящим для этой задачи?
Вы можете читать необработанные видео данные из файла, используя AVFoundation
«s AVAssetReader
,
Вы создаете AVAssetReader
, добавить AVAssetReaderTrackOutput
с nil
настройки вывода, затем позвоните copyNextSampleBuffer()
пока не закончено.
Однако, если у вас нет особых потребностей, необработанные видеоданные с кодеками вряд ли будут полезны. Вы пытаетесь показать видео? В таком случае AVPlayerLayer
/ AVPlayer
(AVFoundation
еще раз) вероятно то, что вы ищете. Если вы хотите что-то более низкий уровень, CoreMedia
/VideoToolbox
может для тебя. AVFoundation
является структурой объективного c, так что вы будете использовать target-c ++, в то время как CoreMedia
а также VideoToolbox
являются C фреймворками.
Других решений пока нет …