$put_perv_real = "/home/www/dvakompa-ru/dopol/"; ?>
Рассмотрим, как можно использовать Raspberry Pi для трансляции изображения с веб-камеры USB в сеть. Прежде всего подключим к Raspberry Pi веб-камеру USB. У меня в наличии имелись две веб-камеры: Defender Glory 327 и Logitech C270 — подключим сначала Defender Glory 327 (рис. 4.22).
Прежде всего в терминале устанавливаем пакет iibv4i-o:
sudo apt-get install libv4l-0
Далее необходимо установить пакет mjpg-streamer-rpi:
wget http://www.bobtech.ro/get?download=36:mjpg-streamer-rpi mv get\?download\=3 6\:mjpg-streamer-rpi mjpg-streamer-rpi.tar.gz tar -zxvf mjpg-streamer-rpi.tar.gz
Параметры потока можно настроить в файле mjpg-streamer.sh:
cd mjpg-streamer
sudo nano mjpg-streamer.sh
По умолчанию эти параметры имеют следующие значения:
* VIDEO_DEV="/dev/video0" — идентификатор устройства;
* frame_rate="30" — частота кадров (FPS);
* resolution="640x480" — разрешение;
* port="8080" — HTTP-порт;
* YUV="false" — флаг YUV-кодирования.
Изменяем необходимые для камеры Defender Glory 327 настройки:
* frame_rate="1" — частота кадров (FPS);
* resolution="320x240" — разрешение;
* YUV="true" — флаг YUV-кодирования.
Для запуска трансляции запускаем bash-скрипт mjpg-streamer.sh:
sudo ./mjpg-streamer.sh start
Остановка трансляции осуществляется командой:
sudo ./mjpg-streamer.sh stop
Видеопоток станет доступен по адресу (URL) следующего вида:
http://raspberrypi:8080?action=stream
Пример потокового изображения с камеры показан на рис. 4.23.
Надо отметить, что задержки показа изображения по сети достигали у меня 2-3 секунд. Аппаратное ускорение кодирования видео на Raspberry Pi отсутствует, а без него, программно, сжатие идет со скоростью 2-5 fps и на все 100 % загружает машину.
Пришлось пойти другим путем и применить GStreamer — мощный фреймворк1 для построения мультимедийных приложений, который позволяет создавать приложения различных уровней сложности, начиная от простого консольного плеера и заканчивая полноценными аудио/видеоплеерами, мультимедийными редакторами и т. п. Мультимедийный программный комплекс GStreamer обладает интерфейсом в виде командной строки.
Для установки GStreamer в терминале выполним команду:
sudo apt-get install gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-tools
Для запуска потока на конкретный компьютер набираем в терминале:
sudo gst-launch-0.10 v4l2src device=/dev/video1 ! 'video/x-raw- yuv,width=640,height=480, framerate=20/1'! ffmpegcolorspace ! rtpvrawpay ! udpsink host=192.168.0.3 port=5100 sync=false
Здесь:
* device=/dev/video1 — камера-источник картинки;
* video/x-raw-yuv,width=640,height=480, framerate=20/1 — формат картинки;
* host=192.168.0.50 port=5100 — IP-адрес компьютера, куда посылается поток.
Видео передается по протоколу RTP. Этот протокол работает на транспортном уровне и используется при передаче трафика реального времени. На стороне компьютера-получателя потока в терминале вводим:
gst-launch udpsrc caps="application/x-rtp, media=(string)video,clock-rate=(int)90000, encoding-name=(string)RAW, sampling=(string)YCbCr-4:2:0, depth=(string)8, width=(string)640, height=(string)480, ssrc=(uint)1825678493, payload=(int)96, clock-base=(uint)4068866987, seqnum-base=(uint)24582" port=5100 ! queue ! rtpvrawdepay ! queue ! ffmpegcolorspace ! autovideosink
и на компьютере-приемнике должны увидеть поток. Однако передать поток с вебкамеры Defender Glory 327 у меня не получилось, зато камера Logitech C270 (рис. 4.24) с задачей прекрасно справилась. Задержки сигнала при этом практически на было заметно.
1 Фреймворк — программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта.