diff --git a/runware/base.py b/runware/base.py index 20d5aa9..9c22095 100644 --- a/runware/base.py +++ b/runware/base.py @@ -2415,6 +2415,9 @@ async def _requestVideo(self, requestVideo: "IVideoInference") -> "Union[List[IV processed_reference_videos.append(await self._process_media(item)) inputs.referenceVideos = processed_reference_videos + if inputs.video: + inputs.video = await self._process_media(inputs.video) + if inputs.frameImages: inputs.frameImages = await self._process_media_list( inputs.frameImages, diff --git a/runware/types.py b/runware/types.py index b5bbabc..2a3abc3 100644 --- a/runware/types.py +++ b/runware/types.py @@ -1170,6 +1170,7 @@ def __post_init__(self): class IInputFrame(SerializableMixin): image: Union[str, File] frame: Optional[Union[Literal["first", "last"], int]] = None + timestamp: Optional[float] = None @dataclass @@ -1283,7 +1284,7 @@ class IVideoInputs(SerializableMixin): image: Optional[Union[str, File]] = None images: Optional[List[Union[str, File]]] = None frames: Optional[List[IInputFrame]] = None - frameImages: Optional[List[IInputFrame]] = None + frameImages: Optional[List[Union[str, IInputFrame, Dict[str, Any]]]] = None referenceImages: Optional[List[Union[str, File, IVideoReferenceImage]]] = None referenceVideos: Optional[List[Union[str, IVideoReferenceVideo]]] = None referenceAudios: Optional[List[str]] = None @@ -1354,6 +1355,11 @@ def __post_init__(self): IElements(**item) if isinstance(item, dict) else item for item in self.elements ] + if self.frameImages: + self.frameImages = [ + IInputFrame(**item) if isinstance(item, dict) else item + for item in self.frameImages + ] @property def request_key(self) -> str: