ネットで配信する動画保護の悪あがき(笑)。動画に入れる透かし動画を移動させることで透かしが切り取られ難くしたい。たとえば透かし画像を3分ごとに右下→右上→左上→左下と移動させたい。それもFFmpegを使ってバッチでやりたい。どうするか。
ネットで調べたらドンピシャの記事を発見。
Adding a dynamically positioned watermark to a video via ffmpeg – Stack Overflow
http://stackoverflow.com/questions/12400845/adding-a-dynamically-positioned-watermark-to-a-video-via-ffmpeg
やり方としては、透かし画像が移動するだけの透過動画を作成しておき、それと本編を合成するというもの。
用意するもの
- 動画本編 source.mp4
- 透かし画像 (右下) wm1.png
- 透かし画像 (右上) wm2.png
- 透かし画像 (左上) wm3.png
- 透かし画像 (左下) wm4.png
手順
それぞれの透かし画像から3分(180秒)ずつの動画を生成。
1 2 3 4 |
ffmpeg -loop 1 -i wm1.png -t 180 -vcodec png -pix_fmt rgba wm1.mov ffmpeg -loop 1 -i wm2.png -t 180 -vcodec png -pix_fmt rgba wm2.mov ffmpeg -loop 1 -i wm3.png -t 180 -vcodec png -pix_fmt rgba wm3.mov ffmpeg -loop 1 -i wm4.png -t 180 -vcodec png -pix_fmt rgba wm4.mov |
結合して透かしが移動するだけの12分(3分x4箇所)の動画を生成。
1 |
ffmpeg -i wm1.mov -i wm2.mov -i wm3.mov -i wm4.mov -filter_complex "[0:0] [1:0] [2:0] [3:0] concat=n=4:v=1:a=0 [v]" -map "[v]" -y -vcodec png -pix_fmt rgba -q 0 wm12.mov |
もし本編の尺に足りなければ繋ぎ合わせて長くしておく。たとえば本編が20分だったら2つ繋ぎ合わせて24分あれば足りる。
1 |
ffmpeg -i wm12.mov -i wm12.mov -filter_complex "[0:0] [1:0] concat=n=2:v=1:a=0 [v]" -map "[v]" -y -vcodec png -pix_fmt rgba -q 0 wm24.mov |
本編と合成。オプションは適宜追加。
1 |
ffmpeg -i source.mp4 -i wm24.mov -filter_complex overlay -shortest -y -q 0 <追加オプション> movie_final.mp4 |
これにイントロやエンディングのクリップを繋ぎ合わせれば完成。