2016-03-26 17 views
2

Ich versuche zu lernen, wie webRTC in Anwendungen zu verwenden, so dass ich ein Codebeispiel in folgendem Link schrieb: http://wklej.org/hash/fd599a32e8e/WebRTC, Eis Kandidaten Verbindung

Ich brauche Am Anfang zu sagen, dass ich interessiere mich nicht über Browser-Kompatibilität, Alles, was ich brauche, ist Chromium Web-Engine ohne externe Adapter/andere Bibliotheken zu unterstützen.

Die Webanwendung sollte es mir ermöglichen, eine Verbindung zwischen zwei Browser-Registerkarten herzustellen, die auf demselben Host ausgeführt werden - durch den manuellen Austausch geeigneter Daten (SDP und ICE Kandidaten).

Schritte zu folgen:

  1. Klicken Sie auf Kopieren lokalen SDP "bieten Schaltfläche erstellen";
  2. Wechseln Sie zu einer anderen Registerkarte und fügen Sie zuvor kopierte SDP in den "Remote SDP" -Bereich ein, und drücken Sie dann "create answer";
  3. Kopiere generierte lokale SDP, gehe zur ersten Registerkarte, füge in den "remote SDP" -Bereich ein und klicke auf "set remote sdp" (keine Antwort-Schaltfläche erstellen);
  4. Exchange Eiskandidaten - kopieren Sie sie von einem Tab, fügen Sie zum zweiten und drücken Sie "addCandidates" -Taste. Tun Sie dasselbe auf die andere Weise.

Das Hauptproblem ist, dass diese Funktion:

peer.iceconnectionstatechange = function(event) { 
    console.log("ice connection state: " + peer.iceConnectionState) 
} 

wird nicht ausgelöst werden. Ich habe versucht, mit STUN/TURN Servern ohne Erfolg zu spielen. Das Remote-Video wird nicht ausgeführt. Wenn jemand darauf hinweisen könnte, wo ich Fehler gemacht habe?

+0

Die Schaltfläche 'create answer' macht nichts mit Ihren Schritten? –

+0

ja es tut, die Schaltfläche 'create answer' nimmt den Anbieter sdp, der von der ersten Registerkarte kopiert wurde. Es versucht, es als Remote-Deskriptor und erstellen Sie dann eine Antwort, die als Remote-Sdp auf der ersten Registerkarte (Schritt 2 und 3) – krzysztof

+0

die TURN-Server verwendet werden, sind wahrscheinlich von einem Tutorial, das behauptet, dass Sie diese Anmeldeinformationen verwenden können , Recht? Diese Anmeldeinformationen funktionieren nicht, da Ihnen niemand kostenlos Zugriff auf ihre TURN-Server gewährt. Versuchen Sie die Zugangsdaten [hier] (https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/), Sie werden sehen, dass Sie keine Kandidaten mit type = relay bekommen –

Antwort

2

Versuchen Mine (cut and paste): https://jsfiddle.net/7vv2vxtt/

oder automatisch (local): https://jsfiddle.net/2v1Lnpmx/

This code intentionally left blank. 

ICE Kandidaten auf das lokale Angebot/Antwort im Laufe der Zeit hinzugefügt, so dass es einfach wartet für End-of-Kandidaten, bevor SDP mit allen eingebetteten Kandidaten erstellt wird.

Sollte in allen Browsern funktionieren.

+0

Gibt es irgendwelche Dokument, auf das Sie verweisen können, das Best Practices für die Sequenzierung der Generierung von ICE-Kandidaten, SDPs usw. erläutert? – Sam

+0

@Sam meinen Sie für Browser-Implementierungen? Browser kümmern sich um die Generierung von ICE-Kandidaten, die startet, sobald 'setLocalDescription' erfolgreich ist (Schritt 3.2.6. [Hier] (http://w3c.github.io/webrtc-pc/#set-description)) . Von Webseiten wird erwartet, dass sie den Signalisierungskanal implementieren, indem sie Angebote und Antworten vor ihren jeweiligen Kandidaten senden, was natürlich geschieht, vorausgesetzt, Sie senden Angebot/Antwort spätestens von 'setLocalDescription's Erfolgsrückruf und Kandidaten, wie sie aus' .onicecandidate kommen '. – jib