この記事でわかること
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
| パラメータ | 値 | 説明 |
|---|---|---|
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 で白フェード(ホワイトイン)になります。
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 秒目からトランジションが始まる」という意味です。
組み込みトランジション効果一覧
| 効果名 | 説明 |
|---|---|
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の継続時間は揃えると自然なトランジションになります。
関連フィルタ
afade— 音声のフェードイン・アウトacrossfade— 音声のクロスフェードoverlay— 映像の重ね合わせconcat— 映像の結合