この記事でわかること

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

テスト済みバージョン: FFmpeg 6.1(ubuntu-latest / CI検証済み)
対象 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 で白フェード(ホワイトイン)になります。


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 秒目からトランジションが始まる」という意味です。


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

効果名説明
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 の継続時間は揃えると自然なトランジションになります。

関連フィルタ

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