Что означает этот заголовок H264 NAL?

0000 0109 1000 0001 6742 0020 e900 800c
3200 0001 68ce 3c80 0000 0001 6588 801a

Насколько я знаю,0000 01 код начального префикса для идентификации блока NAL. Что значит "09 .... " имею в виду? Это тип заголовка байта?

Ответы на вопрос(4)

Это определяет тип пакета. Формат такой:

+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI|  Type   |
+---------------+

Вы уверены, что это заголовок h.264 NAL? Из того, что вы предоставили, это неПохоже, что это заголовок с предоставленным вами контекстом.

 ablmf06 нояб. 2009 г., 08:52
Я использовал инструмент анализа видеопотока для анализа видеопотока, и он отмечает границы кадров. Я взял начало I кадра. И код префикса00 00 01 " также показал, что это НАЛ.
 Matt06 нояб. 2009 г., 10:22
э-э, я ошибся в своей математике в вышеприведенном комментарии: 0000 0109 - это 4 байта, а не 8 (и 32 бита, а не 64), но я все равно не укажу код префикса, который вы 'ищу.
 Matt06 нояб. 2009 г., 10:21
Этот код префикса неt показывает, что это NAL, потому что 0000 0109 составляет 8 байтов (64 бита), и искажение первых 16 байтов не даст префиксного кода, указывающего его 'с NAL. Помню тебя'Вы смотрите на шестнадцатеричный дамп, но все спецификации и определения относятся к двоичному.
 flamming_python02 июл. 2013 г., 10:20
@Matt На самом деле, часть 000001 в 00000109 является действительной последовательностью синхронизации / префикса NAL.

http://www.itu.int/rec/T-REC-H.264-201304-S , В частности, в таблице на стр. 63 (по состоянию на январь 2014 г.) перечислены все допустимые типы NAL.

Чтобы выяснить, что вы смотрите, посмотрите на первые 4 байта. Если NAL находится в "Приложение Б " обрамление они либо будут00 00 01 или же00 00 00 01, Эта последовательность запрещена / подавлена в потоке битов H.264, поэтому, если вы видите ее, вы точно знаете, что смотрите на начало NAL. Тип NAL - это 5 младших битов после 1. В коде:

int nalType = p[2] == 1 ? (p[3] & 0x1f) : (p[4] & 0x1f);

Также в H.264 жаргон IDR означает I-кадр, а не IDR означает P или B кадров.

С помощью приведенной выше информации мы можем взглянуть на вышеуказанный поток и увидеть разделитель блока доступа, за которым следуют SPS, PPS и первый I-кадр.

 Iwillnotexist Idonotexist21 мар. 2017 г., 06:31
Исправление: Все кадры IDR являются I-кадрами, но не все I-кадры являются кадрами IDR. Кадры IDR (мгновенное обновление декодера) представляют собой специальные I-кадры, которые не только содержат полное изображение, но также указывают на отсутствие P / B-кадра.после IDR разрешено ссылаться на фреймдо РДЭ.

0x000001 - это код начального префикса NAL (он также может быть 0x00000001, в зависимости от реализации кодера).. Этот конкретный тип является разделителем модуля доступа. Обратите внимание, что за ним сразу же следует другой блок NAL, определенный 0x67, который является типом NAL 7, который является набором параметров последовательности.

Там's также набор параметров изображения:

00 0001 68 ...

... и начало ключевого кадра:

0000 0001 65 ...

    0000 0109 1000 0001 6742 0020 e900 800c
    3200 0001 68ce 3c80 0000 0001 6588 801a

-> 000001| 09 ()| 10 | 000001 | 67(SPS) | xxxx (SPS data)
   xx | 000001 | 68 (PPS)| xxxx (PPS data)

, SPS, PPS - это тип NALU (Единицы уровня сетевой абстракции). NALU имеет около 31 типа.

09 означает разделитель единиц доступа.

Разделитель доступа (). - это необязательный NALU, который можно использовать для разграничения кадров в элементарном потоке. Это не требуется (если иное не указано контейнером / протоколом, таким как TS), и часто не включается для экономии места, но может быть полезно найти начало кадра без необходимости полного разбора каждого NALU.

Проверь этоответ для дополнительной информации.

у меня тоже естьвопрос о том, как декодировать поток h264 (в iOS).

 Hwangho Kim30 авг. 2017 г., 15:29
Знаете ли вы значение этого 10 после 09 (AUD)?

Ваш ответ на вопрос