ATH-MaaS/Pixelle-Video · error · Exception

The workflow did not return a video. Please check the workfl

Error message

The workflow did not return a video. Please check the workflow configuration.

What it means

After running the image-to-video workflow, the code looks through node outputs for a 'videos' list and picks the first URL; if none is found it raises this Exception pointing at the workflow configuration. It prevents a null-URL download attempt of the final video.

Source

Thrown at web/pipelines/i2v.py:341

                            workflow_input = workflow_config["workflow_id"]
                        else:
                            workflow_input = str(workflow_path)

                        video_result = await kit.execute(workflow_input, workflow_params)

                        generated_video_url = None
                        if hasattr(video_result, 'videos') and video_result.videos:
                            generated_video_url = video_result.videos[0]
                        elif hasattr(video_result, 'outputs') and video_result.outputs:
                            for node_id, node_output in video_result.outputs.items():
                                if isinstance(node_output, dict) and 'videos' in node_output:
                                    videos = node_output['videos']
                                    if videos and len(videos) > 0:
                                        generated_video_url = videos[0]
                                        break

                        if not generated_video_url:
                            raise Exception("The workflow did not return a video. Please check the workflow configuration.")

                        timeout = httpx.Timeout(300.0)
                        async with httpx.AsyncClient(timeout=timeout) as client:
                            response = await client.get(generated_video_url)
                            response.raise_for_status()
                            with open(final_video_path, 'wb') as f:
                                f.write(response.content)
                        progress_bar.progress(100)
                        status_text.text(tr("status.success"))
                        await save_web_generation_history(
                            pixelle_video,
                            task_id=task_id,
                            video_path=final_video_path,
                            pipeline="image_to_video",
                            title="图生视频" if get_language() == "zh_CN" else "Image to Video",
                            input_params={
                                "text": prompt,
                                "prompt_text": prompt,

View on GitHub (pinned to 848b054e4f)

Solutions

  1. Inspect the workflow JSON and ensure it ends with a proper video output node (VHS_VideoCombine / SaveVideo etc.)
  2. Check ComfyUI server logs for node failures (OOM, missing custom nodes) during execution
  3. Verify the 'image' param placeholder name matches the workflow's LoadImage node input
  4. Broaden the result-parsing to check alternate keys ('gifs', 'images') if your output node classifies video differently

Example fix

// before
if not generated_video_url:
    raise Exception("The workflow did not return a video. Please check the workflow configuration.")
// after
if not generated_video_url:
    raise RuntimeError(
        f"i2v workflow returned no video. workflow={workflow_path}, "
        f"outputs={node_outputs!r} — verify the video output node exists and ran."
    )
Defensive patterns

Strategy: validation

Validate before calling

node_outputs = result.get("node_outputs", [])
video_urls = [v for out in node_outputs if isinstance(out, dict) for v in out.get("videos") or out.get("gifs") or []]
if not video_urls:
    raise RuntimeError(f"i2v workflow returned no video: {node_outputs!r}")

Type guard

def extracted_video_url(node_outputs):
    for o in (node_outputs or []):
        if isinstance(o, dict):
            vids = o.get("videos") or []
            if vids:
                return vids[0]
    return None

Try / catch

try:
    video = await generate_audio_visual_video(...)
except Exception as e:
    if "did not return a video" in str(e):
        log.error("i2v workflow output had no videos; check workflow config and ComfyUI logs")
    raise

Prevention

When it happens

Trigger: The i2v workflow completes but no node emits a non-empty 'videos' array — the workflow lacks a video output node, the video node failed or was muted, outputs are returned under 'images'/'gifs' instead, or input param 'image' was not bound so the video node never produced output.

Common situations: Using a workflow JSON exported from a different ComfyUI/custom-node version where the output node name/key changed; replacing a SaveAnimatedWEBP/VHS node with a SaveImage node; ComfyUI queue error swallowed so downstream output missing; insufficient VRAM causing the video encode node to fail silently in the parsed results.

Related errors


AI-assisted analysis of ATH-MaaS/Pixelle-Video@848b054e4f (2026-08-30). Data as JSON: /api/errors/774debfa65c5af19. Report an issue: GitHub.