Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 RTCDataChannel an ein RTCPeerConnection auftreten. Das einzige Ereignis, das mit dieser Schnittstelle gesendet wird, ist datachannel.

RTCSessionDescription

Repräsentiert die Parameter einer Sitzung. Jede RTCSessionDescription besteht aus einem Beschreibungstyp type, 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 RTCPeerConnection aufzubauen.

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 MediaStreamTrack auf einer RTCPeerConnection.

RTCRtpReceiver

Verwalten des Empfangs und der Dekodierung von Daten für einen MediaStreamTrack auf einer RTCPeerConnection.

RTCTrackEvent

Die Schnittstelle, die verwendet wird, um ein track-Ereignis darzustellen, welches anzeigt, dass ein RTCRtpReceiver-Objekt zu dem RTCPeerConnection-Objekt hinzugefügt wurde, was bedeutet, dass ein neuer eingehender MediaStreamTrack erstellt und zur RTCPeerConnection hinzugefü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 RTCPeerConnection gesendet und empfangen werden.

Ereignisse

bufferedamountlow

Die Menge der derzeit vom Datenkanal gepufferten Daten—wie durch seine Eigenschaft bufferedAmount angezeigt—hat abgenommen und ist bis auf die minimale gepufferte Datenmenge des Kanals oder darunter gesunken, wie durch bufferedAmountLowThreshold angegeben.

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 das closing-Ereignis überwachen.

closing

Der RTCDataChannel hat in den closing-Zustand gewechselt, was darauf hinweist, dass er bald geschlossen wird. Sie können das Ende des Schließvorgangs erkennen, indem Sie das close-Ereignis überwachen.

connectionstatechange

Der Verbindungszustand, der im connectionState zugänglich ist, hat sich geändert.

datachannel

Ein neuer RTCDataChannel ist verfügbar, nachdem der entfernte Peer einen neuen Datenkanal geöffnet hat. Der Typ dieses Ereignisses ist RTCDataChannelEvent.

error

Ein RTCErrorEvent, das anzeigt, dass ein Fehler auf dem Datenkanal aufgetreten ist.

error

Ein RTCErrorEvent, das anzeigt, dass ein Fehler auf dem RTCDtlsTransport aufgetreten ist. Dieser Fehler wird entweder dtls-failure oder fingerprint-failure sein.

gatheringstatechange

Der Sammelzustand des RTCIceTransport hat 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, indem setLocalDescription() aufgerufen wird.

icecandidateerror

Ein RTCPeerConnectionIceErrorEvent, das anzeigt, dass beim Sammeln der ICE-Kandidaten ein Fehler aufgetreten ist.

iceconnectionstatechange

An eine RTCPeerConnection gesendet, wenn sich der ICE-Verbindungszustand—in der Eigenschaft iceConnectionState zu finden—ändert.

icegatheringstatechange

An eine RTCPeerConnection gesendet, wenn sich der ICE-Sammelzustand—in der Eigenschaft iceGatheringState zu 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 von createOffer() gefolgt von setLocalDescription() durchführen muss.

open

Der zugrundeliegende Datentransport für den RTCDataChannel wurde erfolgreich geöffnet oder wieder geöffnet.

selectedcandidatepairchange

Das aktuell ausgewählte Paar von ICE-Kandidaten hat sich für den RTCIceTransport geändert, auf dem das Ereignis ausgelöst wird.

track

Das track-Ereignis vom Typ RTCTrackEvent wird an eine RTCPeerConnection gesendet, 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 signalingState geändert hat. Dies passiert als Ergebnis eines Aufrufs von entweder setLocalDescription() oder setRemoteDescription().

statechange

Der Zustand des RTCDtlsTransport hat sich geändert.

statechange

Der Zustand des RTCIceTransport hat sich geändert.

statechange

Der Zustand des RTCSctpTransport hat 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 RTCPeerConnection verwendet, 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's toneBuffer wurde gesendet und der Puffer ist jetzt leer. Der Typ des Ereignisses ist RTCDTMFToneChangeEvent.

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 einen TransformStream zu 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 RTCDataChannel verwenden 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 TransformStream verwendet 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 RTCDataChannel ist 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

Siehe auch