]> git.plutz.net Git - serve0/blob - thumbnail.sh
6117de22840d2021b4038ddc19d6f8a63550afc0
[serve0] / thumbnail.sh
1 #!/bin/sh
2
3 # Use: $index $thumb $file_pattern
4
5 if [ \! -e "$thumb" ] && { printf %s "$file" |grep -qE "$file_pattern"; }; then
6   read l h w <<__EOF
7   $(printf '' \
8     | mplayer -input nodefault-bindings -nosound -vo null -identify -frames 0 "$file" 2>&- \
9     | sort | sed -rn '
10       s:ID_LENGTH=(.*)(\..*)$:\1:p;
11       s:ID_VIDEO_HEIGHT=(.*):\1:p;
12       s:ID_VIDEO_WIDTH=(.*):\1:p;' \
13     | tr '\n' ' '
14   )
15 __EOF
16
17   [ "$((h * 1000 / w))" -gt "750" ] \
18   && w="$((75 * w / h))" || w=100
19   chunk="$((${l:-10} / 5))"
20   
21   tmp="$(mktemp -d)"
22   for cnt in 1 2 3 4; do
23     printf '' \
24     | mplayer -input nodefault-bindings -nosound -benchmark \
25               -noconfig all -really-quiet \
26               -frames 1 -ss "$((cnt * chunk))" \
27               -vf "framestep=I,scale=${w}:-2" \
28               -vo "jpeg:quality=100:outdir=${tmp}" \
29               "$file" 2>&-
30     mv "${tmp}/00000001.jpg" "${tmp}/_${cnt}.jpg"
31   done
32   printf '' \
33   | mplayer -input nodefault-bindings -nosound -benchmark \
34             -noconfig all -really-quiet \
35             -vf scale=159:-2,tile=2:2:4:0:2 \
36             -vo "jpeg:quality=90:outdir=${tmp}"\
37             "mf://$tmp/_*.jpg" 2>&-
38
39   mv "${tmp}/00000001.jpg" "$thumb"
40   rm -r "${tmp}"
41
42 elif [ \! -e "$thumb" ]; then
43   touch "$thumb"
44 fi