Cloud WebRTC Streaming bei DigitalOcean


Das berühmte Cloud-Hosting-Unternehmen DigitalOcean hat kürzlich einen eigenen Store mit vorgefertigten Images erworben, über den Sie schnell jeden Anwendungsserver bereitstellen können. Genau wie AWS nur für diejenigen, die bereits die Dienste dieses Anbieters nutzen. Lassen Sie uns sehen, wie Sie mit einem DO-Konto einen einfachen Server für 10 USD pro Monat für das Streaming von WebRTC auf der Basis von Flashphoner WebCallServer bereitstellen und wie ein solcher Server nützlich sein kann.


Bereitstellung


Wir geben das Konto auf DO ein, folgen dem Link zum Flashphoner WebCallServer- Image und klicken auf die Schaltfläche "Flashphoner Web Call Server-Droplet erstellen"



Wir wählen die Merkmale des Nordens und den Tarifplan. Standardmäßig bietet DO etwas aus dem mittleren Segment an, aber wir sind an den minimalen Kosten interessiert



Wählen Sie die Region aus, in der sich das Rechenzentrum befindet, z. B. Frankfurt



Wählen Sie eine Authentifizierungsmethode aus, z. B. ein Einmalkennwort



Wir geben die Anzahl der Server an (soweit wir an einem Server interessiert sind) und geben unserem Server einen Namen. Dieser Name wird einschließlich in / etc / hostname geschrieben



Klicken Sie auf "Droplet erstellen"



Nach der Erstellung wird der Server automatisch gestartet. Sie können eine Verbindung über SSH herstellen und das Kennwort ändern, wenn als Authentifizierungsmethode ein Einmalkennwort ausgewählt wurde. In der Konsole wird eine kurze Beschreibung des Flashphoner WebCallServers mit Dokumentationslinks angezeigt



"Dies ist ein Test. Kann ich dich sehen?"


Der Flashphoner WebCallServer startet vollständig betriebsbereit, eine 30-Tage-Testlizenz wird automatisch aktiviert. Um alle Grundfunktionen eines Webinterfaces zu testen, beschränken wir uns darauf, die Veröffentlichung und Wiedergabe des WebRTC-Streams zu überprüfen.


Öffnen Sie die Browserseite https: // droplet_ip: 8444 / admin / . Standardmäßig wird ein selbstsigniertes Zertifikat mit dem Server geliefert, sodass Sie die Sicherheitsausnahme bestätigen müssen. In Zukunft können Sie die Zertifikate durch Ihre eigenen ersetzen. Benutzername und Passwort eingeben (Standard Demo )



Wählen Sie das Two-Way-Streaming-Beispiel in der Seitenleiste aus, klicken Sie auf die Schaltfläche "Verbinden" und dann auf "Veröffentlichen". Um den Stream abzuspielen, klicken Sie auf "Abspielen".



Für eine Handvoll Dollar


Was kann ein Server für 10 US-Dollar pro Monat als Hardwareplattform für WebRTC-Streaming? Mal sehen, was der DigitalOcean-Prozessor uns bietet


lscpu 


und aus dem Gedächtnis


 free -h 


Beim Überprüfen des Servers mit Auslastungstests stellen wir fest, dass der Server möglicherweise nicht so klein ist.


Beispielsweise veröffentlichen wir eine Stream-Instanz und sehen, wie viele Abonnenten diesen Stream gleichzeitig verlieren können, wobei sie nicht mehr als 90% des Prozessors belegen:


ErlaubnisBitrate, KbpsAnzahl der VeröffentlichungenAnzahl der Abonnenten
360p1300170
480p1800170
720p3000150

Bei mehreren gleichzeitigen Veröffentlichungen bleibt die maximale Anzahl verarbeiteter Streams auf demselben Niveau: Wenn Sie 7 Streams veröffentlichen, können bis zu 10 Zuschauer jeden abonnieren.


Angenommen, wir müssen den Stream auf dem Server umcodieren, um die Auflösung zu verringern oder die FPS auszurichten. Überprüfen Sie in diesem Fall die maximale Anzahl der Veröffentlichungen:


ErlaubnisBitrate, KbpsAnzahl der Threads
360p13005
480p18003
720p30002

Ein kostenoptimierter Server mit Parametern wie 1 CPU-Kern, 2 GB RAM und 2 TB Datenverkehr pro Monat eignet sich daher nicht nur zum Testen von WebRTC-Streaming, sondern auch für den Einsatz in kleinen Projekten. Zum Beispiel können Sie:


  • Verteilen Sie den Stream der IP-Kamera über WebRTC, um die einfachste Videoüberwachung für Unternehmen zu ermöglichen.
  • Organisation eines Webinars für Mitarbeiter eines kleinen Unternehmens
  • Erhöhen Sie Ihr Internetradio (Audiostream benötigt weniger CPU-Ressourcen)

Darüber hinaus kann dieser Server als Referenzplattform für Skalierungsberechnungen betrachtet werden, die wir weiterhin durchführen werden.


"Ich verdiene mehr!"


Die Regeln sind im Allgemeinen sehr einfach: Es gibt nicht viele Kerne, ebenso wie das Gedächtnis. Abhängig von der geplanten Teilnehmerzahl lauten die Empfehlungen aus den von DO angebotenen Konfigurationssätzen wie folgt:


Anzahl der AbonnentenvCPUsRAM, GBVerkehr, TBAnwendungsbeispiel
bis zu 200485Videoüberwachungssystem
bis zu 5008166Webinare
bis zu 100016649Video-Chat
bis 2000209610Streamen von HD-Videos

Wenn Sie weiter wachsen möchten, müssen Sie ein CDN mit einer Rate von 1 Edgeserver für 2000 Abonnenten bereitstellen. Angenommen, wir müssen HD-Videos verteilen, die geplante Anzahl der Zuschauer beträgt 10.000. In diesem Fall benötigen Sie 2 Origin-Server zum Veröffentlichen und 5 Edge-Server zum Anzeigen.



Einstellungsbeispiel:


  • Herkunft 1

 cdn_enabled=true cdn_ip=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin 

  • Herkunft 2

 cdn_enabled=true cdn_ip=origin2.flashponer.com cdn_point_of_entry=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin 

  • Edge 1 - Edge 5 (hier wird nur die Serveradresse im Parameter cdn_ip )

 cdn_enabled=true cdn_ip=edge1.flashphoner.com cdn_point_of_entry=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge 

Ein CDN kann auch nützlich sein, wenn Abonnenten geografisch verteilt sind, z. B. wenn unsere potenziellen Zuschauer in Europa und Amerika leben.



Einstellungsbeispiel:


  • Herkunft EU

 cdn_enabled=true cdn_ip=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=EU 

  • Herkunft USA

 cdn_enabled=true cdn_ip=origin_us.flashponer.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=US 

  • Rand 1 EU

 cdn_enabled=true cdn_ip=edge1_eu.flashphoner.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=EU 

  • Edge 1 US

 cdn_enabled=true cdn_ip=edge1_us.flashphoner.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=US 

Je mehr Zuschauer, desto größer die Auswahl an Wiedergabegeräten und Kanälen für diese Geräte. Um die Qualität der Übertragung an verschiedene Geräte sicherzustellen, ist höchstwahrscheinlich eine Video-Transcodierung erforderlich, die speziellen CDN-Transcoder-Servern zugewiesen werden kann.



Einstellungsbeispiel:


  • Herkunft

 cdn_enabled=true cdn_ip=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=default 

  • Transcoder EU

 cdn_enabled=true cdn_ip=transcoder_eu.flashponer.com cdn_point_of_entry=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=transcoder cdn_groups=EU 

  • Rand 1 EU

 cdn_enabled=true cdn_ip=edge1_eu.flashphoner.com cdn_point_of_entry=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=EU 

Wie wir im Test herausgefunden haben, ist für die Transcodierung die Anzahl der Prozessorkerne wichtig. Aus der CPU-optimierten Konfigurationslinie ist die teuerste 32-vCPU mit 64-Gbit-RAM am besten geeignet. Gleichzeitig können in anderen Zeilen Konfigurationen mit einer großen Speicherkapazität in der Nähe der Anzahl der CPUs erheblich teurer sein. Das Speichern von Transcodern funktioniert leider nicht: Da das Video Frame für Frame codiert wird, sollte genügend Speicher für alle Bilder und Prozessoren für die Verarbeitung aller Streams vorhanden sein.


Bei der Bereitstellung eines CDN ist es hilfreich, mehrere Server mit derselben Konfiguration gleichzeitig zu erstellen. Bei geografisch verteilten CDNs muss sich jedoch derselbe Edge- und Transcoder-Servertyp in verschiedenen Rechenzentren befinden.


Fazit


Daher haben wir einen kleinen Server für das Streamen von WebRTC-Videos mit geringer Latenz auf DigitalOcean bereitgestellt und getestet. Wir haben sichergestellt, dass der Server in der Mindestkonfiguration nicht nur zum Testen, sondern auch für den Einsatz in kleinen Projekten geeignet ist. Wir haben Daten für die Skalierung in Abhängigkeit von der erwarteten Anzahl von Zuschauern erhalten. und ging auf das Thema der CDN-Bereitstellung ein, das an sich einen eigenen Artikel verdient. Bleiben Sie bei uns, um fortzufahren ...


Referenzen


Der Flashphoner WebCallServer auf dem DigitalOcean Marketplace ist ein vorgefertigtes Web Call Server-Image auf DigitalOcean.


WebRTC-Streaming mit geringer Latenz CDN ist ein auf Web Call Server basierendes Netzwerk für die Bereitstellung von Inhalten.

Source: https://habr.com/ru/post/de476546/


All Articles