fix: return real ComfyUI VIDEO object for Kling 2.6

This commit is contained in:
Steve Tietze
2025-12-23 12:54:47 +07:00
parent 226a1b630a
commit 0847fdf2b9
2 changed files with 13 additions and 33 deletions
+4 -8
View File
@@ -14,9 +14,7 @@ from .log import _log
from .results import _extract_result_urls
from .upload import _image_tensor_to_png_bytes, _truncate_url, _upload_image
from .validation import _validate_prompt
from .video import _download_video, _video_path_to_comfy_video_output, _write_video_to_temp_file
from .video import _download_video, _video_bytes_to_comfy_video
CREATE_TASK_URL = "https://api.kie.ai/api/v1/jobs/createTask"
MODEL_NAME = "kling-2.6/image-to-video"
PROMPT_MAX_LENGTH = 1000
@@ -124,15 +122,13 @@ def run_kling26_i2v_video(
result_urls = _extract_result_urls(record_data)
video_url = result_urls[0]
_log(True, f"Video result URL: {video_url}")
_log(log, f"Downloading video result from {video_url}...")
_log(log, f"Final video URL: {video_url}")
video_bytes = _download_video(video_url)
video_path = _write_video_to_temp_file(video_bytes)
_log(log, f"Video saved to {video_path}")
video_output = _video_bytes_to_comfy_video(video_bytes)
_log_remaining_credits(log, record_data, api_key, _log)
return _video_path_to_comfy_video_output(video_path)
return video_output
def run_kling26_i2v(
+9 -25
View File
@@ -1,7 +1,8 @@
"""Shared helpers for handling video results from KIE models."""
"""Video helpers shared across KIE models."""
from pathlib import Path
from tempfile import NamedTemporaryFile
from io import BytesIO
from comfy_api.latest.input_impl.video_types import VideoFromFile
from .http import requests
@@ -19,25 +20,8 @@ def _download_video(url: str) -> bytes:
return response.content
def _write_video_to_temp_file(video_bytes: bytes, suffix: str = ".mp4") -> str:
"""Persist video bytes to a temporary .mp4 file and return its path."""
try:
temp_file = NamedTemporaryFile(delete=False, suffix=suffix)
with temp_file:
temp_file.write(video_bytes)
return str(Path(temp_file.name))
except OSError as exc:
raise RuntimeError("Failed to write temporary video file.") from exc
def _video_path_to_comfy_video_output(video_path: str) -> dict:
"""Wrap a local video path in a ComfyUI VIDEO-compatible dict."""
path = Path(video_path)
suffix = path.suffix.lstrip(".") or "mp4"
resolved = path.expanduser().resolve()
return {
"path": str(resolved),
"format": suffix,
"frame_rate": None,
"frame_count": None,
}
def _video_bytes_to_comfy_video(video_bytes: bytes) -> VideoFromFile:
"""Convert raw MP4 bytes into a ComfyUI VIDEO object."""
buffer = BytesIO(video_bytes)
buffer.name = "kie_temp_video.mp4"
return VideoFromFile(buffer)