SPS и PPS (он же dwSequenceHeader) в кодировщике H264 Media Foundation
Я использую кодер H264 от Media Foundation (MFT).
Я извлек SPS и PPS из него, потому что он мне нужен для плавной потоковой передачи.
MSDN говорит, что число байтов, используемых для поля длины, которое появляется перед каждым NALU, может быть 1, 2, or 4
, Это все в порядке байтов в сети. Как видите, первые 4 байта в буфере 0, 0, 0, 1
, Если мы применим любую из возможных длин, мы ничего не получим. Если количество байтов, используемых для длины, равно 1, тогда длина равна нулю, если это 2, длина снова равна нулю. Если это 4, длина первого NALU равна 1?! И это не правильно.
Кто-нибудь знает, как я должен интерпретировать этот SPS и PPS, соединенные вместе??
1 ответ
Ответ здесь прост: данные действительны и отформатированы в соответствии с Приложением B, с префиксом стартовых кодов 00 00 00 01
и не пробегать длину кодирования.
H.264 объяснение (частично) объяснено - для чайников
Формат приложения B
в этом формате каждому NAL предшествует четырехбайтовый начальный код: 0x00 0x00 0x00 0x01, таким образом, чтобы узнать, где начинается NAL и где он останавливается, вам нужно будет прочитать каждый байт битового потока в поисках этих начальных кодов, это может быть проблемой, если вам нужно конвертировать между этим форматом и другим форматом.
Более подробная информация о спецификации H.264 - свободно доступна для скачивания. Страница 326 начинается с "Приложение B - Формат потока байтов".