MP4 / ISO 14496-12: Как вы находите блоки доступа к видео и аудио? - PullRequest
10 голосов
/ 15 декабря 2011

Я пишу инструмент для проверки файлов MP4 (он же базовый формат файлов мультимедиа ISO, ISO 14496, часть 12).

Я могу интерпретировать большинство блоков, перечисленных в ISO 14496-12, которые генерируются OSS. Мне еще предстоит выяснить, как извлечь отдельные блоки доступа к видео и блоки доступа к аудио.

Я достаточно уверен, что видео H.264 в поле 'mdat' не имеет префикса "0x000001" Приложения B стандарта ISO 14496-10 в блоках NAL.

Я экспериментировал с интерпретацией SampleToChunkBox ('stsc'), SampleSizeBox ('stsz') и ChunkOffsetBox ('stco'), чтобы найти образцы мультимедиа внутри 'mdat', но я не могу найти ничего, что Я могу интерпретировать как nal_unit () (ISO 7.349-10 раздел 7.3.1) или slice_header () (раздел 7.3.3).

Мне также любопытно, где живут SPS (7.3.2.1) и PPS (7.3.2.2). У меня есть подозрения, что они живут где-то внутри коробки 'trak', но я не выяснил, где.

Указатели на приложения или библиотеки имеют ограниченную полезность. Я пишу приложение, и внешний исходный код сложнее понять (будучи обремененным собственной структурой) по сравнению с математическим объяснением.

1 Ответ

5 голосов
/ 16 декабря 2011

Потратив пару часов на изучение других вопросов о стекопереработке, я в конце концов наткнулся на краткие ответы, которые привели меня к более полному ответу.

Разбор H264 в mdat MP4

Инкапсуляция H.264 в медиа-файлы ISO покрывается ISO 14496 часть 15. SPS и PPS хранятся в поле «avcC» документально подтверждено в разделах 5.3.4.1.2 и 5.2.4.1.1. Эта коробка также говорит Вы, как долго поля длины при интерпретации образцов.

Образцы описаны в разделе 5.2.3 и состоят из серии NAL-единицы с префиксом длины. Пример MP4 из ffmpeg имеет один срез на образец, но самый первый образец включает SEI содержащий текст, документирующий версию кодека H.264 и параметры кодирования.

...