Movycat – A terminal movie player written in Zig

2 hours ago 1

get_movycat5

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 <filename> [-w|-width <width>] [-h |-height <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")

image

image

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?

movycat is entirely written in Zig. This offers us to seamlessly import libffmpeg. And libsdl2. And call it directly from the code.

  • FFmpeg (shared libraries)
  • SDL2
  • Zig 0.14.0 or newer

movycat has been tested and confirmed working on:

  • macOS 15.5 with FFmpeg 8.0 (via Homebrew)
  • Ubuntu 25.10 with FFmpeg 7.1.1 (via apt)

On macOS:

On Ubuntu:

sudo apt install libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libswresample-dev libsdl2-dev
Read Entire Article