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

FFmpeg拼接不同分辨率视频时进程卡顿的解决方法

解决FFmpeg拼接视频时卡顿与高CPU占用问题

问题根源

从输出日志可定位核心问题:

  1. 帧率不匹配:第一个视频为30fps,第二个为29.97fps,concat滤镜为同步流会大量重复/丢弃帧,直接导致CPU负载飙升
  2. 音频参数不一致:第一个视频音频采样率44100Hz,第二个为48000Hz,强制同步增加额外处理开销
  3. 编码级别超限:输出视频MB rate超过H.264 level限制,触发高复杂度编码逻辑

修正后的命令

ffmpeg -y -i video_1.mp4 -i video_2.mp4 \
-filter_complex '[0]scale=426:240:force_original_aspect_ratio=decrease,pad=426:240:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=29.97[v0];[1]scale=426:240:force_original_aspect_ratio=decrease,pad=426:240:(ow-iw)/2:(oh-ih)/2,setsar=1[v1];[0:a]aresample=48000[a0];[v0][a0][v1][1:a]concat=n=2:v=1:a=1[v][a]' \
-map '[v]' -map '[a]' -c:v libx264 -level 3.0 -preset medium -c:a aac concatenated_video.mp4

关键修改说明

  • 统一帧率:给第一个视频添加fps=29.97,对齐第二个视频帧率,消除帧重复/丢弃的情况
  • 统一音频采样率:用aresample=48000将第一个视频音频采样率转成48000Hz,与第二个视频一致,避免音频同步开销
  • 限制编码级别:添加-level 3.0,符合426x240分辨率的标准编码级别,降低编码复杂度
  • 优化编码预设:-preset medium在压缩率和编码速度间取平衡,进一步降低CPU负载

可选调整

若想保留30fps帧率,只需给第二个视频滤镜链添加fps=30,同时将音频采样率统一为44100Hz:

ffmpeg -y -i video_1.mp4 -i video_2.mp4 \
-filter_complex '[0]scale=426:240:force_original_aspect_ratio=decrease,pad=426:240:(ow-iw)/2:(oh-ih)/2,setsar=1[v0];[1]scale=426:240:force_original_aspect_ratio=decrease,pad=426:240:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v1];[1:a]aresample=44100[a1];[v0][0:a][v1][a1]concat=n=2:v=1:a=1[v][a]' \
-map '[v]' -map '[a]' -c:v libx264 -level 3.0 -preset medium -c:a aac concatenated_video.mp4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:53:10