-
Notifications
You must be signed in to change notification settings - Fork 30.2k
[video_player] Support adaptive bitrate streaming (ABR / dynamic quality switching) #183941
Copy link
Copy link
Open
flutter/packages
#11325Labels
📜Issue was posted to Discord. Remove to have the issue reannounced. (For "design doc", "emergency")Issue was posted to Discord. Remove to have the issue reannounced. (For "design doc", "emergency")P2Important issues not at the top of the work listImportant issues not at the top of the work listc: proposalA detailed proposal for a change to FlutterA detailed proposal for a change to Flutterdesign docTracks a design discussion documentTracks a design discussion documentp: video_playerThe Video Player pluginThe Video Player pluginpackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyAndroid applications specificallyplatform-iosiOS applications specificallyiOS applications specificallyteam-ecosystemOwned by Ecosystem teamOwned by Ecosystem teamtriaged-ecosystemTriaged by Ecosystem teamTriaged by Ecosystem team
Description
Problem
The current video_player plugin relies on native player ABR (ExoPlayer / AVPlayer), but this does not handle all real-world cases of network degradation.
In testing, removing Dart-side adaptive logic resulted in:
- No quality downgrade during buffering
- Playback stalls under poor network conditions
This suggests native ABR alone is insufficient without app-level feedback.
Proposal
Introduce adaptive bitrate control via:
- A public API: setBandwidthLimit(int bitrate)
- Internal Dart-level manager that:
- Observes buffering events
- Dynamically adjusts bitrate
Why this is needed
- Native ABR selects quality initially but does not always react to runtime buffering effectively
- Apps need control over bandwidth ceilings
- No existing API in video_player supports this
Platforms affected
- Android (ExoPlayer)
- iOS (AVPlayer)
Proposal Outcome
- Better playback stability under fluctuating networks
- Reduced buffering
- Developer control over bitrate behavior
Related
Design doc will be attached for review.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
📜Issue was posted to Discord. Remove to have the issue reannounced. (For "design doc", "emergency")Issue was posted to Discord. Remove to have the issue reannounced. (For "design doc", "emergency")P2Important issues not at the top of the work listImportant issues not at the top of the work listc: proposalA detailed proposal for a change to FlutterA detailed proposal for a change to Flutterdesign docTracks a design discussion documentTracks a design discussion documentp: video_playerThe Video Player pluginThe Video Player pluginpackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyAndroid applications specificallyplatform-iosiOS applications specificallyiOS applications specificallyteam-ecosystemOwned by Ecosystem teamOwned by Ecosystem teamtriaged-ecosystemTriaged by Ecosystem teamTriaged by Ecosystem team