FrameLift Documentation
FrameLift is an extensible video player built on Qt 6 / Qt Quick, FFmpeg, and
libass for Windows and Linux. Its defining trait is that every feature —
playback controls, the playlist, history, settings, network streaming —
is a runtime-loaded plugin (a Qt plugin DLL/SO). The host application has no
compile-time knowledge of any of them; you add or remove features by dropping a
DLL/SO in or out of the plugins/ folder.
This documentation is organized by what you're trying to do.
Pick your path
🎬 User Guide
Install and use the player: open files and network streams, switch audio and subtitle tracks, work with the playlist and history, and configure everything from the in-app Settings menu.
🔧 Building from Source
Configure and build FrameLift with CMake, including lean builds that compile
out built-in modules (e.g. dropping the Vulkan backend) via FRAMELIFT_MODULE_*
options.
🧩 Architecture
How the feature / module / plugin model works, the host ↔ plugin binary ABI, the built-in host modules, and the bundled plugins.
⚙️ Configuration Reference
The on-disk files and the command line: plugins.ini plugin toggles,
settings.ini sections, and CLI usage.
📦 Plugin SDK
Write your own feature as a runtime-loaded plugin against the dependency-free SDK: getting started, task guides, and the full API reference.
At a glance
- Plugin architecture — every feature is a separate Qt plugin DLL/SO loaded at runtime over a stable, versioned binary ABI.
- Vulkan-first rendering — defaults to Vulkan, falling back to OpenGL where no suitable device exists; zero-copy GPU decode on capable hardware.
- Broad format support — anything FFmpeg can demux/decode, plus images, with multi-track audio and subtitles switchable at runtime.
- Fully rebindable hotkeys and theming