-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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 freezes at end of video in Edge/IE11 #913
Comments
Note that this source has never played through to the end in any version of the Shaka Player. It does in dash.js and native Edge playback. |
This is a platform bug. We call You may want to file a bug on Edge to fix it. We will look into trying to work around it. |
IE and Edge are correctly truncating the duration to the largest of the buffered ranges for audio & video. It's not obviously a platform bug as we previously thought. |
If we comment out setBuffering() in Playhead, the problem disappears. This is called by PlayheadObserver, which calculates when we should or shouldn't be buffering. So PlayheadObserver is sending Player into a buffering state on IE & Edge, when it shouldn't. In this case, audio SourceBuffer ends at 634.35, video ends at 634.56, and duration is 634.56 (on all browsers). On Chrome, video.buffered is (surprisingly) the larger of the two, while on IE it's the smaller of the two SourceBuffers. This calculation: var atEnd = (bufferEnd >= duration) || this.video_.ended; is therefore true on Chrome and false on IE. |
In The real source of truth is |
PlayheadObserver has to know when the stream has been fully buffered. It did this based on duration and the buffered ranges, but that required the use of a fudge factor and caused false negatives on IE & Edge. Instead, use MediaSource's readyState attribute to decide when we've buffered to the end. This way, IE & Edge do not go into a buffering state when the discrepancy between audio & video sizes is larger than an arbitrary fudge factor. Closes #913 Backported to v2.1.x Change-Id: I307dce12a883201a88a18bf5b9a84f954a1c5033
Cherry-picked for v2.1.7. |
Have you read the FAQ and checked for duplicate issues:
Yes
What version of Shaka Player are you using:
2.1.4
Can you reproduce the issue with our latest release version:
Yes
Can you reproduce the issue with the latest code from
master
:Yes
Are you using the demo app or your own custom app:
Custom
If custom app, can you reproduce the issue using our demo app:
Yes
What browser and OS are you using:
IE11 and Edge 38.14393.1066.0, Windows 10
What are the manifest and license server URIs:
http://dash.edgesuite.net/akamai/bbb_30fps/bbb_30fps.mpd (this issue does not happen with other test content)
(you can send the URIs to shaka-player-issues@google.com instead, but please use GitHub and the template for the rest)
What did you do?
Seek near the end of the video and let the video finish.
What did you expect to happen?
Playback to end and set the player in an ended state
What actually happened?
Playback stops at 633.9008751. Duration is 634.5666666.
End of the video buffer is 634.5666666, end of audio is 634.3547499.
The text was updated successfully, but these errors were encountered: