本文章介绍一下使用FFmpeg将两段视频合成为一段视频!
小编这里使用的是绿幕人像视频哦!会将绿幕人像视频去除绿幕并合成为一段视频
- 首先准备两段视频将视频进行截取你想要的时长(我这里截取了5秒)
-
ffmpeg -ss 00:00:00 -t 00:00:05 -i 原视频.mp4 截取后新视频.mp4 // 视频地址可为相对路劲,也可为绝对路劲
- 绿幕人像视频缩放(如果不需要缩放可不执行)
-
ffmpeg -i 原人物绿幕视频.mp4 -vf "scale=180:240:flags=lanczos" -crf 1 缩放后人物绿幕视频.mp4
- 参数说明
- scale:缩放滤镜(scale=宽:高)
- 参数说明
- 视频合成
- 直接合并视频(适合无绿幕视频合成)
-
ffmpeg -i 背景视频.mp4 -i 缩放后人物绿幕视频.mp4 -vf "scale=720:1280" 合并视频路劲.mp4
- 将绿幕人物放在指定位置(右下)
-
ffmpeg -i 背景视频.mp4 -i 缩放后人物绿幕视频.mp4 -filter_complex "[0:v][1:v] overlay=W-w-10:H-h-10:enable='between(t,1,5)'" 新视频合并路径.mp4
- 去除绿幕
- mov转webm去除绿幕(问题:本地绿幕仍然存在,服务器端呈黑色背景) 使用滤镜调色
-
// 转mov 推荐使用值0.2:0.3 ffmpeg -i 合成旧视频.mp4 -vf "chromakey=0x00FF00:0.2:0.3" -c copy -c:v mov新视频.mov // 转webm ffmpeg -y -i 新视频.mov -vf "chromakey=0x00FF00:0.2:0.3" -c copy -c:v libvpx-vp9 -c:a libopus 新视频.webm
- 直接将绿幕人物嵌入背景视频中(浅色绿幕)
-
ffmpeg -i 背景视频.mp4 -i 缩放后绿幕人物视频.mp4 -filter_complex "[1:v]chromakey=Green:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" 新视频.mp4
- 直接嵌入绿幕人像视频
-
ffmpeg -i D:\demo\bg_1.mp4 -i D:\demo\video_2.mp4 -filter_complex "[1:v]chromakey=0x00ff00:0.1:0.0[fg_keyed];[0:v][fg_keyed]overlay=W-w-10:H-h-10:enable='between(t,1,5)'" -map "[out]" -map 1:a -c:v libx264 -c:a aac -y D:\demo\output_1.mp4
- 扣绿色嵌入(推荐)
-
0x1CE90A 调整相应绿幕颜色 0x色域 否则人像绿边严重 #28FE0E #19DC08
-
ffmpeg -i 背景视频.mp4 -i 绿幕人像视频.mp4 -filter_complex "[1:v]chromakey=0x1CE90A:0.1:0.0[fg_keyed];[0:v][fg_keyed]overlay=x=W-w-10:y=H-h-10:shortest=1[out]" -map "[out]" -map 1:a -c:v libx264 -c:a aac -y 新视频位置.mp4
- 绿边最浅建议使用
-
ffmpeg -i 背景视频地址.mp4 -i 绿幕人像视频地址.mp4 -shortest -filter_complex "[1:v]chromakey=0x19DC08:0.1:0.2[ckout];[0:v][ckout]overlay=x=W-w-10:y=H-h-10:shortest=1[out]" -map "[out]" 合成视频地址.mp4 // 需注意绿幕色域否则会出现绿边问题0x绿幕色域;位置x=人像视频距离左上角水平位置变量 y=人像视频距离左上角垂直位置变量 可直接x=人像视频距离左上角水平位置变量:y=人像视频距离左上角垂直位置变量 也可以x=W-w-人像视频距离左上角水平位置变量:y=H-h-人像视频距离左上角垂直位置变量
-
如对坐标位置不清晰查看: