如何修改FFmpeg命令实现音频拼接+指定时长图片轮播
修改FFmpeg命令实现四张图片轮播+多音频合成视频
完整修改后命令(适配Windows命令提示符)
ffmpeg ^ -loop 1 -framerate 2 -i "C:\Users\marti\Documents\projects\jan2023-rendertune\ffmpeg-commands\images\img1.png" ^ -loop 1 -framerate 2 -i "C:\Users\marti\Documents\projects\jan2023-rendertune\ffmpeg-commands\images\img2.png" ^ -loop 1 -framerate 2 -i "C:\Users\marti\Documents\projects\jan2023-rendertune\ffmpeg-commands\images\img3.png" ^ -loop 1 -framerate 2 -i "C:\Users\marti\Documents\projects\jan2023-rendertune\ffmpeg-commands\images\img4.png" ^ -i "C:\Users\marti\Documents\projects\jan2023-rendertune\ffmpeg-commands\audio files\song1.mp3" ^ -i "C:\Users\marti\Documents\projects\jan2023-rendertune\ffmpeg-commands\audio files\song2.mp3" ^ -i "C:\Users\marti\Documents\projects\jan2023-rendertune\ffmpeg-commands\audio files\song3.wav" ^ -c:a pcm_s32le ^ -filter_complex ^ "[0:v]scale=w=640:h=638,pad=ceil(iw/2)*2:ceil(ih/2)*2,t=252.5[v0]; ^ [1:v]scale=w=640:h=638,pad=ceil(iw/2)*2:ceil(ih/2)*2,t=252.5[v1]; ^ [2:v]scale=w=640:h=638,pad=ceil(iw/2)*2:ceil(ih/2)*2,t=252.5[v2]; ^ [3:v]scale=w=640:h=638,pad=ceil(iw/2)*2:ceil(ih/2)*2,t=252.5[v3]; ^ [v0][v1][v2][v3]concat=n=4:v=1:a=0[v]; ^ [4:a][5:a][6:a]concat=n=3:v=0:a=1[a]" ^ -map "[v]" -map "[a]" ^ -vcodec libx264 -bufsize 3M -crf 18 -pix_fmt yuv420p -tune stillimage -t 1010 ^ "C:\Users\marti\Documents\projects\jan2023-rendertune\ffmpeg-commands\videos\concatVideo-250771.mkv"
关键改动说明
- 新增图片输入:添加3个额外的
-i参数引入另外三张轮播图,每张图都保留原命令的-loop 1 -framerate 2设置,确保静态循环播放 - 重构滤镜链:
- 对每个图片流(
[0:v]至[3:v])单独应用缩放、补全偶数尺寸的滤镜,并通过t=252.5指定每张图的显示时长 - 使用
concat滤镜将4个处理后的视频流拼接成完整的视频轨道,同时保留原有的音频拼接逻辑合并3个音频流
- 对每个图片流(
- 参数适配:移除原命令中单独的
-filter:v参数,将视频滤镜整合到filter_complex中统一处理,避免参数冲突;通过-map明确指定输出使用拼接后的视频和音频轨道
注意事项
- 命令中的
^是Windows命令提示符的换行分隔符,方便阅读,实际运行时可去掉换行直接写成一行,或保留换行格式 - 每张图的
t=252.5参数严格匹配你要求的轮播时间线,总时长累加后正好为1010秒 - 你的FFmpeg 4.3版本完全支持该命令中的所有滤镜和参数
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

