fix: 混音主视频clip音量滤镜缺失 + 自动换行识别已有\N标记 #1505

Merged
auto-approve-bot merged 2 commits from fix/audio-volume-and-wrap-newline into develop 2026-08-26 00:21:01 +08:00
Owner

Bug1: 混音时主视频clip音量未生效

mix_with_independent_audio() 处理 main_clips 滤镜链时缺少 volume 滤镜,导致 TTS/配音 replace 模式设置的 volume=0 在混音路径不生效。

修复:在 asetpts 之后、AFORMAT 之前补上 _clip_volume(clip) 调用,与 concat_main_audio() 多clip路径保持一致。

Bug2: 自动换行不识别已有 \N 换行标记

_wrap_title_text() 逐字符遍历时把 \N 当成两个普通字符算宽度,破坏已有的硬换行。

修复:先按 \N 分段,每段独立自动换行,最后用 \N 拼回。

测试

  • 新增3个音量滤镜单测(volume=0/0.5/默认1.0)
  • 新增3个换行标记单测(保留/分段独立换行/多个\N)
  • 1933个相关测试全部通过
## Bug1: 混音时主视频clip音量未生效 `mix_with_independent_audio()` 处理 main_clips 滤镜链时缺少 volume 滤镜,导致 TTS/配音 replace 模式设置的 `volume=0` 在混音路径不生效。 修复:在 asetpts 之后、AFORMAT 之前补上 `_clip_volume(clip)` 调用,与 `concat_main_audio()` 多clip路径保持一致。 ## Bug2: 自动换行不识别已有 \N 换行标记 `_wrap_title_text()` 逐字符遍历时把 `\N` 当成两个普通字符算宽度,破坏已有的硬换行。 修复:先按 `\N` 分段,每段独立自动换行,最后用 `\N` 拼回。 ## 测试 - 新增3个音量滤镜单测(volume=0/0.5/默认1.0) - 新增3个换行标记单测(保留/分段独立换行/多个\N) - 1933个相关测试全部通过
xiaoxia added 1 commit 2026-08-26 00:07:01 +08:00
fix: 混音主视频clip音量滤镜缺失 + 自动换行识别已有\N标记
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 47s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m32s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m46s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m46s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m12s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 41s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m36s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (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
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
9a4e715fd5
1. render_audio.py mix_with_independent_audio(): 主视频clips滤镜链
   缺少 volume 滤镜,导致 TTS/配音 replace 模式设置的 volume=0
   在混音路径不生效。补上 _clip_volume() 调用,与 concat_main_audio()
   多clip路径保持一致。

2. ass_subtitle_builder.py _wrap_title_text(): 逐字符遍历时把
   \\N 当成两个普通字符算宽度,导致已有的硬换行标记被破坏。
   改为先按 \\N 分段,每段独立自动换行,最后用 \\N 拼回。

新增6个单测覆盖两个修复点。

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1505 | | 预览链接 | [https://pr-1505.preview.xiaoxiajianji.com](https://pr-1505.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-08-26 00:10:41 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
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 24s
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 / PR Build Worker Image (pull_request) Successful in 48s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m10s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m14s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m5s
AI Code Review / AI Code Review (pull_request) Successful in 2m57s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m23s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 6m47s
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 / Integration Tests (pull_request) Successful in 1m59s
CI/CD Pipeline / CI Gate (pull_request) Successful in 9s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m15s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 1m20s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m17s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 3m6s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m59s
5da3af9902
Collaborator

代码审查结果 - PR #1505

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

💡 建议(1个可选)

  1. apps/worker/video_processing/render_audio.py 第515行:建议为浮点数比较的阈值 1e-6 添加注释或定义为常量,说明其用于规避浮点数精度误差,提高代码可读性。

格式检查通过 | 逻辑审查通过 | 性能良好


🤖 由 AI 代码审查机器人自动生成 | 2026-08-25 16:13:37 | 模型:

## 代码审查结果 - PR #1505 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(1个可选) 1. **apps/worker/video_processing/render_audio.py 第515行**:建议为浮点数比较的阈值 `1e-6` 添加注释或定义为常量,说明其用于规避浮点数精度误差,提高代码可读性。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-25 16:13:37 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot approved these changes 2026-08-26 00:20:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit ddb1a3544d into develop 2026-08-26 00:21:01 +08:00
auto-approve-bot deleted branch fix/audio-volume-and-wrap-newline 2026-08-26 00:21:01 +08:00

🗑️ 预览环境已清理

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

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

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