複数動画をffmpegでgifに変換

コマンド

ls | grep -E '.(mov)$' | sed -e 's/\.mov//' | xargs -I {} ffmpeg -i {}.mov -vf scale=400:-1 -y -r 5 {}_w400.gif

関数

function to_gifs(){
  local SIZE="800"
  local EX="mov"
  local FRAME="5"
  if [ $1 ]; then
    SIZE=$1
  fi
  if [ $2 ]; then
    EX=$2
  fi
  if [ $3 ]; then
    FRAME=$3
  fi
  local EXE="ls | grep -E '.($EX)$' | sed -e 's/\.$EX//' | xargs -I {} ffmpeg -i {}.$EX -vf scale=$SIZE:-1 -y -r $FRAME {}_w$SIZE.gif"
  eval $EXE
}

第一引数に横幅のサイズ。第二引数に拡張子。第三引数にフレームレート

to_gifs 400 mov 5
.
├── 01_testmov.mov
├── 01_testmov_w400.gif
├── 02_testmov.mov
├── 02_testmov_w400.gif
├── 03_testmov.mov
├── 03_testmov_w400.gif
├── 04_testmov.mov
└── 04_testmov_w400.gif