#!/bin/bash #set -x blank-rename.sh #Test if the needed files are there#{{{ TEST () { test -f titlesrc || exit # test -f *.mod || exit # test -f *.mp3 || exit } #}}} # The parameters#{{{ PARAMETERS () { DIR=$PWD TMP=$DIR/ffmpeg_temp LOG=$DIR/timescale.log # SIZE="16x9" #1 # SIZE="512x288" #32 50% # SIZE="640x360" #40 63% # SIZE="704x396" #44 70% # SIZE="800x450" #50 78% SIZE="1024x576" #64 100% # SIZE="1280x720" #Even bigger OLDFILE=`ls -1 *.mod|head -n 1` STARTDATE=`date -r $OLDFILE +%s` STARTTIME=`date -d @${STARTDATE} +%R` TRAVELDATE=`date -d @${STARTDATE} +%F` cat > $LOG << _EOF_ # Logfile for timescale DIR=$PWD TMP=$DIR/ffmpeg_temp LOG=$DIR/timescale.log OLDFILE=`ls -1 *.mod|tail -n 1` STARTDATE=`date -r $OLDFILE +%s` STARTTIME=`date -d @${STARTDATE} +%R` TRAVELDATE=`date -d @${STARTDATE} +%F` SIZE=$SIZE _EOF_ } #}}} # Copy the files preserving the date#{{{ COPY_FILE () { echo "Copying the files. Needs to be done" } #}}} # Make the images#{{{ MAKE_IMAGES () { #clear IMG_COUNTER="0" J="1" for I in ${DIR}/*.mod do echo ${I} #Image counter let "IMG_COUTER = $IMG_COUNTER +1" # Temporary directory test -d ${TMP} || mkdir $TMP #Turn movie into images FFMPEG="ffmpeg -i $I -r 1 -s $SIZE -f image2 -aspect 16:9 -sameq ${TMP}/3${J}${IMG_COUNTER}%05d.jpg" $FFMPEG echo $FFMPEG >> $LOG let "J = $J +1" done } #}}} # Make the credits#{{{ MAKE_CREDITS () { convert \ -gravity center \ -background none \ -strokewidth 2 \ -stroke DarkRed \ -fill pink3 \ -font $FONTNAME \ -size $SIZE \ label:"${TEXT}" \ title.png composite -gravity SouthWest title.png $BACKGROUND $NEWFILE rm title.png echo "made $NEWFILE" } #}}} # The individual slides#{{{ CREDIT_SLIDE () { # Generic parameters for the slides#{{{ . titlesrc FONTNAME="FeastofFleshBB" STARTSLIDE=`ls -1 ${TMP}/*.jpg|head -n 1` ENDSLIDE=`ls -1 ${TMP}/*.jpg|tail -n 1` #Add colors to the first and last image cp ${STARTSLIDE} 25.jpg cp ${ENDSLIDE} 39.jpg convert ${STARTSLIDE} -colorize 10,30,70 ${STARTSLIDE} convert ${ENDSLIDE} -colorize 10,30,70 ${ENDSLIDE} DURATION=`ls -1 ${TMP}|wc -l` let "ENDTIME = $STARTDATE + $DURATION" #( $ENDTIME / 25 )" ENDTIME=`date -d @${ENDTIME} +%R` cat >> $LOG << _EOF_ DURATION=$DURATION ENDTIME=$ENDTIME _EOF_ #}}} # Where from#{{{ TEXT10='from\n'${FROM}'\nto\n'${TO} TEXT=$TEXT10 BACKGROUND="${STARTSLIDE}" NEWFILE="10.jpg" MAKE_CREDITS # Make the filename FILENAME=$TEXT #}}} # Startdate#{{{ #TEXT20='Traveled on\n'${TRAVELDATE}'\n\nDeparture: '${STARTTIME}'\nArrival: '${ENDTIME} TEXT20='Traveled on\n'${TRAVELDATE}'\n\nDeparture: '${STARTTIME} TEXT=$TEXT20 BACKGROUND="$STARTSLIDE" NEWFILE="20.jpg" MAKE_CREDITS #}}} # The 30 numbers are for the real video#{{{ echo "numbers 30 are for the video" #}}} #The end#{{{ TEXT40='Le Fin!\n\nThe end!' TEXT=$TEXT40 BACKGROUND="${ENDSLIDE}" NEWFILE="40.jpg" MAKE_CREDITS #}}} #First credit#{{{ TEXT50='Film and edit by\nhoughi\n\nURL of this route:\n'$URL TEXT=$TEXT50 BACKGROUND="${ENDSLIDE}" NEWFILE="50.jpg" MAKE_CREDITS #}}} #Music Download#{{{ TEXT60='Downloaded\nmusic from\n\nhttp://www.flyfi.com' TEXT=$TEXT60 BACKGROUND="${ENDSLIDE}" NEWFILE="60.jpg" MAKE_CREDITS #}}} # Get the music information#{{{ # See the number of songs SONGS="" let "DURATION = ($DURATION / 25) + 60" SONGTIME="0" K="70" for MP3 in *.mp3 do TIMER=`mediainfo -f ${MP3}|grep Dur|awk '{print $NF}'|grep ':'|head -n 1` HH=`echo $TIMER|awk -F: '{print $1}'` MM=`echo $TIMER|awk -F: '{print $2}'` SS=`echo $TIMER|awk -F: '{print $3}'|awk -F\. '{print $1}'` TIMER=`echo $((HH*3600))+$((MM*60))+$((SS))|bc` if [ "$SONGTIME" -lt "$DURATION" ] then SONGS="$SONGS $MP3" SONG=`id3v2 -l $MP3|egrep ^TIT2|awk -F': ' '{print $NF}'` PERFORMER=`id3v2 -l $MP3|egrep ^TPE1|awk -F': ' '{print $NF}'` ALBUM=`id3v2 -l $MP3|egrep ^TALB|awk -F': ' '{print $NF}'` TEXT70=$SONG'\nPerformed by\n'$PERFORMER'\nfrom the album\n'$ALBUM'' TEXT=$TEXT70 BACKGROUND="${ENDSLIDE}" NEWFILE="$K.jpg" MAKE_CREDITS let "K = $K +1" fi let " SONGTIME = $SONGTIME + $TIMER" done #}}} ## Some random thing#{{{ # FONTNAME="Ariel" #Select a new font here if you want to # TEXT80=`fortune -s` # TEXT=$TEXT20 # BACKGROUND="${ENDSLIDE}" # NEWFILE="80.jpg" # MAKE_CREDITS #}}} # Licence#{{{ TEXT99='Made with 100% open\nsource software\nLicence : Creative Commons\n\nhttp://houghi.org' TEXT=$TEXT99 BACKGROUND="${ENDSLIDE}" NEWFILE="99.jpg" MAKE_CREDITS #}}} } #}}} # Move the individual slides#{{{ MOVE_SLIDE () { for CREDIT in ??.jpg do FILE=`echo $CREDIT|awk -F. '{print $1}'` for COUNT in `seq 80` do cp ${CREDIT} ${TMP}/${FILE}`printf %04d ${COUNT}`${CREDIT} done # rm ${CREDIT} done } #}}} # Renumber the files #{{{ RENUMBER_FILES () { J="0" for I in ${TMP}/*.jpg do mv ${I} ${TMP}/`printf %07d ${J}`.jpg let "J = $J +1" done } #}}} # Join the mp3 files#{{{ JOIN_MP3 () { mpgtx -j $SONGS --force -o complete.mp3 } #}}} #The making of the movie#{{{ MAKE_MOVIE () { clear echo "Starting making the file" FILENAME=`echo ${FILENAME}|sed 's/\\\n/_/g'` FILENAME=`echo ${FILENAME}|sed 's/, /_/g'` #ffmpeg -i complete.mp3 -i ${TMP}/%07d.jpg -shortest -f avi -b 1024 -aspect 16:9 ${FILENAME}.avi FFMPEG="ffmpeg -i ${TMP}/%07d.jpg -i complete.mp3 -shortest -f avi -b 1024 -sameq -y -aspect 16:9 ${FILENAME}.avi" $FFMPEG echo $FFMPEG >> $LOG } #}}} #Clean up#{{{ CLEAN_UP () { rm -rf *.jpg # ${TMP} exit } #}}} # The real world order#{{{ TEST PARAMETERS MAKE_IMAGES CREDIT_SLIDE MOVE_SLIDE RENUMBER_FILES JOIN_MP3 MAKE_MOVIE CLEAN_UP #}}}