2012-05-15 27 views
5

Sto utilizzando this jQuery webcam plugin in un sito Web su cui sto lavorando. Se vai sul sito web, noterai che utilizza il flash e devi fare clic su "Accetto" per farlo funzionare.jQuery webcam/flash: come rilevare se la webcam è attiva?

Voglio determinare se la webcam è attiva (attiva) o meno. Come posso fare questo con javascript/jquery?

In altre parole, cosa devo sostituire nella dichiarazione if qui?

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

Sono lontano da un professionista in javascript e jquery, quindi il codice reale sarebbe molto apprezzato.

Inoltre, se qualcuno potesse dirmi come catturare l'evento della webcam che viene attivata, sarebbe anche molto apprezzato. Se non riesci a capirlo, non preoccuparti.

risposta

4

Aggiungere la seguente funzione all'opzione debug della webcam.

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

Non possiamo testare per inattività per essere vero (cioè muted === true), ma ora siamo in grado di verificare webcam.started essere true o undefined/false:

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

Come catturare l'evento

Non c'è un evento di per sé, diverso dall'evento debug. Potresti farne uno ...

Prima effettuare le seguenti operazioni:

$("#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(); } 
     } 
    } 
}); 

Successiva aggiungere una funzione per il nostro nuovo evento webcam.onStarted:

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

Funziona FANTASTICO! Grazie. – varatis

0

È possibile utilizzare il metodo .getCameraList() per ottenere tutte le telecamere disponibili.

onLoad Il callback onLoad viene chiamato non appena viene eseguita la registrazione dell'interfaccia . Nell'esempio di cui sopra, io uso il callback per ottenere un elenco di tutte le telecamere disponibili:

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

Sfortunatamente, questo si esegue solo al caricamento della pagina. – varatis

+0

@varatis È solo un esempio, è possibile registrarsi con altri gestori di eventi. – xdazz

+1

Sì, e questa è la mia domanda ... come dire se la webcam è accesa. Questo mi dice solo quali webcam esistono, non se sono attive. – varatis

0

penso che sarà necessario utilizzare il ExternalInterface API a dire il JavaScript nella pagina quando l'impostazione della privacy è stata d'accordo con.

Tuttavia, non so se sarà possibile ottenere le "informazioni sull'immagine" desiderate perché il flash ha il controllo della fotocamera, quindi il JavaScript sarà in grado di dire al flash di "catturare" e ExternalInterface, probabilmente dovrai usare il flash (ActionScript) per inviare i dati dell'immagine a un webservice prima che il javascript sulla pagina possa fare qualcosa con esso.

HTML5 ha uno <input type="file" accept="image/*" capture="camera" id="capture"> che potrebbe essere sufficiente, invece dell'implementazione flash.

0

Non sei sicuro di tutti questi plugin, ecc Questo funziona per me, anche se stiamo ancora testando:

webcamActive = false; 
webcamActive = $("#video").attr('src'); 
Problemi correlati