Heim >Web-Frontend >js-Tutorial >Janus WebRTC-Server und SFU: eine Echtzeit-Videoanruf-App
In diesem Artikel erstellen wir eine Videoanruf-App mit Janus WebRTC-Server und SFU
Wir werden auch mehr über Metered.ca SFU erfahren und warum es eine bessere Option als Janus Server ist
Janus ist ein Open-Source-WebRTC-SFU-Server für allgemeine Zwecke. Es handelt sich um ein modulares Gateway, das Echtzeit-Kommunikationsanwendungen durch die Handhabung der komplexen WebRTC-Protokolle ermöglicht und einen stabilen Server für den Medienaustausch bereitstellt
Modulare Architektur: Janus verfügt über ein Plugin-basiertes System, bei dem jedes Plugin über bestimmte Funktionen verfügt. Diese Modularität ermöglicht eine individuelle Anpassung und Erweiterung
Protokollverwaltung: Janus verwaltet die Signalisierung und Aushandlung, die für den Aufbau von WebRTC-Verbindungen erforderlich sind.
Interoperabilität: Janus unterstützt Mediencodecs und ist mit verschiedenen Clients und Browsern kompatibel, sodass Janus eine umfassende Kompatibilität aufweist
Skalierbarkeit: Janus wurde für die effiziente Handhabung mehrerer Verbindungen entwickelt und ist innerhalb einer bestimmten geografischen Zone skalierbar. (das heißt, es funktioniert einwandfrei, wenn sich alle Benutzer, die Janus verwenden, in einer kleinen geografischen Zone befinden)
Eine SFU oder eine Selective Forwarding Unit ist eine Medienserverarchitektur, die in WebRTC-Apps verwendet wird, um Medienströme effizient zwischen verschiedenen Medienteilnehmern weiterzuleiten
Die SFU empfängt eingehende Videostreams von jedem Teilnehmer und leitet die Streams dann je nach Wunsch selektiv an andere Teilnehmer weiter.
Das heißt, jeder Teilnehmer erhält die Streams, die der Teilnehmer anfordert, während alle Teilnehmer ihre Streams an die SFU übertragen
Skalierbarkeit: SFU kann eine große Anzahl von Verbindungen verarbeiten, da die SFU keine rechenintensiven Aufgaben wie Kodierung und Dekodierung übernimmt, sondern die Streams lediglich an die Benutzer weiterleitet
Geringe Latenz: Die SFU leitet die Streams ohne Verarbeitung weiter, was zu einer geringen Latenz führt. Wenn sich Ihre Benutzer jedoch auf der ganzen Welt befinden, benötigen Sie einen global verteilten SFU-Dienst wie metered.ca cloud sou
Bandbreitenoptimierung
Flexibilität und Kontrolle: Teilnehmer haben eine größere Flexibilität darüber, was sie empfangen möchten. Wenn sie beispielsweise nur Audio- oder Videostreams ausgewählter Teilnehmer empfangen möchten, haben sie die Möglichkeit dazu Mach das
Kosteneffizienz: Da SFU im Vergleich zu MCU weniger Verarbeitung erfordert, kann eine kleinere Instanz in der Cloud für Sie arbeiten
Erhaltung der Medienqualität: SFU bewahrt die Medienqualität, da sie keine Verarbeitung der Medienströme durchführt, sondern die Streams lediglich an die gewünschten Teilnehmer weiterleitet.
Einfachere Implementierung erweiterter Funktionen
Verbesserte Zuverlässigkeit: Da keine Medienverarbeitung auf dem Server erfolgt, gibt es weniger Fehlerquellen. SFU kann aus Redundanzgründen auch geclustert werden, um sicherzustellen, dass die Dienste auch dann aktiv bleiben, wenn bei einem Server ein Problem auftritt.
Die Integration von Janus SFU in Ihre App umfasst diese Schritte. Hier finden Sie eine Schritt-für-Schritt-Anleitung zur Implementierung von Janus in Ihre Anwendung.
Systemvorbereitung
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
Sie können diese Abhängigkeiten problemlos auf Ubuntu oder Debian installieren
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
Janus herunterladen und erstellen
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
git clone https://github.com/meetecho/janus-gateway.git
cd janus-gateway
sh autogen.sh
Janus konfigurieren
Bearbeiten Sie die Konfigurationsdateien
Aktivieren Sie die benötigten Plugins
SSL-Zertifikat einrichten
SSL-Zertifikat generieren
Konfiguration aktualisieren
Starten Sie den Janus-Server
./configure --prefix=/opt/janus
Funktion überprüfen
Richten Sie die Entwicklungsumgebung ein
Wählen Sie ein Frontend-Framework
WebRTC-Bibliotheken einbeziehen
Signalisierungsserver einrichten
Erstellen Sie einen Videoraum oder treten Sie ihm bei
Verwalten Sie lokale Medienströme
make sudo make install sudo make configs
Hängen Sie den lokalen Stream an das Videoelement im HTML an, um den Stream für den Benutzer abzuspielen
5. Auf Janus veröffentlichen
Verwenden Sie die RTCPeerConnection, um ein SDP-Angebot zu erstellen
Senden Sie das Angebot über die API an Janus
Erhalten Sie die SDP-Antwort vom Janus und legen Sie sie als Remote-Beschreibung fest
6. Abonnieren Sie Remote-Streams
Verarbeiten Sie die Beitritts- und Ereignisnachrichten, um Benachrichtigungen von anderen Besprechungsteilnehmern abzuhören
Erstellen Sie die Peer-Verbindungen für Abonnenten, d. h. für jeden Remote-Teilnehmer müssen Sie eine neue RTCPeerConnection erstellen
Verarbeiten Sie Remote-Streams, rufen Sie die Remote-Streams ab und hängen Sie sie an HTML-Videoelemente an, um sie im Webbrowser des Benutzers als Video abzuspielen
Ereignis-Listener und -Handler implementieren
Metered Global Cloud SFU ist eine cloudbasierte Selective Forwarding Unit von Metered.ca
Mit Metered SFU können Entwickler jede Art von Anwendung erstellen, einschließlich Video-, Audio- und Datenübertragung
Die Metered SFU läuft über die native WebRTC-API und HTTP, ohne dass proprietäre SDKs erforderlich sind.
Benutzer werden basierend auf ihrem geografischen Standort auch automatisch zur nächstgelegenen SFU weitergeleitet
Mehrere SFUs sind global über Hochgeschwindigkeitsverbindungen miteinander verbunden, um eine möglichst geringe Latenz zu gewährleisten
Globale Verbreitung:
Plattformunabhängigkeit
Flexibles Publish-Subscribe-Modell:
Skalierbarkeit
Kosteneffizienz:
Verbindung herstellen
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
b. Senden Sie ein lokales SDP-Angebot
c. Empfangen Sie SFU-Remote-SDP
d. Verbindung hergestellt
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
Einen Track veröffentlichen
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
b. SDP-Angebot erstellen und senden
Senden Sie das aktualisierte SDP-Angebot an die SFU
Empfangen Sie die SFU-Antwort und legen Sie sie für den SDP fest
Abonnieren eines Titels
Fordern Sie das Streckenabonnement bei der SFU an
Skalierbarkeit
Medienverteilung
Groß angelegtes Streaming
Plattformunabhängigkeit
Flexibles Publish-Subscribe-Modell
Kosteneffizienz
Globales SFU-Netzwerk:
Bereitstellung und Wartung
Gemessene SFU:
Janus
Skalierbarkeit und Leistung
Gemessene SFU
Janus
Kostenstruktur
Gemessene SFU
Janus
Flexibilität und Funktionen
Gemessene SFU
Janus
Einfache Integration
Gemessene SFU
Gemessene TURN-Server
API: TURN-Serververwaltung mit leistungsstarker API. Sie können beispielsweise Anmeldeinformationen über die API hinzufügen/entfernen, Pro Benutzer/Anmeldeinformationen und Benutzermetriken über die API abrufen, Anmeldeinformationen über die API aktivieren/deaktivieren und Nutzungsdaten nach Datum über die API abrufen.
Globales geografisches Standort-Targeting: Leitet den Datenverkehr automatisch an die nächstgelegenen Server weiter, um möglichst geringe Latenz und höchste Leistungsqualität zu gewährleisten. Weniger als 50 ms Latenz überall auf der Welt
Server in allen Regionen der Welt: Toronto, Miami, San Francisco, Amsterdam, London, Frankfurt, Bangalore, Singapur, Sydney, Seoul, Dallas, New York
Geringe Latenz: weniger als 50 ms Latenz, überall auf der Welt.
Kostengünstig: Pay-as-you-go-Preisgestaltung mit verfügbaren Bandbreiten- und Mengenrabatten.
Einfache Verwaltung: Erhalten Sie Nutzungsprotokolle, E-Mails, wenn Konten Schwellenwerte erreichen, Abrechnungsunterlagen sowie E-Mail- und Telefonsupport.
Standardkonform: Entspricht RFCs 5389, 5769, 5780, 5766, 6062, 6156, 5245, 5768, 6336, 6544, 5928 über UDP, TCP, TLS und DTLS.
Mehrmandantenfähigkeit: Erstellen Sie mehrere Anmeldeinformationen und trennen Sie die Nutzung nach Kunden oder verschiedenen Apps. Erhalten Sie Nutzungsprotokolle, Abrechnungsaufzeichnungen und Schwellenwertwarnungen.
Unternehmenszuverlässigkeit: 99,999 % Betriebszeit mit SLA.
Enterprise Scale: Ohne Begrenzung des gleichzeitigen Datenverkehrs oder des Gesamtdatenverkehrs. Gemessene TURN-Server bieten Unternehmensskalierbarkeit
5 GB/Monat kostenlos: Mit dem kostenlosen Plan erhalten Sie jeden Monat 5 GB kostenlose TURN-Servernutzung
Läuft auf Port 80 und 443
Unterstützt TURNS SSL, um Verbindungen durch Deep-Packet-Inspection-Firewalls zu ermöglichen.
Unterstützt sowohl TCP als auch UDP
Kostenloser, unbegrenzter STUN
Das obige ist der detaillierte Inhalt vonJanus WebRTC-Server und SFU: eine Echtzeit-Videoanruf-App. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!