ManimGL is the original 3Blue1Brown engine for writing precise, code-driven animations used to make explanatory math videos.
YusufB5/ASCILINE
A Python and JavaScript engine that converts video into ASCII or pixel-block frames and streams them to an HTML5 Canvas player in real time.
- Stars
- 2,772
- Forks
- 315
- Open issues
- 1
- Last commit
- 11 hours ago
What is it?
ASCILINE turns video into text-based frames. A Python backend built on FastAPI decodes a video with OpenCV, maps each pixel to an ASCII character or a colored block, and streams the frames as binary data over WebSocket. A vanilla JavaScript client draws them onto an HTML5 Canvas, so the browser needs no video codec or <video> tag.
Besides live streaming, the project can compile a video into a self-contained .ascf file that plays from any static host such as GitHub Pages, using a Python compiler or a browser-based Studio. It also ships a JavaScript SDK (asciline-player) with an AsciiPlayer class and an <ascf-player> element, and an optional Rust engine for higher-FPS pixel mode.
The project supports Windows, macOS and Linux, offers several color depths from black and white to 16M colors, and includes Docker files for the streaming server.
Key features
- 01Streams ASCII or colored pixel-block frames to a browser canvas over WebSocket.
- 02Compiles videos into self-contained .ascf files for static hosting.
- 03Offers a JavaScript SDK with a class API and an <ascf-player> HTML element.
- 04Provides multiple color modes from black and white to 16M colors.
- 05Supports YouTube and URL input through an optional yt-dlp extra, plus folder and JSON playlist queues.
Use cases
- Embedding a text-styled video effect on a website without a video player.
- Playing video on low-power devices or constrained networks where GPU decoding is unavailable.
- Hosting pre-compiled video clips on a static site with no backend.
- Building retro terminal or typographic visual experiences.
Quick start
- 1
Install the Python dependencies as described in the README Installation section
- 2
Start the live streaming server on a video file
python stream_server.py video.mp4 --host 0.0.0.0
Things to know
- The engine is licensed under AGPL v3, which has copyleft obligations, while the JavaScript SDK is MIT.
- The optional Rust engine's live pixel DCT is a preview and was tested only on Windows.
- Python 3.9 or newer is required.
Topics
FAQ
- What is ASCILINE?
- A Python and JavaScript engine that converts video into ASCII or pixel-block frames and streams them to an HTML5 Canvas player in real time. ASCILINE turns video into text-based frames. A Python backend built on FastAPI decodes a video with OpenCV, maps each pixel to an ASCII character or a colored block, and streams the frames as binary data over WebSocket. A vanilla JavaScript client draws them onto an HTML5 Canvas, so the browser needs no video codec or <video> tag.
- Is ASCILINE free to use? What license does it have?
- ASCILINE is open source under the Other license. Check the license terms before using it in commercial products.
- Is ASCILINE still maintained?
- Actively maintained. The last commit to ASCILINE was on Oct 19, 2026.
- What can I use ASCILINE for?
- Embedding a text-styled video effect on a website without a video player. Playing video on low-power devices or constrained networks where GPU decoding is unavailable. Hosting pre-compiled video clips on a static site with no backend. Building retro terminal or typographic visual experiences.
- How do I install ASCILINE?
- Install the Python dependencies as described in the README Installation section Start the live streaming server on a video file: python stream_server.py video.mp4 --host 0.0.0.0
- Where can I get ASCILINE?
- The source code and installation instructions are on GitHub: https://github.com/YusufB5/ASCILINE
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Command-line tool and Python library that turns a whiteboard-style image into a CPU-rendered hand-drawn reveal MP4, optionally paced to narration.
A small, dependency-free JavaScript library that lets any HTML element make AJAX, WebSocket and SSE requests through attributes.
A fast 2D rendering library for the web that draws graphics, sprites and text with WebGL and WebGPU.
Fast, open-source static analysis CLI that finds bugs and enforces coding standards using code-like patterns instead of regex or ASTs.
Renders every road in a chosen city at once as a map-style visualization, using OpenStreetMap data in the browser.