Skip to main content

Platform Support

Better Player strives to provide a consistent and powerful playback experience across all supported platforms. However, due to underlying native video engine limitations, not all features are equally available across Android, iOS, macOS, Windows, Linux, Web, and Tizen.

The following matrix details the current feature support for Better Player across platforms:

FeatureAndroidiOSmacOSWindowsLinuxWebTizen (Exp.)
Basic Playback (MP4/WebM)✓✓✓✓✓✓✓
HLS (HTTP Live Streaming)✓✓✓✓✓✓✓
DASH (Dynamic Adaptive Streaming)✓xx✓✓✓x
Smooth Streaming✓xxxxxx
Subtitles & Captions (SRT/WebVTT/TTML/CEA)✓✓✓✓✓✓x
Audio Track Selection✓✓✓✓✓✓x
Picture in Picture (PiP)✓✓✓xx✓x
DRM (Widevine)✓xxxx✓x
DRM (FairPlay)x✓✓xx✓x
DRM (ClearKey)✓✓✓✓✓✓x
Caching (Normal)✓✓✓✓✓xx
Pre-caching & Stop Caching✓✓✓✓✓xx
Background Audio / Notifications✓✓xxxxx
Mix Audio with Others✓✓✓✓✓xx
Auto Frame Rate (AFR)✓xxxxxx
AirPlay / Remote Playbackx✓✓xx✓x

Platform Specific Details​

Android​

  • Android playback is powered by ExoPlayer.
  • Full support for almost all streaming formats and advanced DRM (Widevine, ClearKey, PlayReady).
  • Built-in caching through native ExoPlayer cache systems.
  • Support for Auto Frame Rate (AFR) matching via _betterPlayerController.setAndroidMatchFrameRate(true), which syncs the display refresh rate to the video's frame rate.

iOS​

  • iOS playback is powered by native AVPlayer.
  • Native HLS support, but lacks DASH and Smooth Streaming support.
  • FairPlay DRM is fully supported, whereas Widevine is not natively supported by Apple devices.

macOS​

  • macOS playback is powered by native AVPlayer with AppKitView platform view rendering and FFI interop.
  • Native HLS and progressive playback.
  • FairPlay DRM and ClearKey are supported.
  • Audio mixing is handled automatically by CoreAudio.
  • Requires the App Sandbox network client entitlement (com.apple.security.network.client) for network streams.

Windows​

  • Windows desktop playback is powered by libmpv and FFmpeg.
  • Direct3D 11 hardware-accelerated video rendering via Flutter's TextureRegistrar.
  • Native support for HLS (.m3u8), MPEG-DASH (.mpd), RTSP, and progressive video.
  • Direct Dart FFI bindings for low-overhead playback controls.

Linux​

  • Linux desktop playback is powered by libmpv and FFmpeg.
  • Hardware-accelerated video rendering via Flutter's FlPixelBufferTexture on GTK.
  • Native support for HLS (.m3u8), MPEG-DASH (.mpd), RTSP, and progressive video.
  • Direct Dart FFI bindings for low-overhead playback controls.

Web​

  • Web playback is powered by the open-source Shaka Player library, connecting Flutter to web playback capabilities.
  • Try the Live Demo running in the browser. Note: web streams must use HTTPS and support CORS headers.
  • To use Better Player on the web, you must include the Shaka Player library in your web/index.html file (see the Installation page).
  • Background notifications and fine-grained caching (preCache) are not supported on standard web browsers.

Tizen (Experimental)​

  • Warning: better_player_tizen is EXPERIMENTAL and supports only basic playback features.
  • Tizen playback uses the native Tizen Multimedia API (<player.h>) with PixelBufferTexture frame copying.
  • Supports basic network (http/https) and local file playback, play/pause, seek, volume, speed, and looping.
  • DRM, caching/pre-caching, Picture in Picture, and native track switching are not supported yet.