ffmpeg 去水印,质量降低损失

1,883 阅读1分钟
在使用中delogo滤器的时候发现质量会降低,这里对输出流重新编码,减少损失。另外主流的浏览器都只支持h264编码,所有选择了libx264编码器,质量高,速度不快。

安装

下载

wget -c https://ffmpeg.org/releases/ffmpeg-4.2.3.tar.bz2

x264 编码器安装

wget https://code.videolan.org/videolan/x264/-/archive/stable/x264-stable.tar.gz && tar -xvf x264-stable.tar.gz  
sudo ./configure --enable-shared --disable-asm
sudo make && sudo make install
#如果在找不到264库情况下,手动导出对应的路径,比如
#whereis libx264.so.159
#libx264: /usr/local/lib/libx264.so
#export LD_LIBRARY_PATH="/usr/local/lib"

安装ffmpeg

tar -xvf ffmpeg-4.2.3.tar.bz2 && cd ffmpeg-4.2.3
# --enable-gpl  过滤水印的过滤器 delogo,需要启用gpl授权证书,才会安装
# --enable-libx264 过滤器的使用会损失视频质量、浏览器下只支持h264编码。使用libx264编码器可以降低质量损失
[sudo] ./configure --disable-x86asm --enable-gpl --enable-libx264  && [sudo] make && [sudo] make install

使用ffmpeg

取水印,logo坐标

#这里取视频第一帧
#注意,有的水印可能在后几秒才有,这样需要换别的方法获取
ffmpeg -y -i test.mp4 -start_at_zero -vframes 1 test_shotscreen.jpeg

水印logo在视频的位置

比如:970,14 294×65,左上角水印左上角左边 970,14,长294,宽65

过滤视频流,拷贝音频流,使用delog过滤器

#show当值为1时,delogo回框出定义的位置,这里不需要显示
#编码器需要放在输入流之后,就是-i file,后
#解码器在输入流直接,这里没有用到
ffmpeg -y -i test.mp4 -vcodec libx264 -vf "delogo=x=970:y=14:w=294:h=65:show=0"  -c:a copy -f mp4 test_out.mp4