From ceef34c5239faa7325d45b4063aed3e4be470341 Mon Sep 17 00:00:00 2001 From: imeepos Date: Fri, 19 Sep 2025 15:27:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=BAFFMPEGVideoLoopFillAudioRequest?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AD=97=E6=AE=B5=E9=AA=8C=E8=AF=81=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复video-loop-fill接口无法接受字符串格式S3 URL的问题,添加field_validator来处理video和audio字段的字符串到MediaSource对象的转换 --- .../models/requests/models.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/BowongModalFunctions/models/requests/models.py b/src/BowongModalFunctions/models/requests/models.py index f61802c..3e87400 100644 --- a/src/BowongModalFunctions/models/requests/models.py +++ b/src/BowongModalFunctions/models/requests/models.py @@ -323,6 +323,26 @@ class FFMPEGVideoLoopFillAudioRequest(BaseFFMPEGTaskRequest): video: MediaSource = Field(description="用来填充的视频素材") audio: MediaSource = Field(description="被填充的音频素材") + @field_validator('video', mode='before') + @classmethod + def parse_video_input(cls, v: Union[str, MediaSource]): + if isinstance(v, str): + return MediaSource.from_str(v) + elif isinstance(v, MediaSource): + return v + else: + raise TypeError(v) + + @field_validator('audio', mode='before') + @classmethod + def parse_audio_input(cls, v: Union[str, MediaSource]): + if isinstance(v, str): + return MediaSource.from_str(v) + elif isinstance(v, MediaSource): + return v + else: + raise TypeError(v) + class FFMPEGExtractFrameRequest(BaseFFMPEGTaskRequest): video: MediaSource = Field(description="提取帧画面的来源")