Skip to main content
Better Player Logo

Better Player

Better Player is the complete, production-grade video player for Flutter. It provides native OS performance, multi-platform support (Android, iOS, macOS, Windows, Linux, Web, and experimental Tizen), and built-in commercial streaming features including HLS/DASH adaptive bitrate switching, Widevine and FairPlay DRM, offline caching, VAST/VMAP advertising, and short-form video feeds.

Key Features​

Better Player provides a complete set of features designed for production applications:

  • Reliability: Fixes for common bugs found in other players.
  • Advanced Configuration: Granular control over player behavior and appearance.
  • Refactored Controls: Modern, customizable user interface.
  • Playlist Support: Play sequences of videos continuously.
  • Feed & List Pooling: High-performance vertical swipe feeds (BetterPlayerFeed) and bounded controller pooling (BetterPlayerPool) to prevent hardware decoder exhaustion.
  • Comprehensive Subtitles: Support for SRT and WebVTT formats (with HTML tags), TTML, HLS segmented subtitles, and multiple subtitle tracks.
  • Adaptive Streaming: Full support for HLS and DASH, including track, subtitle, and audio track selection.
  • Performance & Optimization: Integrated cache support and alternative resolution selection.
  • Advanced Capabilities: Support for Picture-in-Picture (PiP), DRM (Token, Widevine, FairPlay EZDRM), and custom HTTP headers.
  • VAST & VMAP Ads: Client-side linear video ads (VAST 2.0/3.0/4.x, VMAP) with dual-texture player stacking, tracking beacons, and custom UI overlays (see VAST & VMAP Ads).
  • Dynamic Watermarking & Screen Shield: Forensic viewer overlays and native OS screen capture protection across Android, iOS, macOS, and Windows (see Dynamic Watermarking & Screen Shield).
  • Platform Features: Native notifications and comprehensive BoxFit support.
  • macOS Support: Dedicated desktop playback powered by native AVPlayer, AppKitView, and FFI bindings.
  • Windows Support: Desktop playback powered by libmpv and Direct3D 11 texture sharing.
  • Linux Support: Desktop playback powered by libmpv and FlPixelBufferTexture.
  • Web Support: Advanced web playback using Shaka Player for HLS, DASH, and DRM.
  • Tizen Support (Experimental): Native playback for Samsung Smart TVs and Tizen devices powered by the native Tizen Multimedia API (<player.h>).
  • ... and much more! See the detailed Platform Support matrix.

Migration Guides​

Switching from another package? Follow our step-by-step migration guides:

Important Information​

important

Better Player is currently under active development. While we aim for stability, breaking changes may occur between versions.

This plugin is developed as a community-driven project. If you require a feature that is currently missing or supported by other players on pub.dev, we highly encourage you to submit a Pull Request. All valuable contributions are welcome!

Screenshots​

Mobile OverviewNative Picture-in-Picture (PiP)
AndroidPiP
Web & Desktop OverviewTouch & Fullscreen Controls
Web and DesktopFullscreen
Adaptive HLS Quality & Track SwitchingStyled Subtitles (WebVTT / TTML / SRT)
HLS TracksSubtitles