Skip to content
This repository has been archived by the owner on Jan 12, 2019. It is now read-only.

IE11 failling to play stream due to Security error #546

Closed
elmehdielkettani opened this issue Feb 9, 2016 · 16 comments
Closed

IE11 failling to play stream due to Security error #546

elmehdielkettani opened this issue Feb 9, 2016 · 16 comments

Comments

@elmehdielkettani
Copy link

For certain versions of IE 11 that support MSE, when clicking play, the player buffers and never starts. This was reproduced on versions 1.3.5 and up (until 1.3.7). It was tested on the example.html on this repo as well as the live demo page (http://videojs.github.io/videojs-contrib-hls/).

The console on IE11 displays a SecurityError on line 3154 of
node_modules/videojs-contrib-media-sources/dist/videojs-media-sources.js

(It should be somewhere after this line https://github.com/videojs/videojs-contrib-media-sources/blob/224f67bfdf27b7d4d42e11ae4a79eaa02de9ea05/src/videojs-media-sources.js#L314)

Was reproduced on the following platforms:

Windows 10 (latest IE11 Update):

  • Version 11.63.10586.0
  • Update Version: 11.0.26 (KB3104002)

Windows 8.1:

  • Version: 11.0.9600.17031
  • Update version 11.0.7
@dmlap
Copy link
Member

dmlap commented Feb 9, 2016

Does the SecurityError include a detail message?

@elmehdielkettani
Copy link
Author

Unfortunately no (this is IE after all).

After further investigation, SecurityError was fired in the console only Win 8.1 and before even clicking on the play button (so it may not be related). Windows 10 seems to have the same behaviour (buffering but never playing) but no console error.

@dmlap
Copy link
Member

dmlap commented Feb 9, 2016

We test with IE11/Win10 and IE11/Win8.1 over here so there's got to be some other factor at play here. Does your Windows install include all media components? Did you install IE in a non-standard way?

@dmlap
Copy link
Member

dmlap commented Feb 10, 2016

I haven't seen the SecurityError but I did find a machine that seems to buffer but not play. My best guess right now is it's an IE11 version issue but I don't have great evidence to back that up. If you discover anything interesting, please let us know!

@elmehdielkettani
Copy link
Author

The SecurityError only occurred on a Windows 8.1 virtual machine. But the on Windows 10, no errors in the console.

I have done further investigation. I could not reproduce this on any of the Mircrosoft free VMs (https://dev.windows.com/en-us/microsoft-edge/tools/vms/). The machine where I can constantly reproduce the issue (and where I was never able to make contrib-hls work) is a Windows 10 Pro Machine. It is a standard installation and the machine has nothing installed but a few testing browsers. I updated it to the latest version of Windows 10 (no more updates as of the writing of this post).

Windows Pro 10

  • Version: 11.103.10586.0
  • Update Version: 11.0.28

Before the update I did yesterday, this was the version of IE11 and had the same issue.

  • Version 11.63.10586.0
  • Update Version: 11.0.26 (KB3104002)

As a note, Edge works fine (since it uses native HLS I guess)

@dmlap
Copy link
Member

dmlap commented Feb 26, 2016

Do you happen to know if the VMs it's failing on have Protected Mode on in IE?

@elmehdielkettani
Copy link
Author

Turning off Protected Mode does not solve the issue.

@ntamblyn
Copy link

ntamblyn commented Apr 8, 2016

I am also getting security warnings for Win 8.1 + 10 for IE 11 using release 2.0.1.

Via the console its is complaining about line 10029.

 return new Worker(URL.createObjectURL(
        new Blob([src], { type: 'text/javascript' })
    ));

I am doing the tests via browserstack

@vfreman
Copy link

vfreman commented Apr 11, 2016

I have the same Security Error on Win 8.1 / IE 11 and it seems to be related to the fact that IE 10 & IE 11 doesn't allow web workers from blob url :
https://connect.microsoft.com/IE/feedback/details/801810/web-workers-from-blob-urls-in-ie-10-and-11

I've tested to use the fallback with eval from this answer on stackoverflow and it works.
http://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string#answer-10372280

    var worker = new Worker(scriptPath + 'videojs-contrib-hls.worker.js');
    worker.postMessage(src);
    return worker;

with this in videojs-contrib-hls.worker.js :

self.onmessage = function(e) {
    self.onmessage = null; // Clean-up
    eval(e.data);
};

But I know encounter another issue line 3880 ( SCRIPT5022: DataCloneError ) :

      this.transmuxer_.postMessage({
        action: 'push',

which seems to be related to this issue :
https://connect.microsoft.com/IE/feedback/details/1121134/ie11-throw-a-datacloneerror-when-re-post-a-message-received-from-another-window-even-on-the-same-domain

@bretproft
Copy link

Same probleme here. Install windows update on virtual machine, that helped us. Works like a charm now..

@gesinger
Copy link
Contributor

Sorry this ticket has gone a long time without much attention. This looks like it was resolved during Windows updates for IE 11.

For IE 10, which doesn't support web worker blob URLs, we are deprecating support with v5 https://github.com/videojs/videojs-contrib-hls#ie10-and-below .

Please let us know if you are still experiencing issues. Thank you.

@jfizz
Copy link

jfizz commented Jul 2, 2017

I am still seeing this error with Win 8.1 + IE 11 on Browserstack. The issue can be reproduced here: http://videojs.github.io/videojs-contrib-hls/. Seems to be related to an issue with Win 8.1 as Win 7 + IE11 and Win10 + IE11 both work.

@vpowers
Copy link

vpowers commented Jul 20, 2017

I am also seeing this error with Win 8.1 + IE 11 on Browserstack.

@mryarbles
Copy link

mryarbles commented Nov 15, 2017

Still seeing this issue on Browser stack. Windows 8.1 and IE 11.

In VirtualBox IE 11 windows 8.1 it's working fine.

Seems to be related:
https://connect.microsoft.com/IE/feedback/details/801810/web-workers-from-blob-urls-in-ie-10-and-11

@matheusmoreira-hotmart
Copy link

The error is occurring due to the use of a decrypter that runs on a web worker. This issue can be validated by putting a breakpoint on the line 619 of the builded script.

this.decrypter_ = (0, _webworkify2['default'])(_decrypterWorker2['default']);

Which i think that matches with the line 278 of the following file:
https://raw.githubusercontent.com/videojs/videojs-contrib-hls/9b95d1edb1b6fb7a48573a6c05f74614904c3b7a/src/master-playlist-controller.js

As @vfreman has said, the issue seems to be solved by using eval, same solution adopted by the following lib:
https://github.com/padolsey/operative#no-worker-via-blob-support

@forbesjo
Copy link
Contributor

Is this still an issue with https://github.com/videojs/http-streaming? That version of this project uses a different method for creating webworkers

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

No branches or pull requests