Добрый день! Под Новый год у меня возникла идея построить что-то вроде видеонаблюдения.
Все необходимое у меня было под рукой:
- Одноплатный компьютер Raspberry Pi Модель Б
- Веб-камера Веб-камера LOGITECH HD C270
Основное отличие моей идеи от идеи автора в том, что я имею возможность просматривать события в реальном времени, не теряя при этом основной функции – записи видео.
Знакомство
Итак, для начала познакомимся с основным «компонентом»: Внешний вид 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 без графической оболочки.
Процесс установки достаточно прост и не нуждается в подробном описании, поэтому перечислю основные факты, на которые стоит обратить внимание:
- Установка часового пояса
- Установка имени компьютера
- Включение доступа по SSH
- Обновление системы
Подготовка
Для начала установим все необходимые пакеты: 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 #Сделай сам #Обработка изображений
-
Mighty Mouse – Пищащая Мышь.
19 Oct, 24 -
Кто Ты: Крутой, Профи Или Неудачник?
19 Oct, 24 -
Случайные Заметки. Мдкт.
19 Oct, 24 -
Нло Упал В Красноярской Тайге
19 Oct, 24