#!/bin/sh # takes video as input. makes png screens. INFILE=$1 NUMSCREENS=$2 CURDIR=`pwd` TMPDIR=`tempfile` rm -rf $TMPDIR mkdir $TMPDIR # get total vid playback in seconds totallength=`(echo "get_time_length"; echo "quit") | mplayer -nolirc -slave -quiet -vo null -nosound $INFILE | grep ANS |cut -d'=' -f2 | cut -d'.' -f1` # substract some let maxlength=$totallength-10 # calculate interval let "interval=$maxlength/($NUMSCREENS+1)" # start screens loopa cd $TMPDIR if ! test -e $INFILE; then echo please use full paths to the file exit 1 fi screen=0 pos=0 echo -n "Making $NUMSCREENS screens in $maxlength time ($totallength) with $interval seconds in between: " while test $screen -lt $NUMSCREENS; do let screen=$screen+1 let pos=$pos+$interval echo -n "$screen, " mplayer -nolirc -quiet -really-quiet -vo png -nosound -frames 5 -ss $pos $INFILE if ! test -e 00000005.png; then echo error, $pos let halfinterval=$interval/2 let pos=$pos-$halfinterval echo error, newpos $pos mplayer -nolirc -quiet -really-quiet -vo png -nosound -frames 5 -ss $pos $INFILE let pos=$pos+$halfinterval echo error, oldpos $pos fi mv 00000005.png shot`printf "%04d\n" $screen`.png rm 0000*png done echo "Done." echo -n "Compressing screens:" compscreen=0 for i in $TMPDIR/*png; do let compscreen=$compscreen+1 echo -n "$compscreen, " pngcrush -q $i $CURDIR/`basename $i` done echo " done." rm -rf $TMPDIR cd $CURDIR