ウォーターマーク・ロゴのオーバーレイ — overlay フィルタの使い方
動画にロゴや著作権表示を焼き込む際に使うのが overlay フィルタです。2つの映像入力を重ねて1つの映像として出力します。本記事では基本的な使い方から、位置指定の応用・透明度付きPNG・時間制限表示まで順を追って説明します。
動作確認: ffmpeg 6.1 で確認済み
1. overlayフィルタの基本
overlay フィルタは 2つの入力 が必要です。-i で動画とロゴ画像をそれぞれ指定し、-filter_complex で合成します。
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4
overlay=X:Y— ロゴの左上角を、メイン動画の座標 (X, Y) に配置します(左上が原点)- 上記では左上から 10px, 10px の位置にロゴを置きます
2. 位置指定に使える組み込み変数
座標に数値ではなく変数を使うと、動画サイズが変わっても自動的に追従します。
| 変数 | 意味 |
|---|---|
main_w / W | メイン動画の幅 |
main_h / H | メイン動画の高さ |
overlay_w | オーバーレイ(ロゴ)の幅 |
overlay_h | オーバーレイ(ロゴ)の高さ |
右下に配置(よく使う定番パターン)
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=main_w-overlay_w-10:main_h-overlay_h-10" output.mp4
main_w - overlay_w - 10→ 右端から 10px マージンを取った X 座標main_h - overlay_h - 10→ 下端から 10px マージンを取った Y 座標
その他の定番位置:
| 位置 | X 式 | Y 式 |
|---|---|---|
| 左上 | 10 | 10 |
| 右上 | main_w-overlay_w-10 | 10 |
| 左下 | 10 | main_h-overlay_h-10 |
| 右下 | main_w-overlay_w-10 | main_h-overlay_h-10 |
| 中央 | (main_w-overlay_w)/2 | (main_h-overlay_h)/2 |
3. 透明度付きPNGをそのまま使う(アルファチャンネル対応)
ロゴに透過部分があるPNGを使う場合、scale フィルタでサイズを調整してから合成できます。
ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v]scale=100:-1[wm];[0:v][wm]overlay=10:10" output.mp4
フィルタグラフの解説:
[1:v]scale=100:-1[wm]— ロゴ(2番目の入力)を幅100pxにリサイズ(アスペクト比保持)し、[wm]という名前を付ける[0:v][wm]overlay=10:10— メイン動画とリサイズ済みロゴを (10, 10) の位置で合成
ポイント: アルファチャンネル付きPNGはFFmpegが自動的に透過処理します。特別なオプションは不要です。
4. 特定の時間帯だけ表示する(enable オプション)
enable オプションを使うと、ロゴを表示する時間範囲を秒単位で指定できます。
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10:enable='between(t,0,5)'" output.mp4
t— 現在のタイムスタンプ(秒)between(t, 開始秒, 終了秒)— その範囲内で1(有効)を返す関数- 上記では動画の 0〜5 秒の間だけロゴが表示されます
動画全体ではなく特定区間だけロゴを表示したい場合(例: イントロ・アウトロのみ)に便利です。
5. まとめ:右下ロゴの定番コマンド
実際の運用で最もよく使われるパターンです。
ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v]scale=150:-1[wm];[0:v][wm]overlay=main_w-overlay_w-20:main_h-overlay_h-20" output.mp4
- ロゴを幅150pxにリサイズ
- 右下20pxマージンに配置
- アルファチャンネルを維持した自然な合成
よくある注意点
-filter_complexと-vfの違い: 入力が2つ以上ある場合は-filter_complexを使います。-vfは単一入力の場合のみ使用可能です- ロゴのフォーマット: JPEGはアルファチャンネルを持てないため、透過ロゴにはPNG(またはWebP)を使用してください
- 出力コーデック: デフォルトでは
libx264/aacで再エンコードされます。コーデックを指定したい場合は-c:v libx264 -crf 18などを追加してください
関連記事
動作確認: ffmpeg 6.1.1 / Ubuntu 24.04 (GitHub Actions runner)
一次ソース: ffmpeg.org/ffmpeg.html / ffmpeg.org/ffmpeg-filters.html / trac.ffmpeg.org