Scripts
encode_all.sh
#!/bin/bash
# Copyright (c) 2011 Rikard Fröberg <rikard@ffkp.se>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
NAS_MOUNT="YOUR_NAS_MOUNT_POINT_HERE"
START_TIME=$(date)
STARTSECS=$(date +%s)
ENCODE_DIR="encoding"
OUTPUT_DIR="$ENCODE_DIR/encoded_vids"
PREPEND_DIR="$ENCODE_DIR/prepends"
CREDITS="$PREPEND_DIR/1920-title.avi"
LICENSE="$PREPEND_DIR/cc-1920.avi"
MENCODER_OPTS="-oac copy -ovc copy -o"
if [ ! -e "$ENCODE_DIR" ] ; then
echo "$ENCODE_DIR not found. Exiting."
exit 1
fi
echo Starting at $START_TIME
echo Dir to process: $ENCODE_DIR
# Directories starting with a number contains MTS video files in our case
for SESSION_DIR in $ENCODE_DIR/[0-9]*
do
countMTS=0
echo ============================
echo $(date) Processing $SESSION_DIR
echo
# Our raw files all end with .MTS
for SESSION_MOVIE in ${SESSION_DIR}/*.MTS
do
((++countMTS))
SESSION_SHORT=${SESSION_MOVIE##encoding/}
AVI="${SESSION_SHORT%%/*}-$countMTS.avi"
FINAL_AVI="${SESSION_SHORT%%/*}-$countMTS-all.avi"
echo $(date) Running: "bin/encode.sh $SESSION_MOVIE $OUTPUT_DIR/$AVI"
# Our nas was mounted over the network, double check that the
# mount has not been lost due to network problems
if [ ! -e "$SESSION_MOVIE" ]
then
echo "$SESSION_MOVIE" NOT FOUND.
if [ -d "$NAS_MOUNT" ]
then
echo "NAS mounted on $NAS_MOUNT"
else
echo "NAS NOT mounted!"
fi
exit 2
fi
bin/encode.sh "$SESSION_MOVIE" "$OUTPUT_DIR/$AVI"
echo $(date) Running: "mencoder $MENCODER_OPTS $OUTPUT_DIR/$FINAL_AVI $CREDITS $LICENSE $OUTPUT_DIR/$AVI"
/usr/bin/mencoder $MENCODER_OPTS $OUTPUT_DIR/$FINAL_AVI $CREDITS $LICENSE $OUTPUT_DIR/$AVI
echo $OUTPUT_DIR/$FINAL_AVI created at $(date)
echo "++++++++++++++"
done
done
ENDSECS=$(date +%s)
TOTAL_SECS=$((ENDSECS-STARTSECS))
ENDTIME=$(date)
echo "Report:"
echo "Encoding started at $START_TIME"
echo "Encoding ended at $ENDTIME"
echo "Encoding took ${TOTAL_SECS}secs or"
echo " $((TOTAL_SECS/60))mins and $((TOTAL_SECS%60))secs or"
echo " $((TOTAL_SECS/3600))hrs and $((TOTAL_SECS/60%60))mins and $((TOTAL_SECS%60))secs"
encode.sh
#!/bin/bash
# Copyright (c) 2011 Rikard Fröberg <rikard@ffkp.se>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#Prerequisites
#
#In order to run the encoding scripts, a number of tools, libraries and
#codecs need to be installed.
#
#The video transformation tools are:
#
# * ffmpeg
# * mencoder
#
#The codecs are:
#
# * libavcodec-extra-52
# * libaften0 - Not required if you have the license and title AVIs!
# (for creating the title and license AVI, we needed it to have fake
# silent audio as AC3 to match the AVIs created from the Session MTS
# files, or mencoder would protest)
#
# To test the results:
#
# * mplayer
########################################################################
infile=$1
outfile=$2
inputopts="-i $infile"
audioopts="-acodec copy"
videoopts="-vcodec libx264 -s 1280x720 -vpre default -b 2000000 -r 25"
echo "ffmpeg command:"
echo $inputopts $audioopts $videoopts $outfile
/usr/bin/ffmpeg $inputopts $audioopts $videoopts $outfile
Back to 2011 main planning page