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 Websites ermöglicht, Audio- und/oder Videomedien zu erfassen und optional zu streamen sowie beliebige Daten ohne einen Vermittler zwischen Browsern auszutauschen. Die Gesamtheit der Standards, aus denen WebRTC besteht, ermöglicht es, Daten auszutauschen und Telefonkonferenzen per Peer-to-Peer durchzuführen, ohne dass Benutzer Plug-ins oder andere Drittanbietersoftware installieren müssen.

WebRTC besteht aus mehreren miteinander verbundenen APIs und Protokollen, die zusammenarbeiten, um dies zu ermöglichen. Die hier bereitgestellte Dokumentation hilft Ihnen dabei, die Grundlagen von WebRTC zu verstehen, Daten- und Medienverbindungen einzurichten und zu verwenden und mehr.

WebRTC-Konzepte und Verwendung

WebRTC dient mehreren Zwecken; zusammen mit der Media Capture and Streams API stellt es dem Web leistungsfähige Multimediafunktionen bereit, einschließlich Unterstützung für Audio- und Videokonferenzen, Dateiaustausch, Bildschirmfreigabe, Identitätsverwaltung sowie die Anbindung an ältere Telefonsysteme, einschließlich Unterstützung für das Senden von DTMF-Signalen (Tonwahl). Verbindungen zwischen Peers können ohne spezielle Treiber oder Plug-ins hergestellt werden und oft auch ohne zwischengeschaltete Server.

Verbindungen zwischen zwei Peers werden durch die Schnittstelle RTCPeerConnection dargestellt. Sobald eine Verbindung mit RTCPeerConnection hergestellt und geöffnet wurde, können Medienstreams (MediaStreams) und/oder Datenkanäle (RTCDataChannels) zur Verbindung hinzugefügt werden.

Medienstreams können aus einer beliebigen Anzahl von Spuren mit Medieninformationen bestehen; Spuren, die durch Objekte auf Grundlage der Schnittstelle MediaStreamTrack dargestellt werden, können einen von mehreren Medientypen enthalten, darunter Audio, Video und Text (etwa Untertitel oder sogar Kapitelnamen). Die meisten Streams bestehen aus mindestens einer Audiospur und wahrscheinlich auch einer Videospur und können zum Senden und Empfangen sowohl von Live-Medien als auch gespeicherten Medieninformationen (etwa eines gestreamten Films) verwendet werden.

Sie können die Verbindung zwischen zwei Peers auch verwenden, um über die Schnittstelle RTCDataChannel beliebige Binärdaten auszutauschen. Dies kann für Rückkanalinformationen, den Austausch von Metadaten, Spielstatuspakete, Dateiübertragungen oder sogar als primärer Kanal für die Datenübertragung verwendet werden.

Interoperabilität

WebRTC wird im Allgemeinen von modernen Browsern gut unterstützt, es bestehen jedoch noch einige Inkompatibilitäten. Die Bibliothek adapter.js ist ein Shim, der Anwendungen von diesen Inkompatibilitäten abschirmt.

WebRTC-Referenz

Da WebRTC Schnittstellen bereitstellt, die zusammenarbeiten, um eine Vielzahl von Aufgaben zu erledigen, haben wir die Referenz nach Kategorien unterteilt. Eine alphabetische Liste finden Sie in der Seitenleiste.

Einrichtung und Verwaltung von Verbindungen

Diese Schnittstellen, Dictionaries und Typen werden verwendet, um WebRTC-Verbindungen einzurichten, zu öffnen und zu verwalten. Enthalten sind Schnittstellen, die Peer-Medienverbindungen und Datenkanäle darstellen, sowie Schnittstellen, die beim Austausch von Informationen über die Fähigkeiten jedes Peers verwendet werden, um die bestmögliche Konfiguration für eine bidirektionale Medienverbindung auszuwählen.

Schnittstellen

RTCPeerConnection

Stellt eine WebRTC-Verbindung zwischen dem lokalen Computer und einem Remote-Peer dar. Sie wird zur effizienten Übertragung von Daten zwischen den beiden Peers verwendet.

RTCDataChannel

Stellt einen bidirektionalen Datenkanal zwischen zwei Peers einer Verbindung dar.

RTCDataChannelEvent

Stellt Ereignisse dar, die beim Anfügen eines RTCDataChannel an eine RTCPeerConnection auftreten. Das einzige mit dieser Schnittstelle gesendete Ereignis ist datachannel.

RTCSessionDescription

Stellt die Parameter einer Sitzung dar. Jede RTCSessionDescription besteht aus einem Beschreibungstyp type, der angibt, welchen Teil des Offer/Answer-Aushandlungsprozesses sie beschreibt, sowie aus dem SDP-Deskriptor der Sitzung.

RTCStatsReport

Stellt Informationen mit Statistiken für eine Verbindung oder für eine einzelne Spur der Verbindung bereit; der Bericht kann durch Aufrufen von RTCPeerConnection.getStats() abgerufen werden.

RTCIceCandidate

Stellt eine mögliche Interactive-Connectivity-Establishment-Konfiguration (ICE) zum Herstellen einer RTCPeerConnection dar.

RTCIceTransport

Stellt Informationen über einen ICE-Transport dar.

RTCPeerConnectionIceEvent

Stellt Ereignisse dar, die sich auf ICE-Kandidaten mit dem Ziel, üblicherweise einer RTCPeerConnection, beziehen. Es gibt nur ein Ereignis dieses Typs: icecandidate.

RTCRtpSender

Verwaltet die Kodierung und Übertragung von Daten für eine MediaStreamTrack auf einer RTCPeerConnection.

RTCRtpReceiver

Verwaltet den Empfang und die Dekodierung von Daten für eine MediaStreamTrack auf einer RTCPeerConnection.

RTCTrackEvent

Die Schnittstelle zur Darstellung eines track-Ereignisses, das angibt, dass ein RTCRtpReceiver-Objekt zum RTCPeerConnection-Objekt hinzugefügt wurde. Dies zeigt an, dass eine neue eingehende MediaStreamTrack erstellt und zur RTCPeerConnection hinzugefügt wurde.

RTCSctpTransport

Stellt Informationen bereit, die einen Stream Control Transmission Protocol- (SCTP) Transport beschreiben, und bietet außerdem eine Möglichkeit, auf den zugrunde liegenden Datagram Transport Layer Security- (DTLS) Transport zuzugreifen, über den SCTP-Pakete für alle Datenkanäle einer RTCPeerConnection gesendet und empfangen werden.

Ereignisse

bufferedamountlow

Die derzeit vom Datenkanal gepufferte Datenmenge – wie durch seine Eigenschaft bufferedAmount angegeben – ist auf die Mindestgröße gepufferter Daten des Kanals oder darunter gesunken, wie durch bufferedAmountLowThreshold festgelegt.

close

Der Datenkanal hat den Schließvorgang abgeschlossen und befindet sich nun im Zustand closed. Sein zugrunde liegender Datentransport ist zu diesem Zeitpunkt vollständig geschlossen. Sie können vor Abschluss des Schließvorgangs benachrichtigt werden, indem Sie stattdessen auf das Ereignis closing warten.

closing

Der RTCDataChannel ist in den Zustand closing übergegangen, was darauf hinweist, dass er bald geschlossen wird. Sie können den Abschluss des Schließvorgangs erkennen, indem Sie auf das Ereignis close warten.

connectionstatechange

Der Zustand der Verbindung, auf den über connectionState zugegriffen werden kann, hat sich geändert.

datachannel

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

error

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

error

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

gatheringstatechange

Der Erfassungszustand des RTCIceTransport hat sich geändert.

icecandidate

Ein RTCPeerConnectionIceEvent, das gesendet wird, wenn das lokale Gerät einen neuen ICE-Kandidaten identifiziert hat, der durch Aufrufen von setLocalDescription() zum lokalen Peer hinzugefügt werden muss.

icecandidateerror

Ein RTCPeerConnectionIceErrorEvent, das angibt, dass beim Erfassen von ICE-Kandidaten ein Fehler aufgetreten ist.

iceconnectionstatechange

Wird an eine RTCPeerConnection gesendet, wenn sich der Zustand ihrer ICE-Verbindung – zu finden in der Eigenschaft iceConnectionState – ändert.

icegatheringstatechange

Wird an eine RTCPeerConnection gesendet, wenn sich ihr ICE-Erfassungszustand – zu finden in der Eigenschaft iceGatheringState – ändert.

message

Eine Nachricht wurde auf dem Datenkanal empfangen. Das Ereignis ist vom Typ MessageEvent.

negotiationneeded

Informiert die RTCPeerConnection, dass sie durch Aufrufen von createOffer(), gefolgt von setLocalDescription(), eine Sitzungsaushandlung durchführen muss.

open

Der zugrunde liegende Datentransport für den RTCDataChannel wurde erfolgreich geöffnet oder erneut geöffnet.

selectedcandidatepairchange

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

track

Das track-Ereignis vom Typ RTCTrackEvent wird an eine RTCPeerConnection gesendet, wenn nach erfolgreicher Aushandlung des Medienstreamings eine neue Spur zur Verbindung hinzugefügt wird.

signalingstatechange

Wird an die Peer-Verbindung gesendet, wenn sich ihr signalingState geändert hat. Dies geschieht infolge 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 kodierter Video- oder Audioframe ist bereit zur Verarbeitung mithilfe eines Transform Streams 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 Benutzer für eine Verbindung zu authentifizieren.

RTCIdentityProvider

Ermöglicht einem User Agent, die Erstellung oder Validierung einer Identitätsbehauptung anzufordern.

RTCIdentityAssertion

Stellt die Identität des Remote-Peers der aktuellen Verbindung dar. Wenn noch kein Peer festgelegt und verifiziert wurde, gibt diese Schnittstelle null zurück. Nach dem Festlegen kann sie nicht geändert werden.

RTCIdentityProviderRegistrar

Registriert einen Identitätsanbieter (idP).

RTCCertificate

Stellt ein Zertifikat dar, das eine RTCPeerConnection zur Authentifizierung verwendet.

Telefonie

Diese Schnittstellen und Ereignisse beziehen sich auf die Interaktion mit öffentlichen Telefonnetzen (Public Switched Telephone Networks, PSTNs). Sie werden hauptsächlich verwendet, um Tonwahlsignale – oder Pakete, die diese Töne darstellen – über das Netzwerk an den Remote-Peer zu senden.

Schnittstellen

RTCDTMFSender

Verwaltet die Kodierung und Übertragung der Dual-Tone Multi-Frequency- (DTMF) Signalisierung für eine RTCPeerConnection.

RTCDTMFToneChangeEvent

Wird vom tonechange-Ereignis verwendet, um anzugeben, dass ein DTMF-Ton entweder begonnen oder geendet hat. Dieses Ereignis propagiert nicht (außer wenn anders angegeben) und kann nicht abgebrochen werden (außer wenn anders angegeben).

Ereignisse

tonechange

Entweder wurde ein neuer DTMF-Ton über die Verbindung abgespielt oder der letzte Ton im toneBuffer des RTCDTMFSender wurde gesendet und der Puffer ist jetzt leer. Der Typ des Ereignisses ist RTCDTMFToneChangeEvent.

Kodierte Transforms

Diese Schnittstellen und Ereignisse werden verwendet, um eingehende und ausgehende kodierte Video- und Audioframes mithilfe eines in einem Worker ausgeführten Transform Streams zu verarbeiten.

Schnittstellen

RTCRtpScriptTransform

Eine Schnittstelle zum Einfügen von in einem Worker ausgeführten Transform Streams in die RTC-Pipeline.

RTCRtpScriptTransformer

Das Gegenstück zu RTCRtpScriptTransform auf der Worker-Seite, das Optionen aus dem Hauptthread zusammen mit einem lesbaren Stream und einem beschreibbaren Stream übergibt, die verwendet werden können, um kodierte Frames durch einen TransformStream zu leiten.

RTCEncodedVideoFrame

Stellt einen kodierten Videoframe dar, der in der RTC-Pipeline transformiert werden soll.

RTCEncodedAudioFrame

Stellt einen kodierten Audioframe dar, der in der RTC-Pipeline transformiert werden soll.

Eigenschaften

RTCRtpReceiver.transform

Eine Eigenschaft zum Einfügen eines Transform Streams in die Receiver-Pipeline für eingehende kodierte Video- und Audioframes.

RTCRtpSender.transform

Eine Eigenschaft zum Einfügen eines Transform Streams in die Sender-Pipeline für ausgehende kodierte Video- und Audioframes.

Ereignisse

rtctransform

Eine RTC-Transformation ist bereit zur Ausführung im Worker, oder ein kodierter Video- oder Audioframe ist bereit zur Verarbeitung.

Leitfäden

Einführung in das Real-time Transport Protocol (RTP)

Das in RFC 3550 definierte Real-time Transport Protocol (RTP) ist ein IETF-Standardprotokoll, das Echtzeitverbindungen für den Austausch von Daten ermöglicht, die Echtzeitpriorität benötigen. 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 stellt die Protokolle vor, auf denen die WebRTC API aufbaut.

WebRTC-Konnektivität

Ein Leitfaden dazu, wie WebRTC-Verbindungen funktionieren und wie die verschiedenen Protokolle und Schnittstellen zusammen verwendet werden können, um leistungsfähige Kommunikationsanwendungen zu erstellen.

Lebensdauer einer WebRTC-Sitzung

WebRTC ermöglicht Ihnen, Peer-to-Peer-Kommunikation beliebiger Daten, Audiodaten oder Videodaten – oder beliebiger Kombinationen davon – in eine Browseranwendung einzubetten. In diesem Artikel betrachten wir die Lebensdauer einer WebRTC-Sitzung, vom Herstellen der Verbindung bis zum Schließen der Verbindung, wenn sie nicht mehr benötigt wird.

Herstellen einer Verbindung: Das Perfect-Negotiation-Muster

Perfect Negotiation ist ein Entwurfsmuster, dem Ihr Signalisierungsprozess folgen sollte. Es bietet Transparenz bei der Aushandlung und ermöglicht beiden Seiten, sowohl Offerer als auch Answerer zu sein, ohne dass umfangreicher Code zur Unterscheidung der beiden erforderlich ist.

Signalisierung und bidirektionale Videoanrufe

Ein Tutorial und Beispiel, das ein für ein früheres Beispiel erstelltes WebSocket-basiertes Chatsystem erweitert, um Videoanrufe zwischen Teilnehmern zu ermöglichen. Die WebSocket-Verbindung des Chatservers wird für die WebRTC-Signalisierung verwendet.

Von WebRTC verwendete Codecs

Ein Leitfaden zu den Codecs, deren Unterstützung WebRTC von Browsern verlangt, sowie zu den optionalen Codecs, die von verschiedenen beliebten Browsern unterstützt werden. Enthalten ist ein Leitfaden, der Ihnen bei der Auswahl der besten Codecs für Ihre Anforderungen hilft.

Verwenden von WebRTC-Datenkanälen

Dieser Leitfaden beschreibt, wie Sie eine Peer-Verbindung und einen zugehörigen RTCDataChannel verwenden können, um beliebige Daten zwischen zwei Peers auszutauschen.

Verwenden von DTMF mit WebRTC

Die Unterstützung von WebRTC für die Interaktion mit Gateways, die mit älteren Telefonsystemen verbunden sind, umfasst das Senden von DTMF-Tönen mithilfe der Schnittstelle RTCDTMFSender. Dieser Leitfaden zeigt, wie dies funktioniert.

Verwenden von WebRTC Encoded Transforms

Dieser Leitfaden zeigt, wie eine Webanwendung eingehende und ausgehende kodierte WebRTC-Video- und Audioframes mithilfe eines TransformStream ändern kann, der in einem Worker ausgeführt wird.

Tutorials

Verbesserung der Kompatibilität mit WebRTC adapter.js

Die WebRTC-Organisation stellt auf GitHub den WebRTC-Adapter bereit, um Kompatibilitätsprobleme in den WebRTC-Implementierungen verschiedener Browser zu umgehen. Der Adapter ist ein JavaScript-Shim, mit dem Ihr Code gemäß der Spezifikation geschrieben werden kann, sodass er in allen Browsern mit WebRTC-Unterstützung „einfach funktioniert“.

Ein einfaches RTCDataChannel-Beispiel

Die Schnittstelle RTCDataChannel ermöglicht es Ihnen, einen Kanal zwischen zwei Peers zu öffnen, über den Sie beliebige Daten senden und empfangen können. Die API ähnelt absichtlich der WebSocket API, sodass für beide dasselbe Programmiermodell verwendet werden kann.

Erstellen eines mit dem Internet verbundenen Telefons mit Peer.js

Dieses Tutorial ist eine Schritt-für-Schritt-Anleitung zum Erstellen eines Telefons mit Peer.js.

Spezifikationen

Spezifikation
WebRTC: Real-Time Communication in Browsers
Media Capture and Streams
Media Capture from DOM Elements

WebRTC-spezifische Protokolle

Zugehörige unterstützende Protokolle

Siehe auch