CLI Pipeline · Bazel & Python
Panimator
Turn any video into a swarm of animated circles.
Panimator converts a video into a sequence of ASCII text frames, then translates those characters into rendered circles and animates them live in a web browser.
View on GitHubSee the Pipeline
Free · Open source · GPL-3.0

From video to circles
Three stages, one pipeline.
Panimator isn't a single tool, it's a small pipeline, and each stage can be run and understood on its own.
Video Processing
ffmpeg extracts frames from your video, then ascii-image-converter turns each frame into ASCII text.
Parsing
The ASCII frames are translated into JSON animation
data, one circle per character, written continuously to
web/circles.json.
Rendering
A lightweight Python web server streams the frame data to your browser, where it's rendered live as animated circles.
One command runs the whole thing.
The pipeline runner coordinates optional video conversion, starting the web server, and running the parser loop, so a full run from a raw video file to a live animation in your browser is a single command.
./bazel-bin/apps/pipeline/pipeline_runner \
--build-files \
--video your-video.mp4 \
--fps 30 \
--colour #4c4f69 \
--radius 1
Tune it to taste
A handful of flags, real control.
--build-files |
Extract frames and generate ASCII files before starting the pipeline. |
--video PATH |
The input video file to convert, used together with --build-files. |
--fps N |
Overrides the frames-per-second used for conversion and playback. |
--colour COLOUR |
Sets the circle colour, as a CSS colour name or hex code. |
--radius N |
Sets the radius of each rendered circle. |
--verbose |
Enables HTTP request logging in the web server. |
Before you build it
What you'll need.
Bazel
Tested with 9.0.0, Bazelisk recommended.
ffmpeg
Used for frame extraction.
ascii-image-converter
Available on the AUR and other package managers.
Python 3
Runs the lightweight web server.
Worth knowing
A few honest notes.
- ASCII frame dimensions are currently fixed in the converter.
- The JSON output is rewritten every frame to support live animation.
- The pipeline is designed for simplicity over throughput, this is a fun renderer, not a performance-tuned one.
Get Panimator
Free, open source, and built from source.
Panimator is released under the GPL-3.0 licence. Build it with Bazel and run your own video through the pipeline.
Bazel · Python · ffmpeg · GPL-3.0