четверг, 16 марта 2017 г.

Делаю видеорегистратор из Linux

Прикупил IP-камеру от китайского производителя Luckertech. Встал вопрос использования по назначению. Чтобы просто смотреть - проблем нет, чтобы зацепить на видеорегистратор - тоже. Но захотелось писать видео на комп.

Начинаем пляски с бубном. Пациент - сервер с AltLinux p7 на борту, без графики, на нем крутятся MySQL, Apache, теперь еще и видео решил туда засунуть. А то стоят внутри два винта практически пустые.

Итак, для начала - ставим live555
Затем пытаемся запустить openRTSP и получаем облом в виде

Unable to determine our source address: This computer has an invalid IP address: 0.0.0.0
из-за чего, подозреваю, имеются некоторые проблемы.

Гугление показало, что проблема решается командой

route add -net 224.0.0.0/4 dev eth1
 
то есть, необходима маршрутизация бродкаста. Eth1  - внутренний интерфейс на сервере, смотрит в локалку, где и висит камера.
Эта проблема решилась, заодно вылечив чтение потока по UDP (без ключа -t в openRTSP), зато остались пара других.
Первая - openRTSP считывает данные ровно 120 секунд, после чего тупо останавливается и больше ничего не делает. Висит молча и все.
Вторая - даже те 120 секунд, если их с помощью avconv сконвертил в mp4 на выходе дают ускоренное воспроизведение.

В итоге - установил пакет live555 из репы альта и скачал оригинальный пакет с сайта live555, вытащил оттуда бинарник openRTSP, положил его в ~/video и накатал скрипт


#!/bin/sh

while [ 1 ]; do
  ~/video/openRTSP -q -K -f 25 -d 1200 -v -B 400000 -b 400000 -t rtsp://192.168.0.10:554//user=admin_password=*****_channel=1_stream=0.sdp > "/video/q$(date +%Y-%m-%d+%H-%M-%S).avi"
done



запуск скрипта в фоне./runvreg &

и все. Начинаем складывать видео по 20 минут в /video.
Ну и вполне ожидаемо, что место будет кончаться. Каждый файл примерно занимает по 300 мегабайт. Чтобы обеспечить цикличность, взял период в 2 недели и накатал скрипт cleanvideo


#!/bin/bash
find /video -type f -mtime +14 -print0 | xargs -0 rm -f



поставил его в крон, чтобы раз в сутки подчищал.





Комментариев нет:

Отправить комментарий