You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ffmpeg将10个视频拼成3840x2160分辨率的5列2行分屏视频

ffmpeg 5列2行10视频分屏拼接操作方案

完整实现命令

ffmpeg \
-i input0.mp4 -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 \
-i input5.mp4 -i input6.mp4 -i input7.mp4 -i input8.mp4 -i input9.mp4 \
-filter_complex \
"[0:v]scale=w=768:h=1080,setsar=1[v0];\
[1:v]scale=w=768:h=1080,setsar=1[v1];\
[2:v]scale=w=768:h=1080,setsar=1[v2];\
[3:v]scale=w=768:h=1080,setsar=1[v3];\
[4:v]scale=w=768:h=1080,setsar=1[v4];\
[5:v]scale=w=768:h=1080,setsar=1[v5];\
[6:v]scale=w=768:h=1080,setsar=1[v6];\
[7:v]scale=w=768:h=1080,setsar=1[v7];\
[8:v]scale=w=768:h=1080,setsar=1[v8];\
[9:v]scale=w=768:h=1080,setsar=1[v9];\
[v0][v1][v2][v3][v4][v5][v6][v7][v8][v9]xstack=inputs=10:layout=0_0|w0_0|w0+w1_0|w0+w1+w2_0|w0+w1+w2+w3_0|0_h0|w0_h0|w0+w1_h0|w0+w1+w2_h0|w0+w1+w2+w3_h0:fill=black[outv]" \
-map "[outv]" -c:v libx264 -crf 23 -preset medium output_3840x2160.mp4

命令拆分说明

  • 输入部分:按你想要的排列顺序导入10个视频,第一行从左到右对应前5个输入input0到input4,第二行从左到右对应后5个输入input5到input9
  • 缩放部分:每个输入视频流经过scale滤镜强制缩放到768x1080,setsar=1将像素采样比设为1,避免因源视频像素比例异常导致画面变形
  • 布局拼接部分:使用xstack滤镜完成网格拼接,inputs参数指定参与拼接的视频流数量,layout参数按输入流顺序依次定义每个视频的左上角坐标,fill=black设定无视频画面的区域填充黑色
  • 输出部分:编码使用H.264格式,crf 23是默认画质参数,数值越小画质越高文件越大,preset参数控制编码速度,档位越慢压缩率越高

常见调整说明

  • 避免画面拉伸:如果源视频比例和768x1080不一致,不想强制拉伸的话,将scale部分替换为scale=w=768:h=1080:force_original_aspect_ratio=decrease,pad=w=768:h=1080:x=(ow-iw)/2:y=(oh-ih)/2:color=black,setsar=1,会等比缩放后上下/左右补黑边
  • 音频处理:如果需要合并所有视频的音频,在filter_complex末尾加音频混合逻辑:[0:a][1:a][2:a][3:a][4:a][5:a][6:a][7:a][8:a][9:a]amix=inputs=10[outa],然后输出参数加-map "[outa]" -c:a aac -b:a 192k;如果只需要保留某一个视频的音频,直接加-map x:a(x为对应输入的序号,从0开始)
  • 时长对齐:如果需要所有视频统一为相同时长,可以在每个scale滤镜前加trim滤镜,比如统一裁剪为10秒:[0:v]trim=duration=10,scale=...

内容的提问来源于stack exchange,提问作者SmileyAG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:15:04