Рек. МСЭ-Т H.264 и приложение B
Рекомендация H.264 - это стандарт видеокодеков, определенный Международным союзом электросвязи, T Сектор стандартизации электросвязи (ITU- T ). Он доступен бесплатно и можно загрузить с их сайта .
Стандарт определяет формат потока байтов, самым низким уровнем абстракции которого является NALU (блок абстракции сетевого уровня).
Может существовать 32 типа NALU, хотя около 11 зарезервированы или не используются. Некоторые несут данные фрагмента видео, некоторые нет. Два типа NALU будут важны позже в этом обсуждении: SPS (набор параметров последовательности) и PPS (набор параметров изображения). И то, и другое требуется для декодирования фрагмента видео и предоставления важной информации о потоке, такой как его размер и интерпретация необработанных данных.
H.264 оставляет неопределенным, как эти NALU транспортируются и создаются. Тем не менее, она описывает одну возможную схему в собственном Приложении В. Стандарта. При отсутствии более подходящего названия эта схема обычно называется Приложение B .
Схема заключается в добавлении префикса NALU к легко запускаемому синхронизирующему коду, который не может быть в пределах NALU: 3- или 4-байтовый шаблон 00 00 01
или 00 00 00 01
. Остальная часть NALU тогда следует. Эта схема популярна в аппаратных и / или потоковых ситуациях, потому что она позволяет легко получить битовую блокировку и байтовое выравнивание, периодически отправляет SPS / PPS «в полосе» и, таким образом, позволяет настраиваться на поток в произвольной точке, чтобы начать декодирование, и имеет интересное свойство, заключающееся в том, что между NALU можно достоверно отправить произвольное число 0 битов или байтов.
ISO / IEC 14496 MPEG-4 и AVCC
MPEG-4 - это семейство из нескольких «частей» стандартов для кодирования и хранения аудио-видео, созданных совместной группой Международной организации по стандартизации (ISO) и Международной электротехнической комиссии (IEC), называемой Группой экспертов по движущимся изображениям ( MPEG). Несколько частей только семейства MPEG-4 имеют отношение:
- MPEG-4, часть 10 / Расширенное кодирование видео (AVC), технически идентичное ITU-T H.264. Бесплатно .
- MPEG-4, часть 12, Базовый формат медиафайлов ISO (BMFF), определяет общий формат файла двоичного контейнера, который может быть специализированным. Бесплатно .
- MPEG-4 Part 14 (MP4), который специализируется на части 12 для видео в целом и определяет расширение и формат файла
.mp4
. Эта часть является очень дорогой ( 88 швейцарских франков ) и недоступна для общественности.
- MPEG-4 часть 15, которая определяет, как видеоданные, структурированные NALU, такие как видео часть 10 / H.264, хранятся в части 12 ISO BMFF. Эта часть является чрезвычайно дорогой ( 198 швейцарских франков ) и недоступна для широкой публики, но она, части 14, 12 и 10, является основой широко используемого
.mp4
контейнер с H.264-кодированным видео.
AVCC
К сожалению, Часть 15 также является частью, которая определяет новую схему для формирования NALU. Эта схема предлагает извлечь все NALU SPS / PPS в «внеполосную» структуру, называемую AVCC , а также разделить и заменить префиксы начального кода перед NALU на (почти всегда) 4 -байтовое число, представляющее размер в байтах следующего NALU.
Эта схема популярна для быстрого и случайного поиска по видеоданным, и, собрав все данные конфигурации видеодекодера (SPS / PPS) в одном стандартизированном месте, можно настроить видеодекодер один раз в начале, а затем не беспокоиться о неожиданных неожиданностях, таких как динамическое изменение размера видеокадра (что позволяет Приложение B).
К счастью, намеки на структуру AVCC существуют онлайн, как и код для перевода между AVCC и Приложением B.
Ваши потребности
Кажется, вам нужно преобразовать AVCC -> Приложение B. Это можно сделать с помощью фильтра битового потока FFmpeg, h264_mp4toannexb
:
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts