Video to Dynamic Color ASCII Art
The full-motion ASCII video effect, characters and all
- video_frames
- dynamic_ascii_video_frames
This is the other half of the pack's video pair, and it's the one that matches what you probably picture when someone says "ASCII video": every frame gets its characters and colors recomputed from that frame's own content. "Video to Dynamic Color ASCII Art" is the full-motion version - the character grid itself ripples and changes as the source moves, nothing stays locked.
The trade-off versus the static video node in the same pack is real and worth stating plainly. Dynamic is flashier and truer to the classic ASCII-video aesthetic (think the streaming Star Wars / "nerd pride" effect), but it's also busier. When the source has subtle motion, the character cells constantly swap between glyphs and the picture can look like it's swimming rather than moving. When the motion is strong - action, camera pans, dancing figures - dynamic sells it. My rule of thumb: dynamic for loud footage, the static variant for anything you want a viewer to actually read.
How it works
Per frame, the node downscales to a char_width grid, converts to grayscale, maps each cell's brightness onto ascii_charset to pick the glyph, and samples the same cell's RGB for the fill color. Then it draws the whole grid and upscales back to the input frame size. Because character selection and color sampling both run on every single frame, it's strictly more CPU work than its static sibling - Pillow drawing thousands of glyphs per frame, hundreds of frames, no GPU. Keep an eye on render time with longer clips.
Inputs and output
Identical surface to the static video node: video_frames (an IMAGE batch), plus char_width, font_path, font_size, ascii_charset, background_color, invert_brightness_mapping. No text_color, no chars_per_frame. Output is the batched IMAGE dynamic_ascii_video_frames, same dimensions as the input.
You still need a video loader upstream that produces an IMAGE batch and a Video Combine / Save Animated WebP/GIF node downstream - this node is strictly a frame-to-frame transformer.
Install and gotchas
ComfyUI Manager (search "ComfyUI ASCII Art Nodes") or manual:
cd ComfyUI/custom_nodes
git clone https://github.com/LamEmil/ComfyUI_ASCIIArtNode
cd ComfyUI_ASCIIArtNode
pip install -r requirements.txt
Restart after. Only dependency is Pillow - no models, no API keys.
Same pack warnings, one of them doubled in severity: font_path defaults to cour.ttf, which isn't bundled, and since this node redraws every glyph every frame, a chunky bitmap fallback font will make the whole video ugly at high speed - set a real monospace .ttf first. Keep char_width modest (60–80) for anything longer than a few seconds, because you're paying the text-rendering cost per frame, per character. And don't rename the cloned folder despite the README's ComfyUI_ASCIINodes naming - the repo clones as ComfyUI_ASCIIArtNode. It's a hobby-grade single-commit pack with no community support, but for the full-motion ASCII effect it's the node you want.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| video_frames | IMAGE | — | |
| char_width | INT | 10010–1000 | — |
| font_path | STRING | cour.ttf | — |
| font_size | INT | 155–100 | — |
| ascii_charset | STRING | .'`^":;Il!i~_?[{1(|/fjxnvzXYJCLQ0Zmwqdkh*#M&8%B@$ | — |
| background_color | STRING | #000000 | — |
| invert_brightness_mapping | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| dynamic_ascii_video_frames | IMAGE | — |