How z4pdy/ascii-media-renderer works
ASCII Media Renderer is a Java CLI that turns still images, video, live camera frames, and YouTube streams into terminal ASCII art, with optional audio. The main workflow parses a mode and display flags, obtains terminal dimensions, then loads or resolves a media source and dispatches rendering. Video playback converts frames and synchronizes optional audio; image conversion resizes, optionally adjusts contrast, and maps brightness to characters. The README documents YouTube search and camera support; source excerpts show their CLI dispatch. External-tool and terminal interactions are shown where source supports them.
Main entry points: Main.java Mode dispatcher · AsciiMediaRenderer.java Media renderer · YouTubeUtils.java YouTube resolver · AudioPlayer.java Audio playback
Components 12
CLI orchestration
- Mode dispatcher
app/src/main/java/com/zapdy/asciimediarenderer/Main.java - Terminal sizing
app/src/main/java/com/zapdy/asciimediarenderer/TerminalUtils.java
Media rendering
- Media renderer
app/src/main/java/com/zapdy/asciimediarenderer/AsciiMediaRenderer.java - Image conversion
app/src/main/java/com/zapdy/asciimediarenderer/AsciiImageUtils.java - Audio playback
app/src/main/java/com/zapdy/asciimediarenderer/AudioPlayer.java
YouTube resolution
- Stream URL record
app/src/main/java/com/zapdy/asciimediarenderer/YouTubeDirectStreamUrls.java - YouTube resolver
app/src/main/java/com/zapdy/asciimediarenderer/YouTubeUtils.java
Other components
- CLI user
- Media source
- yt-dlp process
- Terminal display
- Audio device
Connections 13
- CLI user → Mode dispatcher: selects mode
app/src/main/java/com/zapdy/asciimediarenderer/Main.java - Mode dispatcher → Terminal sizing: gets dimensions
app/src/main/java/com/zapdy/asciimediarenderer/Main.java - Media source → Mode dispatcher: provides input
app/src/main/java/com/zapdy/asciimediarenderer/Main.java - Mode dispatcher → Media renderer: dispatches rendering
app/src/main/java/com/zapdy/asciimediarenderer/Main.java - Mode dispatcher → YouTube resolver: resolves search
app/src/main/java/com/zapdy/asciimediarenderer/Main.java - Mode dispatcher → YouTube resolver: gets stream URLs
app/src/main/java/com/zapdy/asciimediarenderer/Main.java - YouTube resolver → yt-dlp process: runs
app/src/main/java/com/zapdy/asciimediarenderer/YouTubeUtils.java - YouTube resolver → Stream URL record: returns URLs
app/src/main/java/com/zapdy/asciimediarenderer/YouTubeUtils.java - Media renderer → Image conversion: converts images
app/src/main/java/com/zapdy/asciimediarenderer/AsciiMediaRenderer.java - Media renderer → Audio playback: plays audio
app/src/main/java/com/zapdy/asciimediarenderer/AsciiMediaRenderer.java - Media renderer → Terminal sizing: clears display
app/src/main/java/com/zapdy/asciimediarenderer/AsciiMediaRenderer.java - Media renderer → Terminal display: writes frames
app/src/main/java/com/zapdy/asciimediarenderer/AsciiMediaRenderer.java - Audio playback → Audio device: writes samples
app/src/main/java/com/zapdy/asciimediarenderer/AudioPlayer.java