From 4f6ac9c8aa002ee97573bdb54e4cdee97c25aa81 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 24 Aug 2026 00:49:03 +0800 Subject: [PATCH] fix: add speed_cfg.clamp() + comment explaining multi-stage atempo in pass-through SpeedEngine.build_audio_filter already handles out-of-range speeds via multi-stage atempo chaining (e.g. 0.25x -> atempo=0.5,atempo=0.5). Add explicit clamp() and comment to make this clear. --- apps/worker/video_processing/unified_render_service.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/worker/video_processing/unified_render_service.py b/apps/worker/video_processing/unified_render_service.py index 46e5097ed..cc15f1c6c 100755 --- a/apps/worker/video_processing/unified_render_service.py +++ b/apps/worker/video_processing/unified_render_service.py @@ -1311,12 +1311,15 @@ class UnifiedRenderService: af_parts.append(f"volume={clip_volume:.4f}") # 音频调速(与视频setpts对应,保持音画同步) + # SpeedEngine.build_audio_filter 内部已实现多级 atempo 串联, + # 自动处理超出 [0.5, 2.0] 范围的速度(如 0.25x → atempo=0.5,atempo=0.5)。 speed = UnifiedRenderService._clip_speed(clip) if abs(speed - 1.0) >= 1e-6: try: from video_processing.speed_engine import SpeedConfig, SpeedEngine speed_cfg = SpeedConfig(speed=speed) + speed_cfg.clamp() speed_engine = SpeedEngine() af_parts.append(speed_engine.build_audio_filter(speed_cfg)) except Exception as e: