CLI Movie Package — Turn MP4 videos into colored ASCII terminal animations with audio
Project description
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)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clmp-4.0.1.tar.gz.
File metadata
- Download URL: clmp-4.0.1.tar.gz
- Upload date:
- Size: 24.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb2c075280eeb8b3a43e8acbd7ab455d57811043099422c6152397708323e7d4
|
|
| MD5 |
90d6573e9ce923fe1db668b9a106e75a
|
|
| BLAKE2b-256 |
bc6712ddf168548c1db0583ebbf949649b104d91bae133de99a48a4d1d413ba4
|
File details
Details for the file clmp-4.0.1-py3-none-any.whl.
File metadata
- Download URL: clmp-4.0.1-py3-none-any.whl
- Upload date:
- Size: 26.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ee4d8eb82df35dd2735fab051f2dd553091e2fff69886d2dd513b3b163c7614
|
|
| MD5 |
99e8bec7db6bbbbdc93c5d14909dab4e
|
|
| BLAKE2b-256 |
57a5503ace8cefe56951f91fa3d0617d78bc6ea50de6c74604d301fbb6678800
|