この記事でわかること

  • fade フィルタで映像のフェードイン・フェードアウトを行うコマンド
  • xfade フィルタで 2 映像間のクロスフェードトランジションを行うコマンド
  • 組み込みトランジション効果の一覧
  • 複数映像を連続してトランジションでつなぐ方法

テスト済みバージョン: FFmpeg 6.1(検証スクリプトで実 FFmpeg 実行確認)
対象 OS: Windows / macOS / Linux


fade フィルタ — フェードイン・フェードアウト

フェードイン(冒頭を黒から徐々に表示)

ffmpeg -i input.mp4 -vf "fade=t=in:st=0:d=2" output.mp4
パラメータ説明
tin / outフェードの方向
stフェード開始時刻
dフェードの継続時間

フェードアウト(映像の末尾を黒にフェード)

ffmpeg -i input.mp4 -vf "fade=t=out:st=8:d=2" output.mp4

st=8 は 8 秒から 2 秒かけてフェードアウトします。映像の長さに合わせて調整してください。

フェードイン+フェードアウトを一度に適用

ffmpeg -i input.mp4 \
  -vf "fade=t=in:st=0:d=1.5, fade=t=out:st=8.5:d=1.5" \
  output.mp4

黒以外の色にフェードする

ffmpeg -i input.mp4 \
  -vf "fade=t=in:st=0:d=2:color=white" \
  output.mp4

color=white で白フェード(ホワイトイン)になります。フェードの代わりに画面を一瞬ぼかして切り替えたいときは、boxblur フィルタでボックスブラーをかける処理を併用する方法もあります。


xfade フィルタ — 2映像間のクロスフェード

基本的なクロスフェード

ffmpeg -i input1.mp4 -i input2.mp4 \
  -filter_complex "[0][1]xfade=transition=fade:duration=1:offset=4" \
  output.mp4
パラメータ説明
transitionトランジション効果名(後述)
durationトランジションの継続時間(秒)
offset1本目のどの時点でトランジションを開始するか(秒)

offset=4 は「1本目の映像の 4 秒目からトランジションが始まる」という意味です。背景を差し替えながらトランジションでつなぎたい場合は、事前にchromakey フィルタでグリーンバック合成する処理で素材を用意しておくとスムーズです。


組み込みトランジション効果一覧

効果名説明
fadeクロスフェード(デフォルト)
wipeleft左方向にワイプ
wiperight右方向にワイプ
wipeup上方向にワイプ
wipedown下方向にワイプ
slideleft左スライド
slideright右スライド
slideup上スライド
slidedown下スライド
circlecrop円形クロップ
rectcrop矩形クロップ
distance距離ベース
fadeblack黒経由のフェード
fadewhite白経由のフェード
radial放射状ワイプ
smoothleft滑らかな左スライド
smoothright滑らかな右スライド
smoothup滑らかな上スライド
smoothdown滑らかな下スライド
pixelizeピクセレート
diagtl斜め(左上→右下)
diagtr斜め(右上→左下)
diagbl斜め(左下→右上)
diagbr斜め(右下→左上)
hlslice水平スライスワイプ
hrslice水平逆スライスワイプ
vuslice垂直上スライスワイプ
vdslice垂直下スライスワイプ
dissolveディゾルブ
hblur水平ブラートランジション
fadegraysグレースケールフェード
squeezeh水平スクイーズ
squeezev垂直スクイーズ
# ワイプ左の例
ffmpeg -i input1.mp4 -i input2.mp4 \
  -filter_complex "[0][1]xfade=transition=wipeleft:duration=1:offset=4" \
  output.mp4

2映像の長さが異なる場合の注意

offset は 1 本目の映像の秒数です。offset + duration が 1 本目の総時間以内になるように設定してください。

# 1本目が6秒の場合: offset=5, duration=1 はOK
ffmpeg -i clip1.mp4 -i clip2.mp4 \
  -filter_complex "[0][1]xfade=transition=fade:duration=1:offset=5" \
  output.mp4

3本の映像を2つのトランジションでつなぐ

ffmpeg -i clip1.mp4 -i clip2.mp4 -i clip3.mp4 \
  -filter_complex \
    "[0][1]xfade=transition=fade:duration=1:offset=4[v01]; \
     [v01][2]xfade=transition=wipeleft:duration=1:offset=8" \
  output.mp4
  1. clip1clip2 の間にフェード
  2. その結果と clip3 の間にワイプ

音声を含む場合の処理

xfade は映像のみのフィルタです。音声にも同様のトランジションをかけるには acrossfade フィルタを使います。

ffmpeg -i clip1.mp4 -i clip2.mp4 \
  -filter_complex \
    "[0:v][1:v]xfade=transition=fade:duration=1:offset=4[v]; \
     [0:a][1:a]acrossfade=d=1[a]" \
  -map "[v]" -map "[a]" \
  output.mp4

静止画のスライドショーにクロスフェードを追加する

ffmpeg -loop 1 -t 3 -i img1.jpg \
       -loop 1 -t 3 -i img2.jpg \
  -filter_complex "[0][1]xfade=transition=fade:duration=1:offset=2" \
  output.mp4

注意点

  • xfade は FFmpeg 4.3 以降で使用できます。古いバージョンでは overlay + fade の組み合わせが必要でした。
  • offset の値は映像の長さより小さくする必要があります。
  • acrossfade の継続時間と xfade の継続時間は揃えると自然なトランジションになります。

つまずきやすいポイント

  • 症状: xfadeBuffer is fulloffset 関連のエラーが出る。 原因: offset + duration が1本目の映像の長さを超えている。対処: offset は1本目の尺より十分小さくします。1本目が6秒なら offset=5:duration=1 までが安全圏です。

  • 症状: クロスフェードはできたが音声が消える、または途切れる。 原因: xfade は映像専用で、音声は別途処理が必要。対処: acrossfade を併用し、-map "[v]" -map "[a]" で両方を明示マップします。acrossfadedxfadeduration と揃えると自然です。

  • 症状: フェードアウトの開始位置がずれる。 原因: fade=t=outst は「フェード開始時刻」であり「終了時刻」ではない。対処: 10秒の映像を末尾2秒でフェードアウトするなら st=8:d=2 です(8+2=10)。

  • 症状: 2本のクリップで解像度やfpsが違いトランジションが乱れる。 原因: xfade は両入力が同一サイズ・同一fpsであることを前提とする。対処: 事前に scalefps で揃えてから xfade に渡します。


よくある質問

Q. fadexfade はどう違いますか。 A. fade は1本の映像を黒(または指定色)へフェードイン・アウトします。xfade は2本の映像を重ねて切り替えるトランジションで、-filter_complex と2入力が必要です。

Q. 黒や白以外の色にフェードできますか。 A. fade では color= で指定できます(例: color=white)。xfade の場合は fadeblackfadewhite といった専用トランジション名を transition= で選びます。

Q. 3本以上をつなげられますか。 A. はい。xfade の出力にラベルを付け、それを次の xfade の入力にします。本記事の3本連結の例のように ; でチェーンを分けて連結します。

Q. 静止画のスライドショーにも使えますか。 A. 使えます。-loop 1 -t 3 -i img1.jpg のように各画像をループ入力にし、xfade でつなぎます。offset は画像の表示秒数に合わせます。

Q. トランジション効果はどれくらいありますか。 A. fade のほか wipeleftslideupcirclecropdissolve など多数あります。本記事の一覧表から transition= に名前を指定して切り替えます。


関連フィルタ

  • afade — 音声のフェードイン・アウト
  • acrossfade — 音声のクロスフェード
  • overlay — 映像の重ね合わせ
  • concat — 映像の結合

関連リソース

よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。

FFmpeg チートシート