WebRTC API
WebRTC (Web Real-Time Communication) ist eine Technologie, die es Webanwendungen und -sites ermöglicht, Audio- und/oder Videomedien aufzunehmen und optional zu streamen, sowie beliebige Daten zwischen Browsern auszutauschen, ohne dass ein Vermittler erforderlich ist. Das Set von Standards, das WebRTC umfasst, ermöglicht es, Daten zu teilen und Telekonferenzen peer-to-peer durchzuführen, ohne dass der Nutzer Plug-ins oder andere Software von Dritten installieren muss.
WebRTC besteht aus mehreren miteinander verbundenen APIs und Protokollen, die zusammenarbeiten, um dies zu ermöglichen. Die hier bereitgestellte Dokumentation hilft Ihnen, die Grundlagen von WebRTC zu verstehen, wie man sowohl Daten- als auch Medienverbindungen einrichtet und nutzt, und mehr.
WebRTC-Konzepte und -Verwendung
WebRTC dient mehreren Zwecken; zusammen mit der Media Capture and Streams API bieten sie leistungsstarke Multimedia-Fähigkeiten für das Web, einschließlich Unterstützung für Audio- und Videokonferenzen, Dateiaustausch, Bildschirmfreigabe, Identitätsmanagement und die Schnittstelle zu alten Telefonsystemen, einschließlich der Unterstützung für das Senden von DTMF-Signalen (Tonwahl). Verbindungen zwischen den Peers können ohne besondere Treiber oder Plug-ins hergestellt werden und oft auch ohne Zwischenserver.
Verbindungen zwischen zwei Peers werden durch die Schnittstelle RTCPeerConnection dargestellt. Sobald eine Verbindung mit RTCPeerConnection hergestellt und geöffnet wurde, können Medienströme (MediaStreams) und/oder Datenkanäle (RTCDataChannels) der Verbindung hinzugefügt werden.
Medienströme können aus beliebig vielen Tracks mit Medieninformationen bestehen; Tracks, die durch Objekte auf Basis der Schnittstelle MediaStreamTrack repräsentiert werden, können eine der mehreren Medientypen enthalten, einschließlich Audio, Video und Text (wie Untertitel oder sogar Kapitelnamen). Die meisten Streams bestehen aus mindestens einem Audiotrack und wahrscheinlich auch einem Videotrack und können verwendet werden, um sowohl Live- als auch gespeicherte Medieninformationen (wie einen gestreamten Film) zu senden und zu empfangen.
Sie können die Verbindung zwischen zwei Peers auch nutzen, um beliebige binäre Daten über die Schnittstelle RTCDataChannel auszutauschen. Dies kann für Back-Channel-Informationen, Metadaten-Austausch, Spielstatuspakete, Dateiübertragungen oder sogar als primärer Kanal für den Datentransfer verwendet werden.
Interoperabilität
WebRTC wird im Allgemeinen gut von modernen Browsern unterstützt, jedoch bestehen noch einige Inkompatibilitäten. Die Bibliothek adapter.js ist ein Shim, um Apps von diesen Inkompatibilitäten abzuschirmen.
WebRTC-Referenz
Da WebRTC Schnittstellen bietet, die zusammenarbeiten, um eine Vielzahl von Aufgaben zu erfüllen, haben wir die Referenz nach Kategorien aufgeteilt. Bitte sehen Sie sich die Seitenleiste für eine alphabetische Liste an.
Verbindungsaufbau und -verwaltung
Diese Schnittstellen, Wörterbücher und Typen werden verwendet, um WebRTC-Verbindungen aufzubauen, zu öffnen und zu verwalten. Enthalten sind Schnittstellen, die Peer-Medienverbindungen, Datenkanäle und Schnittstellen darstellen, die beim Austausch von Informationen über die Fähigkeiten jedes Peers zum Einsatz kommen, um die bestmögliche Konfiguration für eine bidirektionale Medienverbindung auszuwählen.
Schnittstellen
RTCPeerConnection-
Repräsentiert eine WebRTC-Verbindung zwischen dem lokalen Computer und einem entfernten Peer. Es wird verwendet, um effizientes Streaming von Daten zwischen den beiden Peers zu verwalten.
RTCDataChannel-
Repräsentiert einen bidirektionalen Datenkanal zwischen zwei Peers einer Verbindung.
RTCDataChannelEvent-
Repräsentiert Ereignisse, die beim Anhängen eines
RTCDataChannelan einRTCPeerConnectionauftreten. Das einzige Ereignis, das mit dieser Schnittstelle gesendet wird, istdatachannel. RTCSessionDescription-
Repräsentiert die Parameter einer Sitzung. Jede
RTCSessionDescriptionbesteht aus einem Beschreibungstyptype, der beschreibt, welchen Teil des Angebots-/Antwortverhandlungsprozesses sie beschreibt, und dem SDP-Deskriptor der Sitzung. RTCStatsReport-
Bietet detaillierte Statistikinformationen für eine Verbindung oder für einen einzelnen Track auf der Verbindung; der Bericht kann durch Aufrufen von
RTCPeerConnection.getStats()erhalten werden. RTCIceCandidate-
Stellt eine Kandidatenkonfiguration für die Interactive Connectivity Establishment (ICE) dar, um eine
RTCPeerConnectionaufzubauen. RTCIceTransport-
Repräsentiert Informationen über einen ICE-Transport.
RTCPeerConnectionIceEvent-
Stellt Ereignisse dar, die im Zusammenhang mit ICE-Kandidaten mit dem Ziel auftreten, in der Regel eine
RTCPeerConnection. Nur ein Ereignis dieses Typs wird gesendet:icecandidate. RTCRtpSender-
Verwalten der Kodierung und Übertragung von Daten für einen
MediaStreamTrackauf einerRTCPeerConnection. RTCRtpReceiver-
Verwalten des Empfangs und der Dekodierung von Daten für einen
MediaStreamTrackauf einerRTCPeerConnection. RTCTrackEvent-
Die Schnittstelle, die verwendet wird, um ein
track-Ereignis darzustellen, welches anzeigt, dass einRTCRtpReceiver-Objekt zu demRTCPeerConnection-Objekt hinzugefügt wurde, was bedeutet, dass ein neuer eingehenderMediaStreamTrackerstellt und zurRTCPeerConnectionhinzugefügt wurde. RTCSctpTransport-
Bietet Informationen, die ein Stream Control Transmission Protocol (SCTP) Transport beschreiben und auch einen Zugang zu dem darunterliegenden Datagram Transport Layer Security (DTLS) Transport bieten, über den die SCTP-Pakete für alle Datenkanäle einer
RTCPeerConnectiongesendet und empfangen werden.
Ereignisse
bufferedamountlow-
Die Menge der derzeit vom Datenkanal gepufferten Daten—wie durch seine Eigenschaft
bufferedAmountangezeigt—hat abgenommen und ist bis auf die minimale gepufferte Datenmenge des Kanals oder darunter gesunken, wie durchbufferedAmountLowThresholdangegeben. close-
Der Datenkanal hat den Schließvorgang abgeschlossen und befindet sich jetzt im
closed-Zustand. Sein zugrundeliegender Datentransport ist nun vollständig geschlossen. Sie können benachrichtigt werden bevor der Schließvorgang abgeschlossen ist, indem Sie dasclosing-Ereignis überwachen. closing-
Der
RTCDataChannelhat in denclosing-Zustand gewechselt, was darauf hinweist, dass er bald geschlossen wird. Sie können das Ende des Schließvorgangs erkennen, indem Sie dasclose-Ereignis überwachen. connectionstatechange-
Der Verbindungszustand, der im
connectionStatezugänglich ist, hat sich geändert. datachannel-
Ein neuer
RTCDataChannelist verfügbar, nachdem der entfernte Peer einen neuen Datenkanal geöffnet hat. Der Typ dieses Ereignisses istRTCDataChannelEvent. error-
Ein
RTCErrorEvent, das anzeigt, dass ein Fehler auf dem Datenkanal aufgetreten ist. error-
Ein
RTCErrorEvent, das anzeigt, dass ein Fehler auf demRTCDtlsTransportaufgetreten ist. Dieser Fehler wird entwederdtls-failureoderfingerprint-failuresein. gatheringstatechange-
Der Sammelzustand des
RTCIceTransporthat sich geändert. icecandidate-
Ein
RTCPeerConnectionIceEvent, das immer dann gesendet wird, wenn das lokale Gerät einen neuen ICE-Kandidaten identifiziert hat, der dem lokalen Peer hinzugefügt werden muss, indemsetLocalDescription()aufgerufen wird. icecandidateerror-
Ein
RTCPeerConnectionIceErrorEvent, das anzeigt, dass beim Sammeln der ICE-Kandidaten ein Fehler aufgetreten ist. iceconnectionstatechange-
An eine
RTCPeerConnectiongesendet, wenn sich der ICE-Verbindungszustand—in der EigenschafticeConnectionStatezu finden—ändert. icegatheringstatechange-
An eine
RTCPeerConnectiongesendet, wenn sich der ICE-Sammelzustand—in der EigenschafticeGatheringStatezu finden—ändert. message-
Eine Nachricht wurde auf dem Datenkanal empfangen. Das Ereignis ist vom Typ
MessageEvent. negotiationneeded-
Informiert die
RTCPeerConnection, dass sie die Sitzungsverhandlung durch Aufruf voncreateOffer()gefolgt vonsetLocalDescription()durchführen muss. open-
Der zugrundeliegende Datentransport für den
RTCDataChannelwurde erfolgreich geöffnet oder wieder geöffnet. selectedcandidatepairchange-
Das aktuell ausgewählte Paar von ICE-Kandidaten hat sich für den
RTCIceTransportgeändert, auf dem das Ereignis ausgelöst wird. track-
Das
track-Ereignis vom TypRTCTrackEventwird an eineRTCPeerConnectiongesendet, wenn ein neuer Track zur Verbindung hinzugefügt wird, nachdem die Verhandlung der Medienübertragung erfolgreich war. signalingstatechange-
An die Peer-Verbindung gesendet, wenn sich ihr
signalingStategeändert hat. Dies passiert als Ergebnis eines Aufrufs von entwedersetLocalDescription()odersetRemoteDescription(). statechange-
Der Zustand des
RTCDtlsTransporthat sich geändert. statechange-
Der Zustand des
RTCIceTransporthat sich geändert. statechange-
Der Zustand des
RTCSctpTransporthat sich geändert. rtctransform-
Ein kodiertes Video- oder Audio-Frame ist bereit zur Verarbeitung mit einem Transform-Stream in einem Worker.
Typen
RTCSctpTransport.state-
Gibt den Zustand einer
RTCSctpTransport-Instanz an.
Identität und Sicherheit
Diese APIs werden verwendet, um Benutzeridentität und Sicherheit zu verwalten, um den Benutzer für eine Verbindung zu authentifizieren.
RTCIdentityProvider-
Ermöglicht es einem Benutzeragenten, eine Identitätsaussage zu generieren oder zu validieren.
RTCIdentityAssertion-
Repräsentiert die Identität des entfernten Peers der aktuellen Verbindung. Wenn noch kein Peer festgelegt und überprüft wurde, liefert diese Schnittstelle
null. Einmal festgelegt, kann es nicht geändert werden. RTCIdentityProviderRegistrar-
Registriert einen Identitätsanbieter (IdP).
RTCCertificate-
Repräsentiert ein Zertifikat, das eine
RTCPeerConnectionverwendet, um sich zu authentifizieren.
Telefonie
Diese Schnittstellen und Ereignisse beziehen sich auf die Interaktivität mit öffentlichen Telefonnetzen (PSTNs). Sie werden hauptsächlich verwendet, um Wahltonsignale—oder Pakete, die diese Töne darstellen—über das Netzwerk an den entfernten Peer zu senden.
Schnittstellen
RTCDTMFSender-
Verwalten der Kodierung und Übertragung von Dual-Tone Multi-Frequency (DTMF)-Signalisierung für eine
RTCPeerConnection. RTCDTMFToneChangeEvent-
Wird von dem
tonechange-Ereignis verwendet, um anzuzeigen, dass ein DTMF-Ton entweder begonnen hat oder beendet wurde. Dieses Ereignis wird nicht gebubbelt (außer wenn anders angegeben) und ist nicht abbrechbar (außer wenn anders angegeben).
Ereignisse
tonechange-
Entweder hat ein neuer DTMF-Ton über die Verbindung begonnen zu spielen, oder der letzte Ton im
RTCDTMFSender'stoneBufferwurde gesendet und der Puffer ist jetzt leer. Der Typ des Ereignisses istRTCDTMFToneChangeEvent.
Codierte Transforms
Diese Schnittstellen und Ereignisse werden verwendet, um eingehende und ausgehende kodierte Video- und Audio-Frames mit einem Transform-Stream zu verarbeiten, der in einem Worker läuft.
Schnittstellen
RTCRtpScriptTransform-
Eine Schnittstelle für das Einfügen von Transform-Streams, die in einem Worker laufen, in die RTC-Pipeline.
RTCRtpScriptTransformer-
Das Worker-seitige Gegenstück eines
RTCRtpScriptTransform, das Optionen vom Hauptthread zusammen mit einem lesbaren Stream und einem schreibbaren Stream übergibt, die verwendet werden können, um kodierte Frames durch einenTransformStreamzu leiten. RTCEncodedVideoFrame-
Repräsentiert ein kodiertes Videoframe, das in der RTC-Pipeline transformiert werden soll.
RTCEncodedAudioFrame-
Repräsentiert ein kodiertes Audioframe, das in der RTC-Pipeline transformiert werden soll.
Eigenschaften
RTCRtpReceiver.transform-
Eine Eigenschaft, die verwendet wird, um einen Transform-Stream in die Empfänger-Pipeline für eingehende kodierte Video- und Audio-Frames einzufügen.
RTCRtpSender.transform-
Eine Eigenschaft, die verwendet wird, um einen Transform-Stream in die Sender-Pipeline für ausgehende kodierte Video- und Audio-Frames einzufügen.
Ereignisse
rtctransform-
Eine RTC-Transformation ist bereit, im Worker ausgeführt zu werden, oder ein kodiertes Video- oder Audio-Frame ist bereit zur Verarbeitung.
Leitfäden
- Einführung in das Real-Time Transport Protocol (RTP)
-
Das Real-time Transport Protocol (RTP), definiert in RFC 3550, ist ein IETF-Standardprotokoll zur Ermöglichung von Echtzeit-Konnektivität zum Austausch von Daten, die Echtzeitpriorität erfordert. Dieser Artikel bietet einen Überblick darüber, was RTP ist und wie es im Kontext von WebRTC funktioniert.
- Einführung in WebRTC-Protokolle
-
Dieser Artikel führt in die Protokolle ein, auf denen die WebRTC-API basiert.
- WebRTC-Konnektivität
-
Ein Leitfaden dazu, wie WebRTC-Verbindungen funktionieren und wie die verschiedenen Protokolle und Schnittstellen gemeinsam genutzt werden können, um leistungsstarke Kommunikationsanwendungen zu erstellen.
- Lebenszeit einer WebRTC-Sitzung
-
WebRTC erlaubt es Ihnen, Peer-to-Peer-Kommunikation mit beliebigen Daten, Audio oder Video—oder jeder Kombination davon—in eine Browseranwendung einzubauen. In diesem Artikel schauen wir uns die Lebenszeit einer WebRTC-Sitzung an, vom Aufbau der Verbindung bis zum Schließen der Verbindung, wenn sie nicht mehr benötigt wird.
- Verbindungsherstellung: Das perfekte Verhandlungsmuster
-
Perfekte Verhandlung ist ein Designmuster, das für Ihren Signalisierungsprozess empfohlen wird, das Transparenz bei der Verhandlung bietet, während es beiden Seiten erlaubt, entweder das Angebot oder die Antwort zu sein, ohne wesentlichen Programmieraufwand, um die beiden zu unterscheiden.
- Signalisierung und bidirektionale Video-Telefonie
-
Ein Tutorial und Beispiel, das ein auf WebSockets basierendes Chatsystem, das für ein vorheriges Beispiel erstellt wurde, erweitert und Unterstützung für das Eröffnen von Videoanrufen unter den Teilnehmern hinzufügt. Die WebSocket-Verbindung des Chatservers wird für die WebRTC-Signalisierung verwendet.
- Codecs, die von WebRTC verwendet werden
-
Ein Leitfaden zu den Codecs, die Browser unterstützen müssen, sowie die optionalen, die von verschiedenen populären Browsern unterstützt werden. Beinhaltet ist ein Leitfaden, der Ihnen hilft, die besten Codecs für Ihre Bedürfnisse auszuwählen.
- Verwendung von WebRTC-Datenkanälen
-
Dieser Leitfaden behandelt, wie Sie eine Peer-Verbindung und einen zugehörigen
RTCDataChannelverwenden können, um beliebige Daten zwischen zwei Peers auszutauschen. - Verwendung von DTMF mit WebRTC
-
WebRTCs Unterstützung für die Interaktion mit Gateways, die mit älteren Telefonsystemen verbunden sind, umfasst die Unterstützung für das Senden von DTMF-Tönen unter Verwendung der Schnittstelle
RTCDTMFSender. Dieser Leitfaden zeigt, wie dies funktioniert. - Verwendung von WebRTC-kodierten Transforms
-
Dieser Leitfaden zeigt, wie eine Webanwendung eingehende und ausgehende WebRTC-kodierte Video- und Audio-Frames modifizieren kann, indem ein
TransformStreamverwendet wird, der in einen Worker läuft.
Tutorials
- Verbesserung der Kompatibilität mit WebRTC adapter.js
-
Die WebRTC-Organisation bietet auf GitHub den WebRTC-Adapter an, um Kompatibilitätsprobleme in den verschiedenen WebRTC-Implementierungen von Browsern zu umgehen. Der Adapter ist ein JavaScript-Shim, der es Ihrem Code ermöglicht, nach der Spezifikation geschrieben zu werden, sodass er in allen mit WebRTC kompatiblen Browsern "einfach funktioniert".
- Ein einfaches RTCDataChannel-Beispiel
-
Die Schnittstelle
RTCDataChannelist eine Funktion, die es ermöglicht, einen Kanal zwischen zwei Peers zu öffnen, über den Sie beliebige Daten senden und empfangen können. Die API ist absichtlich ähnlich der WebSocket-API, sodass dasselbe Programmiermodell für beide verwendet werden kann. - Erstellen eines Internet-verbundenen Telefons mit Peer.js
-
Dieses Tutorial ist ein schrittweiser Leitfaden zum Bau eines Telefons mit Peer.js
Spezifikationen
| Spezifikation |
|---|
| WebRTC: Real-Time Communication in Browsers> |
| Media Capture and Streams> |
| Media Capture from DOM Elements> |
WebRTC-Eigene Protokolle
Verwandte unterstützende Protokolle
- Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocol
- Session Traversal Utilities for NAT (STUN)
- URI Scheme for the Session Traversal Utilities for NAT (STUN) Protocol
- Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers
- An Offer/Answer Model with Session Description Protocol (SDP)
- Session Traversal Utilities for NAT (STUN) Extension for Third Party Authorization
Siehe auch
MediaDevicesMediaStreamEventMediaStreamTrackMessageEventMediaStream- Media Capture and Streams API
- Firefox multistream and renegotiation for Jitsi Videobridge
- Peering Through the WebRTC Fog with SocketPeer
- Inside the Party Bus: Building a Web App with Multiple Live Video Streams + Interactive Graphics
- Web-Medientechnologien