1. ホーム
  2. video

[解決済み] ffmpegで動画の中央に透明の透かしを入れるには?

2023-05-24 06:23:03

質問

現在、以下のコマンドを使用しています。

Top left corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]" outputvideo.flv

Top right corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" outputvideo.flv

Bottom left corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" outputvideo.flv

Bottom right corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=(main_w-overlay_w-10)/2:(main_h-overlay_h-10)/2 [out]" outputvideo.flv

動画の中央に透かしを入れるには?

どのように解決するのですか?

動画にウォーターマーク/ロゴ画像を追加する例です。 オーバーレイ フィルタを使用しています。

中央揃え

ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -codec:a copy output.mp4

または短縮されたオーバーレイのオプションで

overlay=(W-w)/2:(H-h)/2

左上

これは簡単なことです。なぜなら、オーバーレイのオプションを何も提供しない場合、デフォルトでは画像が左上に配置されるからです。

この例では、画像が端に触れないように5ピクセルのパディングを追加しています。

overlay=5:5

右上

5ピクセルのパディング付き。

overlay=main_w-overlay_w-5:5

または短縮オプションで

overlay=W-w-5:5

右下

5ピクセルのパディング付き。

overlay=main_w-overlay_w-5:main_h-overlay_h-5

または短縮オプションで

overlay=W-w-5:H-h-5

左下

5ピクセルのパディング付き。

overlay=5:main_h-overlay_h

または短縮オプションで

overlay=5:H-h-5

透明度 / 不透明度 / アルファ値

を使って透かしを50%透明にする例 形式 カラーチャンネルミキサー フィルタを使用します。

ffmpeg -i input.mp4 -i watermark.jpg -filter_complex "[1]format=rgba,colorchannelmixer=aa=0.5[logo];[0][logo]overlay=(W-w)/2:(H-h)/2:format=auto,format=yuv420p" -c:a copy output.mp4

品質向上

を使用することで format=auto オプションを オーバーレイ オプションは、PNG透かしをより美しく見せることができます。

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=5:H-h-5:format=auto,format=yuv420p" -c:a copy output.mp4

を追加していることに注意してください。 形式が追加されていることに注意してください。 フィルタ(オプションと同じ名前ですが、独立したフィルタです)を追加して、MP4 出力に必要な YUV 4:2:0 にリセットしていることに注意してください。削除 ,format=yuv420p は、MP4 を出力しない場合は削除してください。

メイン動画に対して透かしを拡大縮小する

動画に scale2ref フィルタを使用します。

ロゴをメイン動画の10%(1/10)の大きさにする例。

ffmpeg -i input.mp4 -i watermark.png -filter_complex "[1][0]scale2ref=w=oh*mdar:h=ih*0.1[logo][video];[video][logo]overlay=5:H-h-5" -c:a copy output.mp4