#!/bin/bash
# folder_monitor.sh
# This is a daemon shell script for monitoring video input directory.
#
#
SRC_DIR=/var/videoinput
TRG_DIR=/var/videooutput
PARAMS='-ovc lavc -lavcopts vcodec=flv:keyint=50:vbitrate=300:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=480:360 -of lavf -oac mp3lame -lameopts abr:br=64 -srate 22050'
OUTPUT_FORMAT='flv'
USER_FOLDER="/usr/local/jboss/server/default/resources/files/user_folders"
THUMBNAIL_WIDTH=175
THUMBNAIL_HEIGHT=110
#
while getopts ":s:t:hp:u:H:W:" optname
do
case $optname in
"u")
USER_FOLDER="$OPTARG"
;;
"p")
PARAMS="$OPTARG"
;;
"s")
SRC_DIR="$OPTARG"
;;
"W")
THUMBNAIL_WIDTH="$OPTARG"
;;
"H")
THUMBNAIL_HEIGHT="$OPTARG"
;;
"t")
TRG_DIR="$OPTARG"
;;
"h")
echo "-h - help"
echo "-W - width of thumbnail"
echo "-H - height of thumbnail"
echo "-p - command line params for mencoder"
echo "-u - path to user folders"
echo "-s - source dir"
echo "-t - target dir"
exit 0;
;;
*)
echo "Unknown parameter or option error with option - $OPTARG"
exit 1;
;;
esac
done
while :
do
echo "Looking dir ${SRC_DIR}...\n"
#
FILES=$(find $SRC_DIR -type f -exec basename '{}' \;)
#
for FILE in $FILES
do
# ,
USER_ID=$(echo $FILE | sed 's/[^0-9]/ /g' | awk '{print $1}')
VIDEO_ID=$(echo $FILE | sed 's/[^0-9]/ /g' | awk '{print $2}')
#
(echo "Converting $FILE..."
#
mv ${SRC_DIR}/${FILE} ${TRG_DIR}/${FILE}
#
mplayer -ss 16 -frames 1 -vo png -nosound ${TRG_DIR}/${FILE}
THUMBNAIL="${USER_FOLDER}/${USER_ID}/video/${VIDEO_ID}.png"
#
mv 00000001.png $THUMBNAIL
#
convert $THUMBNAIL -resize ${THUMBNAIL_WIDTH} -gravity center -crop ${THUMBNAIL_WIDTH}x${THUMBNAIL_HEIGHT}+0+0 -quality 75 $THUMBNAIL
#
mencoder ${TRG_DIR}/${FILE} -o "${TRG_DIR}/${FILE}.${OUTPUT_FORMAT}" ${PARAMS}
#
flvtool2 -UP "${TRG_DIR}/${FILE}.${OUTPUT_FORMAT}"
#
rm ${TRG_DIR}/${FILE}
#
mv "${TRG_DIR}/${FILE}.${OUTPUT_FORMAT}" "${USER_FOLDER}/${USER_ID}/video/${VIDEO_ID}.${OUTPUT_FORMAT}"
) &
done
sleep 10s
done
Source: https://habr.com/ru/post/48187/