Вывод изображения с IP-камеры на сайт (часть 1, прямое дублирование скриншотов)

Внимание! С 2010 года статья безнадежно устарела. Сейчас используются другие технологии.

В этой статье будет рассмотрено, как вывести изображение с IP-камеры, которая умеет отдавать изображение в формате MJPEG на web-страницу.

Сразу хочу отметить, что прямой доступ к камере давать нельзя, т.к. пользователей много, а к камере канал узкий. Поэтому было принято решение делать все через промежуточный сервер, который будет брать изображение с камер и отдавать его пользователям.

Камера, на которой я ставил эксперименты имела возможность отдавать картинку двумя способами: сырой MJPEG поток и статичное изображение, которое обновляется при каждом запросе.

Первый вариант, который мне пришел в голову - забирать статичное изображение wget-ом и сохранять его в определенном месте на веб-сервере. Клиентская часть выглядела в виде HTML странички, которая выводила это статичное изображение и обновлялась с определенным интервалом. Далее, в том месте, где мне нужно было вывести изображение с камеры, я с помощью iframe вставил эту HTML страничку.

Скрипты прилагаются:

cam.sh

#!/bin/bash

cd /var/www/html/cam/
while [[ 1 == 1 ]]
do
    wget http://login1:pass@ip1/images1sif -O image_1.jpg
    wget http://login2:pass@ip2/images1sif -O image_2.jpg
    sleep 0.4
    mv image_1.jpg image1.jpg
    mv image_2.jpg image2.jpg 

Этот скрипт забирает картинки с двух камер и сохраняет их в папку /var/www/html/cam/ (доступную из веба). Перед запуском следует заменить images1sif на адрес скриншота в вашей камере (смотрим в документации). После этого такая страничка выводит их с определенной периодичностью.

cam1.html (пробел после < необходимо удалить)

< HTML>
    <BODY>
	<img src="http://ServerIP/cam/image1.jpg" />
    </BODY>
< /HTML>

Для второй камеры, соответственно 1 заменить на 2.