perf(#1280): 预览视频生成加速 — ultrafast编码+并行下载+跳过非必要步骤 (#1284)
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 1m16s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m16s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 2m29s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m3s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 5m3s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 5m35s
CI/CD Pipeline / Integration Tests (push) Successful in 2m37s
CI/CD Pipeline / Unit Tests (push) Successful in 9m57s
CI/CD Pipeline / Build Staging API Image (push) Successful in 12m44s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 1m28s
CI/CD Pipeline / Staging API Integration Tests (push) Failing after 17s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 17s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 34s
CI/CD Pipeline / Canary Release to Production (push) Failing after 953h20m32s
CI/CD Pipeline / PR Build Web Image (push) Failing after 953h35m2s
CI/CD Pipeline / Production Browser E2E (push) Failing after 953h25m3s
CI/CD Pipeline / PR Build API Image (push) Failing after 953h35m3s
CI/CD Pipeline / Deploy Production (push) Failing after 953h25m3s
CI/CD Pipeline / CI Gate (push) Failing after 953h25m5s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 953h35m7s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 953h25m5s
CI/CD Pipeline / Build Production Web Image (push) Failing after 953h25m5s
CI/CD Pipeline / Build Production API Image (push) Failing after 953h25m5s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 954h8m23s
CI/CD Pipeline / Frontend Lint (push) Failing after 954h8m26s

This commit was merged in pull request #1284.
This commit is contained in:
2026-08-07 21:52:03 +08:00
parent 5abadd053a
commit 60e8cd5247
4 changed files with 407 additions and 78 deletions
@@ -151,6 +151,7 @@ class UnifiedRenderService:
asr_service: Any = None, # ASRService 实例,用于自动生成字幕
bgm_path: str | None = None, # BGM 本地文件路径
voiceover_audio_path: str | None = None, # 配音素材库音频本地路径
is_preview: bool = False, # 预览模式:ultrafast 编码 + 跳过非必要步骤
):
self.plan = plan
self.clips = clips
@@ -163,6 +164,7 @@ class UnifiedRenderService:
self.asr_service = asr_service
self.bgm_path = bgm_path
self.voiceover_audio_path = voiceover_audio_path
self.is_preview = is_preview
self._transition_engine = TransitionEngine(default_duration=transition_duration)
self._speed_engine = SpeedEngine()
self._asr_timeline_cache: Any = None # ASR 字幕结果缓存,避免重复调用
@@ -1228,9 +1230,9 @@ class UnifiedRenderService:
"-c:v",
"libx264",
"-crf",
"23",
"28" if self.is_preview else "23",
"-preset",
"medium",
"ultrafast" if self.is_preview else "medium",
"-pix_fmt",
"yuv420p",
"-movflags",
@@ -1742,9 +1744,9 @@ class UnifiedRenderService:
"-c:v",
"libx264",
"-crf",
"23",
"28" if self.is_preview else "23",
"-preset",
"medium",
"ultrafast" if self.is_preview else "medium",
"-pix_fmt",
"yuv420p",
"-movflags",
@@ -1753,10 +1755,11 @@ class UnifiedRenderService:
]
logger.info(
"执行渲染: plan_id=%s inputs=%d output=%s",
"执行渲染: plan_id=%s inputs=%d output=%s preview=%s",
self.plan.id,
input_args.count("-i"),
output_path,
self.is_preview,
)
try:
run_ffmpeg(command)