使用ffmpeg 设置水印的位置

本文详细介绍使用FFmpeg工具在视频中添加水印的具体方法,包括如何将水印置于视频的左上角、右上角、左下角、右下角及中央位置。通过调整坐标参数,实现精确控制水印在视频中的显示位置。

水印在左上角:

ffmpeg -i gopro.mp4 -i 168-50.png -filter_complex "overlay=10:10" -codec:a copy output.mp4  

其中10:10 可以指定 x、y 坐标的位置

水印在右上角:

ffmpeg -i gopro.mp4 -i 168-50.png -filter_complex "overlay=main_w-overlay_w-10:10"  -codec:a copy output.mp4    

水印在左下角:

ffmpeg -i gopro.mp4 -i 168-50.png -filter_complex "overlay=10:main_h-overlay_h-10“  -codec:a copy output.mp4

水印在右下角:

ffmpeg -i gopro.mp4 -i 168-50.png -filter_complex "overlay=main_w-overlay_w-10:main_h-overlay_h-10“  -codec:a copy output.mp4

水印在中间:

ffmpeg -i gopro.mp4 -i 168-50.png -filter_complex "overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2“  -codec:a copy output.mp4

播放

ffplay gopro.mp4 

在这里插入图片描述

FFmpeg作为强大的多媒体处理工具,可添加图片水印和文字水印。以下是不同场景下添加水的方法: - **随机添加水**:可以使用如下命令,在视频中随机添加水。该命令会在视频的随机位置间歇性地显示水印。 ```bash ffmpeg -i test.mp4 -i watermark.png -filter_complex "overlay='if(ld(0), if(lte(mod(t/60,1),0.05),st(0,0);NAN,ld(1)), st(0,1);if(lte(random(t),0.5),st(1,0),st(1,main_w-overlay_w));NAN)':'if(ld(0), if(lte(mod(t/60,1),0.05),st(0,0);NAN,ld(1)), st(0,1);if(lte(random(t),0.5),st(1,0),st(1,main_h-overlay_h));NAN)'" output.mp4 ``` 上述命令中,`-i test.mp4` 指定输入视频文件,`-i watermark.png` 指定水印图片文件,`output.mp4` 为输出文件名 [^2]。 - **代码实现添加水**:在C++代码中调用FFmpeg库添加水。以下是一个简单的示例代码: ```cpp #include <QCoreApplication> #include "watermark.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); if (argc < 4) { fprintf(stderr, "Usage: %s <input> <watermark> <output> [position]\n", argv[0]); fprintf(stderr, "Example: %s input.h264 logo.png output.mp4 \"10:10\"\n", argv[0]); return 1; } const char *input_file = argv[1]; const char *watermark_file = argv[2]; const char *output_file = argv[3]; #if 0 const char *position = "(main_w-overlay_w)/2:(main_h-overlay_h)/2"; #else const char *position = "x='50+50*sin(t)':y='50+50*cos(t)':enable='between(t,0,30)'"; #endif WaterMark *waterMark = new WaterMark(); waterMark->dealStream(input_file,watermark_file,output_file,position); return a.exec(); } ``` 此代码通过命令行参数指定输入文件、水印文件、输出文件和水印位置,调用 `WaterMark` 类的 `dealStream` 方法处理视频并添加水 [^3]。 - **特定位置加水**:使用命令行在特定位置加水。 ```bash C:\Users\Administrator\Desktop\ffmpeg.exe -y -i "C:\Users\Administrator\Desktop\input.mp4" -i C:\Users\Administrator\Desktop\2.png -filter_complex "[0:v]copy[video];[0:a]acopy[audio];[1:v]copy[pm1];[pm1]scale=200:60[pm1];[video][pm1]overlay=(W-w)/2+0:(H-h)/2+0[video]" -map "[video]" -map "[audio]" "C:\Users\Administrator\Desktop\1.mp4" ``` 该命令将水印图片缩放到200x60大小,并添加到视频的中心位置 [^4]。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值