Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is getUserMedia throwing a [object NavigatorUserMediaError] when I click "Allow" in Chrome?

Recently, I started getting errors when trying to access the client's mic through my website. When Chrome asks whether to allow the site to access the user's microphone, [object NavigatorUserMediaError] is produced whether they click "allow" or "deny." This has been happening regardless of whether or not a microphone is actually plugged into the computer (which is running Ubuntu 12.04).

Further testing through Firefox showed that this is not specific to Chrome. The problem only started after I had done a live-input demo and then logged out of the computer. I tried making a bare bones demo of accessing the microphone, and it ran into the same problem.

var getVideo = false, getAudio = true;

navigator.getUserMedia || (navigator.getUserMedia = navigator.mozGetUserMedia ||
        navigator.webkitGetUserMedia || navigator.msGetUserMedia);

function init() {
    if(navigator.getUserMedia) {
        navigator.getUserMedia({video:getVideo, audio:getAudio}, onSuccess, onError);
    } else {
        alert('getUserMedia failed.');
    }
}

function onSuccess() {
    console.log("Yay");
}

function onError(err) {
    console.log("Noo " + err);
}

This is rather puzzling as it had worked perfectly up until the point where I logged out and then logged back in and tried to test it again.

I am hosting the web code locally, through Jetty and Eclipse. I am accessing it by typing localhost:8080/my-program into the web browser.

Edit: After the error occurs, the icon of a camera shows up in the chrome address bar, saying that Chrome is accessing my microphone and listing two possible microphones, "Default" and "Built-in Audio Analog Stereo."

Edit 2: This error is also occurring on other websites that try to access my microphone through webrtc. Traditional Flash implementation still works.

Chrome seems to be throwing out an error message at regular intervals while open.

[361:362:0725/095320:ERROR:audio_output_device.cc(186)] 
Not implemented reached in virtual void
media::AudioOutputDevice::OnStateChanged(media::AudioOutputIPCDelegate::State)

Edit 3: I was able to clarify the error message a bit more

NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}
like image 221
Big Duck Avatar asked Jul 22 '13 17:07

Big Duck


1 Answers

** One Browser at a Time **

I've encountered this situation when I am testing with multiple browsers open. It would appear that only one browser can access the media at a time.

ie When I've got my page open in Chrome, and the video/audio is working, then Firefox won't work, and when I've got it working in Firefox, then Chrome doesn't work.

like image 170
Bruce Avatar answered Nov 15 '22 21:11

Bruce