diff --git a/apps/worker/video_processing/render_audio.py b/apps/worker/video_processing/render_audio.py index f86deda78..d61a59325 100755 --- a/apps/worker/video_processing/render_audio.py +++ b/apps/worker/video_processing/render_audio.py @@ -16,14 +16,13 @@ import subprocess from dataclasses import dataclass, field from pathlib import Path -from video_processing.speed_engine import SpeedEngine - # 延迟导入避免循环依赖:unified_render_service 定义 ResolvedClip / RenderLayer, # 本模块提供音频函数供 unified_render_service 调用。 # 使用 from __future__ import annotations + TYPE_CHECKING 解决类型引用。 from typing import TYPE_CHECKING from video_processing.ffmpeg_utils import FFMPEG_BIN, probe_has_audio, run_ffmpeg +from video_processing.speed_engine import SpeedEngine if TYPE_CHECKING: from video_processing.unified_render_service import RenderLayer, ResolvedClip @@ -178,6 +177,7 @@ def concat_main_audio( else: # 有调速:用 filter_complex + atempo from video_processing.speed_engine import SpeedConfig + speed_engine = SpeedEngine() config = SpeedConfig(speed=float(speed)) config.clamp() @@ -237,6 +237,7 @@ def concat_main_audio( # 音频调速 — atempo 多级串联 if abs(speed - 1.0) >= 1e-6: from video_processing.speed_engine import SpeedConfig + config = SpeedConfig(speed=float(speed)) config.clamp() atempo_filter = speed_engine.build_audio_filter(config) diff --git a/apps/worker/video_processing/speed_engine.py b/apps/worker/video_processing/speed_engine.py index ea21f6616..1ab365b17 100755 --- a/apps/worker/video_processing/speed_engine.py +++ b/apps/worker/video_processing/speed_engine.py @@ -11,7 +11,6 @@ from dataclasses import dataclass from typing import Optional - # ─── 常量 ─────────────────────────────────────────────── MIN_SPEED = 0.25 MAX_SPEED = 4.0 diff --git a/apps/worker/video_processing/unified_render_service.py b/apps/worker/video_processing/unified_render_service.py index 66ae7076f..cfe87ba50 100755 --- a/apps/worker/video_processing/unified_render_service.py +++ b/apps/worker/video_processing/unified_render_service.py @@ -1131,7 +1131,6 @@ class UnifiedRenderService: return min(clip.duration, clip.actual_duration) if clip.actual_duration > 0 else clip.duration return clip.actual_duration if clip.actual_duration > 0 else 0.0 - @staticmethod def _clip_speed(clip: ResolvedClip) -> float: """获取 clip 的播放速度,无效值回退到 1.0.""" @@ -1148,4 +1147,3 @@ class UnifiedRenderService: if abs(speed - 1.0) < 1e-6: return base return base / speed - diff --git a/tests/unit/test_speed_engine.py b/tests/unit/test_speed_engine.py index cce4ff4cb..6da62ef06 100755 --- a/tests/unit/test_speed_engine.py +++ b/tests/unit/test_speed_engine.py @@ -8,7 +8,6 @@ from video_processing.speed_engine import ( SpeedEngine, ) - # ─── SpeedConfig 解析与校验 ──────────────────────────────────