fix(render): 修复生成视频时长短于模板要求时长 #1614

Merged
xiaoxia merged 2 commits from fix/video-duration-mismatch into develop 2026-09-01 20:00:12 +08:00

2 Commits

Author SHA1 Message Date
CI Bot c49fad83fd style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 3s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 3s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m25s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 4m55s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 48s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 5m46s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 5m22s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
PR Automation / Auto Approve on CI Green (pull_request) Successful in 6m44s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 7m15s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 7m15s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 7m41s
AI Code Review / AI Code Review (pull_request) Successful in 9m17s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 2m4s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 3m55s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 31m49s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 4s
2026-09-01 11:47:13 +00:00
saas-backend-agent 4266c6f9b0 fix(render): 修复生成视频时长短于模板要求时长
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 0s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m13s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 5m15s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 5m11s
AI Code Review / AI Code Review (pull_request) Successful in 6m12s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 6m13s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 6m40s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 7m39s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 9m26s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 10m8s
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
根因分析:
1. 素材实际时长 < 配置时长时,min(duration, actual) 截短 clip
2. xfade offset 计算错误,未考虑前序转场的累积时长缩减

修复:
- _resolve_clips: 素材不足时自动降低 playback_speed 补偿
  (如配置4s但素材仅3s → speed=0.75x,用满3s素材达到4s输出)
- _clip_effective_duration: 减速场景返回配置的 duration
- xfade_builder: offset = first_input_dur - td(正确公式)
  修复后 4 clips × 4s + 3 × 0.5s xfade = 14.5s(正确)
  修复前 = 14.5s 但 offset 分布不均,导致内容错位
- from-assets: 分配时加转场补偿 (n-1)*td/n
  确保最终输出 = 模板设定总时长

新增 debug 日志:
- 每个 clip 的 duration/actual_duration/effective_duration/speed
- 各图层时长明细和 estimated video_duration
- xfade 链的 durations 和 estimated_dur

同步修复 PR #1611 遗留的测试(SEGMENT_EDGE_GAP=1.5 适配)
2026-09-01 19:36:19 +08:00