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

如何使用FFmpeg拼接MP4视频?遇参数不匹配错误求助

问题描述

我有两个MP4视频文件intro.mp4和video.mp4,想把intro.mp4拼接在video.mp4之前。尝试用ffmpeg执行以下命令:

ffmpeg -i intro.mp4 -i new.mp4 -filter_complex "[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" outputt.mp4

但出现了如下错误:

[Parsed_concat_0 @ 0x555ded10a180] Input link in0:v0 parameters (size 1920x1080, SAR 1:1) do not match the corresponding output link in0:v0 parameters (567x400, SAR 1:1)
[Parsed_concat_0 @ 0x555ded10a180] Failed to configure output pad on Parsed_concat_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #1:0

解决方法

报错核心原因是两个视频分辨率不匹配,ffmpeg的concat滤镜要求所有输入视频的分辨率、帧率、像素格式等参数完全一致才能完成拼接。以下是两种可行的解决方式:

方式一:统一分辨率后拼接

将低分辨率视频缩放至与高分辨率视频一致的尺寸,同时保持原比例避免画面拉伸,推荐使用补黑边的方式:

ffmpeg -i intro.mp4 -i video.mp4 -filter_complex "[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[v1];[0:v][0:a][v1][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.mp4

命令说明:

  • scale=1920:1080:force_original_aspect_ratio=decrease:将第二个视频缩放到不超过1920x1080的尺寸,保留原画面比例
  • pad=1920:1080:(ow-iw)/2:(oh-ih)/2:给缩放后的视频添加上下/左右黑边,凑成1920x1080的分辨率
  • 最后用concat拼接参数统一的视频流

如果不在乎画面变形,可直接强制缩放:

ffmpeg -i intro.mp4 -i video.mp4 -filter_complex "[1:v]scale=1920:1080[v1];[0:v][0:a][v1][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.mp4

方式二:用concat demuxer高效合并(需参数一致)

若两个视频的编码格式、帧率、音频参数完全一致,可跳过转码直接合并,步骤如下:

  1. 先将MP4转成支持直接拼接的TS格式:
ffmpeg -i intro.mp4 -c copy -bsf:v h264_mp4toannexb intro.ts
ffmpeg -i video.mp4 -c copy -bsf:v h264_mp4toannexb video.ts
  1. 合并TS文件并转回MP4:
ffmpeg -i "concat:intro.ts|video.ts" -c copy output.mp4

注意:如果两个视频参数不一致,这种方式会导致合并后的视频播放异常,此时优先选择方式一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:15:54