Bolt Player
Technologies Used
Software Info
Gallery

Main interface showcasing playlist and recent media
Bolt Player was built to address two gaps that existing Flutter media players had not cleanly solved: reliable YouTube content extraction without the YouTube Data API, and native Windows SMTC integration without introducing Rust compilation dependencies.
The media engine is media_kit, which embeds libmpv as the decoding backend. libmpv handles format demuxing, hardware-accelerated video decoding (DXVA2/D3D11 on Windows, VideoToolbox on macOS), and audio rendering through the platform's default output. Flutter renders the video frame via a platform texture, keeping the video pipeline off the Dart heap entirely.
YouTube support uses youtube_explode_dart, which reverse-engineers YouTube's InnerTube API to extract direct stream URLs and metadata without requiring API keys or OAuth. Streams are passed directly to libmpv as URL sources; libmpv handles adaptive bitrate selection internally.
SMTC integration required a custom Flutter plugin written in C++/WinRT. The plugin implements the Windows.Media.SystemMediaTransportControls COM interface directly, registers play/pause/next/previous button handlers, and reflects the current playback state and track metadata back to the system. This allows Bolt Player to appear in the Windows media overlay (Win+K) and respond to hardware media keys on keyboards.
Software Specifications
System Requirements
Supported Formats
Key Features
libmpv backend via media_kit for hardware-accelerated cross-platform decoding
YouTube stream extraction via youtube_explode_dart (no API keys required)
Custom C++/WinRT native plugin for Windows SMTC integration
Playlist management for both YouTube and local media sources
Hardware acceleration: DXVA2/D3D11 (Windows), VideoToolbox (macOS)
Background playback with system media controls
GitHub releases auto-update system with beta/stable channel support
Architectural Implementation
libmpv Hardware Decoding Pipeline
media_kit initializes libmpv with hwdec=auto, allowing it to select DXVA2 or D3D11VA on Windows and VideoToolbox on macOS. The decoded frame is pushed into a Flutter platform texture (TextureRegistry) and rendered by the Flutter compositor without copying through the Dart isolate, keeping GPU memory usage independent of Dart's garbage collector.
Custom C++/WinRT SMTC Plugin
The plugin creates a SystemMediaTransportControls instance tied to the app's HWND. It registers a ButtonPressed event handler in C++ and routes button events (play, pause, next, previous) to Dart via a MethodChannel. Track metadata (title, artist, thumbnail) is written to the SystemMediaTransportControlsDisplayUpdater from the Dart side on every track change. This avoids the Rust-based winrt crate that most community implementations depend on.
Outcomes
Windows beta release published to GitHub with installer
YouTube streaming and playlist support operational
Custom SMTC plugin working with Windows media overlay and hardware media keys
Auto-update system checking GitHub releases for beta and stable channels
Performance Benchmarks
Sub-1 second application startup
Under 200MB memory usage during playback
Hardware-accelerated video decoding via DXVA2/D3D11/VideoToolbox
Smooth 4K video playback support
Minimal CPU usage during audio-only playback