この記事は、Supershipグループ Advent Calendar 2024の 23日目の記事になります。
はじめに
FFmpegを使って動画に余白(パディング)を追加し、枠線をつけたり、L字の余白を挿入してバナー風のデザインに編集する方法を解説します。
動画にパディングを付与する
FFmpegのフィルターオプションpad
を使用して、動画に余白や枠線を追加できます。
公式ドキュメント:FFmpeg Filters Documentation - pad
基本のコマンド
以下のコマンドで、動画に余白(黒い枠線)を追加します。
ffmpeg -i input.mp4 -vf pad=w=iw+60:h=ih+60:x=30:y=30:color=black output.mp4
コマンドの解説:
-
pad
フィルターの指定:-vf pad=w=iw+60:h=ih+60:x=30:y=30:color=black
-
w=iw+60
/h=ih+60
出力動画の幅(w)と高さ(h)を、入力動画の解像度に対してそれぞれ+60px追加しています。-
iw
:入力動画の横幅(例:1920) -
ih
:入力動画の縦幅(例:1080)
結果として、上下左右に30pxずつ余白が追加される形になります。
-
-
x=30 / y=30
入力動画をオフセットする座標を指定しています。-
x
:左から30px横に移動 -
y
:上から30px下に移動
これにより、余白を均等に追加しつつ、映像が中央に配置されます。
-
-
color=black
余白の色を指定します。
デフォルトは黒(black)ですが、#FF0000
のようなRGB形式も指定できます。
-
コマンドの動作
上記コマンドを実行すると、以下の動作が行われます:
- 入力動画の周囲に30pxの余白(パディング)が追加される。
- 余白部分の色は黒(
color=black
)に設定される。 - 出力動画の解像度は、追加されたパディング分だけ拡大される。
- 例:入力動画が1920x1080の場合 → 出力動画は1980x1140になります。
注意点:アスペクト比と解像度
パディングを追加すると、出力動画の解像度やアスペクト比が変更されるため、注意が必要です。
例えば、フルHD(1920x1080)の動画に60pxの余白を追加すると、1980x1140になり、標準的な解像度から外れる可能性があります。
対策方法
-
入力動画の解像度を事前に調整する
追加する余白分、あらかじめ解像度を小さくした動画を用意します。 -
解像度を再調整する
余白追加後に、出力動画を元の解像度(例:1920x1080)にリサイズします。
L字の余白を追加した動画を作成する
これまでの内容を応用して、L字型の余白を追加した動画を作成します。
最終的な動画の解像度はフルHD(1920x1080)
を想定しています。
1. 入力動画の解像度を調整する
まず、入力動画をL字の余白を追加するために、一段小さい解像度(HD+、1600x900)に変換します。
これにより、L字の余白を適切に配置する準備が整います。
ffmpeg -i input.mp4 -s 1600x900 movie_900.mp4
-
-s 1600x900
:出力動画の解像度を1600x900(HD+)に指定します。 -
movie_900.mp4
:変換後の動画ファイル名です。
2. L字の余白を追加する
次に、pad
フィルターを使用して、動画の周囲にL字の余白を追加します。
L字の余白部分には色を指定し、左側と下側にスペースを作成します。
ffmpeg -y -i movie_900.mp4 -vf 'pad=w=1920:h=1080:x=320:y=0:color=#87CEEB' movie_l.mp4
コマンドの解説:
-
w=1920:h=1080
出力動画の解像度をフルHD(1920x1080)に指定します。 -
x=320
/y=0
入力動画(1600x900)を右方向に寄せています。-
1920-1600=320
のため、X座標は320pxになります。 - Y座標は0なので、動画は縦方向には動かず、上に配置されます。
-
-
color=#FFFF00
L字の余白の色としてスカイブルー(#87CEEB
)を指定しています。 -
movie_l.mp4
L字余白を追加した出力動画ファイル名です。
3. 余白部分にテキストやロゴを追加する
追加したL字の余白部分にdrawtext
フィルターを使用してテキストやロゴ画像を挿入することができます。
テキストを挿入する例
ffmpeg -i movie_l.mp4 -vf "drawtext=text='L字の余白こんにちわ!':x=320:y=990:fontsize=60:fontcolor=black" movie_l_text.mp4
-
drawtext
フィルター:テキストを動画に追加します。-
text='L字の余白こんにちわ!'
:表示するテキスト内容。 -
x=320:y=990
:テキストの配置位置(L字の余白内)。 -
fontsize=60
:テキストのフォントサイズ。 -
fontcolor=black
:テキストの色を黒に指定しています。
-
これで、L字型の余白が追加され、余白部分にテキストやロゴを表示する動画を作成できます。
おわりに
FFmpegのpadフィルターを使用すれば、動画に簡単に余白や枠線を追加できます。
また、余白の色やオフセット値を細かく指定することで、I字やL字のパディング、さらにはバナー風のデザインも実現可能です。
最後に宣伝です。
Supershipではプロダクト開発やサービス開発に関わる人を絶賛募集しております。
ご興味がある方は以下リンクよりご確認ください。
Supership 採用サイト
是非ともよろしくお願いします。