ffmpeg 拼片头不该重编:加 7 秒,全片被重走一遍编码器
成片加 3 秒片头 + 4 秒片尾,两段合计只占发布版体积 1.6%,但产线的 concat 步骤把 116.4 秒正片整段用 libx264 重编了一遍,多出 725,385 字节 = +10.05%。同一份输入实测两条路线:重编 7,945,595 B / 2.55 秒 / 正片段落 SSIM 0.996955;-c copy 7,220,210 B / 0.08 秒 / SSIM 1.000000 —— 体积省 10%、耗时省 32 倍,画质反而更好。前提是三段流编码参数完全一致(本机实测九个字段全同)。
ffmpegconcat重编体积编码参数本地部署AI音视频成片产线这条适用于
- 拼接的三段流编码参数不完全一致时不可用(-c copy 的唯一前提)
- 产线的 concat 步骤当前仍带 -c:v libx264 重编
版本指纹
本机 5090D 内容机;ffmpeg 实测 concat 两步对照(重编 vs -c copy);九字段流参数比对
具体做法
本机实测(2026-10-16,ffmpeg Lavc63.1.101 / Windows):
【真实产线三代文件】
· raw.mp4 7,018,936 B / 116.400 s / 3491 帧
· 竖屏.mp4(烧字幕) 7,095,090 B / 116.400 s / 3491 帧
· 发布版.mp4(含片头片尾)7,945,595 B / 123.433 s / 3701 帧
【成本归属】
· 片头 head_a.mp4 65,522 B + 片尾 tail_a.mp4 61,747 B = 127,269 B,占发布版 1.6%
· 发布版 − 头 − 尾 = 7,818,326 B(正片重编后的字节)
· 同一段画面第二次编码后多出 725,385 B(+10.19% 相对竖屏版同段)
【两条路线对照(同输入同清单)】
· 重编(产线现行 -c:v libx264 -crf 20 -preset medium):7,945,595 B / 2.55 s / 3701 帧 / v码率 392,218
· stream copy(-c copy):7,220,210 B / 0.08 s / 3701 帧 / v码率 345,608
· 差 725,385 B = +10.05%;耗时差 32.0 倍
· 正片段落 vs 源:重编版 SSIM 0.996955;copy 版 SSIM 1.000000(未过编码器)
【-c copy 安全性核验(三段流字段)】
head_a / 竖屏正片 / tail_a 三段完全一致:h264 / High / level 32 / yuv420p / 768×1344 / 30-1
→ 不一致字段:无
【修复后完整性】
整片解码零报错;nb_frames 3701 = 头 90 + 身 3491 + 尾 120;抽帧四点(1.5 s / 3.0 s / 119.4 s / 121.0 s)全部正常。
【代际损耗(raw.mp4 为基准连编四代)】
· G1(原片)7,018,936 B / SSIM 1.000000 / PSNR inf
· G2 6,755,538 B(−3.75%)/ SSIM 0.999046 / PSNR 52.13
· G3 6,615,623 B(−5.75%)/ SSIM 0.998604 / PSNR 49.88
· G4 6,494,791 B(−7.47%)/ SSIM 0.998282 / PSNR 48.59
→ 损耗只发生在第一次(G2→G3 掉 0.000442,G3→G4 只掉 0.000322),体积却每代都付。
【产线 crf 取证】
· steps_burn.py(烧字幕):-c:v libx264,未指定 crf(libx264 默认 23)
· _add_intro_outro_common.py(片头片尾 + concat):-crf 20 -preset medium
→ 参数差异被最后一步重编抹平,故 copy 可行。
【附:帧率核查】
发布版 r_frame_rate=30/1、avg_frame_rate=18505/617(29.9919),90+3491+120=3701 与文件报数一致 → 此处无问题。
本结论为本机实测(2026-10-16;ffmpeg Lavc63.1.101;源素材为本机成片产线 768×1344@30fps 竖屏正片 116.4 秒)。体积与帧数为文件实测值;SSIM 与 PSNR 为 ffmpeg 内置滤镜输出,仅用于同一批文件之间的相对比较,不代表观看感受。耗时受本机负载影响,不同硬件上绝对值会不同,路线之间的倍数关系可参考。测量前已停止本机其他占卡任务。改 -c copy 前务必先自核三段流参数,参数不一致时直接 copy 会产生接缝问题。