wake-up-neo.net

RTMP vs RTSP / RTP: Welche für einen interaktiven Livestream wählen?

Wenn Sie versuchen, eine interaktive Livestream-Anwendung zu entwickeln, setzen Sie auf eine extrem niedrige Latenz (in Echtzeit). Zum Beispiel für eine Videokonferenz oder ein entferntes Labor.

Die beiden Protokolle, die für diese Umstände geeignet sein sollten, sind:

  • RTSP, während die Daten über RTP übertragen werden
  • RTMP

* WebRTC: Da ich einem größeren Publikum die Möglichkeit geben möchte, miteinander zu interagieren, ist WebRTC nicht geeignet. Weil es meines Wissens nicht für ein größeres Publikum gedacht ist.

Meine Fragen:

  1. Welches sollte ich für diesen Anwendungsfall wählen? RTSP/RTP oder RTMP?

  2. Welches Protokoll liefert bessere Ergebnisse in Bezug auf End-to-End-Latenz, Startzeit der Sitzung?

  3. Welche verbraucht mehr Hardware-Ressourcen?

  4. RTMP scheint eine dauerhafte TCP Verbindung zu verwenden. Aber welches Protokoll wird für die Übertragung verwendet? Es kann kein TCP sein, da dies keine Echtzeit-Latenz gewährleisten könnte?

  5. Was sind im Allgemeinen die Vor- und Nachteile für die Verwendung eines der Protokolle?

Ich fand keinen Vergleich dieser beiden Protokolle in wissenschaftlichen Arbeiten oder Büchern. Nur, dass die berühmte mobile Live-Streaming-App Periscope RTMP verwendet.

Andere Apps wie Instagram oder Facebook ermöglichen beispielsweise eine textbasierte Interaktion mit dem Streamer. Wenn Entwickler die nächste "Killer-Anwendung" auf der Basis interaktiver Live-Streams erstellen möchten: Ich denke, diese Frage ist unbedingt zu beantworten.

10
Joey

Sie machen in Ihrer Antwort viele Annahmen.

WebRTC: Da ich einem größeren Publikum die Möglichkeit geben möchte, miteinander zu interagieren, ist WebRTC nicht geeignet. Denn soweit ich weiß, ist es nicht für ein größeres Publikum gedacht.

Das stimmt einfach nicht. WebRTC weiß oder kümmert sich nicht darum, wie Sie Ihre Anwendungen serverseitig strukturieren. Es gibt eine Vielzahl von Standarddiensten für die Abwicklung von Gruppenanrufen und die Videoverteilung mit geringer Latenz über WebRTC.

Sie sollten auch wissen, dass WebRTC für die Medienströme RTP unter der Haube ist.

Es kann nicht TCP sein, da dies keine Echtzeit-Latenz gewährleisten kann.

Natürlich kann es. Es gibt einige Probleme mit TCP, aber nichts hindert Sie daran, es in einem Echtzeitszenario zu verwenden. Der Overhead mit TCP ist minimal.

UDP wird traditionell für diese Art von Szenarien verwendet, da Zuverlässigkeit nicht erforderlich ist, aber dies bedeutet nicht, dass TCP kann nicht annähernd so performant verwendet werden.

RTMP

RTMP ist ein totes Protokoll für Flash. Kein Browser unterstützt es. Andere Clients unterstützen es nur aus älteren Gründen. Sie sollten es in Zukunft nicht mehr für neue Zwecke verwenden.

Nur, dass die berühmte mobile Live-Streaming-App Periscope RTMP verwendet.

Nun, das ist kein Grund, viel zu tun.

  1. Welches Protokoll liefert bessere Ergebnisse hinsichtlich der End-to-End-Latenz und der Startzeit der Sitzung?

WebRTC

  1. Welche verbraucht mehr Hardware-Ressourcen?

Das ist nicht die richtige Frage. Ihr Overhead in fast allen anderen Teilen der Anwendung wird weitaus höher sein als der Transport-Overhead des für die Verteilung verwendeten Protokolls.

Die wirkliche Liste der Dinge, über die Sie nachdenken müssen:

  • Client-Kompatibilität. Welche Art von Kunden müssen Sie unterstützen?
  • Benötigen Sie wirklich überall eine geringe Latenzzeit? Verstehen Sie die Kompromisse, die Sie mit dieser Forderung eingehen? Sind Sie bereit, das Gefühl für Videoqualität und -zuverlässigkeit für alle Ihre Benutzer zu zerstören, wenn nur eine Handvoll von ihnen interaktiv sein sollen?
  • Was ist dein Budget? Standardlösungen für den Vertrieb sind viel billiger. Wenn Sie Ihren Stream für nicht interaktive Nutzer auf YouTube übertragen können, können Sie sich eine Menge Geld sparen. Wenn Sie die vorhandene Infrastruktur nicht nutzen können, müssen Sie bereit sein, Berge von Bargeld auszugeben.
  • Was sind Ihre tatsächlichen Latenzanforderungen? Sind Sie bereit, die Anzahl der Benutzer zu verringern, die Ihre Anwendung verwenden können, wenn diese Latenzanforderungen in Crappier-Netzwerken und auf Mobilgeräten nicht erfüllt werden können?
  • Was sind Ihre Qualitätsanforderungen?
  • Wo werden Sie Videos in verschiedene Bitraten umcodieren?
  • Benötigen Ihre Zuschauer eine adaptive Anzeige der Bitrate?
  • Müssen Sie Streams gleichzeitig auf andere Plattformen übertragen?
  • Müssen Sie das Streaming für das Ansehen auf Abruf oder für eine Zeitreise in die Vergangenheit aufzeichnen?

Möglicherweise ist mein Beitrag auch hier hilfreich: https://stackoverflow.com/a/37475943/362536

Kurz gesagt, überprüfen Sie Ihre Annahmen. Verstehe die Kompromisse. Treffen Sie Entscheidungen auf der Grundlage realer Informationen, ohne pauschale Verallgemeinerungen.

18
Brad