javascript audio jetty webrtc embedded-jetty

javascript - ¿Por qué getUserMedia lanza un[objeto NavigatorUserMediaError] cuando hago clic en "Permitir" en Chrome?



audio jetty (3)

Esto puede suceder en dos situaciones y he experimentado ambos en Ubuntu 12.04:

  • Ha hecho clic en Denegar una vez y luego el navegador guarda esa configuración, siempre devolviendo el error cuando se le solicita acceso a los medios en esa página. (Esto no parece ser tu caso ya que obtienes la pregunta del navegador, pero solo tienes que ir a la barra de direcciones, hacer clic en el ícono de la cámara y cambiar la opción para volver a preguntar).

  • Su navegador no está teniendo acceso a los dispositivos multimedia y como en cualquier computadora sin cámaras ni micrófonos, incluso si presiona Permitir, obtendrá un evento de error, ya que no puede proporcionarle ninguna transmisión. Intente verificar la configuración del navegador para ver si puede elegir la cámara seleccionada. He experimentado esto y la lista estaba vacía. Para resolver esto tuve que reiniciar la máquina y Chrome comenzó a mostrar la lista de dispositivos nuevamente.

Recientemente, comencé a recibir errores al intentar acceder al micrófono del cliente a través de mi sitio web. Cuando Chrome pregunta si se permite que el sitio acceda al micrófono del usuario, se genera [object NavigatorUserMediaError] si hacen clic en "permitir" o "denegar". Esto ha estado sucediendo independientemente de si un micrófono está enchufado o no en la computadora (que está ejecutando Ubuntu 12.04).

Las pruebas adicionales a través de Firefox mostraron que esto no es específico de Chrome. El problema solo comenzó después de que hice una demostración de entrada en vivo y luego me desconecté de la computadora. Traté de hacer una demostración escueta de acceder al micrófono, y se encontró con el mismo 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); }

Esto es bastante desconcertante ya que funcionó perfectamente hasta el momento en que me desconecté y luego volví a iniciar sesión e intenté probarlo nuevamente.

Estoy alojando el código web localmente, a través de Jetty y Eclipse. Estoy accediendo a él escribiendo localhost:8080/my-program en el navegador web.

Editar: después de que se produce el error, el ícono de una cámara aparece en la barra de direcciones de Chrome, indicando que Chrome está accediendo a mi micrófono y listando dos micrófonos posibles, "Predeterminado" y "Estéreo analógico de audio incorporado".

Editar 2: Este error también se está produciendo en otros sitios web que intentan acceder a mi micrófono a través de webrtc. La implementación de Flash tradicional todavía funciona.

Chrome parece estar emitiendo un mensaje de error a intervalos regulares mientras está abierto.

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

Edición 3: Pude aclarar el mensaje de error un poco más

NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}


NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}

Esto significa que la configuración de su navegador no le permite acceder a la cámara. Vaya a la configuración de su navegador -> debajo de la configuración del sitio web, encontrará una lista de páginas web que ha bloqueado para acceder a su dispositivo.


Un navegador a la vez

Me he encontrado con esta situación cuando estoy probando con varios navegadores abiertos. Parece que solo un navegador puede acceder a los medios a la vez.

es decir, cuando tengo mi página abierta en Chrome y el video / audio funciona, Firefox no funciona, y cuando lo tengo funcionando en Firefox, Chrome no funciona.