博客总结 : 执行
ffmpeg -i input.mp4 -vf "movie=icon.png[icon_watermark];[in][icon_watermark]overlay=x=40:y=40[out]" output.mp4
命令 , 向视频中添加图片水印 , 效果如下 :
执行
ffmpeg -i input.mp4 -vf "movie=icon.png[icon_watermark];[in][icon_watermark]overlay=x=mod(50*t\,main_w):y=abs(sin(t))*main_h*0.7[out]" output.mp4
命令 , 实现跑马灯效果 ;
FFmpeg 中 的 movie 过滤器 可用于 向 视频中添加 图片水印 ;
movie 过滤器的语法如下 :
movie=file_path[:option1=value1:option2=value2...]
下面的参数都是可选参数 , 不是必须得 , 可选参数 与 file_path 参数 之间都使用冒号 :
隔开 ;
movie 过滤器内置参数 : 在 movie 过滤器中 , 可以使用如下内置参数 , 进行一些特别的定制设置 ;
上述宽度和高度的单位都是 像素 ;
下图是将 图片 作为水印 添加到输入视频中 ,
使用上述四个内置参数值 , 可以计算出 图片水印 在不同位置时的 (x , y) 坐标位置 ;
FFmpeg 中的 overlay 过滤器 用于 将一个视频流叠加在另一个视频流上 , 可以用于 实现 水印 / 字幕 / 画中画 效果 ;
overlay 过滤器 基本语法如下 :
overlay=x=position_x:y=position_y
下面的命令 , 就是 向视频中 添加一个图片水印 的命令 ;
ffmpeg -i input.mp4 -vf "movie=icon.png[icon_watermark];[in][icon_watermark]overlay=x=40:y=40[out]" output.mp4
-i input.mp4
参数 指定 input.mp4 为输入文件 , 该视频文件是要添加图片水印的视频 ;
-vf "movie=icon.png[icon_watermark];[in][icon_watermark]overlay=x=40:y=40[out]"
参数 用于 设置 视频过滤器 , 也就是添加图片水印的主体设置 ;
movie=icon.png[icon_watermark]
参数 设置 movie 过滤器 参数 ,
[in][icon_watermark]overlay=x=40:y=40[out]
参数 设置的是 overlay 过滤器 参数 , 将 输入视频流 [in] 和 水印视频流 [icon_watermark] 叠加在一起 ;
[in]
表示 输入视频流 , 这里指的是 input.mp4 文件 ;[icon_watermark]
表示之前 使用 movie 过滤器 加载的 icon.png 图片对应的 图片水印 视频流 ;[in][icon_watermark]overlay
表示 将 两个 视频流 进行叠加 ;x=40
和 y=40
分别 指定水印在视频中的水平和垂直位置 , 这里是将水印放置在视频的左上角 ;[out]
指的是输出视频流 , 也就是 output.mp4 输出文件 , 在该 overlay 过滤器 中的作用是 将 叠加后的视频流输出到 [out] 输出文件中 ;output.mp4
参数 : 指定输出文件为 output.mp4 , 这是添加水印后生成的新视频文件 ;
执行结果如下 : 执行后 , 将 icon.png 图片作为 水印 , 添加到了 input.mp4 视频文件中 , 得到的输出文件 output.mp4 播放效果如下 , 在视频文件的左上角 ( 40 , 40 ) 位置处 , 出现了 icon.png 图片水印 ;
将 图片水印 位置 , 设置在右下角 , 设置 设置 (x , y) 值为 (main_w-overlay_w , main_h-overlay_h) , 对应的命令如下 :
ffmpeg -i input.mp4 -vf "movie=icon.png[icon_watermark];[in][icon_watermark]overlay=x=main_w-overlay_w:y=main_h-overlay_h[out]" output.mp4
执行上述命令 , 得到的输出文件播放效果如下 :
执行上述命令 , 图片水印被打到了视频的右下角 ;
将 图片水印 位置 , 设置为跑马灯效果 , 需要通过 不停地改变 x 和 y 的位置进行实现 , 这里需要通过表达式实现 ;
设置 x 的值为 mod(50*t\,main_w) , 这是计算 每当 50 * t 的结果达到视频的宽度时 , 取其余数 , 实现效果是每秒向右移动 50 像素 ;
设置 y 的值为 abs(sin(t))*main_h*0.7 , 这是计算时间 t 的正弦值的绝对值 , 乘以视频的高度 , 并乘以一个常数 0.7 , 以调整振幅 ;
最终的 图片水印 跑马灯效果 的命令如下 :
ffmpeg -i input.mp4 -vf "movie=icon.png[icon_watermark];[in][icon_watermark]overlay=x=mod(50*t\,main_w):y=abs(sin(t))*main_h*0.7[out]" output.mp4
执行上述命令 , 得到的输出文件播放效果如下 :
最终得到的输出文件中 , 图片水印的位置 不停地移动 ;
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有