Nodes/ComfyUI-ReShot/ReShot Canny Video
ComfyUI Node

ReShot Canny Video

The same edges, wrapped in Seedance and H3's size rules

By maosika-ai·Created 12 days ago·Updated 11 days ago· 9
ReShot Canny Video
  • video
  • canny_video
  • canny_frames
  • fps
targeth3
low100
high200
max_side0

ReShot Canny Map gives you edge frames. ReShot Canny Video gives you an edge video - and quietly does the part of the job people get wrong: it makes the clip meet the frame-rate and frame-size rules of whichever video model is going to swallow it.

Reach for it when your graph starts at Load Video and ends at something that wants a reference video rather than a batch of conditions: Seedance 2.5's Reference to Video (a ComfyUI API node - prepaid credits, and your clip goes to a server), MiniMax H3's ref_videos, or a Save Video node whose file you upload to a web UI. Same caveat as the map node applies to the content: canny carries clothes and faces, so it's right for architecture and machinery and wrong when you're trying to sneak a different wardrobe past the model.

What the preset actually does

target is the whole point of this node. Each preset sets an fps and a dimension multiple, straight from the models' published rules:

  • seedance - 24 fps, width and height multiples of 16.
  • h3 - 24 fps, multiples of 32 (MiniMax H3 runs at 24 fps for 4–15 second clips, so this lines up with what the model itself does).
  • wan - 16 fps, multiples of 16, matching Wan 2.1 VACE's samples.
  • none - keep the source fps, just make the dimensions even.

Frames are picked by timestamp, not by dropping every Nth frame, so a 30 fps source really does become 24 rather than staying at 30 with missing frames. Two rules in the source are worth internalising:

fps is never raised. If your reference clip is 12 fps, target: seedance leaves it at 12. You get the frame-size crop and nothing else. Check your source before you blame the node.

Sizes are cropped, never padded. The frame is center-cropped to the multiple, because a black border reads to the generator as a far wall. That means your output is slightly smaller than your input, and every assumption downstream about the original resolution is now wrong.

Audio is dropped - the output VIDEO is silent on purpose. Run past the preset's limit and you'll see a console line like clip is 18.0s; seedance accepts <= 15s: the node still runs, the API rejects it later. Trim upstream.

Inputs and outputs

  • video - from Load Video, or anything else that emits the VIDEO type.
  • target - the preset above. Note the default is h3 here, while the depth video node defaults to seedance. If you're hopping between them, check the widget.
  • low / high - Canny hysteresis, 100 and 200. Lower low for more lines, higher high for only the strong ones.
  • max_side - caps the longer side, 0 = source size. The README's advice is aimed at H3 reference videos (use 320); it applies to canny the same way.
  • Outputs: canny_video (VIDEO, wire to a reference-video input or Save Video), canny_frames (the same frames as an IMAGE batch, for a ControlNet control_video input or a preview), and fps (FLOAT, the output frame rate after the preset - feed it to Create Video if you're rebuilding the clip yourself).

Install

ComfyUI Manager → ComfyUI-ReShot → Install, then restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/maosika-ai/ComfyUI-ReShot
python -m pip install -r ComfyUI-ReShot/requirements.txt

There is no model to download for canny. The pack's 111 MB depth weights only arrive the first time a depth node runs, and the pose nodes add ~340 MB after that.

Common issues

  • ReShot Canny Video isn't in the menu but ReShot Canny Map is - your ComfyUI build predates the native VIDEO type (roughly April 2025). Update ComfyUI, or use the map node with Get Video Components.
  • Nothing imports at all - the reshot package isn't installed into the Python ComfyUI runs on. That's the single most common install failure for this pack; on Windows portable it's almost always someone pip-installing into their system Python.
  • The output is silent - expected. ComfyUI's video components carry audio and this node deliberately passes None through.
  • The result is a couple of dozen pixels smaller than the source - the preset's center crop. Set target: none if you'd rather keep the frame exactly and do your own math.
  • The lines flicker - canny here is per-frame with no temporal smoothing. On grainy footage, denoise or trim before the reference clip goes in.

For the ControlNet path (control_video as an IMAGE batch), the map node is the simpler choice - fewer widgets, and the crop is something you control per connection rather than per preset. This node is for when the file is what leaves your machine.

CategoryReShot

Inputs (5)

NameTypeDefaultDescription
videoVIDEOFrom Load Video (or any node that outputs VIDEO).
targetCOMBOh3Preset: seedance = 24 fps, x16; h3 = 24 fps, x32; wan = 16 fps, x16; none = keep fps, even dims.
lowoptINT1000–1000Canny low threshold: lower = more lines.
highoptINT2000–1000Canny high threshold: higher = only strong edges.
max_sideoptINT00–4096Cap the output's longer side (0 = source size). e.g. 320 for MiniMax H3 reference videos.

Outputs (3)

NameTypeDescription
canny_videoVIDEO
canny_framesIMAGE
fpsFLOAT