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

Widevine not used in Edge-Chromium #3203

Closed
5 tasks done
Robloche opened this issue Mar 20, 2020 · 3 comments
Closed
5 tasks done

Widevine not used in Edge-Chromium #3203

Robloche opened this issue Mar 20, 2020 · 3 comments
Assignees

Comments

@Robloche
Copy link

Environment
Steps to reproduce
  1. Open https://reference.dashif.org/dash.js/v3.0.3/samples/dash-if-reference-player/index.html in Edge-Chromium 80.0.361.69 (Version officielle) (64 bits)
  2. Enter a MPD URL
  3. Select Widevine as DRM key system (in options)
  4. Enter correct Widevine license URL
  5. Click Load
Observed behaviour

With Chrome, https://widevine-val.tf1.fr/proxy?id=13698487 is correctly called.
With Edge-Chromium, https://drm-play.tf1.fr/playready/rightsmanager.asmx is called, completely ignoring the fact that I selected Widevine as the DRM.

Console output for Chrome (OK)
[11779825][MediaPlayer] Streaming Initialized 
12:25:40.495 Debug.js:168 [11779836][MediaPlayer] Playback Initialized 
12:25:40.543 Debug.js:168 [11779884][DashParser] Parsing complete: ( xml2json: 5.72ms, objectiron: 0.135ms, total: 0.00586s) 
12:25:40.548 Debug.js:168 [11779889][ManifestUpdater] Manifest has been refreshed at Fri Mar 20 2020 12:25:40 GMT+0100 (heure normale d’Europe centrale)[1584703540.544]  
12:25:40.574 Debug.js:168 [11779914][Stream] No text data. 
12:25:40.574 Debug.js:168 [11779915][Stream] No fragmentedText data. 
12:25:40.575 Debug.js:168 [11779916][Stream] No embeddedText data. 
12:25:40.576 Debug.js:168 [11779916][Stream] No muxed data. 
12:25:40.576 Debug.js:168 [11779917][Stream] No image data. 
12:25:40.583 ProtectionModel_21Jan2015.js:300 It is recommended that a robustness level be specified. Not specifying the robustness level could result in unexpected behavior.
(anonymous) @ ProtectionModel_21Jan2015.js:300
requestKeySystemAccessInternal @ ProtectionModel_21Jan2015.js:315
(anonymous) @ ProtectionModel_21Jan2015.js:310
Promise.catch (async)
(anonymous) @ ProtectionModel_21Jan2015.js:308
requestKeySystemAccessInternal @ ProtectionModel_21Jan2015.js:315
requestKeySystemAccess @ ProtectionModel_21Jan2015.js:142
(anonymous) @ ProtectionController.js:519
selectKeySystem @ ProtectionController.js:519
initializeForMedia @ ProtectionController.js:126
checkIfInitializationCompleted @ Stream.js:594
initializeMedia @ Stream.js:530
activate @ Stream.js:153
activateStream @ StreamController.js:562
onMediaSourceOpen @ StreamController.js:535
12:25:40.584 Debug.js:168 [11779925][ProtectionController] DRM: KeySystem Access Granted (com.widevine.alpha)!  Selecting key system... 
12:25:40.588 Debug.js:168 [11779929][PlaybackController] Native video element event: play 
12:25:40.589 Debug.js:168 [11779930][PlaybackController] Native video element event: waiting 
12:25:40.604 Debug.js:168 [11779945][ProtectionController] DRM: Ignoring initData because we have already seen it! 
doLog @ Debug.js:168
warn @ Debug.js:131
createKeySession @ ProtectionController.js:174
onKeySystemSelected @ ProtectionController.js:504
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
(anonymous) @ ProtectionModel_21Jan2015.js:151
Promise.then (async)
(anonymous) @ ProtectionModel_21Jan2015.js:150
Promise.then (async)
selectKeySystem @ ProtectionModel_21Jan2015.js:146
onKeySystemAccessComplete @ ProtectionController.js:473
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
(anonymous) @ ProtectionModel_21Jan2015.js:306
Promise.then (async)
(anonymous) @ ProtectionModel_21Jan2015.js:300
requestKeySystemAccessInternal @ ProtectionModel_21Jan2015.js:315
(anonymous) @ ProtectionModel_21Jan2015.js:310
Promise.catch (async)
(anonymous) @ ProtectionModel_21Jan2015.js:308
requestKeySystemAccessInternal @ ProtectionModel_21Jan2015.js:315
requestKeySystemAccess @ ProtectionModel_21Jan2015.js:142
(anonymous) @ ProtectionController.js:519
selectKeySystem @ ProtectionController.js:519
initializeForMedia @ ProtectionController.js:126
checkIfInitializationCompleted @ Stream.js:594
initializeMedia @ Stream.js:530
activate @ Stream.js:153
activateStream @ StreamController.js:562
onMediaSourceOpen @ StreamController.js:535
12:25:40.625 Debug.js:168 [11779965][BufferController][video] Init fragment finished loading saving to video's init cache 
12:25:40.627 Debug.js:168 [11779968][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-video=2501101.dash  
12:25:40.631 Debug.js:168 [11779971][ProtectionController] DRM: Ignoring initData because we have already seen it! 
doLog @ Debug.js:168
warn @ Debug.js:131
onNeedKey @ ProtectionController.js:757
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
handleEvent @ ProtectionModel_21Jan2015.js:339
12:25:40.631 Debug.js:168 [11779972][ScheduleController][video] Top quality video index has changed from undefined to 5 
12:25:40.662 Debug.js:168 [11780003][BufferController][audio] Init fragment finished loading saving to audio's init cache 
12:25:40.663 Debug.js:168 [11780004][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-audio_fra=128000.dash  
12:25:40.668 Debug.js:168 [11780009][ProtectionController] DRM: Ignoring initData because we have already seen it! 
doLog @ Debug.js:168
warn @ Debug.js:131
onNeedKey @ ProtectionController.js:757
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
handleEvent @ ProtectionModel_21Jan2015.js:339
12:25:40.672 Debug.js:168 [11780013][PlaybackController] Native video element event: loadedmetadata 
12:25:40.675 Debug.js:168 [11780016][ScheduleController][audio] Top quality audio index has changed from undefined to 1 
12:25:40.909 Debug.js:168 [11780250][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-audio_fra=128000-1.m4s  
12:25:41.810 Debug.js:168 [11781151][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-video=2501101-1.m4s  
12:25:41.852 Debug.js:168 [11781193][PlaybackController] Native video element event: playing 
12:25:41.857 Debug.js:168 [11781198][PlaybackController] Native video element event: waiting 
12:25:41.859 Debug.js:168 [11781199][ScheduleController][video] Buffer is empty! Stalling! 
12:25:41.865 Debug.js:168 [11781206][PlaybackController] Native video element event: ratechange:  0 
12:25:41.876 Debug.js:168 [11781216][PlaybackController] Requesting internal seek to time: 0.04 
12:25:41.880 Debug.js:168 [11781221][PlaybackController] Native video element event: waiting 
12:25:41.971 Debug.js:168 [11781312][PlaybackController] Native video element event: seeked 
12:25:41.972 Debug.js:168 [11781313][PlaybackController] Native video element event: playing 
12:25:42.034 Debug.js:168 [11781375][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-audio_fra=128000-2.m4s  
12:25:42.040 Debug.js:168 [11781380][AbrController] [audio] switching from throughput to buffer occupancy ABR rule (buffer: 15.960). 
12:25:43.051 Debug.js:168 [11782391][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-video=2501101-2.m4s  
12:25:43.065 Debug.js:168 [11782405][AbrController] [video] switching from throughput to buffer occupancy ABR rule (buffer: 16.000). 
12:25:43.066 Debug.js:168 [11782407][PlaybackController] Native video element event: playing 
12:25:43.066 Debug.js:168 [11782407][PlaybackController] Native video element event: ratechange:  1 
12:25:43.644 Debug.js:168 [11782985][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-audio_fra=128000-3.m4s  
12:25:44.070 Debug.js:168 [11783411][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-video=2501101-3.m4s  
12:25:44.321 Debug.js:168 [11783661][Protection] EME detected on this user agent! (ProtectionModel_21Jan2015) 
Console output for Edge-Chromium (KO)
[11775058][MediaPlayer] Streaming Initialized 
Debug.js:168 [11775074][MediaPlayer] Playback Initialized 
Debug.js:168 [11775139][DashParser] Parsing complete: ( xml2json: 6.96ms, objectiron: 0.305ms, total: 0.00727s) 
Debug.js:168 [11775155][ManifestUpdater] Manifest has been refreshed at Fri Mar 20 2020 12:25:08 GMT+0100 (heure normale d’Europe centrale)[1584703508.393]  
Debug.js:168 [11775184][Stream] No text data. 
Debug.js:168 [11775184][Stream] No fragmentedText data. 
Debug.js:168 [11775184][Stream] No embeddedText data. 
Debug.js:168 [11775185][Stream] No muxed data. 
Debug.js:168 [11775185][Stream] No image data. 
Debug.js:168 [11775436][ProtectionController] DRM: KeySystem Access Granted (com.microsoft.playready)!  Selecting key system... 
Debug.js:168 [11775443][PlaybackController] Native video element event: play 
Debug.js:168 [11775446][PlaybackController] Native video element event: waiting 
Debug.js:168 [11775463][ProtectionController] DRM: Ignoring initData because we have already seen it! 
doLog @ Debug.js:168
warn @ Debug.js:131
createKeySession @ ProtectionController.js:174
onKeySystemSelected @ ProtectionController.js:504
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
(anonymous) @ ProtectionModel_21Jan2015.js:151
Promise.then (async)
(anonymous) @ ProtectionModel_21Jan2015.js:150
Promise.then (async)
selectKeySystem @ ProtectionModel_21Jan2015.js:146
onKeySystemAccessComplete @ ProtectionController.js:473
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
(anonymous) @ ProtectionModel_21Jan2015.js:306
Promise.then (async)
(anonymous) @ ProtectionModel_21Jan2015.js:300
requestKeySystemAccessInternal @ ProtectionModel_21Jan2015.js:314
requestKeySystemAccess @ ProtectionModel_21Jan2015.js:142
(anonymous) @ ProtectionController.js:519
selectKeySystem @ ProtectionController.js:519
initializeForMedia @ ProtectionController.js:126
checkIfInitializationCompleted @ Stream.js:594
initializeMedia @ Stream.js:530
activate @ Stream.js:153
activateStream @ StreamController.js:562
onMediaSourceOpen @ StreamController.js:535
Debug.js:168 [11775489][BufferController][video] Init fragment finished loading saving to video's init cache 
Debug.js:168 [11775490][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-video=600197.dash  
Debug.js:168 [11775493][ProtectionController] DRM: Ignoring initData because we have already seen it! 
doLog @ Debug.js:168
warn @ Debug.js:131
onNeedKey @ ProtectionController.js:757
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
handleEvent @ ProtectionModel_21Jan2015.js:339
Debug.js:168 [11775494][ScheduleController][video] Top quality video index has changed from undefined to 5 
Debug.js:168 [11775512][BufferController][audio] Init fragment finished loading saving to audio's init cache 
Debug.js:168 [11775514][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-audio_fra=64000.dash  
Debug.js:168 [11775528][ProtectionController] DRM: Ignoring initData because we have already seen it! 
doLog @ Debug.js:168
warn @ Debug.js:131
onNeedKey @ ProtectionController.js:757
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
handleEvent @ ProtectionModel_21Jan2015.js:339
Debug.js:168 [11775534][PlaybackController] Native video element event: loadedmetadata 
Debug.js:168 [11775538][ScheduleController][audio] Top quality audio index has changed from undefined to 1 
Debug.js:168 [11775695][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-audio_fra=64000-1.m4s  
Debug.js:168 [11775805][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-video=600197-1.m4s  
Debug.js:168 [11776541][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-video=600197-2.m4s  
Debug.js:168 [11776562][AbrController] [video] switching from throughput to buffer occupancy ABR rule (buffer: 16.000). 
Debug.js:168 [11776741][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://das-q1.secure.footprint.net/token=nva=1584789725~dirs=7~hash=0492d1b5d1d7c30233097/2/USP-0x0/84/87/13698487/ssm/13698487wdv.ism/dash/13698487wdv-audio_fra=64000-2.m4s  
Debug.js:168 [11776744][AbrController] [audio] switching from throughput to buffer occupancy ABR rule (buffer: 16.000). 
drm-play.tf1.fr/playready/rightsmanager.asmx:1 POST https://drm-play.tf1.fr/playready/rightsmanager.asmx 500
Debug.js:168 [11782745][ProtectionController] License request failed (500). Retrying it... Pending retries: 3 
doLog @ Debug.js:168
warn @ Debug.js:131
xhr.onload @ ProtectionController.js:700
load (async)
doLicenseRequest @ ProtectionController.js:696
onKeyMessage @ ProtectionController.js:669
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
handleEvent @ ProtectionModel_21Jan2015.js:413
drm-play.tf1.fr/playready/rightsmanager.asmx:1 POST https://drm-play.tf1.fr/playready/rightsmanager.asmx 500
Debug.js:168 [11783879][ProtectionController] License request failed (500). Retrying it... Pending retries: 2 
doLog @ Debug.js:168
warn @ Debug.js:131
xhr.onload @ ProtectionController.js:700
load (async)
doLicenseRequest @ ProtectionController.js:696
(anonymous) @ ProtectionController.js:691
setTimeout (async)
retryRequest @ ProtectionController.js:690
xhr.onload @ ProtectionController.js:701
load (async)
doLicenseRequest @ ProtectionController.js:696
onKeyMessage @ ProtectionController.js:669
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
handleEvent @ ProtectionModel_21Jan2015.js:413
drm-play.tf1.fr/playready/rightsmanager.asmx:1 POST https://drm-play.tf1.fr/playready/rightsmanager.asmx 500
Debug.js:168 [11785049][ProtectionController] License request failed (500). Retrying it... Pending retries: 1 
doLog @ Debug.js:168
warn @ Debug.js:131
xhr.onload @ ProtectionController.js:700
load (async)
doLicenseRequest @ ProtectionController.js:696
(anonymous) @ ProtectionController.js:691
setTimeout (async)
retryRequest @ ProtectionController.js:690
xhr.onload @ ProtectionController.js:701
load (async)
doLicenseRequest @ ProtectionController.js:696
(anonymous) @ ProtectionController.js:691
setTimeout (async)
retryRequest @ ProtectionController.js:690
xhr.onload @ ProtectionController.js:701
load (async)
doLicenseRequest @ ProtectionController.js:696
onKeyMessage @ ProtectionController.js:669
(anonymous) @ EventBus.js:88
trigger @ EventBus.js:88
handleEvent @ ProtectionModel_21Jan2015.js:413
drm-play.tf1.fr/playready/rightsmanager.asmx:1 POST https://drm-play.tf1.fr/playready/rightsmanager.asmx 500
Debug.js:168 [11786186][Stream] DRM: licenser error! --com.microsoft.playready update, XHR complete. status is "" (500), readyState is 4.  Response is code: 0x8004c600, name: System.Web.Services.Protocols.SoapException: Internal service error
   at Microsoft.Media.Drm.RightsManager.AcquireLicense(XmlDocument challenge) 
@Robloche Robloche changed the title Widevine not used Edge-Chromium Widevine not used in Edge-Chromium Mar 20, 2020
@dsilhavy
Copy link
Collaborator

Currently there is no DRM priorization configurable via the reference UI. As you can see in your output logs the Edge-Chromium Browser uses a Playready DRM:
DRM: KeySystem Access Granted (com.microsoft.playready)! Selecting key system...

This is possible because for Playready the license server url is part of the init data. For Widevine it needs to be provided manually. By default, dash.js will select the first DRM which works. You can define a priorization if multiple DRM systems are available. An example can be found here #3107

@dsilhavy dsilhavy self-assigned this Mar 20, 2020
@Robloche
Copy link
Author

Thanks! I'll try to use the priorization.

@Robloche
Copy link
Author

Works like a charm!
Thank you so much.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants