この記事でわかること
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
| パラメータ | 値 | 説明 |
|---|---|---|
t | in / 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 | トランジションの継続時間(秒) |
offset | 1本目のどの時点でトランジションを開始するか(秒) |
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
clip1とclip2の間にフェード- その結果と
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の継続時間は揃えると自然なトランジションになります。
つまずきやすいポイント
-
症状:
xfadeでBuffer is fullやoffset関連のエラーが出る。 原因:offset + durationが1本目の映像の長さを超えている。対処:offsetは1本目の尺より十分小さくします。1本目が6秒ならoffset=5:duration=1までが安全圏です。 -
症状: クロスフェードはできたが音声が消える、または途切れる。 原因:
xfadeは映像専用で、音声は別途処理が必要。対処:acrossfadeを併用し、-map "[v]" -map "[a]"で両方を明示マップします。acrossfadeのdはxfadeのdurationと揃えると自然です。 -
症状: フェードアウトの開始位置がずれる。 原因:
fade=t=outのstは「フェード開始時刻」であり「終了時刻」ではない。対処: 10秒の映像を末尾2秒でフェードアウトするならst=8:d=2です(8+2=10)。 -
症状: 2本のクリップで解像度やfpsが違いトランジションが乱れる。 原因:
xfadeは両入力が同一サイズ・同一fpsであることを前提とする。対処: 事前にscaleとfpsで揃えてからxfadeに渡します。
よくある質問
Q. fade と xfade はどう違いますか。
A. fade は1本の映像を黒(または指定色)へフェードイン・アウトします。xfade は2本の映像を重ねて切り替えるトランジションで、-filter_complex と2入力が必要です。
Q. 黒や白以外の色にフェードできますか。
A. fade では color= で指定できます(例: color=white)。xfade の場合は fadeblack・fadewhite といった専用トランジション名を transition= で選びます。
Q. 3本以上をつなげられますか。
A. はい。xfade の出力にラベルを付け、それを次の xfade の入力にします。本記事の3本連結の例のように ; でチェーンを分けて連結します。
Q. 静止画のスライドショーにも使えますか。
A. 使えます。-loop 1 -t 3 -i img1.jpg のように各画像をループ入力にし、xfade でつなぎます。offset は画像の表示秒数に合わせます。
Q. トランジション効果はどれくらいありますか。
A. fade のほか wipeleft・slideup・circlecrop・dissolve など多数あります。本記事の一覧表から transition= に名前を指定して切り替えます。
関連フィルタ
afade— 音声のフェードイン・アウトacrossfade— 音声のクロスフェードoverlay— 映像の重ね合わせconcat— 映像の結合
関連リソース
よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。