Разбор sps и pps в файлах MP4 [легко понять]
Разбор sps и pps в файлах MP4 [легко понять]


1. Основные понятия формата MP4.

Формат MP4 соответствует стандарту MPEG-4 (ISO/IEC14496).


2. Основные понятия формата инкапсуляции MP4.

1 Формат инкапсуляции MP4 соответствует стандарту ISO/IEC 14496-12 (Информационные технологии. Кодирование аудиовизуальных объектов. Часть 12. Базовый формат медиафайлов ISO).

 Прикрепил- Стандартная бесплатная загрузка: Freely Available Standards http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html

2 Формат инкапсуляции MP4 основан на определении формата контейнера QuickTime, а описание мультимедиа отделено от медиаданных. В настоящее время он широко используется для инкапсуляции видео h.264 и аудио ACC и является представителем видео высокой четкости. HDV.

3 Все данные в файлах MP4 инкапсулированы в блоки (соответствующие атомам в QuickTime), то есть файлы MP4 состоят из нескольких блоков, каждый блок имеет длину и тип, и каждый блок также может содержать другие подблоки (так называемые контейнеры). коробка).

Файл MP4 сначала будет иметь одно и только одно поле типа «ftyp», которое служит знаком формата MP4 и содержит некоторую информацию о файле, затем будет только одно поле типа «moov» (окно фильма); который представляет собой поле-контейнер, подполе содержит метаданные мультимедиа. Медиа-данные файлов MP4 содержатся в поле типа «mdat» (ящик данных Midia), который также является контейнером; Коробок может быть несколько или ни одного (когда все медиаданные относятся к другим файлам). Структура медиаданных описывается метаданными.

4 Метод хранения коробок в MP4 — режим обратного порядка байтов. Обычно стандартный блок вначале имеет размер четырехбайтового блока.

5 несколько существительных

track

Представляет коллекцию образцов. Для мультимедийных данных дорожка представляет собой видео- или аудиопоследовательность.

hint track

Специальная дорожка не содержит медиаданных, но содержит инструкции по упаковке других дорожек данных в потоковые мультимедиа.

sample

Для дорожек без подсказок видеосэмпл представляет собой кадр видео или группу непрерывных видеокадров, а аудиосэмпл — это непрерывный фрагмент сжатого звука. В совокупности они называются семплами. Для трека подсказок образец определяет формат одного или нескольких пакетов потокового мультимедиа.

sample table

Таблица с указанием времени и физического расположения образцов.

chunk

Модуль, состоящий из нескольких семплов трека.


3. Структурная схема формата упаковки MP4.

1 Пример образца

来源于Android Медиа Рекодер для записи видео,Платформа — Huawei T8300 и TCL968.,использоватьmp4infoПосмотреть ниже:

использоватьEsEYEПосмотреть ниже:

использоватьwinhexАнализ заключается в следующем:

Схема структуры двух коробок

Далее будут объяснены некоторые полезные аспекты кодирования h264, а остальные описываться не будут.

3 ftyp(file type box)

Как показано ниже,Первые четыре байта00 00 00 00 18означает, чтоboxизsizeдля24байт(Голова в комплекте),Затем66 74 79 70даftypизBOX TYPE, другие — совместимость некоторых форматов и другая соответствующая информация.

4 mdat

Как показано на рисунке ниже, BOX YPE — это 6D 64 61 74, за которым следует 00 00 09 39, указывающий длину среза.

5 avcC

Как показано на рисунке ниже, красный — это ТИП КОРОБКИ.


4. Получите SPS и PPS h264 в файлах MP4.

1 [Справочная основа] ISO/IEC 14496-15 (скачать

2 [Обзор] В H264 SPS и PPS существуют в заголовке NALU, тогда как в файлах MP4 SPS и PPS существуют в AVCDecoderConfigurationRecord. Сначала необходимо найти avcC.

3 [Определение]

①Набор параметров: набор данных, который редко меняется и предоставляет информацию о декодировании для большого количества NALU VCL.

Набор параметров последовательности SPS действует на серию последовательных кодированных изображений, тогда как набор параметров изображения PPS действует на одно или несколько независимых изображений в кодированной видеопоследовательности.

Если декодеру не удается правильно принять эти два набора параметров, другие NALU не могут быть декодированы. Поэтому они обычно отправляются раньше других NALU и передаются с использованием другого канала или более надежного протокола передачи (например, TCP) или могут передаваться повторно.

②О структуре AVCDecoderConfigurationRecord определяется как

4 [Пример анализа] Данные показаны на диаграмме avcC выше. Теперь подробно проанализируйте данные.

Следовательно, извлеченные SPS и PPS составляют 67 42 00 1E A6 81 41 F9 и 68 CE 38 80 соответственно.


5. Фрагмент данных H264/NALU в файле MP4.

1 【ссылка】H264Официальная документация(скачать) + Би Шу—Стандарт кодирования сжатия видео нового поколения(скачать

2【Обзор】

В файлах формата MP4 H264. срез не начинается с 00 00 00 01 для сегментации, но хранится в mdat коробка.

Базовый поток кода H264 состоит из серии NALU. Исходный состав подразделения NALU: [start code] + [NALU header] + [NALU payload]

start code

1 байт

00 00 01 или 00 00 00 01

Нужно добавить

NALU header

1 байт

Как следует 3

Найти через mdat

Структура базового кодового потока H264 разделена на два уровня: уровень кодирования видео VCL и уровень сетевой адаптации NAL, который разделяет обработку сигнала и передачу по сети.

VCL

Отвечает за эффективную презентацию видеоконтента.

NAL

Упаковка и отправка данных соответствующим образом, требуемым сетью.

3 [Определение] NALU header

+—————+

|0|1|2|3|4|5|6|7|

+-+-+-+-+-+-+-+-+

|F|NRI| Type |

+—————+

В частности, когда значения равны 7 и 8, это SPS и PPS соответственно.

Би Шу(скачать)(P191)上из定义для:

4 [Пример анализа] Анализ данных, данные показаны на рисунке выше mdat.

6D 64 61 74

mdat BOX TYPE

00 00 09 39

Длина Силсе, 2361

Следующие 65 — НАЛУ. header,может быть65&0x1F来求из后五个bit,Таким образом, мы знаем, что этот фрагмент — это I-кадр.

Обратите внимание, что между mdat и Silce может быть несколько заполнителей. Когда я тестировал на мобильном телефоне TCL, появились непрерывные заполнители 00, что будет более проблематично при дальнейшем использовании жесткого кодирования H264.


Ref/Related

1 Соответствующие материалы и инструменты можно скачать по ссылке в статье

2 http://www.52rd.com/Blog/wqyuwss/559/4/

3 http://blog.csdn.net/szu030606/article/details/5943279

4 http://blog.csdn.net/k1988/article/details/5654631

5 http://www.cppblog.com/czanyou/archive/2008/11/26/67940.html

6 http://krdai.info/blog/sps-pps-in-mp4-format.html

7 http://www.cnitblog.com/zouzheng/archive/2007/04/04/25155.html

8 http://bbs.chinavideo.org/viewthread.php?tid=10273

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/183758.html Исходная ссылка: https://javaforall.cn

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose