Load Video From Cloud
Load Video From Cloud — a VideoHelperSuite loader with the download step deleted
- meta_batch
- vae
- IMAGE
- frame_count
- audio
- video_info
Load Video From Cloud is the most interesting node in this pack, and the reason it exists. It does one thing: download a video from an Aliyun OSS or AWS S3 bucket and hand it to ComfyUI as frames - no manual download, no file sitting in your input folder. The wrinkle is how it does it: under the hood it's running VideoHelperSuite's video-loading machinery, so you get all of VHS's video smarts with a cloud download bolted on the front.
How it works
Pull the file down to a temp path, run it through a VHS-derived loader (the load_video code in this pack's utils.py is straight from Kosinkadink's VideoHelperSuite - same VHS_BatchManager, same VHS_VIDEOINFO output, same AnimateDiff/Mochi/LTXV/Hunyuan/Cosmos/Wan format presets), then delete the temp file. It decodes with OpenCV for frames and ffmpeg for audio. If you're migrating a VHS workflow, this is close to a drop-in.
Inputs that matter
Beyond the usual storage_type / endpoint / bucket / file_key / region (file_key being the video's path in the bucket):
- force_rate - retime to a fixed FPS; 0 keeps the source rate.
- frame_load_cap - cap how many frames load. Set this; a long video can blow through VRAM and this is your guardrail.
- skip_first_frames / select_every_nth - skip the intro, or sample every Nth frame.
- custom_width / custom_height - resize on load; 0 keeps the original.
- vae (optional) - connect a VAE and it returns a
LATENTinstead ofIMAGE, saving you the encode step. - format (optional) - picks the target rate/dimensions for the model you're feeding (LTXV, Wan, etc.).
Outputs
- IMAGE (or
LATENTif a VAE is connected) - frames in, sampler-ready. - frame_count - INT, how many frames came out.
- audio - the video's audio track as an
AUDIOtensor, lazy-loaded. - video_info - a
VHS_VIDEOINFOdict, so anything that expects VHS metadata (like video-combine or interpolation nodes) can consume it.
The catches
First, the dependency footprint. The README sells this pack as "just pip install oss2 boto3," but the actual requirements.txt also pulls opencv-python and imageio-ffmpeg - and the loader code imports psutil too, which isn't in the requirements file at all. If you hit a No module named 'psutil' error on a bare install, that's why. You also need ffmpeg, which the pack finds via imageio-ffmpeg or a system install.
Second, this node forces a reload every time - its IS_CHANGED always returns NaN, on the assumption that cloud content can change. So every run re-downloads the whole video to temp and deletes it after. Long videos on a slow link will make your runs feel glacial, and the download is unbounded by your frame cap (it pulls the entire file before reading a frame).
And one architectural note: if you already run VHS, you're double-installing all this machinery just to skip a manual download. If the bucket part isn't the point, VHS's own Load Video on a local file is the lighter path. But if you want the download-free workflow - generate on a rented box, source video from a shared bucket - this is the pack's reason to exist.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| storage_type | COMBO | oss | 2 options: oss, s3 |
| endpoint | STRING | — | |
| bucket | STRING | — | |
| file_key | STRING | Video file path in cloud storage | |
| force_rate | FLOAT | 00–60 | — |
| custom_width | INT | 00–8192 | — |
| custom_height | INT | 00–8192 | — |
| frame_load_cap | INT | 00–9007199254740991 | — |
| skip_first_frames | INT | 00–9007199254740991 | — |
| select_every_nth | INT | 11–9007199254740991 | — |
| regionopt | STRING | us-east-1 | Region for S3 storage only |
| meta_batchopt | VHS_BatchManager | — | |
| vaeopt | VAE | — | |
| formatopt | COMBO | AnimateDiff | 7 options: None, AnimateDiff, Mochi, LTXV, Hunyuan, Cosmos, +1 |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| frame_count | INT | — |
| audio | AUDIO | — |
| video_info | VHS_VIDEOINFO | — |