better_player_plus
Better video player for Flutter, with multiple configuration options. Solving typical use cases!
- 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
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
- Installation notes:
doc/install.md - Example application:
example/
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 Media31.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
controlsVisibilityStreamfeedback loop and auto-hide emit behaviour - Code Quality: Zero
dart analyzeissues — 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.
Dependencies used
Dependency list 8 items
- flutter
{"sdk":"flutter"} - flutter_localizations
{"sdk":"flutter"} - collection
^1.19.1 - path_provider
^2.1.6 - wakelock_plus
^1.7.0 - flutter_widget_from_html_core
^0.17.3 - flutter_testDevelopment
{"sdk":"flutter"} - analysis_lintsDevelopment
^1.0.9
How do I choose a repository?
Start with your use case, compare repository activity, and check the original project before adopting it.
- Search by repository name, owner or description, then narrow the results by topic.
- Compare stars, forks and recent pushes. Stars show community interest, not a guarantee of quality.
- 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 ↗















