ATH-MaaS/Pixelle-Video · error · Exception

The second step of the workflow did not return a video. Plea

Error message

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

What it means

In the first digital-human flow variant, after executing the second workflow via kit.execute, the code scans node outputs for a 'videos' entry; if none is found it raises this Exception instead of downloading final.mp4. The workflow completed but produced no video output.

Source

Thrown at web/pipelines/digital_human.py:665

                            }
                            if second_workflow_config.get("source") == "runninghub" and "workflow_id" in second_workflow_config:
                                workflow_input = second_workflow_config["workflow_id"]
                            else:
                                workflow_input = str(second_workflow_config)
                            second_result = await kit.execute(workflow_input, second_workflow_params)
                            # Video Link Extraction
                            generated_video_url = None
                            if hasattr(second_result, 'videos') and second_result.videos:
                                generated_video_url = second_result.videos[0]
                            elif hasattr(second_result, 'outputs') and second_result.outputs:
                                for node_id, node_output in second_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 second step of the workflow did not return a video. Please check the workflow configuration.")
                                        
                            final_video_path = os.path.join(task_dir, "final.mp4")
                            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"))
                            return final_video_path
                        
                        else:
                            #Initialization and parameter preparation
                            task_dir, task_id = create_task_output_dir()
                            logger.info(f"[Initialization] Task Directory: {task_dir}")

                            first_workflow_path = Path(workflow_path.get("first_workflow_path"))

View on GitHub (pinned to 848b054e4f)

Solutions

  1. Confirm the second workflow JSON contains a working video output node whose results appear under 'videos'
  2. Run the workflow manually in ComfyUI with the same inputs to see node errors
  3. Check ComfyUI server logs for failed nodes during execution
  4. Re-download the stock second-step workflow if it was customized incorrectly
Defensive patterns

Strategy: try-catch

Validate before calling

import json
cfg = json.load(open(second_workflow_path))
assert any("video" in str(node).lower() for node in cfg.get("nodes", {}).values()), "Second workflow lacks a video output node"

Type guard

def second_step_produced_video(outputs: list) -> bool:
    return any(isinstance(o, dict) and o.get("videos") for o in outputs)

Try / catch

try:
    await generate_digital_human_video(...)
except Exception as e:
    if "did not return a video" in str(e):
        st.error("Second workflow emitted no video; verify its video output node in ComfyUI.")

Prevention

When it happens

Trigger: The second (image+audio -> video) workflow's output node emits nothing under 'videos' — e.g. wrong node type, node failure inside ComfyUI, or output key mismatch in the workflow config.

Common situations: Second workflow JSON edited so the video-combine node was replaced or renamed; ComfyUI node pack missing so the video node errored; the workflow saves images instead of video.

Related errors


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