Некоторое время назад мы рассматривали способ организации трансляции изображения с веб-камеры с помощью инструмента ffserver. Однако если снимаемая картинка не очень динамичная, то удобнее и экономнее (в плане трафика) не транслировать видео-поток, а слайд-шоу из последовательных изображений. Далее будет показано как можно легко и быстро организовать такую трансляцию.
Так же как и в предыдушей статье мы используем дистрибутив Ubuntu и web-камеру Skypemate WC-103M. Для снятия снимков с камеры мы будем использовать утилиту uvccapture. Установим её:
apt-get install uvccapture
Затем создадим рабочий каталог для нашей системы:
mkdir -p /var/www/webcam
Затем создадим скрипт /var/www/webcam/update_img.sh:
#!/bin/sh cd `dirname $0` /usr/bin/uvccapture -d/dev/video0 -m -x640 -y480 -owebcam.jpg 2> /dev/null
Теперь нужно добавить в файл /etc/crontab строчку:
* * * * * root /var/www/webcam/update_img.sh
Теперь каждую минуту будет создавать новый снимок с камеры и сохраняться в файле /var/www/webcam/webcam.jpg. За более подробным описанием опций утилиты uvccapture рекомендуем обратиться к документации.
Далее создадим HTML-страничку /var/www/webcam/index.html:
<HTML> <HEAD> <TITLE>Image from webcam</TITLE> </HEAD> <BODY> <IMG src="webcam.jpg" id="img-from-webcam" width="640" height="480"> <SCRIPT type="text/javascript"> <!-- var intervalID = window.setInterval(function() { var img_url = 'webcam.jpg?rand='+Math.random(); document.getElementById('img-from-webcam').src = img_url; }, 60000); //--> </SCRIPT> </BODY> </HTML>
javascript на страничке будет каждую минуту перечитывать картинку. Для доступа к страничке нужно поднять http-сервер. В самом простом случае подойдёт наш любимый thttpd. Установим его:
apt-get install thttpd
Приведём файл /etc/thttpd/thttpd.conf к виду:
port=80 dir=/var/www/webcam chroot user=www-data cgipat=/cgi-bin/* throttles=/etc/thttpd/throttle.conf logfile=/var/log/thttpd.log charset=utf-8
Перезапустим веб-сервер:
invoke-rc.d thttpd restart
Теперь можно открыть в браузере адрес «http://<ваш_сервер>/» и начать смотреть трансляцию с нашей веб-камеры. На этом всё. Приятной работы!