Skip to main content

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