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

FFmpeg hstack拼接切片图片报错,请求技术排查协助

问题原因与解决方案

核心问题:concat demuxer的使用场景错误

你用-f concat的concat demuxer,作用是把多个文件串联成单个连续的媒体流(比如把多张图片做成一段视频),而非生成多个独立的视频输入源。所以不管你的文本里写多少个file,ffmpeg只会识别出1个输入流(索引为0),自然找不到[1:v]这类其他输入,导致hstack滤镜无法获取足够的输入源报错。

正确的实现方式

1. 测试用(2个切片)

直接将每个切片作为独立输入传给ffmpeg,无需concat文本:

ffmpeg -i img1920_slices/img1920_slice_0.png -i img1919_slices/img1919_slice_0.png -filter_complex "[0:v][1:v]hstack=inputs=2" test.png

2. 批量处理1920个切片

用Shell脚本自动生成所有输入参数和hstack的输入标签:

# 生成所有切片的输入参数(按img1920到img0001的顺序)
input_args=""
for num in $(seq 1920 -1 1); do
    formatted_num=$(printf "%04d" $num)
    input_args="$input_args -i img${formatted_num}_slices/img${formatted_num}_slice_0.png"
done

# 生成hstack需要的输入标签串(如[0:v][1:v]...[1919:v])
filter_inputs=$(seq 0 1919 | awk '{print "["$0":v]"}' | tr -d '\n')

# 执行拼接命令
ffmpeg $input_args -filter_complex "${filter_inputs}hstack=inputs=1920" reconstructed_slice_0.png

补充说明

  • hstack的inputs参数必须和实际传入的视频输入数量完全一致,否则会报错
  • 1920个输入可能会占用较多内存,若出现内存不足问题,可以考虑分批次拼接(比如先每100个拼成一张图,再把这些拼接后的图继续横向拼接)

内容的提问来源于stack exchange,提问作者Elle Fiorentino-Lange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:20:58