fix(#463): 直通模式调速失效 - final_duration未考虑调速导致减速场景被截断 #625

Merged
auto-approve-bot merged 2 commits from fix/463-pass-through-speed into develop 2026-07-20 11:41:09 +08:00
Owner

问题

直通模式(pass_through)下调速不生效,减速场景视频被截断。

根因

_render_pass_throughfinal_duration 用原始 effective_duration 计算,没有考虑调速(setpts/atempo)导致的实际输出时长变化:

  • 减速场景(speed<1):调速后视频变长,但 -t 仍用原始时长截断 → 后半段丢失
  • 加速场景(speed>1):调速后视频变短,-t 值大于实际时长 → 看起来正常但逻辑错误

修复

改用 _clip_adjusted_duration(clip) 计算调速后的实际时长作为 final_duration 基准,与 video_duration 取较小值。

测试

新增3个单元测试:

  • test_pass_through_speed_up_correct_duration - 加速场景时长正确(5s)
  • test_pass_through_slow_down_correct_duration - 减速场景时长正确(20s,不被截断)
  • test_pass_through_speed_with_video_duration_cap - video_duration截断逻辑正确

108个测试全绿。

## 问题 直通模式(pass_through)下调速不生效,减速场景视频被截断。 ## 根因 `_render_pass_through` 中 `final_duration` 用原始 `effective_duration` 计算,没有考虑调速(setpts/atempo)导致的实际输出时长变化: - 减速场景(speed<1):调速后视频变长,但 `-t` 仍用原始时长截断 → 后半段丢失 - 加速场景(speed>1):调速后视频变短,`-t` 值大于实际时长 → 看起来正常但逻辑错误 ## 修复 改用 `_clip_adjusted_duration(clip)` 计算调速后的实际时长作为 `final_duration` 基准,与 `video_duration` 取较小值。 ## 测试 新增3个单元测试: - `test_pass_through_speed_up_correct_duration` - 加速场景时长正确(5s) - `test_pass_through_slow_down_correct_duration` - 减速场景时长正确(20s,不被截断) - `test_pass_through_speed_with_video_duration_cap` - video_duration截断逻辑正确 108个测试全绿。
xiaoxia added 1 commit 2026-07-20 10:04:19 +08:00
fix(#463): 直通模式调速失效 - final_duration未考虑调速导致减速场景被截断
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
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 / 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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 15s
AI Code Review / AI Code Review (pull_request) Failing after 34s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 10s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 2m12s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 5m11s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 49s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 3m18s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m38s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m45s
2680df478d
根因:_render_pass_through 中 final_duration 用原始 effective_duration 计算,
      没有考虑调速(setpts/atempo)导致的实际输出时长变化。
      减速场景(speed<1)下视频被 -t 错误截断,加速场景因截断值大于实际
      时长而表现正常但逻辑错误。

修复:改用 _clip_adjusted_duration(clip) 计算调速后的实际时长作为
      final_duration 的基准,与 video_duration 取较小值。

新增3个单元测试覆盖:加速时长、减速时长、video_duration截断。
xiaoxia added 1 commit 2026-07-20 11:31:05 +08:00
style: black format test_unified_render_service.py
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
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 / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
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 / 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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 17s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 22s
AI Code Review / AI Code Review (pull_request) Successful in 2m41s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 43s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 4m40s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 3m27s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 6m24s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m2s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 9m59s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 29s
b45c24cfa8
Collaborator

代码审查结果 - PR #625

⚠️ 问题(0个需要修改)

💡 建议(0个可选)


格式检查通过 | 逻辑审查需修改 | 性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 11:33:45 | 模型:

## 代码审查结果 - PR #625 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(0个可选) 无 --- ✅ 格式检查通过 | ✅ 逻辑审查需修改 | ✅ 性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 11:33:45 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot approved these changes 2026-07-20 11:37:33 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-20 11:37:34 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 82929fcd10 into develop 2026-07-20 11:41:09 +08:00
auto-approve-bot deleted branch fix/463-pass-through-speed 2026-07-20 11:41:09 +08:00

🗑️ 预览环境已清理

PR #625 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #625 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.