perf(#1341): 优化封面生成速度(减少抽帧数和轮询间隔) #1350

Closed
xiaoxia wants to merge 1 commits from optimize/cover-generation-speed into develop
Owner

优化内容

减少 MediaKit 抽帧配置

  • max_frames: 3 → 1(只抽取 1 帧,速度优先)
  • poll_interval: 2.0s → 1.0s(缩短轮询间隔)
  • max_poll_attempts: 60 → 30(超时从 120s 降到 60s)

预期效果

  • 封面生成时间从 120s 减少到 60s
  • 前端 timeout 已在 PR #1349 中从 180s 增加到 300s,足够覆盖

文件

  • packages/shared/ai_service.py
## 优化内容 ### 减少 MediaKit 抽帧配置 - `max_frames`: 3 → 1(只抽取 1 帧,速度优先) - `poll_interval`: 2.0s → 1.0s(缩短轮询间隔) - `max_poll_attempts`: 60 → 30(超时从 120s 降到 60s) ### 预期效果 - 封面生成时间从 120s 减少到 60s - 前端 timeout 已在 PR #1349 中从 180s 增加到 300s,足够覆盖 ### 文件 - `packages/shared/ai_service.py`
xiaoxia added 1 commit 2026-08-13 00:22:48 +08:00
perf(#1341): 优化封面生成速度
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 / 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 / Check if frontend-only change (pull_request) Successful in 37s
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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m24s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m38s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m44s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m50s
AI Code Review / AI Code Review (pull_request) Successful in 1m49s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m34s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m35s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m57s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m0s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m19s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 7m49s
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 5s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 35s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m17s
6446394662
- max_frames: 3 → 1(只抽取 1 帧,速度优先)
- poll_interval: 2.0s → 1.0s(缩短轮询间隔)
- max_poll_attempts: 60 → 30(超时从 120s 降到 60s)

预期效果:封面生成时间从 120s 减少到 60s

🚀 预览环境已部署

项目 详情
PR号 #1350
预览链接 https://pr-1350.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1350 | | 预览链接 | [https://pr-1350.preview.xiaoxiajianji.com](https://pr-1350.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
Collaborator

【阻塞级判定】

  • 是否存在阻塞级问题:否
  • 阻塞级问题数量:0 个

📊 审查概览

  • 整体评价:有建议
  • 建议级问题数量:2 个

🔴 阻塞级问题(必须修复)

💡 改进建议(不阻塞合并)

  1. [packages/shared/ai_service.py: 406-408] 超时时间配置风险

    • 具体内容:poll_interval (1.0) 与 max_poll_attempts (30) 的乘积将总超时时间从 120 秒缩短至 30 秒。对于视频处理任务,30 秒可能过于激进,尤其是当视频较长或服务端负载较高时,极易导致频繁超时失败。建议确认外部 AI 服务的 SLA 是否能稳定在 30 秒内完成,否则建议适当放宽(如 60 秒)。
  2. [packages/shared/ai_service.py: 406] 单帧提取的容错性

    • 具体内容:max_frames 被设置为 1。虽然注释提到“速度优先”,但如果提取的唯一一帧质量不佳(如黑场、模糊、字幕遮挡等),将直接导致后续封面生成失败或效果极差。建议至少保留 max_frames=23,或者在代码逻辑中增加对单帧质量的校验机制,以平衡速度与成功率。

良好实践

  • 代码注释清晰,明确标注了参数修改的原因(“速度优先”、“缩短轮询间隔”),有助于后续维护理解变更意图。

🤖 由 AI 代码审查机器人自动生成 | 2026-08-12 16:24:38 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:有建议 - 建议级问题数量:2 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[packages/shared/ai_service.py: 406-408] 超时时间配置风险** - 具体内容:`poll_interval` (1.0) 与 `max_poll_attempts` (30) 的乘积将总超时时间从 120 秒缩短至 30 秒。对于视频处理任务,30 秒可能过于激进,尤其是当视频较长或服务端负载较高时,极易导致频繁超时失败。建议确认外部 AI 服务的 SLA 是否能稳定在 30 秒内完成,否则建议适当放宽(如 60 秒)。 2. **[packages/shared/ai_service.py: 406] 单帧提取的容错性** - 具体内容:`max_frames` 被设置为 1。虽然注释提到“速度优先”,但如果提取的唯一一帧质量不佳(如黑场、模糊、字幕遮挡等),将直接导致后续封面生成失败或效果极差。建议至少保留 `max_frames=2` 或 `3`,或者在代码逻辑中增加对单帧质量的校验机制,以平衡速度与成功率。 ### ✅ 良好实践 - 代码注释清晰,明确标注了参数修改的原因(“速度优先”、“缩短轮询间隔”),有助于后续维护理解变更意图。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-12 16:24:38 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot approved these changes 2026-08-13 00:30:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-08-13 00:30:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia closed this pull request 2026-08-13 00:57:29 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #1350 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
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 / 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 / Check if frontend-only change (pull_request) Successful in 37s
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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m24s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m38s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m44s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m50s
AI Code Review / AI Code Review (pull_request) Successful in 1m49s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m34s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m35s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m57s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m0s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m19s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 7m49s
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 5s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 35s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m17s

Pull request closed

Sign in to join this conversation.