-
Notifications
You must be signed in to change notification settings - Fork 6k
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
"Playback stuck buffering and not loading" error #10361
Comments
This issue looks like it's related to the media being played. In particular the root cause is these lines I think:
Please provide media we can use to reproduce the issue. |
@icbaker Ok, thanks. I will send media stream to the email [email protected]. |
@icbaker Hello, do u receive the media stream? |
I played the provided video file in the 2.18.0 demo app and it played without error. I played the first 1 minute (the logs provided in the original comment suggest that playback never begins). I also played it in the 2.17.1 demo app, and it also played without error for the first 1 minute. I do see the same logs in logcat, but in my case they didn't seem to cause playback issues:
Assigning to @tonihei to take a look to see if there's an obvious cause for these logs from |
I can easily reproduce the problem on a Pixel 5. The reason playback is stuck is that:
The last point means this can be classified as bad media. There is one related issue that might be worth fixing. When I force the selection of the HEVC track, the file becomes playable because we no longer need the missing AVC samples (@icbaker I assume your test device just supported the track directly, hence you couldn't see the stuck playback). However, the buffered position stays at 0 because that's the minimum buffered duration across all A/V tracks including the AVC track. This causes the log spam about |
ProgressiveMediaPeriod loads all available tracks into SampleStreams (because it needs to read the data anyway and it allows easy activation of tracks without reloading). However, the SampleStreams for disabled tracks are not read and no one if waiting for them. The buffered position is used for user-visible state (e.g. in the UI) and to check how much data is already buffered to decide when to stop buffering (using LoadControl). Both values benefit from only using the actually enabled tracks to better reflect what is available for playback at the moment. Issue:Issue: google/ExoPlayer#10361 PiperOrigin-RevId: 458475038
ProgressiveMediaPeriod loads all available tracks into SampleStreams (because it needs to read the data anyway and it allows easy activation of tracks without reloading). However, the SampleStreams for disabled tracks are not read and no one if waiting for them. The buffered position is used for user-visible state (e.g. in the UI) and to check how much data is already buffered to decide when to stop buffering (using LoadControl). Both values benefit from only using the actually enabled tracks to better reflect what is available for playback at the moment. Issue:Issue: #10361 PiperOrigin-RevId: 458475038
The issue outlined in the comment above is fixed now. |
ProgressiveMediaPeriod loads all available tracks into SampleStreams (because it needs to read the data anyway and it allows easy activation of tracks without reloading). However, the SampleStreams for disabled tracks are not read and no one if waiting for them. The buffered position is used for user-visible state (e.g. in the UI) and to check how much data is already buffered to decide when to stop buffering (using LoadControl). Both values benefit from only using the actually enabled tracks to better reflect what is available for playback at the moment. Issue:Issue: #10361 PiperOrigin-RevId: 458475038 (cherry picked from commit 577e191)
ProgressiveMediaPeriod loads all available tracks into SampleStreams (because it needs to read the data anyway and it allows easy activation of tracks without reloading). However, the SampleStreams for disabled tracks are not read and no one if waiting for them. The buffered position is used for user-visible state (e.g. in the UI) and to check how much data is already buffered to decide when to stop buffering (using LoadControl). Both values benefit from only using the actually enabled tracks to better reflect what is available for playback at the moment. Issue:Issue: google/ExoPlayer#10361 PiperOrigin-RevId: 458475038 (cherry picked from commit ceb23e6)
@tonihei Hello, I want to ask whether it need to set config to enable? Because I try the latest version code still not work. |
The fix is only in the |
@tonihei Got it, thanks a lot. |
ExoPlayer can't play mpeg-ts dump #9859
When filing a question:
Describe your question in detail.
In case your question refers to a problem you are seeing in your app:
$ adb bugreport
in the consoleDevices that reproduce the issue
ExoPlayer Version
Media
I think maybe the issue is related to sw, because its android media player can't work well.
The text was updated successfully, but these errors were encountered: