Вывод изображения с 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.