2012-05-15 11 views
5

Używam this jQuery webcam plugin w witrynie, nad którą pracuję. Jeśli przejdziesz na stronę internetową, zauważysz, że używa Flasha i musisz kliknąć "Akceptuj", aby go uruchomić.jQuery webcam/flash: Jak wykryć, czy kamera internetowa jest aktywna?

Chcę określić, czy kamera internetowa jest aktywna (włączona) czy nie. Jak mogę to zrobić za pomocą javascript/jquery?

Innymi słowy, co mam zastąpić w instrukcji if tutaj?

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

Jestem daleko od pro w javascript i jquery, więc prawdziwy kod byłby bardzo doceniany.

Ponadto, jeśli ktoś mógłby mi powiedzieć, jak uchwycić zdarzenie aktywowanej kamery, byłoby to również bardzo cenne. Jeśli nie możesz tego rozgryźć, nie martw się o to.

Odpowiedz

4

Dodaj następującą funkcję do opcji debug kamery internetowej.

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

Nie możemy przetestować bezczynności być prawdziwe (tzn muted === true), ale teraz możemy testować webcam.started będąc true lub undefined/false:

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

Jak uchwycić zdarzenia

Nie ma zdarzenia jako takiego, innego niż zdarzenie debug. Możesz zrobić jeden ...

najpierw wykonać następujące czynności:

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

Następnie dodać funkcję do naszego nowego zdarzenia webcam.onStarted:

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

Działa świetnie! Dzięki. – varatis

0

Możesz użyć metody .getCameraList(), aby uzyskać dostęp do wszystkich kamer.

onLoad Wywołanie zwrotne onLoad jest wywoływane, gdy rejestracja interfejsu jest zakończona. W powyższym przykładzie, używam zwrotnego dostać lista wszystkich kamer dostępnych:

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

Niestety, po prostu działa po wczytaniu strony. – varatis

+0

@varatis To tylko przykład, można zarejestrować się z inną obsługą zdarzeń. – xdazz

+1

Tak, i to jest moje pytanie ... jak stwierdzić, czy kamera jest włączona. To tylko mówi mi, które kamery istnieją, nie, jeśli są włączone. – varatis

0

myślę, że będzie trzeba użyć ExternalInterface API powiedzieć JavaScript na swojej stronie, gdy ustawienie prywatność została zgodził się na.

Jednak nie wiem, czy uda się uzyskać dostęp do "informacji o obrazie", które są potrzebne, ponieważ lampa błyskowa ma kontrolę nad aparatem, więc JavaScript będzie w stanie przekazać flash do "przechwytywania" i obrazu przez ExternalInterface, prawdopodobnie będziesz musiał użyć Flasha (ActionScript), aby przesłać dane obrazu do serwisu internetowego, zanim javascript na stronie będzie mógł coś z nim zrobić.

HTML5 ma <input type="file" accept="image/*" capture="camera" id="capture">, który może wystarczyć zamiast implementacji flash.

0

Nie wiem o tych wszystkich wtyczek itp Działa to dla mnie, chociaż wciąż testujemy:

webcamActive = false; 
webcamActive = $("#video").attr('src'); 
Powiązane problemy