13 мая 2016

Бюджетный видеорегистратор [Raspberry Pi + Bash + Google Drive]

Не могу представить себе ежедневный просмотр камер видеонаблюдения, хоть в реальном времени, хоть на перемотке. Гораздо проще пролистать пару десятков снимков для оценки ключевых событий.

Это было первый доводом к написанию своего решения. А вторым доводом стало отсутствие желания тратить деньги на отдельное устройство для записи видео.



В моем случае, достаточно статичного изображения с 2-х камер, раз в 10 минут.

Итак задача:
1. Делать снимки с 2-х IP камер, раз в 10 минут.
2. Склеивать полученные 2 снимка в 1 файл.
3. Выкладывать полученное изображение на Google Drive.

Скрипт написан на Bash и запускается на Raspberry Pi2(малина у меня также выполняет другие функции). Для склеивания изображений понадобиться ImageMagick. Для синхронизации с диском гугла- Grive.

Самое сложное найти URL по которому китайская IP камера отдает изображение по протоколу RSTP. В этом может помочь этот сайт.
#!/bin/bash
TIME=$(date +%H-%M)
DATE=$(date +%d-%m)
DIRECTORY=/mnt/USB/Video/$DATE

if [ ! -d "$DIRECTORY" ]; then
  mkdir $DIRECTORY
fi

for i in 1 2
do
  if ping -c 3 192.168.1.25$i > /dev/null ; then
    avconv -rtsp_transport tcp -i \
    "rtsp://192.168.1.25$i/user=admin&password=123123&channel=1&stream=0.sdp" \
    -f image2 -vframes 1 -pix_fmt yuvj420p /tmp/$TIME-CAM$i.jpeg
  fi
done

if [ -f /tmp/$TIME-CAM1.jpeg ] & [ -f /tmp/$TIME-CAM2.jpeg ]; then
  convert +append -strip -interlace Plane -quality 60 \
  /tmp/$TIME-CAM1.jpeg /tmp/$TIME-CAM2.jpeg /tmp/$TIME.jpeg
  mv /tmp/$TIME.jpeg $DIRECTORY/
  rm /tmp/$TIME-CAM1.jpeg
  rm /tmp/$TIME-CAM2.jpeg
else
  for i in 1 2
  do
    mv /tmp/$TIME-CAM$i.jpeg $DIRECTORY/
  done
fi

if ! ps aux | grep "[g]rive" > /dev/null; then
  cd /mnt/USB && /usr/local/bin/grive –dry-run
fi

Дальше остается только добавить задание в Cron и наслаждаться результатом.