Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Apagar dispositivo WebCam

Estas en el tema de Apagar dispositivo WebCam en el foro de Javascript en Foros del Web. Hola te escribo este post para ver si podés darme una mano. El código HTML que les agregué activa una WebCam con lo básico. Mi ...
  #1 (permalink)  
Antiguo 26/02/2014, 17:11
Avatar de hcrisel  
Fecha de Ingreso: diciembre-2013
Ubicación: Gualeguaychú- Entre Rios
Mensajes: 58
Antigüedad: 10 años, 4 meses
Puntos: 4
Pregunta Apagar dispositivo WebCam

Hola te escribo este post para ver si podés darme una mano.

El código HTML que les agregué activa una WebCam con lo básico.

Mi problema es el siguiente:
Cuando desactivo, desconecto, apago la webcam; logro esconderla del navegador, pero sigue prendida. Este es mi problema.
Yo desearía cerrar totalmente el stream. Pero no logro hacerlo. Le ponga lo que le ponga me sigue mostrando la figura de color verde de la WebCam en el Navegador y si pincho en ella me dice que: "Esta compartiendo el dispositivo con mi pagina".

Te agradezco cualquier orientación que puedas darme.

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es">
  3.  
  4.     <head>
  5.         <title>Cámara Web con HTML5</title>
  6.         <meta charset="UTF-8">
  7.         <style>
  8.             *{margin:0px; padding:0px;}
  9.             body { background-color:RGB(215,201,168); }
  10.         </style>
  11.     </head>
  12.  
  13. <body> <!-- onload="onLoad()"> -->
  14.     <video id="webcam" style="display:none"></video>
  15.     <br>
  16.     <input type="button" onclick="conectar()" value="Selecciona WebCam"/>
  17.     <input type="button" onclick="desconecta()" value="Desconectar"/>
  18. </body>
  19.  
  20.         estadoVideo = false;
  21.  
  22.         function hasGetUserMedia() {
  23.             navigator.getUserMedia = navigator.getUserMedia ||
  24.                 navigator.mozGetUserMedia ||
  25.                 navigator.webkitGetUserMedia ||
  26.                 navigator.msGetUserMedia;
  27.             if (navigator.getUserMedia) {return true;} else {return false;}
  28.         }
  29.        
  30.         function hasURL() {
  31.             window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL;
  32.             if (window.URL && window.URL.createObjectURL) {return true;} else {return false;}
  33.         }
  34.            
  35.         function error(e) { alert("Fallo en la aplicación. "+e); }
  36.        
  37.         function setStream(stream) {
  38.             var webcam = document.getElementById("webcam");
  39.             webcam.src = window.URL.createObjectURL(stream);
  40.             webcam.setAttribute("width", 160)
  41.             webcam.setAttribute("heigth", 120)
  42.             webcam.style.display="block";
  43.             webcam.play();
  44.         }
  45.        
  46.         function conectar() {
  47.             if (!hasGetUserMedia() || !hasURL()) {alert("Tu navegador no soporta getUserMedia()"); return false;}
  48.             navigator.getUserMedia( {video: true, audio: false}, setStream, error );
  49.             estadoVideo = true;
  50.             return true;
  51.         }
  52.  
  53. // Este es mi problema
  54.         function desconecta() {  if(estadoVideo == false) {return};
  55.             estadoVideo = false;
  56.             // window.URL.revokeObjectURL(objectURL);
  57.             webcam.mozSrcObject=null;
  58.             webcam.src="";
  59. //                webcam.removeChild(video);
  60.             webcam.style.display="none";
  61. //            webcam.pause();
  62.             webcam.stop();
  63.         }
  64.     </script>
  65.  
  66. </html>

Como ven en la última función le ponga lo que sea el resultado es el mismo.
__________________
En lo que pueda ayudarte solo avisame. Todos para uno y uno para todos (sin abusar de los demás).
  #2 (permalink)  
Antiguo 27/02/2014, 02:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Apagar dispositivo WebCam

Código Javascript:
Ver original
  1. function setStream(stream) {
  2.             var webcam....
  3. }
  4.  
  5. ....
  6.  
  7. function desconecta() {  if(estadoVideo == false) {return};
  8.             estadoVideo = false;
  9.             // window.URL.revokeObjectURL(objectURL);
  10.             webcam....
  11. }


webcam es una variable local de la función setStream luego dificilmente puedes acceder a ella des de otra función... no? No te esta dando un error por variable no definida?

No puedo intentarlo aqui pero

Código Javascript:
Ver original
  1. var estadoVideo = false;
  2.        ///Ahora será una variable accesible por todas las funciones
  3.        var webcam = document.getElementById("webcam");
  4.  
  5.         function hasGetUserMedia() {
  6.             navigator.getUserMedia = navigator.getUserMedia ||
  7.                 navigator.mozGetUserMedia ||
  8.                 navigator.webkitGetUserMedia ||
  9.                 navigator.msGetUserMedia;
  10.             if (navigator.getUserMedia) {return true;} else {return false;}
  11.         }
  12.        
  13.         function hasURL() {
  14.             window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL;
  15.             if (window.URL && window.URL.createObjectURL) {return true;} else {return false;}
  16.         }
  17.            
  18.         function error(e) { alert("Fallo en la aplicación. "+e); }
  19.        
  20.         function setStream(stream) {
  21.             /////////////Ojo que he comentado esto ----> var webcam = document.getElementById("webcam");
  22.             webcam.src = window.URL.createObjectURL(stream);
  23.             webcam.setAttribute("width", 160)
  24.             webcam.setAttribute("heigth", 120)
  25.             webcam.style.display="block";
  26.             webcam.play();
  27.         }
  28.        
  29.         function conectar() {
  30.             if (!hasGetUserMedia() || !hasURL()) {alert("Tu navegador no soporta getUserMedia()"); return false;}
  31.             navigator.getUserMedia( {video: true, audio: false}, setStream, error );
  32.             estadoVideo = true;
  33.             return true;
  34.         }
  35.  
  36. // Este es mi problema
  37.         function desconecta() {  if(estadoVideo == false) {return};
  38.             estadoVideo = false;
  39.             // window.URL.revokeObjectURL(objectURL);
  40.             webcam.mozSrcObject=null;
  41.             webcam.src="";
  42. //                webcam.removeChild(video);
  43.             webcam.style.display="none";
  44. //            webcam.pause();
  45.             webcam.stop();
  46.         }
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 27/02/2014 a las 02:08
  #3 (permalink)  
Antiguo 27/02/2014, 03:34
Avatar de hcrisel  
Fecha de Ingreso: diciembre-2013
Ubicación: Gualeguaychú- Entre Rios
Mensajes: 58
Antigüedad: 10 años, 4 meses
Puntos: 4
Respuesta: Apagar dispositivo WebCam

B. Días Quimfv

Gracias por tu tiempo.
Con respecto a la definición de la variable WebCam no me daba ningún error. Pese a todo hice el cambio que me sugeriste, pero sigue mostrando que el dispositivo esta conectado.

Que tengas un buen día.
__________________
En lo que pueda ayudarte solo avisame. Todos para uno y uno para todos (sin abusar de los demás).
  #4 (permalink)  
Antiguo 28/02/2014, 16:15
Avatar de hcrisel  
Fecha de Ingreso: diciembre-2013
Ubicación: Gualeguaychú- Entre Rios
Mensajes: 58
Antigüedad: 10 años, 4 meses
Puntos: 4
Respuesta: Apagar dispositivo WebCam

bueno re-escribí todo y es evidente que tendría algo mal escrito. Todo anda bien ahora.
__________________
En lo que pueda ayudarte solo avisame. Todos para uno y uno para todos (sin abusar de los demás).

Etiquetas: dispositivo, html, input, webcam
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:21.