ascii-video

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

Updated Jun 5, 2026
One-click install
npx skills add https://github.com/xu1713/openhorse --skill ascii-video-xu1713
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ascii-video
Source: https://github.com/xu1713/openhorse/tree/main/openhorse/openhorse/skills/creative/ascii-video
Command: npx skills add https://github.com/xu1713/openhorse --skill ascii-video-xu1713

SYSTEM DOCUMENTATION & REQUIREMENTS

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

What problem does it solve? Creating animated ASCII art video from scratch requires solving font rasterization, grid composition, color mapping, audio analysis, and video 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 band analysis and beat detection, generative procedural animation, hybrid video+audio, timed lyrics/text overlays, and TTS-narrated quote videos via ElevenLabs. - Deep effect vocabulary: 21 value field generators (fBM noise, voronoi, reaction-diffusion, strange attractors), 24 character palettes, 38 composable shaders, 20 blend modes, particle systems, feedback buffers, and masking. - Production pipeline: multi-density grid composition, adaptive percentile-based tonemapping, parallel ffmpeg encoding with hardware-adaptive quality profiles from 540p draft to 4K. - Use Case: Give the agent an audio track and ask for a 3-minute audio-reactive ASCII music visualizer; it writes a self-contained Python script with beat-triggered particles, per-section scene changes, and renders a 1080p MP4. ## Quick Start Ask the agent to create an audio-reactive ASCII music video from your audio file, specifying the mood, resolution, and output format you want.

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 video in Python?

Sample frames from the source video with ffmpeg, map per-cell luminance to characters from a density-sorted palette, and color cells from the original pixel values. Frames are composited with pre-rasterized font bitmaps and piped to ffmpeg for H.264 encoding.

How do I make an audio-reactive ASCII visualizer?

Analyze the audio with SciPy FFT to extract 6 frequency bands, RMS energy, spectral centroid, and beat detection per frame. Drive value field generators, particle systems, and beat-reactive shaders from those features, then encode frames to MP4 with the audio muxed.

Does ASCII video rendering require a GPU?

No GPU is required. Rendering runs on CPU with NumPy-vectorized effects and parallel workers via concurrent.futures, typically 100-200ms per frame at 1080p. Hardware detection auto-adjusts resolution and worker count.

Why is my ASCII video output too dark?

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, applied before shaders and feedback.

Why does ffmpeg hang during long video encoding?

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 to stdin.

What are the limitations of ASCII video rendering?

The per-cell Python compositing loop is the bottleneck at roughly 100-150ms per frame, so a 5-minute 1080p video takes about 17 minutes on 8 workers. Unicode palette support also depends on the installed monospace font, and unsupported glyphs are silently dropped.