一、ffmpeg加水印命令,主要从直播和视频文件加水印
1)直播推流加水印示例
ffmpeg -i rtmp://localhost/live/name -vf "movie=/path/2.png [watermark]; [in][watermark] overlay=10:10 [out]" -c:v libx264 -c:a copy -f flv rtmp://locahost:1936/live/name
2)视频文件夹水印命令
ffmpeg -i input.avi -vf "movie=logo.png [logo]; [in][logo] overlay=10:10 [out]" output.avi
Bottom left corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" outputvideo.flv
Bottom right corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]" outputvideo.flv
二、ffmpeg水印参数说明ffmpeg水印参数说明
关于更多的参数可以参考ffmpeg官网filter的描述:https://ffmpeg.org/ffmpeg-filters.html
三、加水印可能遇到的问题
1)水印位置
2)视频码率降低
上面加水印后发现视频画面变差,后来对比发现是因为编码方式变了
原来的编码格式
加水印后的编码格式音频编码格式adpcm_swf,视频编码flv1。水印前编码格式是aac和h264
原来的水印指令没有带“-c:v libx264 -c:a copy”这两个参数导致的
ffmpeg -i rtmp://localhost/live/name -vf "movie=/path/2.png [watermark]; [in][watermark] overlay=10:10 [out]"-f flv rtmp://locahost:1936/live/name
解决办法:转成和之前同样的编码格式,音频流直接copy。或者也可以加上-b码率和原始视频试试看
例如我的这个加上“-c:v libx264 -c:a copy 参数后,对比图
3)转264的时候编译的ffmpeg必须支持x264
否则 加-c:v libx264参数的时候可能会报错Unknown encoder 'libx264'
解决办法:先安装x264的库,然后在编译的时候加上./configure --enable-libx264
注意:1)水印视频必须要重新编码"-c:v libx264",音频流直接"-c:a copy"
2) -vcodec copy -acodec copy好像2.x版本以后可以直接简写成-c copy
-vcodec -c:v copy表示视频流可以直接copy
3)加-c copy会报Filtering and streamcopy cannot be used together.注意不要加-c copy
4)注意水印图片的尺寸大小不能大于视频尺寸,要不然水印会全部覆盖。以上视频尺寸800x432,水印尺寸196 × 106
---------------------
作者:思心
原文:https://blog.csdn.net/wu5215080/article/details/81018953