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

FFmpeg编码添加文本后无损拼接多视频的归一化方案咨询

解决思路

要使用concat demuxer实现无损(不重编码)拼接,要求所有待拼接文件的视频编码格式、帧率、时间基(tbn)、色彩空间参数、H.264 profile/level,以及音频编码格式、采样率、声道数、码率参数完全一致。你遇到的报错就是因为第一步编码时没有强制统一这些参数,FFmpeg默认继承了源文件的部分参数导致输出文件规格不统一。

第一步:修改批量编码命令,强制参数归一化

修正后的编码命令如下,所有会影响拼接的参数全部硬编码固定,同时修正了你原命令中pix_fmt和-vf之间缺空格的笔误:

ffmpeg -i input.1.mp4 \
# 视频编码参数统一
-vcodec libx264 -profile:v high -level 4.1 \
-r 30 -video_track_timescale 15360 \
-pix_fmt yuv420p -color_primaries smpte170m -color_trc smpte170m -colorspace smpte170m \
# 视频滤镜(缩放+水印)
-vf "scale=1920:-2, drawtext=fontfile=./roboto.ttf: fontsize=40: text='ABC': x=(w-text_w)-w/20: y=(h-text_h)-h/20" \
# 音频参数统一
-acodec aac -ar 48000 -ac 2 -b:a 128k \
-y export/out.1.mp4

关键参数说明:

  • -r 30:强制输出视频帧率固定为30fps,不会再出现30.04fps、29fps的不一致情况
  • -video_track_timescale 15360:强制视频时间基(tbn)统一为15360,解决时间基不一致导致的DTS错乱问题
  • 色彩相关参数:统一所有文件的色彩空间配置,避免拼接后出现画面色彩跳变
  • 音频参数:强制采样率48kHz、双声道、固定128k码率,不会再出现44.1kHz采样率、超低码率的异常音频流

第二步:执行无损拼接

第一步所有文件编码完成后,直接使用你原来的concat demuxer命令即可,可额外加-fflags +genpts参数自动修正可能的时间戳小问题:

ffmpeg -safe 0 -f concat -fflags +genpts \
-i <(find ./export/ -type f -printf "file '$PWD/%p'\n" | sort) \
-c copy concat.out.mp4

该命令全程不会重编码音视频流,拼接速度仅和硬盘读写速度挂钩,不会占用大量CPU资源,输出文件无画质损失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 00:54:09