WebRTC ist jetzt auch unter Firefox, Android und iOS verfügbar

Mit WebRTC ist in den letzten Wochen vieles passiert. Zeit für ein Update!

Wir freuen uns besonders, dass WebRTC in mehreren Browsern und auf mehreren Plattformen verwendet wird.

getUserMedia ist jetzt in Chrome ohne Flags sowie in Opera und Firefox Nightly/Aurora verfügbar. Für Firefox müssen Sie jedoch Einstellungen festlegen. Sehen Sie sich die browserübergreifende Demo von getUserMedia unter simpl.info/gum an und sehen Sie sich Chris Wilsons faszinierende Beispiele für die Verwendung von getUserMedia als Eingabe für Web Audio an.

webkitRTCPeerConnection befindet sich jetzt in der stabilen Chrome-Version und ist ohne Flags. Die Unterstützung für den Turn-Server ist in Chrome 24 und höher verfügbar. Unter simpl.info/pc finden Sie eine sehr einfache Demo der RTCPeerConnection-Implementierung von Chrome und unter apprtc.appspot.com eine praktische Anwendung für Videoanrufe. (Zur Erklärung: Nach mehreren Iterationen heißt er derzeit webkitRTCPeerConnection. Andere Namen und Implementierungen wurden eingestellt. Wenn sich der Standardprozess stabilisiert hat, wird das Präfix webkit entfernt.

Außerdem wurde WebRTC jetzt auch für Desktop-Computer in Firefox Nightly und Aurora sowie für iOS und Android über den Bowser-Browser von Ericsson implementiert.

DataChannel

DataChannel ist eine WebRTC API für die Peer-to-Peer-Kommunikation beliebiger Daten mit hoher Leistung und niedriger Latenz. Die API ist ähnlich wie WebSocket, aber die Kommunikation erfolgt direkt zwischen Browsern. Daher kann DataChannel viel schneller sein als WebSocket, selbst wenn ein Relay-Server (turn-punching) erforderlich ist (wenn "Loch Punching" zur Bewältigung von Firewalls und NATs ausfällt).

DataChannel ist für die Version 25 von Chrome geplant, hinter einer Markierung, auch wenn diese Version möglicherweise nicht verfügbar ist. Diese Funktion dient nur zu Testzwecken und ist möglicherweise nicht voll funktionsfähig. Mit der Firefox-Implementierung ist keine Kommunikation möglich. DataChannel in späteren Versionen sollte stabiler sein und wird so implementiert, dass die Interaktion mit DataChannel in Firefox möglich ist.

Firefox Nightly/Aurora unterstützt mozGetUserMedia, mozRTCPeerConnection und DataChannel. Vergessen Sie aber nicht, Ihre about:config-Einstellungen festzulegen.

Hier ist ein Screenshot von DataChannel, das in Firefox ausgeführt wird:

Screenshot von Firefox DataChannel

Diese Demo finden Sie unter http://mozilla.github.com/webrtc-landing/data_test.html. Hier ein Code-Snippet:

pc1.onconnection = function() {
    log("pc1 onConnection ");
    dc1 = pc1.createDataChannel("This is pc1",{}); // reliable (TCP-like)
    dc1 = pc1.createDataChannel("This is pc1",{outOfOrderAllowed: true, maxRetransmitNum: 0}); // unreliable (UDP-like)
    log("pc1 created channel " + dc1 + " binarytype = " + dc1.binaryType);
    channel = dc1;
    channel.binaryType = "blob";
    log("pc1 new binarytype = " + dc1.binaryType);

    // Since we create the datachannel, don't wait for onDataChannel!
    channel.onmessage = function(evt) {
    if (evt.data instanceof Blob) {
        fancy_log("*** pc2 sent Blob: " + evt.data + ", length=" + evt.data.size,"blue");
    } else {
        fancy_log('pc2 said: ' + evt.data, "blue");
    }
    }
    channel.onopen = function() {
    log("pc1 onopen fired for " + channel);
    channel.send("pc1 says Hello...");
    log("pc1 state: " + channel.state);
    }
    channel.onclose = function() {
    log("pc1 onclose fired");
    };
    log("pc1 state:" + channel.readyState);
        }

Weitere Informationen und Demos für die Firefox-Implementierung sind im Blog hacks.mozilla.org verfügbar. Die grundlegende Unterstützung von WebRTC soll Anfang 2013 in Firefox 18 veröffentlicht werden. Die Unterstützung für zusätzliche Funktionen ist geplant, darunter die Einschränkungen für getUserMedia und "createOffer/Answer" sowie für die Kommunikation zwischen Browsern hinter Firewalls.

Weitere Informationen zu WebRTC finden Sie unter Erste Schritte mit WebRTC. Es gibt sogar ein WebRTC-Buch, das als Druck und in verschiedenen E-Book-Formaten erhältlich ist.

Lösungsbeschränkungen

Die Einschränkung wurde in Chrome 24 und höher implementiert. Damit können Werte für die Videoauflösung für getUserMedia()- und RTCPeerConnection-addStream()-Aufrufe festgelegt werden.

Ein Beispiel finden Sie unter simpl.info/getusermedia/constraints. Probieren Sie verschiedene Einschränkungen aus, indem Sie einen Haltepunkt festlegen und die Werte optimieren.

Ein paar Missgeschicke... getUserMedia Einschränkungen, die in einem Browsertab festgelegt sind, wirken sich auf die Einschränkungen für alle nachfolgend geöffneten Tabs aus. Wenn Sie einen unzulässigen Wert für Einschränkungen festlegen, wird eine ziemlich unverständliche Fehlermeldung ausgegeben:

navigator.getUserMedia error:  NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}

Dasselbe gilt für den Fehler, wenn Sie versuchen, getUserMedia aus dem lokalen Dateisystem und nicht auf einem Server zu verwenden.

Streaming von Bildschirmaufnahmen

Tab-Aufnahme ist jetzt in der Chrome-Entwicklerversion verfügbar. Dadurch ist es möglich, den sichtbaren Bereich des Tabs als Stream zu erfassen, der dann lokal oder mit dem addStream() von RTCPeerConnection verwendet werden kann. Sehr nützlich für Bildausschnitte und Webseitenfreigabe. Weitere Informationen finden Sie im Vorschlag „WebRTC Tab Content Capture“.

Kommentieren Sie diese Aktualisierung, um uns auf dem Laufenden zu halten: Wir würden gerne erfahren, was Sie mit diesen APIs machen.

...und melden Sie alle Programmfehler unter chromiumbugs.appspot.com.