用in.avi作为输入视频,out.avi作为输出视频,pp.png表示要添加的水印图片,是png格式的,调整水印大小(scale = 50:50)和位置(overlay=10:10)
ffmpeg –i in.avi -i /data/move/long.png -filter_complex '[1:v]scale=50:50[s];[0:v][s]overlay=10:10' -b:v 500000 -c:v h264 -s cif -f mpegts out.avi
使用overlay添加透明水印时,位置参数的位置在 -vfilters 里面的 overlay= 的后面的前两个参数,参数之间是冒号分隔的。第一个参数是横向的间距,第二个是纵向的间距。可以结合与视频和水印相关的四个值来设置,这四个值分别是:mainW表示主视频宽度,mainH表示主视频高度,overlayW表示水印宽度,overlayH表示水印高度。这些值加在overlay参数中,ffmpeg将自动识别。
也就是说要让水印
显示在视频的左上角overlay参数为 overlay=0:0
显示在右上角为 overlay= main_w-overlay_w:0
显示在右下角为 overlay= main_w-overlay_w:main_h-overlay_h
显示在左下角为 overlay=0: main_h-overlay_h
上面的0可以改为5,或10像素,以便多留出一些空白。
用复合过滤器添加水印:
ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
input:输入流
logo:水印文件,也可以是一个流。注意:需要编译时把相应的解码器编译。例如PNG图片。需要编译PNG解码器。Ffmpeg才能够识别图片文件,把图片做为一种流。注意:PNG图片必须含有alpha通道。Overlay过滤器是根据alpha通道来进行复盖的。所以,你想要透明效果时,须先制做一张透明的PNG图片。
output:输出流
也可以用下面命令:
ffmpeg -i input -vf 'movie=long.png[logo];[in][logo]overlay=10:10[out]' output
movie过滤器用来把两个流组合成一个流。它有一个输出PAD。