Nodes/comfyui-sbs-long-video/Stereo Video Convert
ComfyUI Node

Stereo Video Convert

Where your video actually becomes 3D — without eating your RAM

By oskar13·Created 6 months ago·Updated 6 months ago· 1
Stereo Video Convert
  • video_job
  • rendered_video
  • summary

StereoVideoConvert is the engine room of this pack. It has exactly one input and you never tune it directly - but this is the node where your flat clip actually turns into a side-by-side (or top/bottom) 3D video. In the three-node chain - StereoVideoSourceStereoVideoConvertStereoVideoMuxOutput - the Source node is the order form and this is the kitchen.

Why is it built the way it is? Most 2D-to-3D video attempts in ComfyUI fall into two camps, and both hurt. Image-batch workflows load the whole clip as tensors and blow up RAM on anything long. Video-native depth models give nicer temporal consistency but want serious VRAM at higher resolutions. This pack deliberately picks a third path: treat video as a stream and do the heavy lifting on the GPU so a long clip fits on a modest card. That's the entire point of the "long video" in the repo name.

What actually happens inside

The code is refreshingly literal about it. FFmpeg decodes the source in chunks. Each chunk moves to the GPU once, a long-lived Depth Anything runner estimates depth (it stays loaded between chunks, so you're not reloading weights per batch), and the stereo reprojection happens with torch.grid_sample - bilinear sampling that shifts each pixel sideways by an amount proportional to its depth. The disoccluded slivers at object edges get patched by a few avg_pool2d iterations, which is a blur-smear rather than true inpainting. Then raw frames stream straight into an ffmpeg encoder process (libx264, CRF 19) via a pipe. Only one chunk lives in memory at a time. Decode → depth → render → encode in one streaming loop, and none of the per-frame warping ever touches the CPU.

The output isn't a finished file. You get rendered_video, an internal handle for StereoVideoMuxOutput, plus a summary string telling you what got rendered (something like "Rendered 1200 frames to temp video"). The intermediate itself lands in ComfyUI's temp directory and is cleaned up once the mux node runs.

The one knob that lives elsewhere

Because Convert is so hands-off, the setting you'll actually reach for when this node misbehaves is back on StereoVideoSource: chunk_size (default 4, up to 64). That's how many frames get processed per batch. Crank it up for throughput on a big card, dial it down to 1 or 2 when VRAM or RAM goes red. That's the whole tuning surface - the tradeoff between speed and memory.

Installing the pack

Same story as every node in this pack:

cd ComfyUI/custom_nodes
git clone https://github.com/oskar13/comfyui-sbs-long-video.git
cd ../..
python -m pip install -r custom_nodes/comfyui-sbs-long-video/requirements.txt

or just search "comfyui-sbs-long-video" in ComfyUI Manager and hit install. Either way, restart ComfyUI. You also need ffmpeg and ffprobe on your PATH (the node shells out to them for decode, probe, and encode), and while a CUDA GPU is "strongly recommended," it's really required if you want practical runtime.

Where people get burned

  • The "V3" that might be V2. The depth mode is called depth_anything_v3 and the model dropdown says da3_small/base/large - but the code only uses the actual Depth Anything 3 package if you've installed it. Otherwise it silently falls back to the transformers-compatible Depth Anything V2 checkpoints. If you want real DA3, install it first:
python -m pip install git+https://github.com/ByteDance-Seed/Depth-Anything-3.git
  • A long stall on first run is a download, not a hang. The depth weights come from Hugging Face on first use.
  • "ffmpeg not found" means exactly what it says - check your PATH, not your node graph.
  • Expect some temporal flicker. Depth is estimated per frame here, and frame-by-frame depth is a known flicker source in this whole ecosystem (it's why video-native models like DepthCrafter exist - they just cost more VRAM). For long-form conversion on modest hardware, that's the tradeoff this pack accepts.
CategoryStereo Video

Inputs (1)

NameTypeDefaultDescription
video_jobSTEREO_VIDEO_JOBJob handle produced by StereoVideoSource.

Outputs (2)

NameTypeDescription
rendered_videoSTEREO_VIDEO_RENDERInternal rendered-video handle for StereoVideoMuxOutput.
summarySTRINGHuman-readable status text describing the temporary render output.