ffmpeg加水印

一、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水印参数说明
参数
参数
 
 
 
overlay
main_w
视频单帧图像宽
main_h
视频单帧图像高
overlay_w
水印 片的
overlay_h
水印 片的高度
-vf
置video 过滤 器, 视频 放,水印等
af
设置audio过滤器

关于更多的参数可以参考ffmpeg官网filter的描述:https://ffmpeg.org/ffmpeg-filters.html 

三、加水印可能遇到的问题

1)水印位置

水印图片位置
overlay值
左上角
10:10
右上角
main_w-overlay_w-10:10
左下角
10:main_h-overlay_h-10
右下角
main_w-overlay_w-10 : main_h-overlay_h-10

2)视频码率降低

ffmpeg加水印_第1张图片

上面加水印后发现视频画面变差,后来对比发现是因为编码方式变了

原来的编码格式

ffmpeg加水印_第2张图片

加水印后的编码格式音频编码格式adpcm_swf,视频编码flv1。水印前编码格式是aac和h264

ffmpeg加水印_第3张图片

原来的水印指令没有-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 参数后,对比图

ffmpeg加水印_第4张图片

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



          


你可能感兴趣的:(ffmpeg,流媒体,ffmpeg)