求助:合并FFmpeg命令实现多层循环视频叠加、绿幕抠像及logo定时显示功能
求助:合并FFmpeg命令实现多层循环视频叠加、绿幕抠像及logo定时显示功能
没问题,我帮你把两个命令整合到一起,完美实现你需要的所有功能:让背景视频和绿幕视频循环播放至主视频时长,绿幕视频抠像后叠加在背景上,再把主视频缩放后叠上去,最后添加定时显示的logo。
完整整合后的FFmpeg命令
ffmpeg -y -stream_loop -1 -i background.mp4 -stream_loop -1 -i green.mp4 -i input.mp4 -i logo.png -filter_complex "[1:v]colorkey=0x00ff00:0.3:0.2[ckout];[0:v][ckout]overlay[bg_with_green];[2:v]scale=1280:720[scaled_input];[bg_with_green][scaled_input]overlay=70:70:shortest=1[vid];[vid][3:v]overlay=10:10:enable='not(between(t\,10\,15))'[out]" -map "[out]" -map 2:a -c:a copy -shortest output.mp4
命令拆解说明(帮你理解每一步)
我把整个流程拆成了几个清晰的步骤,你可以根据自己的需求调整参数:
- 循环输入设置:
-stream_loop -1分别加在background.mp4和green.mp4前,让这两个视频无限循环,直到主视频input.mp4播放结束(靠最后的-shortest控制时长) - 绿幕抠像处理:
[1:v]colorkey=0x00ff00:0.3:0.2[ckout]对绿幕视频(第二个输入索引1)进行抠像,0x00ff00是绿色的十六进制值,0.3是相似度,0.2是混合度,你可以根据实际绿幕效果微调 - 绿幕叠加到背景:
[0:v][ckout]overlay[bg_with_green]把抠像后的绿幕内容叠加到循环的背景视频(第一个输入索引0)上,生成带绿幕内容的背景层 - 主视频缩放与叠加:
[2:v]scale=1280:720[scaled_input]把主视频(第三个输入索引2)缩放到1280x720分辨率;[bg_with_green][scaled_input]overlay=70:70:shortest=1[vid]把缩放后的主视频叠加到带绿幕的背景上,位置是x=70、y=70,shortest=1确保这一步的输出长度和主视频一致 - logo定时显示:
[vid][3:v]overlay=10:10:enable='not(between(t\,10\,15))'[out]把logo(第四个输入索引3)叠加到最终视频层上,位置x=10、y=10,enable参数控制logo在10-15秒期间隐藏,其他时间显示 - 输出设置:
-map "[out]"指定输出视频流,-map 2:a沿用主视频的音频流,-c:a copy直接复制音频不重新编码,-shortest让最终输出时长等于主视频的长度,-y自动覆盖已存在的输出文件
备注:内容来源于stack exchange,提问作者alexdo
相关产品推荐
相关产品推荐

