動画編集やコンテンツ制作において、透かし(ウォーターマーク)の追加は著作権保護や動画のブランディングに重要な要素です。この記事では、オープンソースの動画処理ツールFFmpegを使用して、動画に透かしを追加する方法を段階的に解説します。
前提条件
- FFmpegがインストールされていること
- 動画ファイルと透かしとして使用する画像ファイルが用意されていること
基本的な使い方
1. 透かしを左上に配置する
最もシンプルな透かしの追加方法から始めましょう。以下のコマンドで、動画の左上に透かしを配置できます:
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
このコマンドの各パラメータの意味は以下の通りです:
-
-i input.mp4
: 元の動画ファイル -
-i watermark.png
: 透かしとして使用する画像ファイル -
overlay=10:10
: 透かしの位置を指定(左上から x:y のピクセル数)
2. 透かしの配置位置をカスタマイズする
FFmpegでは、動的な値を使用して透かしの位置を指定できます。以下に主な配置パターンを示します:
右上に配置
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:10" output.mp4
ここでの変数の意味:
-
W
: 動画の幅(main_w) -
w
: 透かし画像の幅(overlay_w) -
10
: 右端と上端からのマージン
その他の一般的な配置位置
# 中央配置
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=(W-w)/2:(H-h)/2" output.mp4
# 左下配置
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:H-h-10" output.mp4
# 右下配置
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4
応用テクニック
1. 透かしのサイズ調整
透かしが大きすぎる場合は、scale2ref
フィルターを使用してサイズを調整できます:
ffmpeg -i input.mp4 -i watermark.png -filter_complex "[1][0]scale2ref=oh*mdar:ih*0.2[logo][video];[video][logo]overlay=W-w-10:10" output.mp4
このコマンドでは:
-
oh*mdar
: 高さに合わせてアスペクト比を維持 -
ih*0.2
: 元動画の高さの20%にサイズを調整
2. 高速処理のためのGPU活用
NVIDIAのGPUを使用している場合、エンコーディングを高速化できます:
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:10" -c:v h264_nvenc output.mp4
3. FPSの固定
出力動画のフレームレートを指定する場合:
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:10" -r 30 output.mp4
トラブルシューティング
よくあるエラーと解決方法
-
透かし画像のフォーマットエラー
- PNGやJPEG形式の透かし画像を使用していることを確認
- アルファチャンネル(透明度)が必要な場合はPNG形式を推奨
-
メモリ不足エラー
- 透かし画像のサイズを適切に調整
-
-threads
オプションでスレッド数を制限
-
出力品質のt
-
-crf
値を調整して品質とファイルサイズのバランスを最適化
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:10" -crf 23 output.mp4
-
まとめ
FFmpegを使用した動画への透かし追加は、基本的なコマンドから始めて、必要に応じて高度なカスタマイズが可能です。この記事で紹介した内容を組み合わせることで、以下のような透かし処理が実現できます:
- 任意の位置への透かし配置
- サイズ調整による最適化
- GPUを活用した高速処理
- フレームレートの制御
実際の使用時は、動画の用途や要件に応じて最適なパラメータを選択してください。