Deprecation of createObjectURL and replace with the new HTMLMediaElement.srcObject doesn't work for Webcam stream

后端 未结 3 1415
无人及你
无人及你 2020-12-29 04:29

I get the warning that a function will be deprecated in Chrome future release.

It\'s this script:

navigator.getUserMedia = navigator.getUserMedia ||          


        
3条回答
  •  执念已碎
    2020-12-29 04:51

    Your misunderstanding what HTMLMediaElement is.

    It is the JavaScript Class/Prototype that represents a HTML or tag whether it's in the HTML or not.

    For a more class like explanation on the page is an object of type HTMLAudioElement and that extends HTMLMediaElement and that in turn extends HTMLElement.

    If you get the media element with querySelector() or getElementById() or create a media element in JavaScript with createElement("audio") or createElement("video") you'll get an instance of HTMLMediaElement.

    In your case this is an object of HTMLMediaElement class.

    With JavaScript, as a rule of thumb if the object type name starts with HTML it is referring to an HTML Element / Tag.

    All you need to do is change

    this.src = window.URL.createObjectURL(stream);
    

    to

    try {
      this.srcObject = stream;
    } catch (error) {
      this.src = window.URL.createObjectURL(stream);
    }
    

    This is taken from Mozilla Documentation

    You can read more about how this change should be used, and where this answer takes knowledge from: https://www.fxsitecompat.com/en-CA/docs/2017/url-createobjecturl-stream-has-been-deprecated/

提交回复
热议问题