Repository URL to install this package:
|
Version:
0.8-r4 ▾
|
#!/bin/sh
#------------------------------------------------------------------
# filmstrip.sh by gutemine
#------------------------------------------------------------------
VERSION=0.7-r2
LINE="-------------------------------------------------------------"
JUMP1=10
JUMP2=10
QUALITY=1
echo $LINE
echo "filmstrip.sh Version: $VERSION Architecture: $BOXARCH"
echo $LINE
if [ `grep config.plugins.filmstrip.picRes /etc/enigma2/settings | wc -l` -gt 0 ]; then
RESOLUTION=`grep config.plugins.filmstrip.picRes /etc/enigma2/settings | cut -d"=" -f2`
echo "resolution $RESOLUTION from settings"
else
if [ `uname -r | grep "dreambox 4.9" | wc -l` -gt 0 ]; then
BOXARCH="arm64"
RESOLUTION="406x228"
else
BOXARCH="armhf"
RESOLUTION="200x113"
fi
echo "resolution $RESOLUTION from $BOXARCH"
fi
echo $LINE
if [ `ps ax | grep filmstrip.sh | wc -l` -gt 5 ]; then
echo "filmstrip.sh script should only run up to 4 times!"
echo $LINE
exit 1
fi
if [ $# -lt 1 ]; then
echo "no movie File passed"
echo $LINE
exit 1
else
MOVIE=$1
if [ ! -f "$MOVIE" ]; then
echo "$MOVIE file does not exist"
echo $LINE
exit 1
fi
fi
if [ `ps ax | grep ffmpeg | grep "$MOVIE" | wc -l` -gt 2 ]; then
echo "filmstrip.sh script should only run once per movie!"
echo $LINE
exit 1
fi
DURATIONSEC=`/usr/bin/ffprobe -i "$MOVIE" -show_entries format=duration -v quiet -of csv="p=0"`
DURATION=`printf '%.0f\n' $DURATIONSEC`
echo "extracting duration $DURATION seconds"
echo $LINE
if [ $DURATION -lt 60 ]; then
echo "minimal duration 60 seconds"
echo $LINE
exit 1
fi
DIR=`dirname "$MOVIE"`
FILENAME=`basename "$MOVIE"`
FILE=`echo "${FILENAME%.*}"`
TARGETDIR="$DIR/filmstrip/$FILE"
#echo $TARGETDIR
#echo $LINE
if [ ! -d "$TARGETDIR" ]; then
echo "creating $TARGETDIR"
mkdir "$TARGETDIR"
echo $LINE
fi
if [ $# -lt 2 ]; then
echo "no first step passed, means $JUMP1 seconds"
echo $LINE
else
JUMP1=$2
echo "extracting first every $JUMP1 seconds"
echo $LINE
if [ "$JUMP1" -lt 10 ]; then
echo "minimal picture every 10 seconds"
echo $LINE
exit 1
fi
if [ "$JUMP1" -gt 300 ]; then
echo "maximal picture every 300 seconds"
echo $LINE
exit 1
fi
fi
if [ $# -lt 3 ]; then
echo "no second step passed, means $JUMP2 seconds"
echo $LINE
else
JUMP2=$3
echo "extracting second every $JUMP2 seconds"
echo $LINE
if [ "$JUMP2" -lt 10 ]; then
echo "disabled second run"
echo $LINE
JUMP2=0
fi
if [ "$JUMP2" -gt 10 ]; then
echo "maximal picture every 10 sececonds for second run"
echo $LINE
JUMP2=10
fi
fi
FRAMES1=`expr $DURATION "/" $JUMP1`
if [ "$FRAMES1" -lt 1 ]; then
echo "no frame every $JUMP1 seconds possible"
echo $LINE
exit 1
else
FRAMES2=`expr $DURATION "/" 10`
if [ "$FRAMES2" -lt 1 ]; then
echo "no frame every 10 seconds possible"
echo $LINE
exit 1
else
echo "creating first $FRAMES1 frames every $JUMP1 seconds"
echo "for $MOVIE"
echo "into $TARGETDIR"
echo $LINE
fi
fi
STARTING=`date +"%s"`
echo "First run every $JUMP1 seconds"
echo $LINE
for START in $( eval echo {0..$DURATION..$JUMP1} )
do
PIC=`printf "$TARGETDIR/pic%06d.jpg" $START`
if [ ! -e "$PIC" ]; then
echo "generating $START for $PIC ..."
/usr/bin/ffmpeg -loglevel quiet -ss $START -i "$MOVIE" -vf "fps=1,scale=$RESOLUTION" -qmin 1 -qscale:v $QUALITY -frames:v 1 -y -copyts -start_at_zero "$PIC"
else
echo "existing $START for $PIC ..."
fi
done
if [ "$JUMP1" -ne 10 -a "$JUMP2" -ne 0 ]; then
echo $LINE
echo "Second run every 10 seconds"
echo $LINE
for START in $( eval echo {10..$DURATION..10} )
do
PIC=`printf "$TARGETDIR/pic%06d.jpg" $START`
if [ ! -e "$PIC" ]; then
echo "generating $START for $PIC ..."
/usr/bin/ffmpeg -loglevel quiet -ss $START -i "$MOVIE" -vf "fps=1,scale=$RESOLUTION" -qmin 1 -qscale:v $QUALITY -frames:v 1 -y -copyts -start_at_zero -vsync vfr "$PIC"
else
echo "existing $START for $PIC ..."
fi
done
else
echo $LINE
echo "no second run"
fi
ENDING=`date +"%s"`
DURATION=`expr $ENDING "-" $STARTING`
echo $LINE
echo "FINISHED in $DURATION seconds !!!"
echo $LINE
exit 0