動画のキャプチャ画像を生成する

●動画から60秒毎にキャプチャする

require ffmpeg
usage: create_thums.sh 動画パス 出力ディレクトリ [刻み秒数]

#!/bin/sh
if [ ! -f "$1" -o -z "$2" ] ; then
  echo "usage: createthum.sh movie_path output_dirpath [delta]"
  exit 1
fi

odir=$2

if [ ! -d $odir ]; then
  mkdir $odir > /dev/null 2>&1
fi

if [ -z "$3" ]; then
  delta=60
else
  delta=$3
fi
pattern='^([0-9]{2}) ([0-9]{2}) ([0-9]{2})$'
duration=`ffprobe "$1" 2>&1 | sed -n -r 's/\s*Duration:\s*([0-9]{2}):([0-9]{2}):([0-9]{2}).*$/\1 \2 \3/p'`
hour=`echo $duration | sed -r "s/$pattern/\1/"`
min=`echo $duration | sed -r "s/$pattern/\2/"`
sec=`echo $duration | sed -r "s/$pattern/\3/"`

duration=`expr $hour \* 3600 + $min \* 60 + $sec`

for i in `seq 1 $delta $duration`; do
  commandline="ffmpeg -y -v error -ss $i -i \"$1\" -vframes 1 -vcodec png \"`printf "${odir}/thum%05d.png" $i`\""
  echo $commandline
  eval $commandline
done

exit 0

さらに、キャプチャした画像をタイル状にする。
requires ImageMagick

$ montage caps*.png -geometry 200x+0+0 -tile 4x -monitor tile-caps.jpg