Найти в Дзене
0x41lex

Простая запись с камер в linux

Эта заметку я хочу оставить для новичков в linux которые хотят организовать свое видео наблюдение с минимальными затратам.
Допустим у Вас есть машина на linux и желание поставить полноценную запись на HDD, есть конечно специальные продукты которые с этой задачей помогут. Я их тестировал, но они очень своеобразны и что говорить есть свои дыры.
Подумав, почитав литературу решил попробовать

Эта заметку я хочу оставить для новичков в linux которые хотят организовать свое видео наблюдение с минимальными затратам.

Допустим у Вас есть машина на linux и желание поставить полноценную запись на HDD, есть конечно специальные продукты которые с этой задачей помогут. Я их тестировал, но они очень своеобразны и что говорить есть свои дыры.

Подумав, почитав литературу решил попробовать простейшую запись, при помощи скриптов bash. И получилось.

#!/bin/bash

"сколько запущено процессов?

a=`ps ax | grep "cam1_rec" | wc -l`

if [ $a -le 2 ]

then

echo "Starting cam1_rec"

bash /home/alexsx19/red/_script/video/cam1_rec.sh

else

echo "Not starting cam1_rec"

fi

$(ls -t /home/alexsx19/red/_cam/video/* | sed -e '1,288d' | xargs -d '\n' rm)

Скрипт размещаем в в файл sh, в cron пишем правило.

Это скрипт ротации файлов. Он необходим для очистки HDD от старых файлов. Пере запись производится циклом, старые записи затираются новыми.

Далее сам скрипт записи потока с камеры

#!/bin/bash

camIP="192.168.1.10"

namecam="cam1"

DUR='00:10:00'

CTIME=`date +%Y%m%d_%H%M%S_`$namecam

PATH2="/home/alexsx19/red/_cam/video/$CTIME.avi"

BIT='3072k'

RSL='1920x1080'

FPS='25'

RTSP="rtsp://"$camIP":554/user=server&password=ТУТ ПАРОЛЬ ОТ КАМЕРЫ&channel=1&stream=0.sdp"

echo "=====-" $CTIME "-====="

'решетка'Ping time

count=$(ping -c 1 $camIP | grep /| cut -d '/' -f6)

if [ $count ]

then

CTIME2=`date +%H:%M:%S`

echo $CTIME2 "Ping cam => IP" $camIP "=" $count "ms"

CTIME2=`date +%H:%M:%S`

echo $CTIME2 "Video start record" "=> $CTIME.avi" "time="$DUR "bitrate="$BIT "size="$RSL "fps="$FPS

ffmpeg -t $DUR -i $RTSP -y -r $FPS -s $RSL -b $BIT -vcodec mpeg4 -f avi $PATH2 </dev/null>/dev/null 2>/dev/null

CTIME2=`date +%H:%M:%S`

echo $CTIME2 "Video end record" " => $CTIME.avi"

# ffmpeg -i "/home/alexsx19/red/_cam/video/$CTIME.avi" -vframes 1 "/home/alexsx19/red/_cam/video/image%d_"$CTIME".jpg" </dev/null>/dev/null 2>/dev/null

# CTIME2=`date +%H:%M:%S`

# echo $CTIME2 "Image record" " => image1_$CTIME.jpg" "size="$RSL

else

CTIME2=`date +%H:%M:%S`

echo $CTIME2 "Not ping cam => IP" $camIP

fi

А вот и все. После этого планировщик запускает скрипт, а тот пишет с потока. Быстро удобно. Спросите как организовать архив. Время и дата видна из названия файла, перемещаем что необходимо в другую папку и это уже храниться и не стирается. По настройкам я думаю разберётесь в первых строках скрипта и частота и разрешение и длительность записи и другие настройки.

А еще внизу скрипта есть закомментированные строки о том как делать скрин с камеры, тоже удобно.

И немного картинок.

-2
-3
-4