2016-10-05 7 views
0

Я пытаюсь обнаружить I-кадров в TS с помощью функции поиска для:H.264 полезной нагрузки без каких-либо '0x00 0x00 0x00 0x01 0x65'

0x00 0x00 0x00 0x01 0x65

Но, это не работает на некоторых потоках. В некоторых потоках эта последовательность встречается очень редко. Есть ли другой способ обнаружения I-кадров?

Редактировать: Я также попытался сохранить TS в файл, а затем извлечь полезную нагрузку H.264. Извлеченная полезная нагрузка содержит только несколько последовательностей байтов 0x00 0x00 0x00 0x01 0x65.

ответ

0

То, что вы пытаетесь сделать, выглядит как слепое предположение. Спецификация H.264: freely available. 00 00 00 01 описан в разделе B «Формат потока байтов». Тогда ваш 65 является то, что отображается в раздел 7.3.1 «синтаксис блока NAL»:

enter image description here

Таким образом, вы можете разделить ваш поток байт в NAL единиц правильно и определить, почему ваша эвристика не обнаруживает I-Frames. В частности, вы предполагаете, что значение двух бит равно трем точно.

Кроме того, типы среза определяются как это:

enter image description here

Смотрите также:

+0

Хорошо, я искал 0x25 и 0x45. Я пробовал, но эти единицы вообще отсутствуют. Тем не менее, эти стандартные фрагменты не являются ответом на мой вопрос. – kytodrk

+1

NAL тип 5 предоставит вам IDR. Чтобы найти I-фреймы, которые не являются IDR, вам придется разматывать бит-поток для типов срезов - это то, что объясняет таблица выше ссылок и связанный ответ. –

+0

Ты прибил его сейчас. Рамки, не связанные с IDR, также должны быть обработаны! – kytodrk