Формат MP4 соответствует стандарту MPEG-4 (ISO/IEC14496).
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 — режим обратного порядка байтов. Обычно стандартный блок вначале имеет размер четырехбайтового блока.
track | Представляет коллекцию образцов. Для мультимедийных данных дорожка представляет собой видео- или аудиопоследовательность. |
---|---|
hint track | Специальная дорожка не содержит медиаданных, но содержит инструкции по упаковке других дорожек данных в потоковые мультимедиа. |
sample | Для дорожек без подсказок видеосэмпл представляет собой кадр видео или группу непрерывных видеокадров, а аудиосэмпл — это непрерывный фрагмент сжатого звука. В совокупности они называются семплами. Для трека подсказок образец определяет формат одного или нескольких пакетов потокового мультимедиа. |
sample table | Таблица с указанием времени и физического расположения образцов. |
chunk | Модуль, состоящий из нескольких семплов трека. |
来源于Android Медиа Рекодер для записи видео,Платформа — Huawei T8300 и TCL968.,использоватьmp4infoПосмотреть ниже:
Далее будут объяснены некоторые полезные аспекты кодирования h264, а остальные описываться не будут.
Как показано ниже,Первые четыре байта00 00 00 00 18означает, чтоboxизsizeдля24байт(Голова в комплекте),Затем66 74 79 70даftypизBOX TYPE, другие — совместимость некоторых форматов и другая соответствующая информация.
Как показано на рисунке ниже, BOX YPE — это 6D 64 61 74, за которым следует 00 00 09 39, указывающий длину среза.
Как показано на рисунке ниже, красный — это ТИП КОРОБКИ.
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 соответственно.
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.
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