fix: 调换 fps 与 setpts 顺序,修复 P0-3 xfade 多视频转场 PTS 不一致问题 #210
Reference in New Issue
Block a user
Delete Branch "fix/p03-fps-setpts-order"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
根因分析
P0-3 多视频 xfade 转场失败(exit code 234)的根因:
unified_render_service.py中每个 clip 预处理滤镜链里,fps 在 setpts=PTS-STARTPTS 之前执行。当多个视频有不同 timebase/帧率时:
修复方案
将
setpts=PTS-STARTPTS移到fps之前:影响范围
测试
新增 2 个单元测试:
test_setpts_before_fps_in_xfade_inputs: 多视频 xfade 模式,验证每个片段的 setpts 都在 fps 之前test_setpts_before_fps_single_clip: 单视频模式,验证顺序一致性测试结果:25/25 passed(unified_render_service 全量测试)
相关测试:73/73 passed(video_compose 系列测试)
关联
✅ PR #210 代码审计通过(P0-3 fps/setpts 顺序修复)
评级:0P0 / 0P1 / 0P2 / 1P3
🔧 核心修复验证
调换 fps 与 setpts 顺序 ✅
为什么调换能解决 timebase 不一致问题:
📹 模式覆盖检查
🔍 其他文件排查
全局搜索 apps/worker/ 下所有 fps= 出现位置:
结论:所有需要修复的地方都已覆盖。
🧪 测试验证
2 个新增测试 + 46 个相关测试全部通过 ✅
测试质量评价:优秀
💡 P3 建议(非阻塞)
P3-1:trim 后的 setpts 与最终 setpts 合并优化
✅ 结论
P0-3 fps/setpts 顺序修复正确,改动极小(2行),风险极低,测试覆盖充分,可以合并。
建议与 PR #209(P0-2 HTTPS 修复)一起合并部署到 staging,然后跑第五轮端到端验证。