Load Video Depth Anything Model
Get the video-native depth model into your graph
- vda_model
This is the loader half of yuvraj108c's Video Depth Anything pack: pick a checkpoint, get a model object, hand it to the node that actually does the work. On its own it doesn't touch a single frame of your video - it just puts weights in VRAM and gives you something to plug into VideoDepthAnythingProcess. Skippable in your head, not skippable in your graph.
Why "video" depth is its own thing
You already know regular Depth Anything if you've done ControlNet work: feed it one image, get one grayscale depth map back. Run that same model on every frame of a video independently and you get a sequence of depth maps that don't agree with each other - the depth guess for a wall wobbles slightly frame to frame even though the wall isn't moving, and the result flickers when you play it back. Video Depth Anything is a separate model (from ByteDance and HKU researchers, built on the same Depth Anything V2 backbone) trained specifically to keep depth consistent across a whole clip, in a single pass rather than the frame-by-frame or per-frame-diffusion approaches other tools use. That's the entire reason this pack exists instead of just wiring up the image version in a loop.
The one input that matters
There's a single dropdown, model, with six checkpoints and video_depth_anything_vits.safetensors (small) as the default:
- Size -
vits/vitb/vitl(small / base / large), same naming convention as every other Depth Anything variant. Small is fastest and lightest; large is the sharpest detail at real VRAM and time cost. This matters more here than it does for single-image depth work - you're paying that cost per frame, across every frame in the clip, so "just always use Large" is a worse default on video than it is on a single ControlNet preprocess. - Metric vs. plain - three of the six are prefixed
metric_. The plain checkpoints output relative depth (what's nearer than what, which is what you want for ControlNet-style conditioning and most depth-map video output). Themetric_checkpoints output real-world scale - actual estimated distances. Reach for metric only if something downstream genuinely consumes distances, like camera-space compositing in a 3D tool; for a plain depth-map video or ControlNet feed, the default small (or bumping up to large if you have the budget) is the right call.
Output
One output, vda_model, a pack-specific VDAMODEL type. It has exactly one home: the vda_model input on VideoDepthAnythingProcess. It won't plug into a generic checkpoint loader or another pack's depth model slot.
Installing it
Through ComfyUI Manager: search ComfyUI Video Depth Anything, install, restart. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/yuvraj108c/ComfyUI-Video-Depth-Anything
then restart. yuvraj108c's node packs (RIFE-TensorRT, DWPose-TensorRT, the original Depth-Anything-TensorRT wrapper) have a track record of leaning on speed-focused dependencies, so don't be surprised if this one pulls in a chunk of extra Python packages on first install - give it a minute rather than assuming it's hung. For the actual model weights, treat the dropdown selection as the trigger: the first time you run with a given checkpoint chosen, either it downloads automatically from Hugging Face, or ComfyUI's console will print exactly which file it went looking for and couldn't find. If it's the latter, that filename is your search term - grab it from the official Video-Depth-Anything Hugging Face repos and drop it where the console says.
Common issues & troubleshooting
Import errors on startup. This author's packs are frequently TensorRT-accelerated, and TensorRT installs are notoriously environment-sensitive - wrong Python environment, missing CUDA toolkit version, portable-vs-venv ComfyUI installs pulling dependencies into the wrong place. If the console shows a ModuleNotFoundError, installing through ComfyUI Manager (rather than a bare git clone) is more likely to land dependencies in the environment ComfyUI is actually running.
Picked a checkpoint and nothing downloads, nothing errors. Check the console log at the moment you queue the prompt, not just at startup - the download (or the failure to find the file) happens on first use, not on node load.
You grabbed a metric checkpoint by accident. If your depth output looks unusually flat or your downstream ControlNet results got worse, double-check you didn't pick one of the three metric_ entries - they're tuned for absolute distance, not the sharp relative contrast most workflows actually want.
Wrong node connected. vda_model only wires into VideoDepthAnythingProcess - if you're hunting for where else it should go, it doesn't go anywhere else. This node's whole job ends the moment that one wire is made.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | video_depth_anything_vits.safetensors | 6 options: video_depth_anything_vits.pth, video_depth_anything_vitb.pth, video_depth_anything_vitl.pth, metric_video_depth_anything_vits.pth, metric_video_depth_anything_vitb.pth, metric_video_depth_anything_vitl.pth |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| vda_model | VDAMODEL | — |