🎬 FFmpeg個人リファレンス

Bashスクリプト

よく使うコマンドはスクリプトにまとめておくと、ファイルをドラッグするだけ・引数1つで実行できます。 ffprobeと組み合わせれば、長さや解像度に応じた処理も書けます。

基本のスクリプト

引数で渡した動画を、拡張子だけ .mp4 に変えて出力します。

#!/usr/bin/env bash
# convert.sh — 引数の動画をMP4(H.264/AAC)に変換する
set -euo pipefail

input="$1"
output="${input%.*}.mp4"

ffmpeg -i "$input" -c:v libx264 -crf 20 -preset medium -c:a aac -b:a 192k "$output"
echo "完了: $output"
  • set -euo pipefail … エラーで安全に停止する定番のおまじない
  • ${input%.*} … 拡張子を取り除いたファイル名
  • "$input" … スペースを含むパスのため必ずダブルクオートで囲む

ffprobeの値で分岐する

#!/usr/bin/env bash
# 動画の長さ(秒)を取得して条件分岐する例
set -euo pipefail

dur=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$1")
# 小数を整数に
dur=${dur%.*}

if [ "$dur" -gt 60 ]; then
  echo "60秒超え(${dur}秒)"
else
  echo "60秒以内(${dur}秒)"
fi
注意
パスは必ず "$var" のように引用符で囲みます。スペースや日本語が入っても壊れません。

実行のしかた

# 実行権限を付けて使う
chmod +x convert.sh
./convert.sh input.mov

複数ファイルをまとめて処理するなら一括処理、ノートアプリと繋ぐならObsidian連携へ。