ffmpeg - 动态字母和随机位置水印到视频?

时间:2016-04-01 17:33:08

标签: ffmpeg

我正在制作一个在线课程,并且为了避免盗版分发,我想在视频上添加水印(包括个人用户信息),因此无法上传到共享网站。现在困难的部分:我会在视频中移动水印,每隔30秒以3/4随机位置移动。 它有可能与ffmpeg?

1 个答案:

答案 0 :(得分:2)

编辑:这是LN链接中答案的改编,它会每30秒随机化一次,不会重复:

ffmpeg -i input.mp4 \
-vf \
"drawtext=fontfile=font.ttf:fontsize=80:fontcolor=yellow@0.5:text='studentname': \
 x=if(eq(mod(t\,30)\,0)\,rand(0\,(W-tw))\,x): \
 y=if(eq(mod(t\,30)\,0)\,rand(0\,(H-th))\,y)" \
-c:v libx264 -crf 23 -c:a copy output.mp4

旧答案

您可以使用如下命令:

ffmpeg -i input.mp4 \
-vf \
"drawtext=fontfile=font.ttf:fontsize=80:fontcolor=yellow@0.5: \
 text='studentname':x=200:y=350:enable='between(mod(t\,30*3),0,30)', \
 drawtext=fontfile=font.ttf:fontsize=80:fontcolor=yellow@0.5: \
 text='studentname':x=1000:y=600:enable='between(mod(t\,30*3),31,60)', \
 drawtext=fontfile=font.ttf:fontsize=80:fontcolor=yellow@0.5: \
 text='studentname':x=450:y=50:enable='between(mod(t\,30*3),61,90)'" \
-c:v libx264 -crf 23 -c:a copy output.mp4

这里,旋转三个位置,每30秒发生一次变化。每个x:y参数都是手动设置的。如果您从shell脚本调用该命令,则可以使用随机数生成器并将其提供给命令。 drawtext过滤器中包含一个随机函数,但它会被每个帧评估,这样就会产生一个带有文本的伪乒乓游戏。