Nodes/ComfyUI-BytePlus-ModelArk/BytePlus vCube Video Enhance
ComfyUI Node

BytePlus vCube Video Enhance

8K restoration on someone else's GPU

By byteplus-sa·Created 8 days ago·Updated about 8 hours ago· 3
BytePlus vCube Video Enhance
  • video
  • VIDEO
  • comparison
  • source_frame
  • enhanced_frame
  • response
◄tool_version▾►
◄resolution▾►
◄fpssource►
◄bitrate_levelmedium►
◄video_url►
◄bitrate0►
◄comparisontrue►
◄compare_time-1.0►

What it is, and why not just the built-in node

vCube is ByteDance's video restoration pipeline - super-resolution up to 8K, compression-artifact and noise removal, sharpening, optional AI frame interpolation. This node is the pack's copy of ComfyUI's own ByteDance video-enhance node, input for input, with one difference that matters: it calls AI MediaKit with your BytePlus key and bills your BytePlus account instead of spending Comfy credits.

So there are two real reasons to pick it. You already have BytePlus contract pricing or a resource pack and want those calls to land there. Or you want the extras this pack bolts on: an advanced video_url input that skips the Comfy.org upload entirely, plus a before/after comparison video and a frame pair rendered locally so you can actually see what you paid for.

If you're on a local card, be honest about the trade. SeedVR2 is the community default for video restoration - Apache 2.0, free after electricity - and the video section of upscaling.md has SeedVR2 for heavy upscales, the RTX nodes for "already-clean source, want it now." vCube is the third option: no VRAM, fast, metered per clip, footage leaving the machine. That's the API-node deal (external-api-nodes.md), unchanged here.

How it actually runs

Connect a video and the node uploads it to Comfy.org storage to get a URL MediaKit accepts, submits the task, polls, then downloads the result immediately - MediaKit's links expire after 24 hours, so don't plan on re-fetching one tomorrow. What comes back is a VIDEO, same as any local node.

The comparison is not a second API job - it's rendered on your machine, frame by frame, with the video library ComfyUI already ships, sweeping a divider across the frame. Pass a video_url instead of a connected clip and it still builds one, fetching the source itself.

And nothing here saves a file. Connect Save Video or you'll be staring at a finished run wondering where the clip went.

The inputs you'll actually set

tool_version - standard runs 10+ enhancement algorithms; professional runs 30+, takes about 3x longer and costs 10x more. Start standard. Under standard you also get a scene preset (aigc for generated footage, ugc for compressed phone clips, old_film for scratched archive material) and an hd or natural style; professional drops the scene preset and keeps the style.

resolution - presets from 1080p up to 8k, plus source and a custom short side. One billing wrinkle from the tooltip: sources wider or taller than about 2.2:1 are billed one tier higher, so a 2.39:1 clip is priced like the next resolution up.

fps - source by default. Raising it enables AI frame interpolation; lowering it drops frames. Watch the multiplier: above 30 fps bills 2x, above 60 fps 4x. Do not set 120 for fun.

bitrate_level (advanced, low/medium/high) and bitrate (exact kbps, 10–150000; 0 means "use the level"). comparison is on by default and compare_time picks which moment the frame pair comes from (−1 = the middle).

Outputs

VIDEO goes to Save Video. comparison is a second video with the sweeping divider - and its consumers are skipped when you turn comparison off, not fed a None, so nothing downstream errors. source_frame and enhanced_frame are an IMAGE pair for the Compare Images slider. response is the raw task JSON.

Install

In ComfyUI Manager, search for BytePlus ModelArk (listed as ComfyUI BytePlus ModelArk & AI MediaKit). Note what you're installing: this sits in BytePlus's own GitHub org and its setup points at BytePlus's own consoles, so it's the vendor's pack rather than a fan wrapper - which is also why it tracks the built-in ByteDance nodes so closely. By hand:

cd ComfyUI/custom_nodes
git clone https://github.com/byteplus-sa/ComfyUI-BytePlus-ModelArk
pip install -r ComfyUI-BytePlus-ModelArk/requirements.txt

requirements.txt is three lines - byteplus-python-sdk-v2[ark]>=3.0.61 plus httpx and sniffio. Run pip with the Python that runs ComfyUI and restart. Needs ComfyUI 0.31.0 or newer.

Then Settings → BytePlus. This node wants the AI MediaKit key (BYTEPLUS_VOD_MEDIAKIT_API_KEY from the AI MediaKit console), not your ModelArk key - different product, different key. MediaKit runs in ap-southeast-1 only.

Where people get burned

  • Comfy.org login. A connected video is uploaded to Comfy.org storage before MediaKit sees it, so this node needs a login (and breaks with --disable-api-nodes). Escape hatch: the advanced video_url.
  • 401 / Invalid API Key. The key and region don't match, or you pasted a ModelArk key into the MediaKit slot.
  • Source too big. Max input is 2560×1440 and 10 minutes, checked before upload - downscale first rather than paying for a task that gets rejected.
  • Node missing from the menu entirely. The BytePlus SDK didn't install, usually the wrong interpreter. The console prints the exact pip line.
  • Cost creep, not errors. fps 60, professional and a very wide source each stack multipliers. Do the first run at standard/720p, look at the split, then decide if the paid pass is worth it.
CategoryBytePlus ModelArk/MediaKit

Inputs (9)

NameTypeDefaultDescription
tool_versionCOMBO'standard' balances speed and quality with 10+ enhancement algorithms. 'professional' uses 30+ algorithms for cinema-grade restoration, takes about 3x longer and costs 10x more.
resolutionCOMBOOutput resolution. The short side is set to the chosen level and the long side follows the source aspect ratio. 'source' keeps the source size, 'custom' sets the short side in pixels. Sources wider or taller than about 2.2:1 are billed one resolution tier higher.
fpsCOMBOsourceOutput frame rate. A higher rate than the source enables AI frame interpolation; a lower one drops frames. 'source' keeps the source rate, up to 120 fps. Rates above 30 fps cost 2x, above 60 fps 4x.
bitrate_levelCOMBOmediumTarget bitrate of the delivered file, scaled to the output resolution and frame rate.
videooptVIDEOVideo to enhance. The source resolution must be at most 2560x1440 (2K); the output size is set by the resolution input. Uploaded to Comfy.org storage first (needs a Comfy.org login); or set video_url instead.
video_urloptSTRINGPublic http(s) link to the source video, instead of connecting a video. Nothing is uploaded to Comfy.org.
bitrateoptINT00–150000Exact target bitrate in kbps (10-150000); 0 uses bitrate_level.
comparisonoptBOOLEANtrueAlso build a before/after comparison video (a divider sweeps across the frame) and a matching frame pair for the Compare Images node.
compare_timeoptFLOAT-1.0-1–600Time in seconds of the source_frame / enhanced_frame pair; -1 takes the middle.

Outputs (5)

NameTypeDescription
VIDEOVIDEO—
comparisonVIDEOBefore (left) and after (right) with a sweeping divider. Nodes using it are skipped when comparison is off.
source_frameIMAGEA source frame scaled to the enhanced size; connect it and enhanced_frame to Compare Images for a slider.
enhanced_frameIMAGEThe same moment from the enhanced video.
responseSTRINGThe MediaKit task as JSON.