【问题标题】:ffmpeg - Dynamic letters and random position watermark to video?ffmpeg - 视频的动态字母和随机位置水印?
【发布时间】:2016-07-21 14:54:27
【问题描述】:

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

【问题讨论】:

标签: ffmpeg


【解决方案1】:

编辑:这是对 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 过滤器中包含一个随机函数,但每一帧都会对其进行评估,因此这将导致带有文本的伪乒乓球游戏。

【讨论】:

  • 这是一个有趣的例子,我已经看到了足够多的类似问题,如果你想提交补丁,我认为将它添加到 doc/filters.texi 中的 drawtext 示例中可能会很有用。
  • 听起来不错。您能否指出有关如何格式化和提交文档补丁的指南?谢谢。
  • Clone ffmpeg repo using gitAdd name and email to git global config 并导航到 ffmpeg 目录。始终首先变基:git pull --rebase。创建本地分支:git checkout -b drawrandom。进行编辑。本地提交更改:git commit -as(请参阅example commit titles and messages)。查看日志git log -p -2,制作补丁:git format-patch -o patches origin。将patches 中的文件通过电子邮件发送到 ffmpeg 的 ffmpeg-devel。
  • 另见Using Git to develop FFmpeg。大多数开发人员使用git send-email,但这会增加一些设置复杂性。
  • 有人能从上面的例子中解释一下这个表达式的逻辑和细节吗:x=if(eq(mod(t\,30)\,0)\,rand(0\,(W- tw))\,x) ?我知道它负责按 X 轴随机重新定位,每 30 秒一次。但它是如何工作的 - 那些:if, eq, mod, t, rand, \ ?
猜你喜欢
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2019-09-08
  • 2019-07-29
相关资源
最近更新 更多