Skip to content

Instantly share code, notes, and snippets.

@vajonam
Last active August 24, 2018 12:50
Show Gist options
  • Save vajonam/55bc7ac5119bf219024a424f4d778017 to your computer and use it in GitHub Desktop.
Save vajonam/55bc7ac5119bf219024a424f4d778017 to your computer and use it in GitHub Desktop.
generate daily videos for zoneminder
#!/bin/bash
TMP_PATH=/tmp/work
STORAGE_PATH="/net/gobi/Storage/Security/events/"
OUTPUT_PATH="/net/gobi/Storage/Security/exports"
MONITORS="Front Patio Backdoor Pathway"
FILES_TOKEEP=7
DOCKER_CMD='docker run -v /net/gobi:/net/gobi:shared -v /tmp/work:/tmp/work --user www-data:www-data jrottenberg/ffmpeg'
var=$1
if [ ! -z "$1" ] ; then
DATE=${1};
else
DATE=`/bin/date -d yesterday +"%Y-%m-%d"`;
fi
if [ ! -z ${TMP_PATH} ] ; then
mkdir -p ${TMP_PATH}
fi
for m in ${MONITORS}
do
# Cleanup old files
TMPFILE=${DATE}_${m}
if [ -z ${TMP_PATH}/${TMPFILE}.txt ] ; then
rm ${TMP_PATH}/${TMPFILE}.txt
fi
if [ -z ${TMP_PATH}/${TMPFILE}_slow.h264 ] ; then
rm ${TMP_PATH}/${TMPFILE}_slow.h264
fi
# Generate File Lists
if [ -d ${STORAGE_PATH}/${m}/${DATE}/ ] ; then
find $STORAGE_PATH/${m}/${DATE}/ -name "*.mp4" -type f | awk '{print "file " $0}' | sort -V > ${TMP_PATH}/${TMPFILE}.txt
echo -n "Generatng daily digest video for ${m} on ${DATE}"
else
echo "No events found for ${m} on ${DATE}, skipping"
continue
fi
$DOCKER_CMD -y -f concat -safe 0 -i ${TMP_PATH}/${TMPFILE}.txt -c copy ${TMP_PATH}/${TMPFILE}_slow.mp4 > /dev/null 2>&1
echo -n "."
$DOCKER_CMD -y -i ${TMP_PATH}/${TMPFILE}_slow.mp4 -c copy -f h264 ${TMP_PATH}/${TMPFILE}.h264 > /dev/null 2>&1
echo -n "."
$DOCKER_CMD -y -r 128 -i ${TMP_PATH}/${TMPFILE}.h264 -c copy ${OUTPUT_PATH}/${m}/${TMPFILE}.mp4 > /dev/null 2>&1
touch -d ${DATE} ${OUTPUT_PATH}/${m}/${TMPFILE}.mp4
echo "done"
FILES=`ls -t1 ${OUTPUT_PATH}/${m}/*.mp4 | tail -n +$(($FILES_TOKEEP+1))`
if [ ! -z "$FILES" ] ; then
rm $FILES
echo "Removed old file $FILES"
fi
done;
# Clean up
docker ps -a | awk '{ print $1,$2 }' | grep ffmpeg | awk '{print $1 }' | xargs -I {} docker rm {} > /dev/null 2>&1
rm -f ${TMP_PATH}/${DATE}*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment