Skip to main content

CLMP — CLI Movie Package

Turn any MP4 video into a high-performance colored ASCII animation that plays entirely in your terminal — with audio.

Installation

pip install clmp

Requirements

  • Python 3.8+
  • FFmpeg — must be on your PATH (used for audio extraction and decoding)

Note: CLMP will offer to install FFmpeg for you automatically if it's not found.

Features

  • Blazing Fast Delta-Rendering — Uses a virtual back-buffer to only update changed characters, enabling 120+ FPS playback in native terminals.
  • Colored ASCII art — each character is tinted with the original pixel color using 24-bit ANSI truecolor.
  • Frame-Dropping Audio Sync — Professional audio-led synchronization that automatically drops video frames to stay perfectly locked to the audio clock.
  • Embedded audio — audio is extracted as OGG Vorbis and played back in sync via sounddevice.
  • Full playback controls — pause, speed up/down, seek, volume, quit.
  • Persistent Settings — Customize your experience (jump size, volume steps) via clmp set.
  • Auto-scaling — fits to any terminal size using nearest-neighbor resampling.
  • Compact format — frames are zlib-compressed, audio stored as OGG Vorbis.
  • Cross-platform — works on Windows, macOS, and Linux.

Usage

Encode

Convert an MP4 to a .clmp file:

clmp encode input.mp4 output.clmp

Options:

Flag Default Description
--fps 12 Target playback framerate
--width 160 ASCII columns
--height 45 ASCII rows

Play

clmp play output.clmp

Options:

Flag Description
--speed 1.0 Initial playback speed multiplier
--loop Loop the video
--no-scale Disable auto terminal scaling
--no-color Disable colored output
--no-audio Disable audio playback

Configure

Use clmp set to customize your playback experience. Settings are saved in ~/.clmp/settings.json.

# Set jump distance to 5 seconds
clmp set --jump 5

# Set volume increments to 5%
clmp set --vol-step 5

# Set default starting volume
clmp set --volume 50

Controls

Key Action
Space Pause / resume
+ / - Speed up / slow down (±0.25x)
↑ / ↓ Volume up / down (Customizable step)
← / → Seek backward / forward (Customizable seconds)
q Quit

.clmp Format (v4)

Binary file layout (little-endian):

┌─────────────────────────────────────────┐
│ Header (79 bytes)                       │
│   4s   magic          "CLMP"            │
│   B    version        4                 │
│   H    cols           ASCII width       │
│   H    rows           ASCII height      │
│   f    fps            playback fps      │
│   I    frame_count    number of frames  │
│   64s  source_name    original filename │
├─────────────────────────────────────────┤
│ Frames (repeated × frame_count)         │
│   I    ascii_size     compressed size   │
│   ...  ascii_data     zlib(ASCII text)  │
│   I    color_size     compressed size   │
│   ...  color_data     zlib(RGB bytes)   │
├─────────────────────────────────────────┤
│ Audio                                   │
│   I    audio_size     0 = no audio      │
│   ...  audio_data     raw OGG bytes     │
└─────────────────────────────────────────┘

License

GNU General Public License v3 (GPLv3) (GPL-3.0-only)

Metadata

Release files for clmp 4.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for clmp 4.0.2
File Size Uploaded Provenance
clmp-4.0.2.tar.gz 24.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for clmp 4.0.2
File Interpreter ABI Platform
clmp-4.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 51.4 kB

Release files / clmp-4.0.2.tar.gz

Download URL clmp-4.0.2.tar.gz
Size 24.4 kB
Tags Source
SHA-256 checksum
How to use checksums
26658a3463ae04e5d5dda6d829a39af6d5e3b9d61790a81a8e2605dd9efaadb7
BLAKE2b-256 checksum
How to use checksums
d89d573d0908d4daa69eec02d8286517c1c4d03c50c6356b548928eb2ffbbc3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / clmp-4.0.2-py3-none-any.whl

Download URL clmp-4.0.2-py3-none-any.whl
Size 27.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
01fa4333642de7b3a58d71042767da4cd5fcd0cf0cee81909b0e2c2a1f64021c
BLAKE2b-256 checksum
How to use checksums
30dc297194f9b81ed1664fdafe3cc377fc6e65b1710fb6c4f2fb34dee07bffb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Security for clmp 4.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page