Zoneminder — sh скрипт компиляции видео

Zoneminder — sh скрипт компиляции видео

Цель: сбор событий zoneminder в один ролик за час с сортировкой по папкам.
Перед выполнением скрипта выполните:
mkdir /jpg; mkdir /video; tourch название_скрипта.sh; chmod +x название_скрипта.sh
Скрипт в виде файла: тут
Скрипт:
#!/bin/bash
# Объявим переменные
ZM_EVENTS_DIR="/var/cache/zoneminder/events"
TEMP_DIR="/jpg"
VIDEO_OUTPUT_DIR="/video"
FFMPEG="/usr/bin/ffmpeg"
IMAGEDIR="$(date -d "-1 hour" +%y/%m/%d/%H)" # Каталог с jpeg-файлами за предыдущий час
MOVIENAME="$(date -d "-1 hour" +%H-00)" # Имя avi-файла (предыдущий час)
MOVIEDIR="$(date +%d-%B-%Y)" # Каталог с видеофайлом
YEAR="$(date +%Y)" #год
MOUTH="$(date +%m)" #Месяц
DAY="$(date -d "-1 hour" +%d)" #День
#IMAGEDIR="$(date -d yesterday +%y/%m/%d/%H)" # Каталог с jpeg-файлами за предыдущий день
#MOVIENAME="$(date -d yesterday +%d-%m-%Y)" # Имя avi-файла (предыдущий день)
#IMAGEDIR="$(date -d today +%y/%m/%d)" # Каталог с jpeg-файлами за предыдущий день
#MOVIENAME="$(date -d today +%d-%m-%Y)" # Имя avi-файла (предыдущий день)
#MOVIEDIR= # Каталог с видеофайлом
MONITORS="`ls -l $ZM_EVENTS_DIR/ | awk '{ print $9 }'| grep -E '^[0-9]' | sort -n`" # Список камер наблюдения (1 2 3 ... n)
FPS_IN="12" # FPS записи с камер наблюдения
FPS_OUT="12" # FPS итоговой видеозаписи

# Проверка наличия старых временных файлов
for MONITOR in $MONITORS
do
if [ -f $TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR.list ] then
# echo "Purging previous temorary file: $TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR.list"
/bin/rm $TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR.list
fi
if [ -d $TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR ] then
# echo "Purging previous temporary symblinks from $TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR"
/bin/rm $TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR/*
else
/bin/mkdir -p $TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR
fi
# Поиск и сортировка jpeg для каждой камеры
#echo -n "Processing wanted events..."
find $ZM_EVENTS_DIR/$MONITOR/$IMAGEDIR/ -name "*capture.jpg" | sort -t / -k 8n,8 -k 9n,9 -k 10n,10 -k 11.1n,11.4 >$TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR.list
EVENTNUMBER=1
while read EVENTFILE
do
EVENTNUMBERPADDING=`seq -f %09.f $EVENTNUMBER $EVENTNUMBER`
/bin/ln -s $EVENTFILE $TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR/$EVENTNUMBERPADDING.jpg
let "EVENTNUMBER = $EVENTNUMBER + 1"
done <$TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR.list
# echo "...$EVENTNUMBER events found"

# video
echo -n "Building video: $VIDEO_OUTPUT_DIR/$MONITOR/$MOVIEDIR/$MOVIENAME.avi"
mkdir -p $VIDEO_OUTPUT_DIR/$YEAR
mkdir -p $VIDEO_OUTPUT_DIR/$YEAR/$MOUTH/
mkdir -p $VIDEO_OUTPUT_DIR/$YEAR/$MOUTH/$DAY
mkdir -p $VIDEO_OUTPUT_DIR/$YEAR/$MOUTH/$DAY/$MONITOR
#компилируем видео
$FFMPEG -y -f image2 -r $FPS_IN -i $TEMP_DIR/eventsfiles.$MOVIENAME-$MONITOR/%09d.jpg -an -r $FPS_OUT -b 1800k $VIDEO_OUTPUT_DIR/$YEAR/$MOUTH/$DAY/$MONITOR/$MOVIENAME.avi
done
#конец for. Если есть камеры с нестандартным фпс(моя камера выдает 2-3 фпс) выносите сборку видео после done!
$FFMPEG -y -f image2 -r 3 -i $TEMP_DIR/eventsfiles.$MOVIENAME-7/%09d.jpg -an -r $FPS_OUT -b 1800k $VIDEO_OUTPUT_DIR/$YEAR/$MOUTH/$DAY/7/$MOVIENAME.avi
rm -R /jpg/*

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *