WebRTC: Was es ist, Architektur und Funktionsprinzip

Autor: IT Sectr Veröffentlicht: 2026-06-01 Lesezeit: 9 Min.

WebRTC ist eine offene Technologie zur direkten Echtzeit-Übertragung von Audio, Video und Daten zwischen Geräten ohne zwischengeschaltete Server. Laut WebRTC Project (2026) wird der Standard von allen modernen Browsern und mobilen Plattformen unterstützt und bietet eine Latenz von unter 500 ms. WebRTC verwendet die Protokolle ICE, STUN und TURN, um Verbindungen auch hinter NAT und Firewalls herzustellen.

Wichtige Punkte

  • WebRTC — ein offener Standard für Peer-to-Peer-Übertragung von Audio, Video und Daten in Echtzeit ohne Plugins.
  • Architektur umfasst drei Schichten: Anwendungs-APIs (getUserMedia, RTCPeerConnection), Transport (ICE, STUN, TURN) und Sicherheit (DTLS, SRTP).
  • NAT-Traversal wird durch das ICE-Framework mit STUN-Servern (öffentliche IP) und TURN-Relays (Umgehung symmetrischer NAT) gelöst.
  • Mobile SDKs — Google WebRTC für Android und iOS bieten native APIs für Sprach- und Videoanrufe.
  • Signalisierung (SDP-Austausch) ist nicht Teil von WebRTC und wird über WebSocket, SIP oder ein benutzerdefiniertes Protokoll implementiert.

Was ist WebRTC

WebRTC (Web Real-Time Communication) ist ein von Google im Jahr 2011 gestartetes Open-Source-Projekt, das von W3C (JavaScript API) und IETF (Protokolle) standardisiert wurde. Hauptziel ist die Bereitstellung von Kommunikation mit niedriger Latenz zwischen Browsern und Anwendungen ohne Installation von Plugins oder Drittanbieter-Software.

Im Gegensatz zu traditionellen Lösungen (RTMP, HLS), bei denen Video über einen Server läuft, verwendet WebRTC eine Peer-to-Peer-Architektur: Daten werden direkt zwischen den Teilnehmern übertragen. Dies bietet eine Latenz von 200-500 ms im Vergleich zu 3-10 Sekunden bei HLS — ein entscheidender Unterschied für Sprach- und Videoanrufe, Game-Streaming und Remote-Chirurgie.

Laut Google WebRTC Team (2025) wird die Technologie in Anwendungen mit insgesamt über 5 Milliarden Installationen verwendet: Google Meet, WhatsApp, Discord, Telegram, Zoom (teilweise). Mehr als 85% der Venture-Startups im Bereich Telehealth und EdTech wählen WebRTC als ihren Basis-Echtzeit-Transport.

Die mobile Entwicklung erhielt 2013 mit der Veröffentlichung von libjingle_peerconnection volle WebRTC-Unterstützung — eine native Implementierung für Android und iOS. Heute haben beide Plattformen stabile SDKs mit Unterstützung für Hardware-Kodierung von H.264 und VP8, Kamera, Mikrofon und Gerätelautsprecher.

WebRTC-Architektur und -Protokolle

Die WebRTC-Architektur besteht aus drei Schichten. Die oberste Schicht ist die JavaScript API (oder native API für mobile Plattformen), die mittlere sind die Transportprotokolle, die unterste sind Codecs und Sicherheit. Jede Schicht löst ihre eigene Aufgabe, aber alle sind für den Verbindungsaufbau erforderlich.

Wichtige WebRTC-APIs

MediaStream (getUserMedia) — erfasst Audio und Video von Mikrofon und Kamera des Geräts. RTCPeerConnection — verwaltet die P2P-Verbindung: Kodierung, Transport, Bitratenanpassung. RTCDataChannel — überträgt beliebige Daten (Text, Dateien, Binärnachrichten) über denselben Kanal.

js
// WebRTC JavaScript API (Browser-Beispiel)
const pc = new RTCPeerConnection({
    iceServers: [
        { urls: "stun:stun.l.google.com:19302" }
    ]
});

pc.onicecandidate = (event) => {
    if (event.candidate) {
        sendToPeer(JSON.stringify(event.candidate));
    }
};

const offer = await pc.createOffer();
await pc.setLocalDescription(offer);

Echtzeit-Protokolle

WebRTC verwendet SRTP (Secure Real-Time Transport Protocol) für Audio und Video — eine gesicherte Version von RTP mit AES-128-Verschlüsselung. Die Sitzungsverwaltung erfolgt über SCTP (Stream Control Transmission Protocol) über DTLS. Jeder Datenstrom wird obligatorisch verschlüsselt: WebRTC hat keinen ungesicherten Modus.

  • SRTP/SRTCP — verschlüsselte Übertragung von Medienströmen mit Schutz vor Replay-Angriffen
  • DTLS-SRTP — Verschlüsselungsschlüssel-Etablierung über Datagram TLS über UDP
  • SCTP — zuverlässige oder teilweise zuverlässige Datenzustellung für DataChannel
  • ICE (Interactive Connectivity Establishment) — Framework zum Finden eines Netzwerkpfads zwischen Peers
  • Trickle ICE — inkrementelle Version von ICE, bei der Kandidaten bei Entdeckung gesendet werden, was den Verbindungsaufbau beschleunigt

NAT-Traversal: ICE, STUN und TURN

Die größte technische Herausforderung von WebRTC ist die Herstellung einer P2P-Verbindung zwischen Geräten, die sich hinter NAT (Network Address Translation) befinden. Ohne spezielle Mechanismen können Geräte einander nicht direkt erreichen, da ihre lokalen IP-Adressen aus dem Internet nicht sichtbar sind.

STUN — Ermittlung der öffentlichen Adresse

STUN (Session Traversal Utilities for NAT) — ein Server, der die Frage „‪Wie lauten meine öffentliche IP und mein Port?‬“ beantwortet. Der Client sendet eine Anfrage an den STUN-Server, der Server sieht seine öffentliche Adresse und gibt sie an den Client zurück. Google betreibt öffentlich den STUN-Server stun:stun.l.google.com:19302.

swift
// WebRTC auf iOS — ICE-Server-Konfiguration
import WebRTC

let config = RTCConfiguration()
config.iceServers = [
    RTCIceServer(
        urlStrings: ["stun:stun.l.google.com:19302"]
    ),
    RTCIceServer(
        urlStrings: ["turn:turn.example.com:3478"],
        username: "user",
        credential: "password"
    )
]

let pc = RTCPeerConnection(configuration: config)

TURN — Relay-Verbindung

TURN (Traversal Using Relays around NAT) — ein Relay-Server für Fälle, in denen STUN nicht hilft (symmetrisches NAT oder Unternehmensfirewalls). In diesem Modus passieren alle Daten den TURN-Server — dies reduziert die Geschwindigkeit und erhöht die Latenz, garantiert aber Verbindung in 99% der Fälle.

TURN ist die teuerste Komponente der WebRTC-Infrastruktur, da der Server den gesamten Medienverkehr durch sich selbst leitet. Laut Coturn Project (2025) verarbeitet ein typischer TURN-Server mit 8 vCPU und 16 GB RAM etwa 200 gleichzeitige Audioanrufe oder 40 HD-Videoanrufe.

ICE-Prozess

ICE sammelt alle möglichen Kandidaten (lokale IP, öffentliche IP über STUN, Relay über TURN) und versucht, eine Verbindung in der Reihenfolge der Priorität herzustellen. Sobald mindestens ein Kandidatenpaar (lokal-remote) die Konnektivitätsprüfung besteht, gilt die Verbindung als hergestellt.

  • Host candidates — lokale IP-Adresse des Geräts im Subnetz (schnellste, funktioniert aber nicht hinter NAT)
  • Server Reflexive candidates — öffentliche IP, die über einen STUN-Server ermittelt wurde
  • Relay candidates — TURN-Server-Adresse, über die das Relay erfolgt (langsamste, zuverlässigste)

WebRTC in mobilen Apps

Für die mobile Entwicklung pflegt Google libWebRTC — eine native Bibliothek für Android (AAR) und iOS (XCFramework). Die Bibliothek enthält den gesamten Protokollstapel, Codecs (VP8, VP9, H.264, AV1) und Hardwarebeschleunigung für Kodierung/Dekodierung.

WebRTC auf Android

Das Android SDK bietet die Klassen PeerConnectionFactory, PeerConnection, MediaStream. Die App erstellt eine Factory, konfiguriert Video-Codecs, erfasst den Kamerastream über VideoCapturer und stellt die Peer-Verbindung über SDP Offer/Answer her.

java
// Android WebRTC — Initialisierung
import org.webrtc.*;

PeerConnectionFactory.Initialize(PeerConnectionFactory.InitializationOptions
    .builder(context)
    .setFieldTrials("WebRTC-H264-HighProfile/Enabled/")
    .createInitializationOptions());

PeerConnectionFactory factory =
    PeerConnectionFactory.builder()
        .setVideoDecoderFactory(new DefaultVideoDecoderFactory(eglBase))
        .setVideoEncoderFactory(new DefaultVideoEncoderFactory(eglBase, true, true))
        .createPeerConnectionFactory();

WebRTC auf iOS

Das iOS SDK verwendet eine Objective-C-API mit Wrappern RTCPeerConnectionFactory, RTCCameraVideoCapturer, RTCVideoTrack. Hardware-H.264-Kodierung ist über VideoToolbox verfügbar. Zur Videoanzeige wird RTCMTLVideoView (Metal) oder RTCVideoRenderer verwendet.

swift
// iOS WebRTC — Videoaufnahme von Kamera
let factory = RTCPeerConnectionFactory()
let capturer = RTCCameraVideoCapturer(delegate: factory)

// Kameraauswahl (vorne/hinten)
guard let device = RTCCameraVideoCapturer
    .captureDevices().first(where: {
        $0.position == .front
    }) else { return }

// Aufnahme mit maximaler FPS starten
capturer.startCapture(
    with: device,
    format: RTCCameraVideoCapturer
        .supportedFormats(for: device).last!,
    fps: 30
)

Für Produktions-Videoanrufe verwenden mobile Apps normalerweise SDK-Wrapper über libWebRTC: Twilio Video, Agora, Daily.co. Diese SDKs vereinfachen die Signalisierung, Raumverwaltung und bieten vorgefertigte UI-Komponenten zur Anzeige des Teilnehmer-Videorasters.

Signalisierung und Verbindungsaufbau

WebRTC spezifiziert kein Signalisierungsprotokoll — den Austausch von SDP (Session Description Protocol)-Nachrichten zwischen Peers. Der Entwickler wählt den Transport für die Signalisierung: WebSocket, MQTT, SIP, XMPP oder REST API. Die Signalisierung übermittelt Offer, Answer und ICE-Kandidaten von einem Peer zum anderen.

SDP Offer/Answer-Austausch

Der Prozess beginnt mit der Erstellung eines Offer (der Initiator beschreibt seine Medienfähigkeiten), wird über die Signalisierung an den zweiten Peer übermittelt, der mit einem Answer antwortet. Nach dem SDP-Austausch startet jeder Peer ICE und initiiert DTLS-SRTP zur Stromverschlüsselung.

kotlin
// Android — Erstellen und Senden von Offer
private fun startCall(peerConnection: PeerConnection) {
    val constraints = MediaConstraints().apply {
        mandatory["OfferToReceiveAudio"] = "true"
        mandatory["OfferToReceiveVideo"] = "true"
    }

    peerConnection.createOffer(object : SdpObserver {
        override fun onCreateSuccess(sdp: SessionDescription) {
            peerConnection.setLocalDescription(this, sdp)
            // Sdp.description an Signalisierungsserver senden
            sendSdpOffer(sdp.description)
        }
    }, constraints)
}

Signalisierungsprotokolle

Für mobile Apps ist die gängigste Signalisierung über WebSocket — ein bidirektionaler Kanal über TCP, der eine dauerhafte Verbindung zum Server aufrechterhält. Der Signalisierungsserver ist oft ein separater Mikroservice (Node.js, Golang, Elixir), der Nachrichten zwischen Raumteilnehmern weiterleitet.

  • WebSocket — dauerhafte bidirektionale Verbindung, minimaler Overhead, Standardwahl für Signalisierung
  • SIP über WebSocket — Standard-VoIP-Protokoll, integriert sich in bestehende Telefonieinfrastruktur
  • MQTT — leichtes Pub/Sub-Protokoll für IoT und schwache Netzwerke, aber mit höherer Latenz
  • Matrix / XMPP — dezentrale Protokolle für datenschutzorientierte Anwendungen

Nach Abschluss von ICE und DTLS-SRTP nimmt die Signalisierung nicht mehr an der Datenübertragung teil — der gesamte Medienverkehr fließt direkt P2P (oder über ein TURN-Relay). Der Signalisierungsserver kann heruntergefahren werden, ohne aktive Anrufe zu unterbrechen. Dies ist der Hauptvorteil der dezentralen Architektur von WebRTC.

Häufig gestellte Fragen

Wie unterscheidet sich WebRTC von RTMP oder HLS?

RTMP und HLS sind serverbasierte Protokolle mit einer Latenz von 3-10 Sekunden, bei denen alle Daten über den Server laufen. WebRTC ist Peer-to-Peer mit einer Latenz von 200-500 ms. RTMP eignet sich für Streaming an große Zielgruppen, WebRTC für interaktive Anrufe und Spiele.

Ist die Verwendung eines TURN-Servers zwingend erforderlich?

Nein, TURN wird nur benötigt, wenn P2P nicht funktioniert (symmetrisches NAT, Unternehmensfirewalls). Laut Google-Statistiken benötigen etwa 15% der Verbindungen TURN. Für die Produktion wird empfohlen, einen TURN-Server als Fallback für 100%ige Zuverlässigkeit bereitzuhalten.

Welche Codecs unterstützt WebRTC in mobilen Apps?

Obligatorische Codecs: VP8 (alle Plattformen) und H.264 (mit Hardwarebeschleunigung auf iOS/Android). Optional: VP9 (bessere Komprimierung, niedrigere Bitrate) und AV1 (supereffizient, aber CPU-intensiv). Audio: Opus (primär) und G.711 (PCMU/PCMA).

Kann WebRTC nur zur Datenübertragung ohne Video verwendet werden?

Ja, über RTCDataChannel. Dies ist ein vollwertiger Kanal zur Übertragung beliebiger Daten: Text, Dateien, Binärnachrichten. DataChannel arbeitet über SCTP mit konfigurierbarer Zuverlässigkeit (teilweise zuverlässige Zustellung für Spiele, zuverlässig für Dateien).

Wie kann man Anrufaufzeichnung mit WebRTC gewährleisten?

Über die MediaRecorder-API auf dem Client oder über SFU (Selective Forwarding Unit) — einen Server, der alle Teilnehmerströme empfängt und aufzeichnen kann. Die zweite Option ist zuverlässiger, da die Aufzeichnung nicht vom Gerät des Teilnehmers abhängt und bei Trennung nicht unterbrochen wird.

Zusammenfassung

  • WebRTC — offener P2P-Echtzeitstandard mit 200-500 ms Latenz, unterstützt von allen Browsern und mobilen Plattformen.
  • Architektur basiert auf drei Schichten: Medien-APIs (getUserMedia, RTCPeerConnection), ICE-Transport (STUN/TURN) und Sicherheit (DTLS-SRTP).
  • NAT-Traversal wird durch das ICE-Framework gelöst — von direktem P2P (Host) bis Relay-TURN (Relay) zur Umgehung beliebiger Firewalls.
  • Mobile SDKs von Google bieten Hardware-Kodierung von H.264 und VP8, Kamera- und Mikrofonerfassung auf Android und iOS.
  • Signalisierung (SDP-Austausch) ist nicht Teil von WebRTC und wird über WebSocket, SIP oder jedes dem Entwickler verfügbare Protokoll implementiert.
  • Produktions-SDKs (Twilio, Agora, Daily.co) auf libWebRTC vereinfachen Raumverwaltung, Signalisierung und UI-Komponenten.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch