曲やナレーションが急に始まって急に切れると、視聴体験は一気に安っぽくなります。冒頭をすっと立ち上げ、終わりを滑らかに消す——FFmpeg の afade フィルタはこのフェードイン/フェードアウトを1行で実現します。この記事では t(種別)・st(開始)・d(長さ)の指定、tri/sin/exp などカーブの違い、動画の音声トラックへの適用、フェードイン+アウトの同時指定までをまとめます。

動作確認: FFmpeg 8.1 / Windows — 本記事のコマンド 7 件を検証スクリプトで実行し、全て成功しました(2026-09-06)


基本コマンド

フェードイン(冒頭を徐々に大きく)

ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=3" output.mp3
パラメータ 説明
t=in フェードイン
st=0 0秒 フェード開始位置
d=3 3秒 フェードの継続時間

フェードアウト(末尾を徐々に小さく)

まず音声の長さを確認します:

ffmpeg -i input.mp3 -f null /dev/null 2>&1 | grep Duration

末尾10秒からフェードアウトする例(全体が60秒の場合):

ffmpeg -i input.mp3 -af "afade=t=out:st=50:d=10" output.mp3
パラメータ 説明
t=out フェードアウト
st=50 50秒 フェード開始位置
d=10 10秒 フェードの継続時間

フェードイン+フェードアウトを同時に適用

-af に複数フィルタをカンマ区切りで記述します:

ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=3,afade=t=out:st=50:d=10" output.mp3

カーブタイプの指定

curve オプションでフェードの形状を変えられます:

ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=3:curve=qsin" output.mp3
カーブ名 説明
tri 直線(リニア)。デフォルト
qsin 1/4 サイン波。自然な聴こえ
hsin 1/2 サイン波。より緩やかな S 字
exp 指数関数。急激に変化
log 対数カーブ。最初が急で後が緩やか

動画ファイルの音声にフェードを適用

ffmpeg -i input.mp4 -af "afade=t=in:st=0:d=2" -c:v copy output.mp4

-c:v copy で映像はそのままコピーし、音声だけを処理します。


映像のフェードイン・フェードアウトと組み合わせる

映像(fade)と音声(afade)を同時に適用:

ffmpeg -i input.mp4 -vf "fade=t=in:st=0:d=2" -af "afade=t=in:st=0:d=2" -c:a aac output.mp4

よくある注意点

フェードアウトの st は音声の実際の長さに合わせる

st + d が音声の長さを超えても問題はありませんが、フェードが途中で切れる場合は長さを確認してください。

-c:v copy との組み合わせで音声のみ再エンコード

映像に変更を加えない場合は -c:v copy で映像の品質を保持したまま音声だけを再エンコードできます。


実測: 処理時間とサイズ

計測したコマンドは次のものです。

ffmpeg -i input.mp4 -af "afade=t=in:st=0:d=2,afade=t=out:st=115:d=5" -c:v copy -c:a aac -b:a 128k output.mp4
項目 実測値
処理時間 1.03 秒(実時間の 116.62 倍速)
出力サイズ 353.15 MB

計測環境: Core i9-14900KF(32スレッド)/ FFmpeg 8.1 (gyan.dev) / 素材は 1920x1080・30fps・120秒・351.4 MB(Big Buck Bunny をループ生成、CC BY 3.0)。2026-09-05、逐次実行。生データはデータセットで公開しています。

なぜ1秒で終わるのか

-c:v copy が効いているからです。afade が触るのは音声トラックだけで、1080p の映像ストリームはデコードもエンコードもされずそのままコンテナに書き写されます。2分の動画を「処理」しているように見えても、実際にやっているのは 128kbps の AAC を作り直すことと、映像パケットのコピーだけです。

差は同じ計測の他のケースと並べると分かります。映像を再エンコードする操作は、フィルタを一切かけない素通しの再エンコードでも 27.97 秒、インターレース解除で 14.0 秒、色調補正で 53.26 秒、VP9 への変換に至っては 729.16 秒かかりました。対して -c copy 系の操作は、ストリーム指定の入れ替えが 0.41 秒、moov アトムの移動が 0.49 秒、そしてこの音声フェードが 1.03 秒です。桁が2〜3つ違います。

出力サイズが 353.15 MB と素材の 351.4 MB にほぼ並ぶのも同じ理由です。ファイルの大半を占める映像ストリームは元のまま引き継がれ、書き換わるのは音声トラックだけなので、サイズは「元の動画とほぼ同じ」になります。フェードを入れたのに小さくならない、と心配する必要はありません。

なお以前この記事には「数秒から十数秒に収まることが多い」と書いていましたが、実測は 1.03 秒でした。見積もりが1桁大きすぎたことになります。

映像にもフェードを入れる場合

映像側に fade を足すと -c:v copy は使えなくなり、コストの性質が変わります。計測した 1.03 秒は音声だけを処理した場合の数値であり、映像フェードは今回の計測対象ではありません。見積もりの基準にすべきは、同じ素材・同じ環境で映像を再エンコードしたときの数値のほうです(フィルタなしで 27.97 秒、色調補正で 53.26 秒)。音声だけのときとは別の作業だと考えてください。

フェードアウト位置を決めるときは、動画コンテナの表示時間ではなく音声ストリームの実時間を基準にします。カット編集後のMP4や可変フレームレート素材では、映像と音声の長さが数百ミリ秒ずれることがあります。ffprobe -show_streams で音声側の duration を確認してから st=duration-d を計算すると、末尾だけフェードが残る事故を避けやすくなります。

特にBGM差し替え後は要確認です。


関連記事


動作確認: FFmpeg 8.1 / Windows — 本記事のコマンド 7 件を検証スクリプトで実行し、全て成功しました(2026-09-06) 一次ソース: ffmpeg.org/ffmpeg-filters.html#afade / trac.ffmpeg.org/wiki/AudioVolume


よくある質問

afade と acrossfade の違いは?

afade は単一トラックのフェードイン / アウト。acrossfade は 2 つのトラック間のクロスフェード。BGM 切替なら acrossfade、オープニング / エンディングのフェードなら afade。

フェードはどれくらいの長さがいい?

会話: イン 0.3〜0.49 秒、アウト 1〜2 秒。音楽: イン 1〜2 秒、アウト 2〜4 秒。100ms より短いと安価なスピーカーで「プツッ」と鳴ります。

特定の周波数だけフェードできる?

afade は信号全体に効きます。周波数選択的にフェードしたい場合は、フェードの前にバンドフィルター(lowpass など)を chain してください。

フェードが思った位置から始まらない

st=(start time)が 0 になってないか確認。ファイル末尾でフェードアウトしたい場合、start = duration − fade_length を計算して明示的に指定してください。

afade で再エンコードされる?

はい。任意の音声フィルタは音声トラックの再エンコードを強制します。映像は -c:v copy でコピーのまま保てます。