Having the files in an FTP server is nice, but not very convenient to check them. I wrote this script to be used in a cron job to join many images together and create an .mp4 movie. It uses the ffmpeg program.
Here is the source code for the script, generate_movie:
#!/bin/bash
# cp or mv files older thant 24h in the $1 location
# to the $2 location, generate a movie with the files
# and move the movie back to $1, then delete the files in $2
# $3 is the prefix for the name of the files
if [ $# -lt 3 ]; then
echo "USAGE $0 sourceDir tempDir prefix"
exit;
fi
export SOURCE=$1
export DEST=$2
export PREFIX=$3
export MOV_NAME=$PREFIX-`date +'%Y-%m-%d'`.mp4
export PID=$$
export CP_OR_MV=mv
export COMP_FILE=temp-$PID
#create a file to be used as a time reference
touch $DEST/$COMP_FILE
# allow some time for any current file xfer to finish
sleep 90
#find any files older than the COMP_FILE
#then copy or move them
if [ $CP_OR_MV = "mv" ]
then
find $SOURCE -type f ! -newer $DEST/$COMP_FILE -name "$PREFIX*.jpg" -exec mv {} $DEST \;
else
find $SOURCE -type f ! -newer $DEST/$COMP_FILE -name "$PREFIX*.jpg" -exec cp -p {} $DEST \;
fi
rm $2/$COMP_FILE
#rename the files in seq. order (ffmpeg limitation)
n=1
for file in `ls $DEST/$PREFIX*.jpg`; do
mv $file $DEST/$PREFIX-$PID-`printf "%06d" $n`.jpg
n=$(($n+1))
done
#encode the files into a movie
ffmpeg -r 5 -sameq -i $DEST/$PREFIX-$PID-%06d.jpg -y $SOURCE/$MOV_NAME >& /dev/null
#email the movie
#if [ -s $SOURCE/$MOV_NAME ]
#then
#mutt -s "Report $PREFIX" -a $SOURCE/$MOV_NAME bla@ble.com </dev/null
#fi
#delete images if the movie was created
if [ -s $SOURCE/$MOV_NAME ]
then
rm $DEST/$PREFIX-$PID-*.jpg
else
echo "error:" $SOURCE/$MOV_NAME "not created. Leaving" $DEST/$PREFIX-$PID- "files untouched."
fi