在 Linux 上为视频添加水印

在 Linux 上为视频添加水印

我想给我的 FLV 视频添加水印。以前我使用 FFmpeg 的vhook选项来实现,但由于一些问题,我不得不将其升级到最新的 SVN 修订版。此版本的 FFmpeg 不再受vhook支持。

我曾尝试使用 mencoder,bmovl但是 mencoder 似乎很难使用。

还有其他可行的给视频加水印的选项吗?

答案1

使用最新的 ffmpeg 执行此操作的正确方法是使用覆盖滤镜。以下命令将放置watermark.png在水印的顶部input.flv,水印的左上角位于主视频左上角右侧十五个像素处,下方十个像素处:

ffmpeg -i input.flv -i watermark.png -filter_complex \
'[0:v][1:v]overlay=15:10[outv]' -map [outv] -map 0:a \
-c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4

显然,将 15 或 10 更改为您想要的任何值。

如果您要在具有不同分辨率的多个视频上添加水印,您可能还会发现一些有用的常量:

  • W 和 H 分别是主视频的宽度和高度(input.flv
  • w 和 h 分别是叠加视频的宽度和高度(watermark.png

这些可以派上用场。例如,要将水印置于视频的中心,您可以使用:

'[0:v][1:v]overlay=(W-w)/2:(H-h)/2[outv]'

类似地,要将水印置于视频左上角六分之一处的中央:

'[0:v][1:v]overlay=(W-w)/6:(H-h)/6[outv]'

对于视频左下角的六分之一:

'[0:v][1:v]overlay=(W-w)/6:(H-h)/(6/5)[outv]'

你几乎可以做任何你需要做的事情。

查看覆盖过滤器文档以获取更多信息。

答案2

VLC 可以使用以下方式给视频添加水印效果和滤镜>视频效果>输出/覆盖>添加文字,它可以读取 FLV 文件。就我个人而言,使用 VLC(或任何程序)进行编码时,我取得了不同的成功。

答案3

我认为 vlc 和 mplayer 以及 ffmpeg 通常效果不错。您在使用 mplayer/mencoder 时遇到了什么问题?

您可以使用 imagemagick 或脚本 gimp 在每一帧上添加水印,但这会非常慢。

看:http://www.imagemagick.org/Usage/annotating/#wmark_image

相关内容