movycat
movycat plays videos directly in your terminal — in full RGB color. It renders frames as ANSI half block characters, using the movy rendering engine, with synced audio playback powered by SDL2.
It supports all formats that FFmpeg can decode — including .mp4 , .h264 , .avi , .mkv , .webm , and more.
Usage: movycat -f|-file [-w|-width ] [-h |-height ] [-a] movycat -help Options: -f ............ File to play -w, -h ........ Optional: dimensions of video output in pixels. The resulting output size always preserves the aspect ratio, and is truncated to the terminal size. -a ............ Optional: show video on alternate screen. This preserves your current terminal state. -help ......... Help. Show this help along with the movycat logo.
Press ESC to quit.
Press SPACE to pause.
Press CURSOR RIGHT to skip forward 5 seconds.
Press CURSOR LEFT to skip backwards 5 seconds.
Of course you can use vim keys instead of the cursor keys!
l to skip forwards, and h to skip backwards 5 seconds.
Press i to toggle the info overlay.
2025-06-26_23-54-17.mp4
(Excerpt from the 64k Demo "Universal Sequence" from the amazing demo group "Conspiracy")
Why movycat?
movycat is both a demo and a showcase of what movy can do: an RGBA-based rendering engine for composing, transforming, and displaying visuals with real-time effects. If movy can render anything to a surface, why not video frames?
ZIG
movycat is entirely written in Zig. This offers us to seamlessly import libffmpeg. And libsdl2. And call it directly from the code.
Requirements
FFmpeg (shared libraries)
SDL2
Zig 0.15.2 or newer
Tested Platforms
movycat has been tested and confirmed working on:
macOS 15.5 with FFmpeg 8.0 (via Homebrew)
with FFmpeg 8.0 (via Homebrew) Ubuntu 25.10 with FFmpeg 7.1.1 (via apt)
Installation
On macOS:
brew install ffmpeg sdl2
On Ubuntu:
sudo apt install libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libswresample-dev libsdl2-dev
Build