Видеонаблюдение На Raspberry Pi

Добрый день! Под Новый год у меня возникла идея построить что-то вроде видеонаблюдения.

Все необходимое у меня было под рукой:

  • Одноплатный компьютер Raspberry Pi Модель Б
  • Веб-камера Веб-камера LOGITECH HD C270
После прочтения статья Я решил немного развить идею автора.

Основное отличие моей идеи от идеи автора в том, что я имею возможность просматривать события в реальном времени, не теряя при этом основной функции – записи видео.



Знакомство
Итак, для начала познакомимся с основным «компонентом»: Внешний вид Raspberry Pi:

Видеонаблюдение на Raspberry Pi

Характеристики:
  • Процессор Broadcom BCM2835 700 МГц ARM1176JZFS с FPU и графическим процессором Videocore 4
  • Графический процессор обеспечивает Open GL ES 2.0, OpenVG с аппаратным ускорением и высокопрофильное декодирование 1080p30 H.264.
  • Графический процессор способен работать со скоростью 1 Гпиксел/с, 1,5 Гтекселей/с или 24 ГФЛОПС с фильтрацией текстур и инфраструктурой DMA.
  • 512 МБ ОЗУ
  • Загрузка с SD-карты под управлением версии операционной системы Linux
  • Разъем Ethernet 10/100 BaseT
  • HDMI-видеовыход
  • 2 разъема USB 2.0
  • Композитный видеовыход RCA
  • разъем для SD-карты
  • Питание от разъема microUSB
  • аудиовыход 3,5 мм
  • Разъем для видеокамеры Raspberry Pi HD
  • Размер: 85,6 х 53,98 х 17 мм».

  
  
  
  
  
  
  
  
  
  
  
   

pi@hall-pi ~ $ cat /proc/cpuinfo processor : 0 model name : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 2.00 Features : swp half thumb fastmult vfp edsp java tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xb76 CPU revision : 7 Hardware : BCM2708 Revision : 000e Serial : 000000005a82c372

Список официально поддерживаемых дистрибутивов можно найти.

здесь .

Я выбрал Raspbian без графической оболочки.

Процесс установки достаточно прост и не нуждается в подробном описании, поэтому перечислю основные факты, на которые стоит обратить внимание:

  1. Установка часового пояса
  2. Установка имени компьютера
  3. Включение доступа по SSH
  4. Обновление системы
После выполнения всех необходимых настроек можно приступать.



Подготовка
Для начала установим все необходимые пакеты:

sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion

Затем скачайте и соберите mjpg-стример:

sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make

все данные мы будем хранить в облаке, то настроим работу с удаленной файловой системой через WebDAV:

sudo apt-get install davfs2 sudo mkdir /mnt/dav sudo mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi

Чтобы не вводить каждый раз логин и пароль, необходимо добавить их в файл /etc/davfs2/секреты

/mnt/dav user password



Рабочий процесс
Добавим в /etc/rc.local команды для монтирования WebDAV и запуска скрипта для трансляции в сеть:

mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi cd /home/pi/mjpg-streamer && .

/mjpg_streamer -i ".

/input_uvc.so" -o ".

/output_http.so -w .

/www"

Теперь, зайдя по адресу http://:8080/ мы получим доступ к камере.

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



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

Поскольку оно уже занято (изображение транслируется веб-сервером), то воспользуемся возможностью получения текущего изображения с веб-сервера:

curl http://localhost:8080/Эaction=snapshot > out.jpg

Если мы хотим нарисовать дату фотографии на изображении, мы можем использовать команду конвертировать

timestamp=`stat -c %y out.jpg` convert out.jpg -fill black -fill white -pointsize 15 -draw "text 5,15 '${timestamp:0:19}'" out_.jpg

Полная версия скрипта:

#!/bin/bash filename=$(perl -e "print time") foldername=$(date --rfc-3339=date) curl http://localhost:8080/Эaction=snapshot > $filename timestamp=`stat -c %y $filename` mkdir /mnt/dav/out/$foldername convert $filename -fill black -fill white -pointsize 15 -draw "text 5,15 '${ timestamp:0:19 }'" /mnt/dav/out/$foldername/$filename.jpg rm $filename

Видео собирается с помощью команды avconv:

avconv -r 10 -i d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi

Полная версия скрипта видео сборки:

#!/bin/bash filename=$(date --rfc-3339=date) i=0 for f in `ls -tr /mnt/dav/out/$filename/*.

jpg 2>/dev/null` do newf=`printf d $i`.

jpg echo $f "-->" $newf mv $f $newf i=$((i+1)) done rmdir -R /mnt/dav/out/$filename/ avconv -r 10 -i d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$filename.avi rm *.

jpg

Теперь осталось только прописать выполнение скриптов в планировщике Cron:

* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh



Пример видео


Заключение
Такой подход помогает исключить необходимость тратить много времени на просмотр видео, а также снижает стоимость конечного продукта.

Благодаря наличию полноценной ОС появляется возможность расширить функционал в нужном направлении.

P.S. К сожалению, публикуйте в хабах «Сделай сам или сделай сам, Железо, Гаджеты».

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

Теги: #Raspberry Pi #Сделай сам #Обработка изображений

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.