Recentemente, ho iniziato a ricevere errori quando provavo ad accedere al microfono del cliente attraverso il mio sito web. Quando Chrome chiede se consentire al sito di accedere al microfono dell'utente, viene prodotto [object NavigatorUserMediaError]
indipendentemente dal fatto che facciano clic su "consenti" o "nega". Questo è accaduto indipendentemente dal fatto che un microfono sia effettivamente collegato al computer (che sta usando Ubuntu 12.04).Perché getUserMedia lancia un [oggetto NavigatorUserMediaError] quando faccio clic su "Consenti" in Chrome?
Ulteriori test tramite Firefox hanno dimostrato che questo non è specifico per Chrome. Il problema è iniziato solo dopo aver effettuato una demo di live-input e quindi disconnesso dal computer. Ho provato a realizzare una demo di accesso nudo al microfono, e ho riscontrato lo stesso problema.
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);
}
Questo è piuttosto enigmatico come aveva funzionato alla perfezione fino al punto in cui mi sono collegato fuori e poi collegato indietro e ho cercato di provare di nuovo.
Sto ospitando il codice Web localmente, tramite Jetty ed Eclipse. Sto accedendo digitando localhost:8080/my-program
nel browser web.
Modifica: Dopo l'errore, l'icona di una telecamera viene visualizzata nella barra degli indirizzi di Chrome, dicendo che Chrome sta accedendo al mio microfono e elenca due possibili microfoni, "Predefinito" e "Stereo analogico stereo incorporato. "
Modifica 2: Questo errore si verifica anche su altri siti Web che tentano di accedere al mio microfono tramite webrtc. L'implementazione tradizionale di Flash funziona ancora.
Chrome sembra lanciare un messaggio di errore a intervalli regolari mentre è aperto.
[361:362:0725/095320:ERROR:audio_output_device.cc(186)]
Not implemented reached in virtual void
media::AudioOutputDevice::OnStateChanged(media::AudioOutputIPCDelegate::State)
Edit 3: sono stato in grado di chiarire il messaggio di errore un po 'più
NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}
Questo è un problema con il mio sistema, non il mio codice web. Da altri computer, il sito funziona come previsto. –