Исследование потока с китайского видеорегистратора

Опубликовано: 05.10.2017

Исследование потока с китайского видеорегистратора

США 2805: О школе нашей продолжают задавать вопросы

Приветствую спецов! Возникла проблемка, надеюсь, смогу тут найти подсказку, в каком направлении копать. Краткая предыстория ниже (осторожно, многобукав).


Разведопрос: Константин Анисимов про Таиланд

Задача: вывод куда-нибудь (да хоть в mplayer) видеопотока с дешёвого китайского четырёхканального h264-видеорегистратора с целью просмотра в реальном времени и последующей его записью.

Проблема: регистратор вещает в своём собственном формате. Просмотреть картинки с камер можно только через специальную виндовую прогу (DVRemote.exe) либо через EI7 с какой-то гнилой ботвой на ActiveX. Записываются файлы с него тоже в непонятном и мало изученном (но, как я понял, популярном в подобных регистраторах) формате с расширением .irf. Кругом засада...


ДТП! Внезапно на трассе Авария на видеорегистратор ДТП! Авария! Видеорегистратор

Что уже сделано: с помощью wireshark'а на регистраторе обнаружено приложение cgi-bin, которое выдаёт поток, а так-же исследованы его (приложения) параметры. С помощью функции проводной акулы «Follow stream» записаны сеансы общения через 80й порт (на иных портах активности не наблюдалось) между родным ПО и регистратором.

Таким нехитрым образом были обнаружены посылки управления (переключение каналов, управление PTZ и т.д.), разобрать которые не составило труда. Далее отбирались те tcp-потоки, в которых был запрос GET к этому cgi-скрипту и ответ HTTP/1.0 200 OK; Content-type: video/h264. Затем в двоичном редакторе происходило разделение заголовков http и, собственно, потока, получившиеся файлы были сохранены на диск в формате «как есть» (raw) и скормлены mplayer'у. Без особого успеха...

Но в один прекрасный момент был записан фрагмент, в котором видно проскакивающие кадры одной из камер в перемешку с синим video-loss-экраном (два канала не подключены) и сильными помехами (очевидно, следствие подмешивания в поток каких-то служебных данных либо мультиплексирование сигналов со всех четырёх каналов в этот единый поток). Данный фрагмент доступен для загрузки тут, 2.3 мб: http://tfsoft.org.ua/~twister/dvr_captured_sample.h264

Конкретные вопросы: насколько велики шансы за разумный период времени извлечь нормальный видеопоток из этой каши? По сути, всё управление (переключение каналов, управление трансфокатором и фокусом камер) уже есть, осталось лишь картинку получить.

Если я правильно понимаю, мне нужно обнаружить записи Sequence Parameter Set и Picture Parameter Set, чтоб иметь представление о потоке, но как и где их искать? Во внутренностях h264 не шарю почти ничего...

P.S.: Можно, разумеется, выкинуть этот регистратор и использовать pci-плату с выводом видео через video4linux, но для этого нужно будет очень далеко тянуть провода от аналоговых камер (одна из которых весьма специфична  — радиационно-стойкая, потому вариант с заменой на IP-камеры не рассматривается). Да и чисто из спортивного интереса было-бы неплохо решить эту задачку, не так-ли? ;)

rss