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

Cannot force Chromium Edge to use Widevine with dash.js v3 #3148

Closed
tomraut opened this issue Jan 8, 2020 · 3 comments
Closed

Cannot force Chromium Edge to use Widevine with dash.js v3 #3148

tomraut opened this issue Jan 8, 2020 · 3 comments
Assignees

Comments

@tomraut
Copy link

tomraut commented Jan 8, 2020

Steps to reproduce
  1. Try to set only one licenseSystem in action:
var protectionData = {};
protectionData['com.widevine.alpha'] = { serverURL: widevineLicenseUrl, httpRequestHeaders: headers }
  1. Start some DRM protected stream with Chromium Edge & Windows 10. Manifest file should include both Widevine and PlayReady ContentProtection elements.
Observed behaviour

dash.js logs that it selects PlayReady as key system and won't start playback

There is a workaround for this issue and it is including "priority" attribute to protectionData like this:

protectionData['com.widevine.alpha'] = { serverURL: widevineLicenseUrl, httpRequestHeaders: headers, priority: 0 }

Note that with dash.js 2.9.3 same worked without having to include "priority" but apparently some changes made in #2953 broke this. I think this should work also without having to include "priority" in cases where there is only one key system provided in protectionData.

@tomraut
Copy link
Author

tomraut commented Jan 8, 2020

@dsilhavy here you go :)

@dsilhavy
Copy link
Collaborator

dsilhavy commented Jan 8, 2020

Hi @tomraut ,
I have not had the chance to test it in Chromium Edge but in my opinion the behavior of dash.js is correct. The protection data you hand over from the application to the player is used to extend or replace attributes like DRM request headers and license servers. However, the main source of information is still the data coming from the MPD or the PSSH.

As an example: Since the server url for Widevine is not included in the init data it is necessary to set this information when calling the player. For Playready the server url is part of the init data which is why we do not need to hand over server information to the player.

dash.js will use the first DRM system for which the requestMediaKeySystemAccess promise is succesfully resolved. This seems to be Playready in this case. In order to change DRM priorities you can use the priority attribute as you did in your example.

@dsilhavy dsilhavy self-assigned this Jan 8, 2020
@dsilhavy dsilhavy added this to the 3.0.2 milestone Jan 14, 2020
@tomraut
Copy link
Author

tomraut commented Jan 14, 2020

Fair enough, let's keep current behaviour as it is. I'll fix our integration by adding priority attribute.

@tomraut tomraut closed this as completed Jan 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants