fix: MP4 fullbox偏移修正+标题全角/半角斜杠换行 #1440

Closed
xiaoxia wants to merge 1 commits from fix/fullbox-offset-and-title-split into develop
Owner

修复内容

Bug 1:MP4 fullbox 偏移计算错误(黑屏)

文件useCanvasPlayer.ts - findCodecConfig 函数

  • 容器 box 内容偏移从 offset + 8 改为 offset + 12
  • fullbox 头部为 12 字节:size(4) + type(4) + version(1) + flags(3)

Bug 2:标题 "/" 换行同时支持全角和半角

文件useCanvasPlayer.ts - drawTitle 函数

  • split("/")split(/[//]/) 同时匹配半角 / 和全角

验证标准

  1. HEVC/H.265 素材视频正常播放(不再黑屏)
  2. 标题中 / 处正确换行
  3. npm run build 无 TS 报错
## 修复内容 ### Bug 1:MP4 fullbox 偏移计算错误(黑屏) **文件**:`useCanvasPlayer.ts` - `findCodecConfig` 函数 - 容器 box 内容偏移从 `offset + 8` 改为 `offset + 12` - fullbox 头部为 12 字节:size(4) + type(4) + version(1) + flags(3) ### Bug 2:标题 "/" 换行同时支持全角和半角 **文件**:`useCanvasPlayer.ts` - `drawTitle` 函数 - `split("/")` → `split(/[//]/)` 同时匹配半角 `/` 和全角 `/` ## 验证标准 1. HEVC/H.265 素材视频正常播放(不再黑屏) 2. 标题中 `/` 或 `/` 处正确换行 3. npm run build 无 TS 报错
xiaoxia added 1 commit 2026-08-19 14:41:21 +08:00
fix: MP4 fullbox偏移修正+标题全角/半角斜杠换行
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 / 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 28s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m47s
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m53s
AI Code Review / AI Code Review (pull_request) Failing after 1m52s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m54s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m39s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m25s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m34s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m13s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m56s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 8m26s
CI/CD Pipeline / Integration Tests (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 / 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 11s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 34s
2f58674679
- findCodecConfig: 容器box内容偏移从+8改为+12(fullbox 12字节头)
- drawTitle: split支持半角/和全角/两种换行符
Collaborator

【阻塞级判定】

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

📊 审查概览

  • 整体评价:需修改
  • 建议级问题数量:0 个

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

  1. [apps/web/src/pages/generate/hooks/useCanvasPlayer.ts: 32] MP4 容器 Box 解析偏移错误
    • 问题类型:逻辑bug
    • 问题描述:代码将 trakmdiaminfstbl 这四个容器 Box 当作 FullBox 处理(头部偏移量设为 12 字节)。根据 ISO Base Media File Format (ISO BMFF) 标准,这四个 Box 均为标准 Box(Header 为 8 字节),而非 FullBox(Header 为 12 字节)。
    • 修改建议:将 const contentStart = offset + 12 改回 const contentStart = offset + 8。FullBox 通常是指 stsdsttsstsc 等具体描述 Box,而不是这些容器 Box。当前的修改会导致解析时多跳过 4 字节,破坏后续数据的对齐,导致编解码器配置查找失败或解析错误。

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

良好实践

  1. 文本分割增强:在 useCanvasPlayer 中使用正则表达式 /[//]/ 同时支持半角 / 和全角 斜杠进行换行,提升了国际化和用户体验。

🤖 由 AI 代码审查机器人自动生成 | 2026-08-19 06:43:13 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:是 - 阻塞级问题数量:1 个 ### 📊 审查概览 - 整体评价:需修改 - 建议级问题数量:0 个 ### 🔴 阻塞级问题(必须修复) 1. **[apps/web/src/pages/generate/hooks/useCanvasPlayer.ts: 32] MP4 容器 Box 解析偏移错误** - 问题类型:逻辑bug - 问题描述:代码将 `trak`、`mdia`、`minf` 和 `stbl` 这四个容器 Box 当作 FullBox 处理(头部偏移量设为 12 字节)。根据 ISO Base Media File Format (ISO BMFF) 标准,这四个 Box 均为标准 Box(Header 为 8 字节),而非 FullBox(Header 为 12 字节)。 - 修改建议:将 `const contentStart = offset + 12` 改回 `const contentStart = offset + 8`。FullBox 通常是指 `stsd`、`stts`、`stsc` 等具体描述 Box,而不是这些容器 Box。当前的修改会导致解析时多跳过 4 字节,破坏后续数据的对齐,导致编解码器配置查找失败或解析错误。 ### 💡 改进建议(不阻塞合并) 无 ### ✅ 良好实践 1. **文本分割增强**:在 `useCanvasPlayer` 中使用正则表达式 `/[//]/` 同时支持半角 `/` 和全角 `/` 斜杠进行换行,提升了国际化和用户体验。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-19 06:43:13 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1440 | | 预览链接 | [https://pr-1440.preview.xiaoxiajianji.com](https://pr-1440.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-08-19 14:44:35 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia closed this pull request 2026-08-19 20:48:12 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #1440 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
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 / 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 28s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m47s
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m53s
AI Code Review / AI Code Review (pull_request) Failing after 1m52s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m54s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m39s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m25s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m34s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m13s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m56s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 8m26s
CI/CD Pipeline / Integration Tests (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 / 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 11s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 34s

Pull request closed

Sign in to join this conversation.