合并视频、音频合并
// 视频路径为手机目录,名称.mp4为ts格式转码后的格式 -i "concat:/视频路径/1.ts|/视频路径/2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc /输出视频路径/名称.mp4
视频添加GIF水印
// -t为时间视频大于图片手机按视频时间停止,反之就会无线循环下去所以加个-t参数 -y -i 视频路径/名称.mp4 -t 13 -ignore_loop 0 -i GIF图片路径/名称.gif -filter_complex overlay=0:H-h 输出路径/名称.mp4 要贴到其他地方?看下面: 右上角: -i input.mp4 -i logo.png -filter_complex overlay=W-w output.mp4 左下角: -i input.mp4 -i logo.png -filter_complex overlay=0:H-h output.mp4 右下角: -i input.mp4 -i logo.png -filter_complex overlay=W-w:H-h output.mp4
每隔10秒交替出现logo
-y -t 60 -i jidu.mp4 -i logo.png -i logo2.png -filter_complex "overlay=x=if(lt(mod(t\,20)\,10)\,10\,NAN ):y=10,overlay=x=if(gt(mod(t\,20)\,10)\,W-w-10\,NAN ) :y=10" overlay.mp4
视频加黑边
-vf 'scale=1280:534,pad=1280:720:0:93:black'
提取音视频
-i input.mov -vcodec copy -an output.mp4 //-vcodec copy 复制视频编码 -an 禁止音频输出
`提取音频` -i input.mov -write_xing 0 output.mp3 //-write_xing 0 #2697: MP3 output duration incorrect in OS X
视频高级截图
//每秒截图,大小为原视频的一半,输出一张 10x3 的网格图: -y -i input.mp4 -vf "fps=1,scale=iw/2:-1,tile=10x3" -an output.jpg //每秒输出一张图:fps参数可改 -i input.mov -vf fps=1 -q:v 2 output%03d.png
系列图转GIF
-f image2 -threads 2 -r 0.5 -i 输入路径/img_%03d.png 输出路径/名字.gif
视频 GIF 转换
//视频转 GIF: -i input.mov -r 10 output.gif //-r fps 帧率 //GIF 转视频: -f gif -i input.gif output.mp4 //-f gif 强制输入文件识别为 GIF 格式
音频淡入/淡出
//时长为 20 秒的视频,前 3 秒淡入,最后 3 秒淡出: -i input.mov -af afade=t=in:st=0:d=3,afade=t=out:st=13:d=3 output.mp4
加速/减速视频
-i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" -map "[v]" -map "[a]" output.mp4 //setpts=0.5*PTS 中的 0.5 是视频速度放慢一半 atempo=2 中的 2 是相对应的音频速度(=1/视频速度)
转换为 MP4 格式
-i input.mov output.mp4 //-i 输入文件 //指定规格参数 -i input.mp4 -c:v libx264 -preset slow -crf 18 -c:a aac -b:a 128k -pix_fmt yuv420p output.mp4
视频剪切
//裁剪前 10 秒: ffmpeg -ss 0:0 -t 0:10 -i input.mov output.mp4 //-ss 开始时间 -t 持续时间 `裁剪最后 10 秒` -sseof -0:10 -i input.mov output.mp4 //-sseof 相对于文件末尾的开始时间 `裁剪尺寸` //将原视频缩小一半,并裁剪画面正中的正方形区域: -i input.mov -vf scale=iw/2:-1,crop=ih output.mp4 //scale=width:height iw/ih 表示输入宽度/高度 -1 表示按输入尺寸等比自动计算 crop=width:height:x:y x:y 指定裁剪的左上角位置,默认值为 (in_w-out_w)/2 和 (in_h-out_h)/2,即输出视频为原视频的中央区域
4个视频四画面显示
-i 输入路径/名字.mp4 -i 输入路径/名字.ts -i 输入路径/名字.ts -i 输入路径/名字.mp4 -filter_complex "nullsrc=size=640x480 [base]; [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=320 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3]; [tmp3][lowerright] overlay=shortest=1:x=320:y=240" -c:v libx264 输出路径/名字.mkv
视频水面倒影
-i输入地址/xxx.mp4 -vf"split[a][b];[a]pad=iw:ih*2[a];[b]vflip[b]; [a][b]overlay=0:h" /输出目录/dy.mp4
左右镜像
-i input.mkv -filter_complex "[0:v]pad=w=2*iw[main];[0:v]hflip[overlay];[main][overlay]overlay=x=w" symmetry.mkv
图片左右合并
-i cat.jpg -i bee.jpg -filter_complex '[0:v]scale=100:100, pad=2*iw:ih:0:0:blue[a]; [1:v]scale=100:100[b]; [a][b]overlay=102:0' -y 2.jpg
一个大视频叠加上一个小视频就是Picture In Picture:
-i 0Cannon.f4v -i slamtv60.264 -i slamtv60.264 -filter_complex '[1:v]scale=100:100[b]; [0:v][b]overlay=80:80' -y xx.mp4 // 两条没经过实验 ffmpeg -i master_video.mp4 -vf "movie=smaller_inner_video.mp4, fade=out:300:30:alpha=1 [inner]; [in][inner] overlay=70:70 [out]" completed.mp4
私人网盘
我的 Blog ☞点击进入☜
我的博客 ☞点击进入☜
如想下载apk请联系我:邮箱: sxgpyjg@qq.com
☞后台系统管理☜