Convert any video into ASCII art — play it directly in your terminal or export it as an MP4.
╔══════════════════════════════════════════════════════════════════════════╗
║ ║
║ █████╗ ███████╗ ██████╗██╗██╗ ██████╗ ██╗ █████╗ ██╗ ██╗ ║
║ ██╔══██╗██╔════╝██╔════╝██║██║ ██╔══██╗██║ ██╔══██╗╚██╗ ██╔╝ ║
║ ███████║███████╗██║ ██║██║ ██████╔╝██║ ███████║ ╚████╔╝ ║
║ ██╔══██║╚════██║██║ ██║██║ ██╔═══╝ ██║ ██╔══██║ ╚██╔╝ ║
║ ██║ ██║███████║╚██████╗██║██║ ██║ ███████╗██║ ██║ ██║ ║
║ ╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ║
║ ║
║ V I D E O C R E A T O R - B Y P L A N K T O N ║
╚══════════════════════════════════════════════════════════════════════════╝
Made by Plankton
- Terminal playback — watch any video rendered as ASCII art in real time
- Color mode — preserve original colors using ANSI 24-bit escape codes
- Auto-fit — auto-scales to your terminal window size, or set a custom width
- Frame skipping — skip every N frames to reduce CPU load
- Loop mode — repeat playback continuously
- MP4 export — render every frame as a PNG and compile into an MP4 video
- Custom backgrounds — choose black, white, blue, or any custom hex color for export
- Python 3.10+
- Dependencies:
pip install opencv-python pillow numpyA monospace font (
ConsolasorCourier New) must be available on your system for export rendering.
Run the script interactively:
python ASCII_VideoCreate.pyYou will be prompted step by step:
| Prompt | Description |
|---|---|
| Video path | Absolute or relative path to your video file |
| Character color | y to enable ANSI color, N for grayscale |
| Output width | Number of characters wide (blank = auto-fit to terminal) |
| Skip N frames | 1 = every frame, 2 = every other frame, etc. |
| Loop | y to repeat playback until Ctrl+C |
Press Ctrl+C at any time during playback to stop.
After playback ends, you will be asked whether to export. If you choose yes:
- Create an empty folder on your system and paste its path when prompted
- Choose what to keep:
1— MP4 only (temp PNG frames are deleted)2— MP4 + all individual PNG frames
- Choose a background color:
1Black2White3Blue4Custom hex (#RRGGBB)
The output file will be saved as ASCII_Player_Output.mp4 in the folder you provided.
- Larger terminal = higher detail. Maximize your window before running for the best result.
- High-contrast videos (e.g. animations, cartoons) produce cleaner ASCII output than live-action footage.
- Grayscale mode is faster than color mode, especially on lower-end machines.
- Skip frames if playback feels choppy — try
skip = 2orskip = 3first. - On Windows, run in Windows Terminal for proper ANSI color support.
Characters are mapped from darkest to brightest:
.'`^",:;Il!i><~+_-?][}{1)(|\/tfjrxnuvczmwqpdbkhao*#MW&8%B@$0QSXGZJKPHDAUYTRENVLCF
ASCII_VideoCreate.py # Main script — all logic in one file
| Section | Responsibility |
|---|---|
ANSI |
Terminal escape codes and color helpers |
VideoInfo, PlaybackConfig, ExportConfig |
Typed data containers |
frame_to_ascii_* |
Frame → ASCII conversion (grayscale & color) |
ascii_to_image |
ASCII char map → PIL Image (for export) |
play_engine |
Terminal playback loop with threading |
export_flow |
PNG frame rendering + MP4 compilation |
main |
Interactive CLI entry point |
MIT