Dlaczego getUserMedia rzuca [obiekt NavigatorUserMediaError] po kliknięciu „Zezwalaj” w Chrome?

Niedawno zacząłem otrzymywać błędy podczas próby uzyskania dostępu do mikrofonu klienta za pośrednictwem mojej strony internetowej. Gdy Chrome zapyta, czy zezwolić witrynie na dostęp do mikrofonu użytkownika,[object NavigatorUserMediaError] jest produkowane niezależnie od tego, czy klikną „zezwól”, czy „odmów”. Dzieje się tak niezależnie od tego, czy mikrofon jest rzeczywiście podłączony do komputera (na którym działa Ubuntu 12.04).

Dalsze testy w Firefoksie wykazały, że nie jest to specyficzne dla Chrome. Problem zaczął się dopiero po tym, jak zrobiłem demo na żywo, a następnie wylogowałem się z komputera. Próbowałem nagrać demo dostępu do mikrofonu i napotkał ten sam 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);
}

Jest to dość zagadkowe, ponieważ działało idealnie aż do momentu, kiedy wylogowałem się, a następnie zalogowałem i próbowałem ponownie przetestować.

Hostuję kod internetowy lokalnie, za pośrednictwem Jetty i Eclipse. Uzyskuję dostęp, wpisująclocalhost:8080/my-program do przeglądarki internetowej.

Edycja: Po wystąpieniu błędu ikona kamery pojawia się w pasku adresu chrom, mówiąc, że Chrome uzyskuje dostęp do mojego mikrofonu i wyświetla dwa możliwe mikrofony, „Domyślny” i „Wbudowany analogowy stereo audio”.

Edytuj 2: Ten błąd występuje również na innych stronach internetowych, które próbują uzyskać dostęp do mojego mikrofonu przez Webrtc. Tradycyjna implementacja Flash nadal działa.

Wydaje się, że Chrome wyrzuca komunikat o błędzie w regularnych odstępach czasu, gdy jest otwarty.

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

Edytuj 3: Udało mi się nieco wyjaśnić komunikat o błędzie

NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}

questionAnswers(4)

yourAnswerToTheQuestion