Nodes/MediaMixer/YouTube Video Downloader
ComfyUI Node

YouTube Video Downloader

Pull a clip into your workflow

By DoctorDiffusion·Created 2 years ago·Updated 2 years ago· 41
YouTube Video Downloader
    • video_path
    • audio_path
    youtube_url
    download_pathD:\ComfyUI_windows_portable\ComfyUI\downloads
    resolution720p
    save_as_mp4false
    audio_onlyfalse

    YouTube Video Downloader does what it says: paste a URL, get the video (or just its audio) saved to disk, without leaving ComfyUI. It's a thin wrapper around yt-dlp, the same battle-tested downloader half the internet uses under the hood, dressed up as a node so it can sit at the front of a video-to-video or reference workflow. Need a clip to drive a ControlNet pass, extract frames from, or lip-sync against? Grab it here instead of alt-tabbing to a sketchy download site.

    It's part of DoctorDiffusion's MediaMixer pack, and it's the one node in the suite with a real dependency - yt_dlp, which the pack's requirements.txt pulls in.

    What it actually gives you

    Here's the important mental adjustment: this node does not output frames. It outputs file paths - strings pointing at where it saved the download. That surprises people. You still need a Load Video node (VideoHelperSuite's, say) pointed at that path to turn the file into the IMAGE frame batch your workflow can chew on. Think of this node as the "fetch" step, not the "load" step.

    The inputs that matter

    Five inputs, and you'll set most of them once and forget them:

    • youtube_url (STRING) - paste the link. This is the only one you touch every run.
    • resolution (enum) - 360p, 480p, 720p, or 1080p, defaulting to 720p. Pick the smallest that serves your purpose; if you're only extracting frames for ControlNet you rarely need 1080p.
    • audio_only (boolean, default off) - flip it on to skip the video and just pull the audio track. Handy for grabbing a song or voice clip to sync against.
    • save_as_mp4 (boolean, default off) - forces the output into mp4 rather than whatever container yt-dlp would otherwise land on.
    • download_path (STRING) - where the file goes. Read the next section before you trust the default.

    The two outputs are video_path and audio_path (both strings). Wire whichever you need into a loader node downstream.

    The default path is a trap on anything but Windows

    The download_path default is D:\ComfyUI_windows_portable\ComfyUI\downloads - a hardcoded Windows path from the author's own machine. If you're on Linux, macOS, or a cloud runner, that path doesn't exist and the download has nowhere to land. Change it to something real on your system before your first run. This is the single most common reason people say the node "doesn't work."

    Installing it

    ComfyUI Manager: search MediaMixer, install, restart. Or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/DoctorDiffusion/ComfyUI-MediaMixer.git
    cd ComfyUI-MediaMixer
    pip install -r requirements.txt
    

    then restart. If yt_dlp refuses to install into the Python environment ComfyUI actually uses - a classic portable-build headache - the README gives the fix directly: from your ComfyUI folder, run

    .\python_embed\python.exe -s -m pip install yt_dlp
    

    so it lands in the embedded interpreter and not some system Python that ComfyUI never sees.

    When it stops working out of nowhere

    The one recurring gotcha isn't this node's fault - it's the nature of scraping YouTube. Google changes things, and yt-dlp periodically breaks until its maintainers push a fix. So if downloads suddenly start failing after months of working fine, the culprit is almost always a stale yt-dlp. Update it (pip install -U yt_dlp, or the embedded-python variant above) before you suspect anything in MediaMixer itself.

    Two smaller notes. On a cloud or serverless setup the file lands in an ephemeral container, so whatever you download vanishes when the session ends - fine for a one-shot workflow, useless as storage. And because the outputs are paths, not frames, the node graph won't "see" the content until a loader reads the file, so a red error on the loader (not the downloader) usually means the path was wrong or the download quietly failed.

    Category🎬🔀MediaMixer

    Inputs (5)

    NameTypeDefaultDescription
    youtube_urlSTRING
    download_pathSTRINGD:\ComfyUI_windows_portable\ComfyUI\downloads
    resolutionCOMBO720p4 options: 360p, 480p, 720p, 1080p
    save_as_mp4BOOLEANfalse
    audio_onlyBOOLEANfalse

    Outputs (2)

    NameTypeDescription
    video_pathSTRING
    audio_pathSTRING