feat: 多轨道混音 + 字幕渲染引擎 + 视频拼接(后端) #312

Merged
xiaoxia merged 6 commits from feat/multi-track-mix-subtitle-concat into develop 2026-07-14 15:20:47 +08:00

6 Commits

Author SHA1 Message Date
xiaoxia 4b13efb488 style: black + isort format
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 47s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m48s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m26s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (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 / Deploy 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 1m12s
2026-07-14 15:12:37 +08:00
xiaoxia 0f3881443f style: black + isort format
CI/CD Pipeline / Validate Code Quality And Tests (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 / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Runtime Images (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
2026-07-14 15:12:33 +08:00
xiaoxia 50b6d59ab8 style: black + isort format
CI/CD Pipeline / Validate Code Quality And Tests (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 / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Runtime Images (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
2026-07-14 15:12:31 +08:00
xiaoxia 9961d0d3d9 style: black + isort format
CI/CD Pipeline / Validate Code Quality And Tests (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 / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Runtime Images (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
2026-07-14 15:12:30 +08:00
xiaoxia 281e83539f style: black + isort format 2026-07-14 15:12:28 +08:00
CI Bot 0bfff35301 feat: 多轨道混音 + 字幕渲染引擎 + 视频拼接
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 1m17s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m21s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (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 / Unit Tests (pull_request) Successful in 1m40s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 4m23s
三个渲染能力后端实现:

1. 多轨道混音(multi_track_mixer.py)
   - 支持任意数量音频轨道(原音/BGM/配音/音效/环境音)
   - 每轨独立音量、淡入淡出、时间偏移
   - 主输出音量控制 + 归一化补偿
   - 降级:单轨失败自动跳过,混音失败回退主音频

2. 字幕渲染引擎(subtitle_render_engine.py)
   - 统一 SubtitleStyle 配置:字体/颜色/描边/阴影/背景框/位置
   - 9宫格位置 + 自定义边距
   - 多源字幕合并:标题/静态字幕/ASR时间轴/手动字幕
   - 淡入淡出动画效果
   - 长文本自动换行
   - 便捷函数 build_subtitles_from_plan + build_subtitle_filter

3. 视频拼接引擎(concat_engine.py)
   - 两种模式:concat demuxer(stream copy,最快)+ concat filter(重新编码)
   - 自动选择最优模式,参数不一致时智能降级
   - 支持每段独立裁剪(start_time + duration)
   - 支持输出分辨率/帧率指定,自动缩放+pad补齐
   - 降级:某段失败跳过,不阻断整体拼接

接入:
- render_audio.py: mix_audio 新增 audio_tracks_config 参数
- unified_render_service.py: 从 plan.config.audio_tracks 读取配置

52个新增单测 + 2014个全套测试全绿,零回归
2026-07-14 11:35:42 +08:00