Я использую библиотеку Bento4 для мультиплексирования файла TS TS (MPEG-2 транспортного потока) приложения B с видео h264 и аудиопотоками AAC, которые генерируются из VideoToolbox и AVFoundation соответственно, в качестве исходных данных для HLS (HTTP Live Streaming). Этот вопрос не обязательно специфичен для Bento4: я пытаюсь понять базовые понятия, чтобы выполнить задачу, желательно используя Apple libs.Звуковой эквивалент SPS и PPS при мультиплексировании Приложение B MPEG-TS? Что такое «DecoderInfo»?
До сих пор я понял, как создать AP4_AvcSampleDescription
путем получать различные виды данных из моего CMVideoFormatDescriptionRef
, а самое главное генерируя SPS и PPS с использованием индекса 0 и 1 соответственно CMVideoFormatDescriptionGetH264ParameterSetAtIndex
, что я могу просто придерживаться как байтовые буферы в Bento4. Отлично, это вся информация заголовка, в которой я нуждаюсь, чтобы я мог запросить Bento4 мультиплексирование видео в ts-файл!
Теперь я пытаюсь отключить звук в одном файле. Я использую свой CMAudioFormatDescriptionRef
, чтобы получить необходимую информацию для построения моего AP4_MpegAudioSampleDescription
, который Bento4 использует для создания необходимых QT-атомов и заголовков. Однако, если поля являются байтовым буфером «декодер информации», без объяснения того, что это такое, или код для генерации одного из данных. Я бы надеялся иметь CMAudioFormatDescriptionGetDecoderInfo
или что-то в этом роде, но я не могу найти ничего подобного. Есть ли такая функция в любой библиотеке Apple? Или есть хорошая спецификация, которую я не нашел о том, как сгенерировать эти данные?
Или, наоборот, я иду по неправильному пути? Есть ли более простой способ для mux ts-файлов с базы данных Mac/iOS?
OOH, думал, что вы могли бы показать с, с правильными тегами: D Спасибо !! Могу ли я предположить, что AP4_SampleDescription вместо этого использует экземпляр AP4_Mp4AudioDecoderConfig, чтобы пользователям API не приходилось иметь дело с этой деталью реализации? :) Я закончил тем, что скопировал WriteSample с версией, которая берет только то, что у меня есть и что мне нужно для моих данных; Я отправлю ответ, когда я его заработаю ... (edit: MagicCookie возвращает NULL:/не то, что мне это нужно, но просто fyi) – nevyn