ffmpeg视频去水印

目录

ffmpeg视频去水印

fmpeg提供一个delogo滤镜可以去除视频水印,通过对周围像素进行简单的插值来去掉一个logo,不过有可能产生一个马赛克效果

官方文档参考

http://ffmpeg.org/ffmpeg-all.html#delogo

1.使用delogo去除水印

  • 通过对周围像素进行简单的插值来去掉一个logo。设置一个矩形覆盖标识,但可能出现其他误差
参数
x,y  logo的位置
w,h  logo的宽高
band,t
指定矩形模糊边缘的厚度(添加到w和h),默认值为1.该选项不赞成使用
show
当设置为1时,将在屏幕上绘制一个绿色矩形,以简化查找正确的x/y/w和h参数.默认值为0.
去水印

ffmpeg -i logo.mp4 -filter_complex "delogo=x=100:y=100:w=100:h=100:show=1" delogo.mp4

如果周围的颜色差不多,所以可以完美的去掉logo,但是如果周围的颜色比较复杂就出现一个马赛克的效果

注意:设置show=1则会出现一个绿框

ffmpeg -i logo.mp4 -filter_complex "delogo=x=100:y=100:w=100:h=100:show=1" delogo.mp4

以下未测速


接下来是常用的指令和参数:

1.【切割MP3,按时间准确切割】ffmpeg -i F:\源.mp3 -ss 00:20:00 -to 02:30:05 F:\目标文件.mp3

2.【MTS-->MP4】ffmpeg -i F:\源.mts -b 4M -s 1280*720 F:\结果.mp4

说明:(-b 4m:码率是4M;-s 1280*720:这个是设定视频大小。这2个参数其实可以删掉)

3.【MP4-->WMV】:ffmpeg -i f:\视频.mp4 -b 4M f:\out.wmv

4.【MP4图像旋转】ffmpeg -i f:\o.mp4 -vf "transpose=1" f:\o2.mp4

说明:主要参数: -vf "transpose=1" ,这里等于1是顺时针90度旋转;如果用手机录制的时候录反了,则执行2次这个操作就正过来了

5.【MP4-->MP4改尺寸】ffmpeg -i G:\源.mp4 -b 4M -s 640*340 g:\OUT.mp4

6.【MP4-->MP4改尺寸加水印】ffmpeg -i G:\源.mp4 -vf "movie=logo.png [logo];[in][logo] overlay=10:20 [out]" -b 2M -s 640*340 g:\OUT.mp4

说明:1: -vf "movie=logo.png [logo];[in][logo] overlay=10:20 [out]" 这里面的是加水印的参数,logo.png是我自己做的PNG水印,大小300*100,10:20是水印的位置,为了方便,就把logo.png拷贝到FFMPEg的bin目录下(必须放,加路径就失败),这样不用再加路径了 ;2: -b 2M 是用2M压缩率; 3: -s 640*340 意思是图像分辨率改为640*340

7.【快速剪切某段视频作为输出】ffmpeg -i H:\源.mpg -ss 0:0:0 -to 0:23:20 -c copy G:\OUT.MP4

说明:上面截取 H:\源.mpg 这个视频,从第0秒开始,到23分20秒,这样一段,保存到G:\out.mp4,注意参数必须是 -c copy ,这样执行起来特别快,也就不到半分钟就搞定。

8.【该编码为H265,让MP4瘦身2/3,1G的MP4可以压缩到300M】 ffmpeg -i 源.MP4 -vcodec libx265 -acodec copy F:\OUT.MP4

9.【WAV转换格式到amr】ffmpeg -i test.wav -acodec libamr_nb -ab 12.2k -ar 8000 -ac 1 wav2amr.amr

10.【提取视频中的声音保存成一个mp3】ffmpeg -i 源.mp4 输出.mp3

11.【要实现批量转换,可以直接用这个批处理文件】

for %%i in (*.mkv) do ffmpeg.exe -i "%%i" -vcodec copy -acodec copy "%%~ni.mp4"

12.【合并多个MP4为一个】

这个比较复杂,我在其他地方看到的 是这样的:

ffmpeg -i INPUT1.MP4 -i INPUT2.MP4 -f FORMAT -acodec AUDIOCODEC -vcodec VIDEOCODEC -sameq OUTPUT.MP4

主要不同的地方就在-i 这里,有几个源文件,就用几个 -i ,但是这种方法我实验了很多次,都没成功(我猜测可能是文件或者目录带中文,但是cmd不能很好的识别),所以我使用的是下面这种方法:

先创建一个文本文件filelist.txt

内容如下:(注意input1、2、3是你的文件的名字,都在该目录下)

file 'input1.mp4'

file 'input2.mp4'

file 'input3.mp4'

以上是这个文本文件的内容,保存后,在命令行执行

ffmpeg -f concat -i filelist.txt -c copy output.mp4

这样就完成了合并了。

13.【下载直播流】FFmpeg -i xxxxxxxxx.m3u8 -c copy out.mp4

这里需要注意,m3u8这个文件需要自己去获取,方法可以用开发者模式抓去即可。

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦