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这个文件需要自己去获取,方法可以用开发者模式抓去即可。