Skip to content
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

Shaka Player freeze on FireFox with dash/widevine content #661

Closed
mjaddani opened this issue Jan 22, 2017 · 16 comments
Closed

Shaka Player freeze on FireFox with dash/widevine content #661

mjaddani opened this issue Jan 22, 2017 · 16 comments
Labels
component: EME The issue involves the Encrypted Media Extensions web API status: archived Archived and locked; will not be updated status: bad content Caused by invalid, broken, or unsupported content

Comments

@mjaddani
Copy link

  • What version of Shaka Player are you using?
    I'm using the version Shaka Player v2.0.3-debug of the demo website "https://shaka-player-demo.appspot.com/demo/"

    • 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?
    demo app and custom app

    • If custom app, can you reproduce the issue using our demo app?
      yes
  • What browser and OS are you using?
    I'm using Windows 10 and Firefox 50.1.0 and Chrome Version 55.0.2883.87 m (64-bit)

  • What did you do?
    On Firefox, i'm attempt to play my content and 5 secondes after we have freeze, the player don't downsell the bitrate. It's work fine on Chrome.

  • What did you expect to happen?

  • What actually happened?

@cpeterso
Copy link

The video doesn't play for me in Chrome or Firefox on macOS. (I haven't tested Windows yet.) I see the following errors in both the Chrome and Firefox devtools console:

The last segment should not end before the end of the Period. Object { position: 141, startTime: 420, endTime: 420.08, getUris: function bound (), startByte: 0, endByte: null }mpd_utils.js:332:5
The last segment should not end before the end of the Period. Object { position: 141, startTime: 420, endTime: 420.08, getUris: function bound (), startByte: 0, endByte: null }mpd_utils.js:332:5
The last segment should not end before the end of the Period. Object { position: 141, startTime: 420, endTime: 420.08, getUris: function bound (), startByte: 0, endByte: null }mpd_utils.js:332:5
The last segment should not end before the end of the Period. Object { position: 141, startTime: 420, endTime: 420.08, getUris: function bound (), startByte: 0, endByte: null }mpd_utils.js:332:5
The last segment should not end before the end of the Period. Object { position: 141, startTime: 420, endTime: 420.08, getUris: function bound (), startByte: 0, endByte: null }mpd_utils.js:332:5

@mjaddani
Copy link
Author

I'have the same error on windows 10 but on chrome it's work fine and firefox it's works, after few secondes, the player freeze, of i force low bitrate it's work but if i enable adaptatif bitrate or i select hight bitrate, it's work few secondes.

drm_engine.js:1210 It is recommended that a robustness level be specified. Not specifying the robustness level could result in unexpected behavior in the future, potentially including failure to play.
(anonymous) @ drm_engine.js:1210
mpd_utils.js:332 The last segment should not end before the end of the Period. shaka.media.SegmentReference
shaka.dash.MpdUtils.fitSegmentReferences @ mpd_utils.js:332
mpd_utils.js:332 The last segment should not end before the end of the Period. shaka.media.SegmentReference
shaka.dash.MpdUtils.fitSegmentReferences @ mpd_utils.js:332
mpd_utils.js:332 The last segment should not end before the end of the Period. shaka.media.SegmentReference
shaka.dash.MpdUtils.fitSegmentReferences @ mpd_utils.js:332
mpd_utils.js:332 The last segment should not end before the end of the Period. shaka.media.SegmentReference
shaka.dash.MpdUtils.fitSegmentReferences @ mpd_utils.js:332
mpd_utils.js:332 The last segment should not end before the end of the Period. shaka.media.SegmentReference
shaka.dash.MpdUtils.fitSegmentReferences @ mpd_utils.js:332
drm_engine.js:494 It is recommended that a robustness level be specified. Not specifying the robustness level could result in unexpected behavior in the future, potentially including failure to play.

@cpeterso
Copy link

In both Chrome and Firefox on Windows 10, I see some audio and video segments network requests in devtools, but no video plays. After a few seconds, Shaka throws a DRM.LICENSE_REQUEST_FAILED error saying "Shaka Error NETWORK.HTTP_ERROR".

@mjaddani
Copy link
Author

Sorry, we don't have disable acces list. It's ok now for you. could you try

@TheModMaker
Copy link
Contributor

First, your license server doesn't have correct CORS headers so the demo player can't play it. Second, the license server URL you gave is for the "main" page, not for the license endpoint. When I do a GET on the URL it shows a default landing page. The license URL given should be the URL where you send a POST message to get the license back.

@mjaddani
Copy link
Author

mjaddani commented Jan 23, 2017

Yes the url is of the server url : https://widevine-dev.tv.sfr.net/rest/widevine/testlicence
It's a post request because we need a widevine payload

@mjaddani
Copy link
Author

Is anyone testing my content please?

@TheModMaker
Copy link
Contributor

Between the third and fourth video segments there is a gap. The third segment ends at 9 seconds while the fourth segment starts at 9.08 seconds. Firefox reports two buffered ranges for this and will not jump the gap automatically. Chrome doesn't report the gap and jumps it fine.

You should report this to the encoder that made the content.

@TheModMaker TheModMaker added the status: bad content Caused by invalid, broken, or unsupported content label Jan 25, 2017
@mjaddani
Copy link
Author

Sorry, we couldn't re encode the content because we have more than 30 000 contents and it's not possible. The content works fine on chrome, Set Top box, mobile application Android and iOS also i'have tested it with commercial player on Firefox and it's work fine. It's possible to force jump the gap automatically ?

@TheModMaker
Copy link
Contributor

We don't do manual gap jumping (see #180 and #472). As suggested in a comment there, your app could do it for us by listening for a buffering event and seek over it. You may also want to file a bug with Firefox. This seems like a really small gap that it should be able to jump.

@cpeterso You know anything about this? I think Firefox would jump this normally, does it have to do with it being encrypted?

@cpeterso
Copy link

@jyavenard: In Firefox 50 - Aurora 52, this stream stalls at time 0:09 (or sometimes 0:29), but in Nightly 54, it stalls at 0:02. IIUC Firefox will skip gap shorter than 200 ms, but the comments above say the gap is just 80 ms. Could this being a Widevine stream affect Firefox's gap skipping logic?

@cpearce: After Firefox bug 1324925 landed in Nightly 53, this video stops with the following error message in the devtools console. Was this EME error happening before and just wasn't being logged?

Assertion failed: Key status change for inactive session! drm_engine.js:1045:3

@mjaddani
Copy link
Author

I'have change this param and now it's work
shaka.media.TimeRangesUtils.GAP_TOLERANCE = 0.10; // 40 ms

Also the same content don't work in Edge and IE11 with PlayReady. We have an error 3016. It's possible to send you a private message with credancial to teste this ?

Thanks

@TheModMaker
Copy link
Contributor

Ok, so I see the problem now. Because we see the gap in the buffered ranges we enter a buffering state even though the browser will jump the gap. Unfortunately we cannot increase the GAP_TOLERANCE because it will cause problems on Safari (and it won't jump the gap).

@cpeterso Firefox will actually jump the gap, so there isn't a problem there.

Also, as discussed in that Firefox bug, the log and error is caused by an incorrect understanding in the spec. It should now be fixed and playable in the latest Nightly.

@mjaddani Error 3016 is a VIDEO_ERROR, which is usually a decoder error. Usually there is nothing we can do about this error, it's the browser's fault (or bad content). You may want to try playing a clear version of the same video. But if you want me to take a look, my email can be found on my profile.

@mjaddani
Copy link
Author

Thanks for your response. finally i'have reproduce the same teste with playready
dash mpd (Playready/Widevine): https://vod-drm-ssl.pfd.sfr.net/out/vod/dash/4/5/e/NEO13283718/NEO13283718.mpd
MPD Clear content: https://ncdn-vod-ssl.pfd.sfr.net/out/vod/dash/46/99/VOF96278/VOF96278.mpd
widevine url: https://widevine-dev.tv.sfr.net/rest/widevine/testlicence
playready url: https://playready-dev.tv.sfr.net/PlayReadyTest/rightsmanager.asmx

With Shaka Player (MSE/EME), do you know what version of PlayReady Server SDK is compatible ?

The content is ok with Chrome / Firefox (see message before) but not on IE11 and Edge, do you have a issue about this please ?

@TheModMaker
Copy link
Contributor

All we do is forward the data given to us by the browser, so we should be able to support any version of the PlayReady server.

I can see the error in Edge. This is a decoder error and there is nothing we can do. I don't see anything obviously wrong with the content. I suggest filing a bug and Microsoft may be able to help more.

@TheModMaker TheModMaker added the component: EME The issue involves the Encrypted Media Extensions web API label Feb 1, 2017
@TheModMaker
Copy link
Contributor

We have decided to pursue gap jumping to support content like this. You can track it in #555.

Closing due to inactivity.

@shaka-project shaka-project locked and limited conversation to collaborators Mar 22, 2018
@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label Apr 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
component: EME The issue involves the Encrypted Media Extensions web API status: archived Archived and locked; will not be updated status: bad content Caused by invalid, broken, or unsupported content
Projects
None yet
Development

No branches or pull requests

4 participants