Achtung
Sie haben Cookies im Browser deaktiviert. Die Seite wird falsch angezeigt!

Wie man eine mobile Streaming-App für iOS erstellt

Livestreaming von Mobilgeräten aus ermöglicht es Ihnen, mit Ihrem Publikum zu connecten, unabhängig davon, wo Sie sich gerade befinden. Entsprechende Dienste sind sehr beliebt und werden in den verschiedensten Anwendungsbereichen genutzt.

In unserem vorherigen Artikel „Wie man eine mobile Streaming-App für Android erstellt“ haben wir erläutert, wie man das Streamen auf Android-Geräten einrichtet. In diesem Artikel werden wir näher darauf eingehen, wie Sie Ihre eigene Anwendung für mobiles Streaming und das Betrachten von Livestreams auf iOS erstellen und wie Sie diese in G-Core Labs Streaming-Plattform integrieren können.

Wie man eine mobile Streaming-App für iOS erstellt
Mobiles Streamen mit G-Core Labs Streaming-Plattform

Streaming-Protokolle

Streaming-Protokolle werden verwendet, um Video und Audio über öffentliche Netzwerke zu übertragen. Eines der gängigsten Streaming-Protokolle ist RTMP. Es wird von den meisten Streaming-Plattformen unterstützt. RTMP ist zuverlässig und eignet sich aufgrund der niedrigen Latenzzeit und der wiederholten Übertragung von Datenpaketen auf der Grundlage des TCP Protokolls perfekt für Livestreaming.

Um Content auf die Geräte von Nutzern zu bringen und ihn dort abzuspielen, bieten Streaming-Plattformen die beliebten und skalierbaren Broadcast-Formate HLS und DASH an. Darüber hinaus sind iOS-Geräte von Haus aus mit einem AVPlayer ausgestattet, der die HLS Wiedergabe unterstützt. Aus diesem Grund werden wir uns schwerpunktmäßig mit diesem Protokoll befassen.

Auswählen einer Bibliothek zum Erstellen eines RTMP Streams

Es gibt nur wenige Open-Source-Lösungen für RTMP Streaming über iOS-Geräte, und noch weniger wirklich funktionelle Optionen. Werfen wir einen Blick auf die vorrangigen Lösungen:

  • LFLiveKit ist veraltet — das letzte Update war am 21. Dezember 2016.
  • HaishinKit wird derzeit unterstützt und ist kostenfrei.
  • Larix SDK funktioniert, ist aber kostenpflichtig (300 $ für die Bereitstellung der Quelldateien).
  • KSYLive ist veraltet — das letzte Update war am 22. März 2020, und die Beschreibung ist auf Chinesisch.

Vor diesem Hintergrund ist HaishinKit die am besten geeignete Bibliothek. Sie ist auf dem neuesten Stand, funktionell und zugleich eine kostenfreie Lösung mit guter Dokumentation.

Zudem hat HaishinKit zahlreiche Vorteile:

  • Wird regelmäßig aktualisiert
  • Unterstützt RTMP Wiedergabe
  • Einfache Installation in der Anwendung
  • Blendet die interne Verarbeitung mit AVCaptureSession aus — was besonders praktisch ist, wenn die Anwendung keine zusätzliche Verarbeitung mit der Sitzung benötigt
  • Unterstützt das Wechseln und Ausschalten der Kamera sowie das Deaktivieren des Mikrofons während des Streamens
  • Kann die Auflösung und die Bitrate ändern sowie Video und Audio während des Streamens aktivieren/deaktivieren
  • Bietet die Möglichkeit, die Broadcast-Parameter flexibel zu konfigurieren
  • Verfügt über eine Option, den Stream anzuhalten

Es gibt jedoch auch eine Reihe von Nachteilen:

  • Keine Option für eine adaptive Bitrate
  • Blendet die interne Verarbeitung von AVCaptureSession aus, was zu Problemen führen kann, wenn Aktionen mit dem eingehenden Audio- und Videomaterial erforderlich sind

Streaming-Implementierung über das RTMP Protokoll von einem iOS-Gerät

Die Bibliothek bietet für das Streamen zwei Arten von Objekten: RTMPStream und RTMPConnection.

Schauen wir uns Schritt für Schritt an, wie man mobiles Streaming einrichtet.

1. Init

Um die Bibliothek HaishinKit in Ihrem Projekt zu verwenden, müssen Sie sie über SPM hinzufügen, indem Sie Folgendes eingeben:

Aktuelle Version der Bibliothek

2. Berechtigungen

Geben Sie die erforderlichen Berechtigungen in der Info.plist des Projekts an:

  • NSMicrophoneUsageDescription (Privatsphäre — Beschreibung der Mikrofonnutzung)
  • NSCameraUsageDescription (Privatsphäre — Beschreibung der Kameranutzung)

3. Anzeigen des Kamera-Streams

Wenn Sie mit einer Smartphone-Kamera streamen, müssen Sie sehen, was der Stream zeigt. Zu diesem Zweck wird in einer entsprechenden Ansicht der Kamerastream auf dem Bildschirm angezeigt. In iOS wird für diese Zwecke ein Objekt der Klasse MTHKView verwendet, an das das Objekt RTMPStream angehängt ist.

4. Vorbereitungen für das Streamen

Zuallererst müssen Sie AVAudioSession konfigurieren und aktivieren. Sie können dies in der Anwendungsklasse AppDelegate tun:

Erstellen Sie die Objekte RTMPConnection und RTMPStream:

Legen Sie die Parameter von rtmpStream fest:

Einstellungen von HaishinKit

5. Adaptive Videobitrate und -auflösung

Zur Implementierung der adaptiven Videobitrate und -auflösung werden zwei RTMPStreamDelegate-Methoden verwendet:

  1. — die Methode wird einmal pro Sekunde aufgerufen, wenn ausreichend Bandbreite zur Verfügung steht (wird zur Erhöhung der Bitrate und Auflösung verwendet)
  2. — die Methode wird aufgerufen, wenn nicht ausreichend Bandbreite zur Verfügung steht (wird zur Verringerung der Bitrate und Auflösung verwendet)

Beispiele für die Implementierung:

6. Hintergrund-Streaming

Apple lässt keine Videoaufzeichnung im Hintergrund zu, was bedeutet, dass die Bibliothek keine Videofragmente an den Server senden kann. Es führt auf Serverseite zu Abstürzen und Unterbrechungen des Streams.

Daher haben wir beschlossen, die Bibliothek um zusätzliche Funktionen zum Senden eines statischen Bildes im Hintergrund zu erweitern. Unsere Version der Bibliothek können Sie unserem Projekt auf GitHub entnehmen.

7. Starten und Beenden von Livestreams

Stellen Sie die Verbindung zum Server her und starten Sie den Stream:

Um einen Stream anzuhalten, verwenden Sie die boolesche Eigenschaft „paused“ mit dem Wert „True“:

Integration mit G-Core Labs Streaming-Plattform

Erstellen eines Kontos bei G-Core Labs

Um die Streaming-Plattform in das Projekt zu integrieren, müssen Sie mit Ihrer E-Mail und Ihrem Kennwort ein kostenfreies Konto bei G-Core Labs erstellen.

Aktivieren Sie den Dienst, indem Sie Free Live oder einen anderen geeigneten Tarif wählen.

Für die Interaktion mit G-Core Labs Streaming-Plattform werden wir die G-Core Labs-API verwenden. Anfragen werden von nativem Code unter Verwendung der Methoden der Struktur NetworkManager ausgeführt, die Daten an die Klasse HTTPCommunication überträgt. Das Parsen von Daten erfolgt über das Protokoll CodingKey unter Verwendung der Struktur DataParser. Sie können bei Bedarf auch eine andere HTTP Bibliothek verwenden.

Ein Beispiel für eine Methode zur Erstellung einer Anfrage:

Autorisierung

Loggen Sie sich ein, um mit der API zu arbeiten. Verwenden Sie die E-Mail und das Kennwort, die Sie bei der Registrierung eingegeben haben, um den Access Token zu erhalten, den Sie für weitere Anfragen benötigen.

Die PUSH URL abrufen

Es gibt zwei Möglichkeiten, die URL zum Senden des RTMP Streams abzurufen:

Methode 1. Senden Sie die Anfrage Get all live streams, um alle Livestreams abzurufen. Als Antwort erhalten Sie Daten über alle in Ihrem Konto erstellten Streams.

Ein Beispiel für das Senden einer Anfrage:

Methode 2. Senden Sie die Anfrage Get live stream, um einen bestimmten Livestream abzurufen. Als Antwort erhalten Sie nur Daten über den angegebenen Stream, sofern dieser existiert.

Ein Beispiel für das Senden einer Anfrage:

Die Antworten auf diese Anfragen enthalten eine push_url, die als URL für das Senden des RTMP Streams verwendet wird. Sobald der Stream beginnt, wird die Übertragung automatisch gestartet. Wählen Sie den gewünschten Stream in Ihrem persönlichen Konto aus. Sie können die Vorschau verwenden, bevor Sie den Stream auf Ihrer Website oder in Ihrem Player bereitstellen.

Wiedergabe eines aktiven Streams

Mit G-Core Labs Streaming-Plattform können Sie Streams auf Ressourcen von Drittanbietern in verschiedenen Formaten, einschließlich HLS, übertragen.

In unserem Beispiel berücksichtigen wir kein simultanes Streamen und Wiedergeben auf einem Gerät. Stattdessen sollte das Streamen von einem anderen Gerät aus gestartet werden.

Um den aktiven Stream wiederzugeben, verwenden Sie den standardmäßigen AVPlayer.

Wiedergabe starten

Vor der Wiedergabe sollte die hls_playlist_url des aktiven Streams in den Player eingebettet werden, während dieser initialisiert wird. Die hls_playlist_url wird in der Antwort auf die oben erwähnte Anfrage „Get livestream“ zurückgegeben.

Initialisierung des Players:

Zusammenfassung

Anhand unserer Beispiele ist das Einrichten eines Livestreams in einer iOS-Anwendung denkbar einfach und nimmt nicht viel Zeit in Anspruch. Alles, was Sie dazu benötigen, ist die Open-Source-Bibliothek HaishinKit und G-Core Labs Streaming-Plattform.

G-Core Labs Streaming-API

Jeglichen im Artikel erwähnten Code finden Sie auf GitHub.

Abonnieren Sie einen nützlichen Newsletter

Einmal monatlich schöne Angebote und wichtige Nachrichten. Kein Spam