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 diesem Artikel werden wir näher darauf eingehen, wie Sie Ihre eigene Anwendung für mobiles Streaming und das Betrachten von Livestreams auf Android erstellen und wie Sie diese in G-Core Labs Streaming-Plattform integrieren können.
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 Android-Geräte von Haus aus mit einem MediaPlayer ausgestattet, der die HLS Wiedergabe unterstützt. Aus diesem Grund werden wir uns schwerpunktmäßig mit diesem Protokoll befassen.
Es gibt nur wenige Open-Source-Lösungen für RTMP Streaming über Android-Geräte, und noch weniger wirklich funktionelle Optionen. Sehen wir uns einige von ihnen genauer an.
Vorteile:
Nachteile:
Vorteile:
Nachteile:
Vorteile:
Nachteile:
Zusammenfassend lässt sich sagen, dass rtmp-rtsp-stream-client-java unter allen drei Optionen die meisten Vorteile und die wenigsten Nachteile aufweist. Aus diesem Grund halten wir diese Bibliothek für die am besten geeignete Lösung.
Die Bibliothek rtmp-rtsp-stream-client-java bietet zwei Arten von Objekten für das Streaming — RtmpCamera1 und RtmpCamera2. Ersteres verwendet die Camera-API, um den Stream von Ihrer Smartphone-Kamera zu erfassen, während Letzteres die Camera2-API verwendet.
Wir empfehlen die Verwendung von RtmpCamera2, da die Camera-API seit Android API Level 21 veraltet ist. In unserem Beispiel wird die aktuellste RtmpCamera2-Version verwendet.
Wir werden uns nun Schritt für Schritt ansehen, wie die Bibliothek rtmp-rtsp-stream-client-java für mobiles Streaming verwendet wird. Doch zunächst ein kurzer Überblick über ihre Funktionsweise.
Schauen wir uns nun Schritt für Schritt an, wie man mobiles Online-Streaming einrichtet.
Um die Bibliothek rtmp-rtsp-stream-client-java in Ihrem Projekt zu verwenden, müssen Sie Abhängigkeiten zu build.gradle hinzufügen:
Aktuelle Version der Bibliothek
Geben Sie die erforderlichen Berechtigungen in der Datei AndroidManifest.xml an:
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. Android verwendet SurfaceView oder TextureView. Die verwendete Bibliothek verfügt auch über eine eigene OpenGlView, die von SurfaceView abstammt.
Mit RtmpCamera1 können Sie jede dieser Ansichten verwenden, wohingegen mit RtmpCamera2 nur OpenGlView verfügbar ist. Aber von diesen Ansichten ermöglicht Ihnen nur OpenGlView, verschiedene Filter, Bilder, GIFs oder Text während des Streamens zu verwenden.
Fügen Sie OpenGlView zu „Layout Activity“ oder „Fragment“ hinzu, um den Kamerastream zu sehen:
Um das Objekt RtmpCamera2 zu initialisieren, benötigen Sie das Objekt OpenGlView und die Schnittstellenimplementierung ConnectCheckerRtmp:
Um die adaptive Bitrate zu verwenden, müssen Sie einige Ergänzungen an der Implementierung dieser Schnittstelle vornehmen:
Fügen Sie einen Callback zum Objekt OpenGlView hinzu. Die Callback-Methoden werden dazu verwendet, die Kameravorschau zu starten und zu beenden:
Erstellen Sie das Objekt RtmpCamera2, das für das Streaming verwendet werden soll:
Legen Sie die Video- und Audioparameter fest, und starten Sie den Livestream.
Livestream mit Standardparametern:
Livestream mit benutzerdefinierten Parametern:
Den Stream beenden:
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. Wir werden Anfragen unter Verwendung von Retrofit in Verbindung mit RxJava ausführen. Sie können aber auch jede andere Methode zur Übermittlung von HTTP Anfragen verwenden, wenn Sie möchten.
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.
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.
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 Android MediaPlayer. Wenn Sie mehr Kontrolle über den Stream und die Anpassungsmöglichkeiten des Players haben möchten, empfehlen wir ExoPlayer.
Um den Videostream auf dem Smartphone-Bildschirm anzuzeigen, ist VideoView erforderlich. Es sollte dort zu „Layout Activity“ oder „Fragment“ hinzugefügt werden, wo Sie den Stream abspielen möchten:
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:
Sobald die Initialisierung abgeschlossen ist, können Sie die Wiedergabe durch Aufruf der Methode videoView.start() starten.
Starten des Players:
Anhand unserer Beispiele ist das Einrichten eines Livestreams in einer Android-Anwendung denkbar einfach und nimmt nicht viel Zeit in Anspruch. Alles, was Sie dazu benötigen, ist die Open-Source-Bibliothek rtmp-rtsp-stream-client-java und unsere Streaming-Plattform.
Jeglichen im Artikel erwähnten Code finden Sie auf GitHub.