TypeError: Argument 1 is not valid for any of the 1-argument overloads of URL.createObjectURL

trumanblack1025 picture trumanblack1025 · Oct 6, 2018 · Viewed 15.2k times · Source

I've been using getUserMedia to access camera from the browser. I tried it on several browsers and it works except on firefox. It works on chrome,avast,opera mini. This is my code:

<button type="button" onclick="turnOn()">turn on cam</button>
function turnOn() {
     document.getElementsByTagName('video')[0].play();

     var video = document.querySelector('video')
      , canvas;

    /**
     *  generates a still frame image from the stream in the <video>
     *  appends the image to the <body>
     */

    // use MediaDevices API
    // docs: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia
    if (navigator.mediaDevices) {
      // access the web cam
       navigator.mediaDevices.getUserMedia({video: true})
      // permission granted:
        .then(function(stream) {
          video.src = window.URL.createObjectURL(stream);
          /* video.addEventListener('click', takeSnapshot); */
        })
        // permission denied:
        .catch(function(error) {
          document.body.textContent = 'Could not access the camera. Error: ' + error.name + " " + error.message;
        });
    }
}

Hope you could help me. Thank you!

Answer

Dietrich Ayala picture Dietrich Ayala · Dec 28, 2019

Replace:

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

with:

video.srcObject = stream

Source: https://www.chromestatus.com/features/5618491470118912