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

如何使用ffmpeg拼接不同宽高的视频且不产生大量重复帧

问题核心原因
  • 两个输入视频帧率不匹配:第一个视频为25fps,第二个为30fps,concat滤镜要求输入的视频参数完全对齐,参数不一致时会自动生成大量重复帧补全时长,直接导致运行速度骤降、出现上万帧重复的日志
  • SAR(像素宽高比)设置错误:你为缩放后的1080p视频设置SAR为1920/1080=16/9,这会导致编码时计算出异常的超大有效分辨率,触发libx264的MB码率超限警告,进一步拖慢编码速度
  • 输出未指定固定帧率,导致mp4封装器识别到混乱的帧时序,触发帧率过高的警告
修复后的命令
ffmpeg -i /tmp/test-video.mp4 -i /tmp/test-video-1.mp4  \
    -filter_complex "[0:v]scale=1920:1080,fps=25[0v],[0v]setsar=ratio=1[0vf]; \
    [1:v]scale=1920:1080,fps=25[1v],[1v]setsar=ratio=1[1vf]; \
    [0vf][0:a][1vf][1:a]concat=n=2:v=1:a=1[v][a]" \
    -map "[v]" -map "[a]" -r 25 -vsync 2 -c:v libx264 -preset ultrafast -c:a aac -b:a 128k res.mp4 
修改点说明
  • 为每一路视频流添加fps=25滤镜,统一输出帧率,避免自动补帧
  • 把setsar的参数改为1,匹配1080p视频标准的1:1像素宽高比,消除编码参数异常
  • 输出添加-r 25指定固定输出帧率,-vsync 2动态调整帧时序,避免重复帧生成和mp4封装警告
  • 明确指定音频编码参数,保证拼接后的音频正常输出
  • 如果偏好30fps的输出,把命令中所有fps=25和-r 25的参数替换为30即可

内容的提问来源于stack exchange,提问作者A.K.M. Adib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:45:05