В каком формате этот поток JPEG с моей дешевой китайской IP-камеры? - PullRequest
4 голосов
/ 03 сентября 2011

У меня есть дешевая китайская IP-веб-камера с веб-интерфейсом, показывающим живое видео.Видео выглядит как последовательность изображений JPEG, подаваемых в браузер.Если я указываю wget на URL http://my -ip-camera / video.cgi , я получаю большой поток потоковых данных в следующем формате:

--ipcamera
Content-Type: image/jpeg
Content-Length: 46056

JFIF header data
... lots of data ...

, этот шаблон повторяется длякаждый "кадр".

Это какой-то "стандартный" формат потоковой передачи, который я могу воспроизводить / транскодировать с чем-либо, или это какая-то составленная коллекция JPEG-файлов, принудительно вставленная в мой браузер, которая просто отображает их настолько быстро, насколько это возможно?

Я пытался использовать VLC, но он не смог обработать URL.

Программное обеспечение в моей IP-камере довольно ужасное, поэтому я хочу захватить этот поток и обработать его на своем компьютере с Linux вместо этого,Есть ли какая-то коллекция инструментов ffmpeg / mplayer, которые я могу использовать для этого?

Ответы [ 2 ]

6 голосов
/ 03 сентября 2011

Похоже, MIME multipart с "ipcamera" в качестве границы.

http://en.wikipedia.org/wiki/MIME#Multipart_messages

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="frontier"

This is a message with multiple parts in MIME format.
--frontier
Content-Type: text/plain

This is the body of the message.
--frontier
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==

Можете ли вы опубликовать самое начало данных?

Естьмного библиотек для работы с MIME multipart.Я думаю, вы должны найти библиотеку JS для анализа MIME-multipart и передачи ее в динамический DOM браузера.Или вы можете использовать perl или другие сценарии с поддержкой MIME и получать jpegs из этого потока.

ОБНОВЛЕНИЕ:

на самом деле, это "M-JPEG over HTTP" http://en.wikipedia.org/wiki/Motion_JPEG#M-JPEG_over_HTTP

Серверное программное обеспечение, упомянутое выше, передает поток JPEG-файлов по HTTP.Специальный тип содержимого mime-типа multipart / x-mixed-replace; border = информирует браузер о том, что несколько частей должны получить ответ, разделенный специальной границей.Эта граница определена внутри MIME-типа.Для потоков M-JPEG данные JPEG отправляются клиенту с правильным HTTP-заголовком.Соединение TCP не закрывается, пока клиент хочет получать новые кадры, а сервер хочет предоставить новые кадры.Двумя основными реализациями такого сервера являются тест-сервер «cambozola» и сервер веб-камеры «MJPG-Streamer».

Вот пример генерации этого формата http://nakkaya.com/2011/03/23/streaming-opencv-video-over-the-network-using-mjpeg/ - это точночто у вас есть.

Вот клиент Python: http://code.google.com/p/python-mjpeg-over-http-client/

4 голосов
/ 03 сентября 2011

Звучит как Motion JPEG или, по крайней мере, какой-либо его вариант.

...