| Crates.io | playa |
| lib.rs | playa |
| version | 0.1.142 |
| created_at | 2025-11-05 03:41:56.564743+00 |
| updated_at | 2025-12-25 06:43:16.151659+00 |
| description | Image sequence player (EXR, PNG, JPEG, TIFF, .MP4). Pure Rust with optional OpenEXR/FFmpeg support. |
| homepage | https://github.com/ssoj13/playa |
| repository | https://github.com/ssoj13/playa |
| max_upload_size | |
| id | 1917376 |
| size | 1,599,119 |

Initially started as a simple EXR Image Image Sequence Player in Rust. The aim was to actually learn Rust and create something useful. LLMs and agentic applications like Claude Code, Codex, Qwen and the rest provide enormous help here and allow to perform 10x-100x faster, so I started to add some more features upon my friends requests: flexible viewport, layers, timeline, attribute editor, h264/265/ProRes encoding, REST api, multithreaded composing with LRU cache and more.
shaders/ folderDownload from Releases:
| Platform | Recommended | Alternative |
|---|---|---|
| Windows | playa-x.x.x-exrs-x64-setup.exe |
.msi, portable .zip |
| macOS | playa-x.x.x-exrs.dmg |
OpenEXR variant for DWAA/DWAB |
| Linux | playa-x.x.x-exrs.AppImage |
.deb package |
macOS: All DMG releases are code-signed and notarized.
See DEVELOP.md for build instructions.
git clone https://github.com/ssoj13/playa.git && cd playa
./bootstrap.ps1 build # Windows (exrs backend)
./bootstrap.ps1 build --openexr # Windows (OpenEXR C++)
./bootstrap.sh build # Linux/macOS
# Launch empty (drag-drop files)
playa
# Load sequence (auto-detects all frames)
playa render.0001.exr
# Load with options
playa -f sequence.exr --frame 50 -a -F # Frame 50, autoplay, fullscreen
Version info (-V):
playa 0.1.138
EXR: openexr-rs 0.11 (C++, DWAA/DWAB)
Video: playa-ffmpeg 8.0 (static)
Target: x86_64-windows
| Panel | Hotkey | Description |
|---|---|---|
| Viewport | - | Image display with zoom/pan |
| Timeline | - | Layer timeline with trim/move |
| Project | F2 |
Media pool |
| Attributes | F3 |
Layer properties |
| Encode | F4 |
Video export |
| Settings | F12 |
Preferences |
| Help | F1 |
Keyboard shortcuts |
| Action | Control |
|---|---|
| Zoom | Mouse wheel (centers on cursor) |
| Pan | Middle mouse drag |
| Fit | F |
| 100% | A or H |
| Fullscreen | Z |
| Scrub | Right click + drag |
| Pick layer | Left click (Select mode Q) |
| Key | Tool |
|---|---|
Q |
Select/Scrub |
W |
Move |
E |
Rotate |
R |
Scale |
| Key | Action |
|---|---|
Space |
Play/Pause |
K |
Stop |
J / L |
Jog backward/forward (cumulative) |
Left / Right |
Step 1 frame |
Shift+Arrows |
Step 25 frames |
Home / End |
Jump to start/end |
; / ' |
Prev/Next layer edge |
` |
Toggle loop |
- / = |
Decrease/Increase FPS |
| Key | Action |
|---|---|
B |
Set range start |
N |
Set range end |
Ctrl+B |
Reset to full range |
| Key | Action |
|---|---|
[ |
Align start to cursor |
] |
Align end to cursor |
Alt+[ |
Trim start to cursor |
Alt+] |
Trim end to cursor |
Ctrl+D |
Duplicate layers |
Delete |
Delete layer |
| Key | Action |
|---|---|
F1 |
Help |
F2 |
Project panel |
F3 |
Attributes panel |
F4 |
Encode dialog |
F12 |
Settings |
Z |
Fullscreen |
Ctrl+S |
Save project |
Ctrl+O |
Open project |
playa render.0001.exrSpace to play, J/L for shuttleB (start), N (end)F4 - encode dialogEnable in Settings > Web Server:
curl http://localhost:8080/api/status
curl -X POST http://localhost:8080/api/player/play
curl -X POST http://localhost:8080/api/player/frame/100
+--------------------------------------------------+
| PlayaApp |
+--------------------------------------------------+
| Player | Viewport | Timeline |
| (state machine) | (OpenGL) | (layers) |
+--------------------------------------------------+
| EventBus | GlobalCache | Workers |
| (pub/sub) | (LRU + epoch) | (parallel) |
+--------------------------------------------------+
| Project (media pool) | Nodes (File/Comp/Camera) |
+--------------------------------------------------+
How acceleration works:
For detailed architecture, see AGENTS.md.
| Document | Description |
|---|---|
| DEVELOP.md | Build from source, FFmpeg setup |
| AGENTS.md | Architecture, dataflow diagrams |
| CHANGELOG.md | Version history |
Built with Rust. Powered by exrs, openexr-rs, playa-ffmpeg, egui, and the Rust ecosystem.
Icon: Flaticon by Yasashii std
For build instructions, see DEVELOP.md. For architecture details, see AGENTS.md.