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:
| Feature | Android | iOS | macOS | Windows | Linux | Web | Tizen (Exp.) |
|---|---|---|---|---|---|---|---|
| Basic Playback (MP4/WebM) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| HLS (HTTP Live Streaming) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| DASH (Dynamic Adaptive Streaming) | ✓ | x | x | ✓ | ✓ | ✓ | x |
| Smooth Streaming | ✓ | x | x | x | x | x | x |
| Subtitles & Captions (SRT/WebVTT/TTML/CEA) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | x |
| Audio Track Selection | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | x |
| Picture in Picture (PiP) | ✓ | ✓ | ✓ | x | x | ✓ | x |
| DRM (Widevine) | ✓ | x | x | x | x | ✓ | x |
| DRM (FairPlay) | x | ✓ | ✓ | x | x | ✓ | x |
| DRM (ClearKey) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | x |
| Caching (Normal) | ✓ | ✓ | ✓ | ✓ | ✓ | x | x |
| Pre-caching & Stop Caching | ✓ | ✓ | ✓ | ✓ | ✓ | x | x |
| Background Audio / Notifications | ✓ | ✓ | x | x | x | x | x |
| Mix Audio with Others | ✓ | ✓ | ✓ | ✓ | ✓ | x | x |
| Auto Frame Rate (AFR) | ✓ | x | x | x | x | x | x |
| AirPlay / Remote Playback | x | ✓ | ✓ | x | x | ✓ | 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
AVPlayerwithAppKitViewplatform 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
libmpvand 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
libmpvand FFmpeg. - Hardware-accelerated video rendering via Flutter's
FlPixelBufferTextureon 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.htmlfile (see the Installation page). - Background notifications and fine-grained caching (
preCache) are not supported on standard web browsers.
Tizen (Experimental)
- Warning:
better_player_tizenis EXPERIMENTAL and supports only basic playback features. - Tizen playback uses the native Tizen Multimedia API (
<player.h>) withPixelBufferTextureframe 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.