Search packages, repositories and app categories

GitHub repositorySunnatilloShavkatov/better_player_plus

better_player_plus

Better video player for Flutter, with multiple configuration options. Solving typical use cases!

better_player_plus project cover
Stars
72
Forks
159
Last push (UTC)
Sep 4, 2026
Project status
Active

Original README

English project snapshot. Visit GitHub for the latest content.

Better Player Plus

Need anything Flutter related? Reach out on LinkedIn

Pub License Platform

Advanced video player for Flutter, based on video_player and inspired by Chewie and Better Player. It solves many common use cases out of the box and is easy to integrate.

Features
  • ✔️ Fixed common playback bugs
  • ✔️ Advanced configuration options
  • ✔️ Refactored, customizable player controls (Material & Cupertino)
  • ✔️ Playlists
  • ✔️ ListView/feeds autoplay support
  • ✔️ Subtitles: SRT, WebVTT (HTML tags), HLS subtitles, multiple tracks
  • ✔️ HTTP headers support
  • ✔️ BoxFit for video
  • ✔️ Playback speed control
  • ✔️ HLS (tracks, segmented subtitles, audio tracks)
  • ✔️ DASH (tracks, subtitles, audio tracks)
  • ✔️ Alternate resolutions
  • ✔️ Caching
  • ✔️ Notifications
  • ✔️ Picture-in-Picture
  • ✔️ DRM (token, Widevine, FairPlay via EZDRM)
Installation

Add the dependency in your pubspec.yaml:

dependencies:
  better_player_plus: ^1.3.2

Import the package:

import 'package:better_player_plus/better_player_plus.dart';
Quick start

Minimal example showing a network source:


final dataSource = BetterPlayerDataSource(
  BetterPlayerDataSourceType.network,
  'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
);

final controller = BetterPlayerController(
  const BetterPlayerConfiguration(),
  betterPlayerDataSource: dataSource,
);

// In your widget tree
BetterPlayer
(
controller
:
controller
);
Documentation
Important information

This package is actively evolving. Breaking changes may appear between versions. Contributions are welcome — please open issues or pull requests.

License

Apache 2.0 — see LICENSE.

Recent Updates (v1.2.0)
  • SDK Update: Dart SDK >=3.11.0, Flutter SDK >=3.41.0, Android Media3 1.10.0
  • iOS Fixes: Preserved playback speed across seek/pause/resume; fixed AVPlayer aspect ratio issues; added wakelock (disable auto-sleep) support
  • Audio: Fixed audio track override not being cleared before applying a new one; improved HLS default audio source selection
  • Controls: Fixed controlsVisibilityStream feedback loop and auto-hide emit behaviour
  • Code Quality: Zero dart analyze issues — all errors, warnings and info resolved
Credits

This work builds on the great foundations of Chewie and the original Better Player. Thanks to all contributors of those projects.

Special Thanks: This project benefited greatly from Cursor AI assistance during the iOS Objective-C to Swift migration process.

Sunnatillo Shavkatov GitHub avatar
GitHub author

Sunnatillo Shavkatov ↗

BeelabTashkent City
LanguagesDartKotlinSwiftShellRubyObjective-C

Dependencies used

Dependency list 8 items

How do I choose a repository?

Start with your use case, compare repository activity, and check the original project before adopting it.

  1. Search by repository name, owner or description, then narrow the results by topic.
  2. Compare stars, forks and recent pushes. Stars show community interest, not a guarantee of quality.
  3. Read the README, license and issues on GitHub before using a project.

Sources and maintenance

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗