我想给我的 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 在每一帧上添加水印,但这会非常慢。