+#!/bin/sh
+
+# Use: $index $thumb $file_pattern
+
+if [ \! -e "$thumb" ] && { printf %s "$file" |grep -qE "$file_pattern"; }; then
+ read l h w <<__EOF
+ $(printf '' \
+ | mplayer -input nodefault-bindings -nosound -vo null -identify -frames 0 "$file" 2>&- \
+ | sort | sed -rn '
+ s:ID_LENGTH=(.*)(\..*)$:\1:p;
+ s:ID_VIDEO_HEIGHT=(.*):\1:p;
+ s:ID_VIDEO_WIDTH=(.*):\1:p;' \
+ | tr '\n' ' '
+ )
+__EOF
+
+ [ "$((h * 1000 / w))" -gt "750" ] \
+ && w="$((75 * w / h))" || w=100
+ chunk="$((${l:-10} / 5))"
+
+ tmp="$(mktemp -d)"
+ for cnt in 1 2 3 4; do
+ printf '' \
+ | mplayer -input nodefault-bindings -nosound -benchmark \
+ -noconfig all -really-quiet \
+ -frames 1 -ss "$((cnt * chunk))" \
+ -vf "framestep=I,scale=${w}:-2" \
+ -vo "jpeg:outdir=${tmp}" \
+ "$file" 2>&-
+ mv "${tmp}/00000001.jpg" "${tmp}/_${cnt}.jpg"
+ done
+ printf '' \
+ | mplayer -input nodefault-bindings -nosound -benchmark \
+ -noconfig all -really-quiet \
+ -vf scale=127:-2,tile=2:2:4:0:2 \
+ -vo "jpeg:quality=60:outdir=${tmp}"\
+ "mf://$tmp/_*.jpg" 2>&-
+
+ mv "${tmp}/00000001.jpg" "$thumb"
+ rm -r "${tmp}"
+
+elif [ \! -e "$thumb" ]; then
+ touch "$thumb"
+fi