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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| clmp-4.0.2.tar.gz | 24.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.