Wieczos Blog

Ich laufe auf Sonnenschein!

WebRTC: Zugriff auf die Webcam mit Javascript

by Thomas Wieczorek - Februar 3rd, 2012.
Filed under: JavaScript.

Gestern bin ich auf WebRTC gestoßen und heute hatte ich Zeit damit rumzuspielen. WebRTC steht für Web Real-Time Communications. Es ist eine JavaScript-API, die Zugriff auf die Webcam und das Mikrofon eines Rechners erlaubt.

WebRTC Verwendung

Um die WebRTC-Demos auszuprobieren, muss man Google Canary installieren. Dann aktiviert man „Enable MediaStream“ unter chrome://flags oder man startet Canary mit dem  Kommando-Zeilen-Argument „- -enable-media-stream“.

(Opera bietet auch WebRTC Unterstützung, aber ich konnte es bisher nicht testen: http://dev.opera.com/articles/view/getusermedia-access-camera-privacy-ui/)

Problem mit den Demos

Nachdem ich die verschiedenen Demos ausprobiert habe, ist mir aufgefallen, dass der LocalMediaStream nicht geschlossen wird. Ich bin mir nicht sicher, ob die offenen Streams den Speicher zu müllen, aber das kleine, grüne LED an meiner Kamera geht nur aus, wenn ich entweder den Stream mit stop() schließe oder den Browser beende. Wenn ein Tab geschlossen wird, bleibt der Stream weiterhin geöffnet und meine Webcam meldet, dass sie noch an ist.

Dabei ist das Ganze nicht so schwer: Referenz zum Stream speichern und den Stream beim unload-Ereignis schließen.

//id des video tags
var video = document.getElementById("webcam");
var videoStream = null;
function onStream(stream) {
    // Referenz zum Stream speichern
    videoStream = stream;
    video.src = window.webkitURL.createObjectURL(stream);
    video.onerror = function(e) {
        console.log("Kamera Fehler: ", e);
    };
}
 
function onNoStream() {
    console.log("Kein Webcam-Stream");
} 
 
if (navigator.webkitGetUserMedia) {
    navigator.webkitGetUserMedia("video", onStream, onNoStream);
}
 
// Wichtig: Stream schließen, sonst bleibt die Kamera an
window.onunload = function() {
    if (videoStream)
        videoStream.stop();
};

Der Code ist ein Auszug aus der eigentlichen Demo.

Fazit

Insgesamt bin ich von WebRTC begeistert; eine weitere API, die weiter ins Feld von Flash vordringt. Ich hoffe nur, dass alle Browser-Hersteller es einbinden. Mal schauen, was sich noch damit bauen lässt.

2 Responses to WebRTC: Zugriff auf die Webcam mit Javascript

  1. Funktioniert nicht.

  2. Recht hast du!
    In den letzten 2,5 Jahren hat sich viel bei WebRTC getan und die Standardisierung ist weit fortgeschritten.
    Neue Infos findest du auf http://www.webrtc.org/

Leave a Reply