diff --git a/apps/worker/video_processing/gpu_direct_pipeline.py b/apps/worker/video_processing/gpu_direct_pipeline.py index 6f774da5e..051d63705 100644 --- a/apps/worker/video_processing/gpu_direct_pipeline.py +++ b/apps/worker/video_processing/gpu_direct_pipeline.py @@ -156,7 +156,7 @@ def build_direct_render( # 1. 视频输入(原始素材签名 URL) for i, clip in enumerate(resolved_clips): - sk = getattr(clip, "_storage_key", None) + sk = (getattr(clip, "config", None) or {}).get("_storage_key") if not sk: raise ValueError(f"clip {getattr(clip, 'clip_id', i)} missing _storage_key") fname = f"v{i}.mp4" diff --git a/apps/worker/video_processing/render_adapter.py b/apps/worker/video_processing/render_adapter.py index 2c11ee7ee..7007cd2a4 100755 --- a/apps/worker/video_processing/render_adapter.py +++ b/apps/worker/video_processing/render_adapter.py @@ -599,7 +599,10 @@ class RenderAdapter: for c in clips: sk = _storage_map.get(getattr(c, "asset_id", "")) if sk: - c._storage_key = sk + # EditPlanClip 使用 __slots__,不能 setattr,改存 config 字典 + if not isinstance(c.config, dict): + c.config = dict(c.config) if c.config else {} + c.config["_storage_key"] = sk result = render_svc.render() # 4.5 渲染后校验输出完整性 diff --git a/apps/worker/video_processing/unified_render_service.py b/apps/worker/video_processing/unified_render_service.py index f052ee053..35c816fe2 100755 --- a/apps/worker/video_processing/unified_render_service.py +++ b/apps/worker/video_processing/unified_render_service.py @@ -2247,7 +2247,7 @@ class UnifiedRenderService: cg = ColorGradeConfig.from_dict(cc.get("color_grade")) if cg.enabled and cg.has_effect(): return False - if not getattr(c, "_storage_key", None): + if not (c.config or {}).get("_storage_key"): return False return True except Exception: # noqa: BLE001