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

Android中FFmpeg拼接视频报错:分辨率参数不匹配如何解决?

解决FFmpeg拼接视频时分辨率不匹配的错误

这个错误的原因很直白:你要拼接的两段视频分辨率不一致(一个是1920x1080,另一个是1280x720),而FFmpeg的拼接功能(不管是用concat滤镜还是concat协议)都要求所有输入视频的核心参数——分辨率、SAR(样本宽高比)、帧率、像素格式,甚至音频参数——必须完全匹配,否则就会抛出这个参数不匹配的报错。

给你两种实用的解决思路,按需选择:

1. 手动统一所有视频到目标分辨率

直接用scale滤镜把两段视频都缩放到同一个分辨率(比如统一成1280x720,或者1920x1080),同时确保SAR一致(你的原视频都是1:1,加个setsar更稳妥)。

举个统一到1280x720的命令示例:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v]scale=1280:720,setsar=1:1[v0];[1:v]scale=1280:720,setsar=1:1[v1];[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4
  • scale=1280:720:将视频缩放至目标分辨率
  • setsar=1:1:强制设置SAR为1:1,避免潜在的比例问题
  • concat=n=2:v=1:a=1:指定拼接2段视频,输出1路视频和1路音频
  • -map "[outv]" -map "[outa]":指定输出处理后的视频和音频流

2. 自动匹配其中一段视频的分辨率

如果不想手动写分辨率数值,可以用scale2ref滤镜让其中一段视频自动匹配另一段的分辨率和SAR,灵活性更高。比如让第二段视频匹配第一段的参数:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[1:v][0:v]scale2ref=iw:ih:sar=1[v1][v0];[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4
  • [1:v][0:v]scale2ref=iw:ih:sar=1[v1][v0]:让第二个视频([1:v])参考第一个视频([0:v])的宽高(iw:ih表示用参考视频的宽高)和SAR进行缩放,输出处理后的[v1]和原[v0]
  • 后续的concat逻辑和第一种方法一致

额外注意事项

  • 除了分辨率,还要确保两段视频的帧率、像素格式、音频参数(采样率、声道数、编码格式)一致,如果拼接时还报其他参数不匹配的错误,可以用fps滤镜统一帧率,aformat滤镜统一音频格式
  • 如果你的原视频编码格式一致,处理完分辨率后,可以先用FFmpeg转成mpegts中间格式再拼接,速度会更快:
    # 转成ts格式
    ffmpeg -i input1.mp4 -c:v libx264 -crf 23 -c:a aac -f mpegts temp1.ts
    ffmpeg -i input2.mp4 -c:v libx264 -crf 23 -c:a aac -f mpegts temp2.ts
    # 拼接ts文件
    ffmpeg -i "concat:temp1.ts|temp2.ts" -c copy output.mp4
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:42:42