c++graphicsprojectsrustvcpkg

Playa – image sequences player in Rust

TL;DR: That’s a new Image Sequence Player in Rust. Installers are here:

https://github.com/ssoj13/playa/releases/tag/v0.1.128
https://crates.io/crates/playa
https://crates.io/crates/playa-ffmpeg

Long version:

A while ago I decided to dive into Rust after almost accidentally discovering how powerful the language and its infrastructure are.
Rust itself isn’t the simplest language, but its features and robust package management system (Cargo), combined with AI agentic tools, work wonders: a comprehensive ecosystem of crates for literally everything—from graphics engines to PyTorch alternatives to games (like Veloren, an open-source Minecraft clone). Everything builds automatically without the gazillion problems that plague C++ and CMakeLists.txt files. It just works.
So I decided to write a GPU-accelerated image sequence player in Rust with some features I’ve wanted to try for ages.
Incomplete list of what I accomplished over the last week:

  • Developed a player architecture: PlayaApp -> Cache -> Sequence -> Frame with smart caching, multithreaded loading, u8/f16/f32 support, automatic sequence detection, drag-and-drop, persistent playlists, flexible CLI args, and video reading/writing – all in a single binary
  • Figured out the openexr-rs and exrs crates, their limitations and usage
  • Learned cargo, cargo-xtask, cargo-release, cargo-packager, cargo-install/binstall, and git-cliff
  • Figured out ffmpeg-rust, forked it, and massively upgraded the crate to use the latest dependencies, added docs, cleaned up the code, implemented CI/CD for extra .DLL/.SO files and static builds, and added hardware acceleration support
  • Set up GitHub CI/CD caching architecture to deploy the Rust app with extra DLL/SO payloads for all platforms
  • Fought with Apple app signing (a lot)
  • Figured out crates publishing and published 2 new crates
  • Produced single binary image sequence player for all platforms

Main features:

  • EXR, HDR, PNG, JPG, TIFF, TGA, MP4 support
  • u8/f16/f32 support
  • Automatic sequence detection from a single file with multithreaded loading
  • Multiple sequences in persistent playlists: close the app, reopen it, and you’re right where you left off
  • Custom playback range and extensive controls
  • On-screen time scrubber
  • Drag-and-drop support
  • Video loading
  • Built-in hardware-accelerated video encoding: load a few sequences, hit F4, encode
  • Single binary application

It’s probably not the best app in the world and hasn’t been thoroughly tested – there are some bugs here and there – but even at this stage, it’s a quite useful image sequence player and video encoder.

The code is in the repository and available to everyone (who’s brave enough), along with installers and zip packages.
For Mac, please use the .dmg.


The application is still in early development, so expect some bugs 😉

Hi, I’m AK