Get started
MMRecode is distributed as a Cargo application. You need a working Rust toolchain with Cargo available.
Install MMRecode
Install the current release from crates.io:
cargo install mmrecode
After installation, the mmrecode command is available from your Cargo binary directory. The
default build enables wgpu composition and automatically falls back to the CPU compositor when no
compatible adapter is available.
For a deliberately CPU-only compatibility build:
cargo install mmrecode --no-default-features
The default GPU path uses a three-slot asynchronous wgpu readback ring for video-plus-MMFX monitor frames. Scene evaluation, decoded-frame conversion, and final terminal transfer are still CPU operations.
mmrecode --help
Choose a terminal
MMRecode is a full-screen terminal editor, not a command that launches a separate GUI. For the richest moving-video preview, use Kitty or Ghostty; both support the Kitty graphics protocol used by MMRecode's direct RGB preview path.
MMRecode detects terminal capabilities automatically:
- Kitty and Ghostty: direct Kitty graphics.
- iTerm2: native inline images.
- Sixel-capable terminals: Sixel image output.
- Other true-color terminals: portable 24-bit Unicode half-block rendering.
The fallback keeps the editor usable in terminals without an image protocol, although native image protocols provide the clearest and most efficient preview.
Inspect a media file
The inspect command recognizes the format and reports typed structure:
mmrecode inspect input.jpg
mmrecode inspect input.m2v
Decode MPEG-2 Video
Decode a checked-in elementary stream to YUV4MPEG2:
mmrecode decode input.m2v output.y4m
Open the terminal editor
Run the application without a subcommand:
mmrecode
The editor opens with an Untitled project. Its command prompt and visual workspace are available before media is imported.
Untitled > import projects/output.ts as Clip0
Untitled > save as MyFilm
Use help for the concise vocabulary and man <command> for detailed command help.
Press Tab until the timeline is focused, then use Space to play or pause the complete
project. One project clock crosses sequential MPEG-2/H.264 clips, black gaps, and MMFX scenes.
Opened clip decoders are reused and the next cut is pre-rolled so playback does not synchronously
reopen media at each edit. The clock and keyboard remain responsive when rendering is late: preview
work drops obsolete images instead of slowing time. The monitor title reports measured view/decode
frame rates and conversion/send latency. Terminal images use a bounded proxy—up to 960×540 with
Kitty and 800×450 with fallback protocols—while export always uses the project’s full resolution.
Kitty sessions use the compatible temporary-file transfer path by default. Experimental POSIX
shared-memory transfer can be enabled with MMRECODE_KITTY_SHM=1 for protocol testing, but should
not be used as the normal editor path until capability negotiation is implemented.
Preview supported media
mmrecode preview input.ts
Terminal preview selects Kitty graphics, Sixel, iTerm2 images, or a portable 24-bit half-block renderer according to terminal capability. The monitor reports the selected delivery protocol.
Render an MMFX scene
mmrecode render-mmfx lower-third.mmfx output.png
mmrecode render-mmfx motion-layout.mmfx frame-23.png --frame 23 --frames 60
The command renders through the typed parser, deterministic font/image resource handling, text shaping, layout, exact local-frame animation, vector coverage, and linear-light CPU compositor. See the Scene language reference and rendered examples.
Current expectations
MMRecode is under active development and its capabilities continue to grow quickly. See Project status for current format coverage. Contributors can find the source and development instructions in the GitHub repository.