ascii-video

Convert video, audio, and text into colored ASCII character video rendered to MP4 or GIF.

Updated Aug 22, 2026
One-click install
npx skills add https://github.com/vivekgoquest/hermes-agent-stable --skill ascii-video-vivekgoquest
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ascii-video
Source: https://github.com/vivekgoquest/hermes-agent-stable/tree/main/skills/creative/ascii-video
Command: npx skills add https://github.com/vivekgoquest/hermes-agent-stable --skill ascii-video-vivekgoquest

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires numpy, pillow, scipy, opencv-python, and includes references (resource) components.

What problem does it solve? Creating animated ASCII art video from scratch requires solving font rasterization, grid composition, audio analysis, color mapping, and ffmpeg encoding all at once. This Skill gives an agent the complete pipeline and reference knowledge to build single-file Python renderers that turn video, audio, images, or pure math into colored ASCII character video. ## Core Features & Use Cases - Six production modes: video-to-ASCII conversion, audio-reactive visualizers with FFT beat detection, generative procedural animation, hybrid video+audio, timed lyrics/text overlays, and TTS-narrated quote videos via ElevenLabs. - Full effect vocabulary: 21 value field generators, 24 character palettes, 38 composable shaders, 20 pixel blend modes, 9 particle systems, feedback buffers, and an OKLAB/OKLCH perceptual color system. - Hardware-adaptive rendering: auto-detects CPU/RAM, picks quality profiles from 540p draft to 4K, and parallelizes encoding across workers piping raw RGB frames to ffmpeg. - Use Case: Ask for a 3-minute audio-reactive music visualizer and the agent writes a Python script that analyzes the track's frequency bands and beats, composes multi-density character grids with per-section effects and palettes, tonemaps each frame, and encodes a 1080p 24fps MP4 with the audio muxed in. ## Quick Start Use the ascii-video skill to turn my song 'track.mp3' into an audio-reactive ASCII music visualizer at 1080p.

Frequently Asked Questions about ascii-video

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I convert a video to ASCII art animation in Python?▼

Decode the source video with ffmpeg, sample per-frame luminance and edges, then map brightness values to characters from a density-sorted palette on a fixed grid. Composite pre-rasterized font bitmaps onto a pixel canvas and pipe raw RGB frames back to ffmpeg for H.264 encoding.

How to make an audio-reactive ASCII music visualizer?▼

Analyze the audio with SciPy FFT to extract frequency bands, RMS energy, spectral centroid, and beat onsets per frame. Drive value field generators, particle systems, and shader intensity from those features, then render character grids and encode with the original audio muxed in.

Does ASCII video rendering require a GPU?▼

No GPU is required. The pipeline runs on CPU with vectorized NumPy operations and parallel workers via concurrent.futures, rendering 1080p at roughly 100-200ms per frame. Hardware detection automatically adjusts resolution and worker count for low-memory systems.

Why does my ASCII video look too dark after rendering?▼

ASCII characters are small bright dots on black backgrounds, so linear brightness multipliers clip highlights while leaving frames dark. Use percentile-based adaptive tonemapping with gamma around 0.75 instead, and prefer screen blending over overlay for dark layers.

Why does ffmpeg hang when encoding long ASCII videos from Python?▼

Setting stderr=subprocess.PIPE on a long-running ffmpeg process deadlocks once the buffer fills at about 64KB. Redirect stderr to a log file instead, and pipe only raw RGB frames through stdin for the encode.

Can ASCII video render Unicode characters like braille or katakana?▼

Yes, but not all monospace fonts render every Unicode glyph. Palettes should be validated at initialization by rendering each character and checking for blank output, silently dropping unsupported glyphs so the font never produces empty cells.