2.8.0: playback stalled and downloading same segment in infinite loop
Created by: fvalleeHbbTV
Environment
-
The MPD passes the DASH-IF Conformance Tool on http://dashif.org/conformance.html (the validator complains about profiles="urn:dvb:dash:profile:dvb-dash:2014,urn:dvb:dash:profile:dvb-dash:isoff-ext-live:2014") -
The stream has correct Access-Control-Allow-Origin headers (CORS) -
There are no network errors such as 404s in the browser console when trying to play the stream -
The issue observed is not mentioned on https://github.com/Dash-Industry-Forum/dash.js/wiki/FAQ - [] The issue occurs in the latest reference client on http://reference.dashif.org/dash.js/ and not just on my page (cannot be tested using ref player due to clearkey)
- Link to playable MPD file: http://itvpnp-usp.test.ott.irdeto.com/MONITOR/SAMPLES/1-9360-1784-001-DVBDASH-CLEARKEY.ism/.mpd
- Dash.js version: 2.8.0
- Browser name/version: chromium 55 or chrome 67
- OS name/version: linux
This issue is related to https://github.com/Dash-Industry-Forum/dash.js/issues/2644 (same stream, same behavior). It was fixed/workarounded in 2.7.0 but behavior is reproduced again in 2.8.0. Maybe there is something wrong with the stream.
Steps to reproduce
It cannot be reproduced directly using the ref player because of DRMs but please test locally using the attached lorraine.html (sample is handling clearkey). For some reasons I've never been able to use the dash.js clearkey support player.setProtectionData({"org.w3.clearkey": { "clearkeys": { "KID":"KEY" }} is not working, dash.js is not selecting clearkey anyway.
The only way I found is to remove all keysystems in ProtectionKeyController::initialize() (protection/controllers/ProtectionKeyController.js) The attached sample wont work unless ProtectionKeyController::initialize() implementation is removed. (Please let me know if there is a better way (settings?) to activate/deactivate key systems)
Observed behaviour
Using lorraine.html (and the modified dash.all.debug.js called dash.all.debug_noProtection.js), playback should start automatically. After 5~15 minutes, playback is stopped and the following logs can be seen in an infinite loop:
[674224][InsufficientBufferRule] Switch to index 0; buffer is empty. browser.js:68 [674238][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://itvpnp-usp.test.ott.irdeto.com/MONITOR/SAMPLES/1-9360-1784-001-DVBDASH-CLEARKEY.ism/dash/1-9360-1784-001-DVBDASH-CLEARKEY-audio=128000-36.m4s
(full logs also attached).
The issue cannot be reproduced using dash.js 2.7.0 (but actually sometime playback stops then restart after a while, not sure if this is related).
Using dash.js 2.8.0, it seems the issue cannot be reproduced if https://github.com/Dash-Industry-Forum/dash.js/commit/0f92a6fcc5a387363d1fad22b94ef34d7fd9722f is reverted but actually I guess it's only a side effect and the root cause is somewhere else. Any feedback is welcome!