2012-05-15 73 views
5

Estoy usando this jQuery webcam plugin en un sitio web en el que estoy trabajando. Si va al sitio web, notará que usa el flash, y debe hacer clic en 'aceptar' para que funcione.jQuery webcam/flash: ¿Cómo detectar si la webcam está activa?

Quiero determinar si la cámara web está activada (on) o no. ¿Cómo puedo hacer esto con javascript/jquery?

En otras palabras, ¿qué puedo sustituir en la declaración if aquí?

function capture_image(){ 
    if(webcam.muted == true) {alert("hey");} 

Estoy lejos de ser un profesional en javascript y jQuery, código tan real sería muy apreciada.

Además, si alguien pudiera decirme cómo capturar el evento de la cámara web activada, también sería muy apreciado. Si no puede resolverlo, no se preocupe.

Respuesta

4

Agregue la siguiente función a la opción debug de la cámara web.

$("#camera").webcam({ 
    width: 320, 
    // other options etc. 
    debug: function(type, message) { 
     if (message === "Camera started") { window.webcam.started = true; } 
    } 
}); 

No podemos probar por inactividad para ser verdad (es decir muted === true) pero ahora podemos probar la webcam.started siendo true o undefined/false:

function capture_image(){ 
    if(!webcam.started) { alert("hey, camera not started"); } 
} 

Cómo capturar el evento

No hay un evento per se, que no sea el evento debug. Podrías hacer uno ...

primero haga el siguiente:

$("#camera").webcam({ 
    width: 320, 
    // other options etc. 
    debug: function(type, string) { 
     if (string === "Camera started") { 
      window.webcam.started = true; 
      if (window.webcam.onStarted) { window.webcam.onStarted(); } 
     } 
    } 
}); 

Siguiente agregar una función a nuestro nuevo evento webcam.onStarted:

window.webcam.onStarted = function() { 
    alert("Whey, the webcam started"); 
}; 
+0

¡Funciona EXCELENTE! Gracias. – varatis

0

Puede usar el método .getCameraList() para tener todas las cámaras disponibles.

onLoad La devolución de llamada onLoad se invoca tan pronto como se realiza el registro de la interfaz. En el ejemplo anterior, utilizo la devolución de llamada para obtener una lista de todas las cámaras disponibles:

onLoad: function() { 
    var cams = webcam.getCameraList(); 
    for(var i in cams) { 
     jQuery("#cams").append("<li>" + cams[i] + "</li>"); 
    } 
} 
+0

Desafortunadamente, esto solo funciona en la carga de la página. – varatis

+0

@varatis Es solo un ejemplo, podrías registrarte con otro controlador de eventos. – xdazz

+1

Sí, y esa es mi pregunta ... cómo saber si la cámara web está encendida. Esto solo me dice qué cámaras web existen, no si están activadas. – varatis

0

Creo que tendrá que utilizar el ExternalInterface API para decirle al Javascript en su página cuando la configuración de privacidad ha sido aceptó.

Sin embargo, no sé si podrá acceder a la "información de imagen" que desea porque flash tiene el control de la cámara, por lo que JavaScript solo podrá indicar flash para "capturar" e imagen ExternalInterface, probablemente tendrá que usar el flash (ActionScript) para enviar los datos de la imagen a un servicio web antes de que el javascript en la página pueda hacer algo con él.

HTML5 tiene un <input type="file" accept="image/*" capture="camera" id="capture"> que podría ser suficiente, en lugar de la implementación de flash.

0

No está seguro acerca de todos estos plugins, etc. Esto funciona para mí, aunque todavía estamos probando:

webcamActive = false; 
webcamActive = $("#video").attr('src'); 
Cuestiones relacionadas