Streams not playing on IE/Edge
Created by: Thomasvdam
Environment
-
The MPD passes the DASH-IF Conformance Tool on http://dashif.org/conformance.html -
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://dashif.org/reference/players/javascript/ and not just on my page - Link to playable MPD file: http://manifest.us.rtl.nl/0/v175/none/dash/components/videorecorder/34/345829/345830/d8c5cb16-5c29-4afd-b8ec-fab83477c72b.ssm/Manifest.mpd
- Dash.js version: 2.2.0 & 2.3.0
- Browser name/version: IE11 & Edge
- OS name/version: Windows 10
Steps to reproduce
- When trying to load streams in IE and Edge Dashjs with the development console closed! It happens around 9/10 times for us.
- We use the following snippet to log to a textarea since we can't open the console:
var text = document.createElement('textarea');
text.style.width = '1000px';
text.style.height = '1000px';
if (document.readyState === 'complete') {
document.body.insertBefore(text, document.body.firstChild);
} else {
document.onreadystatechange = () => {
document.body.insertBefore(text, document.body.firstChild);
};
}
function logToText(...args) {
var result = '';
for (var i = 0; i < args.length; i++) {
var thing = args[i];
result = result + JSON.stringify(thing) + '\n';
}
result = result + '------------\n';
text.value += result;
}
console.error = logToText.bind(console);
console.log = logToText.bind(console);
console.warn = logToText.bind(console);
console.info = logToText.bind(console);
Observed behaviour
It seems to crash while loading the manifest. For some magical reason this issue does not occur when the development console is open, and I've also seen it work normally once in a while without the dev console.
Console output
"[5] Playback Initialized "
"[10] [dash.js 2.2.0] MediaPlayer has been initialized "
And then we get an error event from Dash.MediaPlayer.events.ERROR
, which logs this