New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[video player] weird behaviour when the download speed is low #147438
Comments
tested on MacOS and Android emulator with the same results, don't know about other platforms |
Thanks for the report. I can also reproduce this on iOS and macOS app targets. Current package version For Android platform, this could be related to google/ExoPlayer#7413. flutter doctor -v (stable and master)[✓] Flutter (Channel stable, 3.19.6, on macOS 14.1 23B74 darwin-x64, locale en-VN)
• Flutter version 3.19.6 on channel stable at /Users/huynq/Documents/GitHub/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 54e66469a9 (31 hours ago), 2024-04-17 13:08:03 -0700
• Engine revision c4cd48e186
• Dart version 3.3.4
• DevTools version 2.31.1
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
• Android SDK at /Users/huynq/Library/Android/sdk
• Platform android-34, build-tools 34.0.0
• ANDROID_HOME = /Users/huynq/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
• Xcode at /Applications/Xcode15.3.app/Contents/Developer
• Build 15E204a
• CocoaPods version 1.15.2
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2023.2)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• android-studio-dir = /Applications/Android Studio.app/
• Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)
[✓] VS Code (version 1.88.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.86.0
[✓] Connected device (3 available)
• RMX2001 (mobile) • EUYTFEUSQSRGDA6D • android-arm64 • Android 11 (API 30)
• macOS (desktop) • macos • darwin-x64 • macOS 14.1 23B74 darwin-x64
• Chrome (web) • chrome • web-javascript • Google Chrome 123.0.6312.124
[✓] Network resources
• All expected network resources are available.
• No issues found! [!] Flutter (Channel master, 3.22.0-18.0.pre.53, on macOS 14.1 23B74 darwin-x64, locale en-VN)
• Flutter version 3.22.0-18.0.pre.53 on channel master at /Users/huynq/Documents/GitHub/flutter_master
! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 098e7e7ff3 (2 hours ago), 2024-04-29 01:25:19 +0000
• Engine revision 752b146df7
• Dart version 3.5.0 (build 3.5.0-109.0.dev)
• DevTools version 2.35.0-dev.16
• If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
• Android SDK at /Users/huynq/Library/Android/sdk
• Platform android-34, build-tools 34.0.0
• ANDROID_HOME = /Users/huynq/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
• Xcode at /Applications/Xcode15.3.app/Contents/Developer
• Build 15E204a
• CocoaPods version 1.15.2
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2023.2)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• android-studio-dir = /Applications/Android Studio.app/
• Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)
[✓] VS Code (version 1.88.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.86.0
[✓] Connected device (2 available)
• macOS (desktop) • macos • darwin-x64 • macOS 14.1 23B74 darwin-x64
• Chrome (web) • chrome • web-javascript • Google Chrome 124.0.6367.92
[✓] Network resources
• All expected network resources are available.
! Doctor found issues in 1 category. |
Just wanted to add something that might not be very clear in the original post;
|
Tested the issue with media_kit on MacOS which should be using different platform implementation and it also suffers from this issue |
This may be underlying ExoPlayer/AVPlayer behavior, rather than something the plugin can control. It will need investigation and comparison to non-Flutter video apps using the same libraries. |
@moham96 Could you help to check this with native players as mentioned above? I was testing this with AVPlayer using this online example on iOS device, I had to set 500 kbps download because it's really slow to fetch data with 300 kbps; the issue doesn't seem to appear as I still can play/pause video. |
@huycozy i did a quick test using the provided sample and it does show the same issue, but there could be something wrong with my testing since the sample provided doesn't show the amount of buffered data. we need the native sample to have a slider that shows the amount of buffered data to be able to do any meaningful tests |
@huycozy do you have native examples that shows the buffered amount so i can test |
@moham96 I have Android native sample for ExoPlayer here that you can try on: https://github.com/huycozy/AndroidNativeExoPlayer. I checked this on Android emulator that allows me to set network speed; I went with |
So i was able to test the provided demo with the following modifications:
the testing revealed a less buggy player than the flutter version but has partially the same issue: The player doesn't play the buffered part, but unlike the flutter version it doesn't have to buffer the whole video to play, it was able to play the video when the video was buffered around 70-80% i don't know if this is different behavior or maybe it's the same for flutter but the updating of the buffered amount is incorrect in the flutter implementation. testing using the bandwidth limiter of the emulator i was not able to play the video, which reveals one truth, the player is practically unusable on low bandwidth |
Steps to reproduce
first simulate slow internet connection or slow server:
1- install some bandwidth limiter, for me i used the official network link conditioner.
2- set the bandwidth limiter to something really low, i have set mine to 300 kbps download
next test the video buffering
1- fire up some video player example, i will attach the example i used.
2- give it some time to buffer some part of the video but not the whole video, theoretically it should be able to play the video once it has buffered a part of it, but in this case, it can't for some reason
Expected results
I expect the player to act the same regardless of user connection speed or server speed, in other words it should be able to play the video as soon as some part of it is buffered
Actual results
Currently the player doesn't play the video until the whole video is buffered, watch the attached below video, it is very important in showing the issue
Code sample
video player example that i used
Screenshots or Video
Screenshots / Video demonstration
https://streamable.com/y53yra
i couldn't upload the video here because of size limit
Logs
Logs
[Paste your logs here]
Flutter Doctor output
Doctor output
The text was updated successfully, but these errors were encountered: