> Forums > RaspberryPi

24/7 Playlist-Livestream mit Hilfe des Raspberry Pi ganz Einfach

Erstellt
Apr. '22
letzte Antwort
Noch keine
Antworten
Noch keine
Aufrufe
4.7T
2
„Gefällt mir“
Abos
Noch keine
Fr., 29. April, 2022 um 18:56
#1


Bild: Pixabay

Hier eine kleine Anleitung wie man einen 24/7 Playlist-Livestream mit Linux verwirklichen kann.

Eine schnelle Anleitung wie man einen 24/7 Livestream auf Plattformen wie Twitch oder YouTube (oder noch vielen anderen) verwirklichen kann. Dies ganz einfach per "codec copy". Also einfach 1:1 das Video auf die Plattform schieben. Damit sparen man die aufwendige Codierung und dadurch auch enorm Rechenleistung.

Was braucht man dafür?

    Einen Linux-Server. Auf dem man Root-Rechte hat. Dieser braucht aber nicht extrem überpowert sein. Ein kleiner Raspi reicht aus.
  • Genug Speicherplatz für die Videos
  • Eine gute und stabile Internetanbindung. So das der Upload nicht ins stocken kommt.


Was muss man bei den Videos beachten?

Alle Videos müssen im selben Format codiert sein ..

  • Format mp4 mit x264 Codec
  • Die Auflösung haben in der gestreamt werden soll (z.B. 1920×1080 für HD Stream)
  • Die selbe FPS Anzahl (z.B. 30FPS oder 60FPS)
  • Die selbe Datenrate für das Bild haben (z.B. 6000kbps)
  • Die selbe Datenrate für den Ton haben (z.B. 320kbps)


Also voher alles schön aufs selbe Format codieren. Am besten in einem Batch Codierer wie Handbreak. Vorher beachten/erkundigen welche Auflösung, Datenraten und FPS Vorgaben für normale Livestreams die jeweilige Plattformen verlangt oder unterstützt.

Gerade bei Twitch mit seiner 1080p und 60FPS Beschränkung muss man aufpassen.

Wollt ihr gleich mal auf den Putz hauen und 4K Streamen, dann auf gute Datenrate (30-40Mbit/s) achten! Aber vergesst nicht dies gleich bei eurem Internetanschluss im Upload mit einzuplanen ..

Wenn alles codiert ist, ab auf den Server damit. Alles in EINEM Ordner und KEINE Unterordner!

Die Videonamen am besten schön übersichtlich und einheitlich gestalten. Keine Sonderzeichen verwenden.

Jetzt mal den Server vorbereiten

Wir werden die beiden Progamme FFMPEG und Screen verwenden. Also diese beiden mal installieren.

Code:
apt install ffmpeg -y


und


Code:
apt install screen -y


Dann erstellen wir uns die Playlist, mit allen Videos die gestream werden sollen ..

Dazu gehen wir zuerst in den Ordner in dem die Video liegen .. z.B.:

Code:
cd /Videos


.. und nehmen wir an da sind jetzt einige Videos drin und du bist zu faul jedes einzelen in die Playliste zu packen. Also was macht man unter Linux? Man lässt Linux für einen arbeiten ..

Code:
find . -iname "*.mp4" -exec basename {} \;>playlist.txt


.. und schwubs hat man die Datei "playlist.txt", mit allen Videos drin stehen ..

Einen kleinen Schönheitsfehler hat das ganze leider noch .. Deswegen müssen wir die Playlist Datei in einem beliebigen Texteditor öffen und das ganze in diese Format bringen ..

zB:

Code:
nano playlist.txt


.. in das Format:

Code:
file 'v1.mp4'
file 'v2.mp4'
file 'v3.mp4'


.. also "file" voranstellen. Wichtig ist auch das der Dateiname mit den ' Anführungzeichen angeben ist.

Die Skriptdatei für den Stream

Jetzt legen wir uns das Bash-Skript an, welches einfach den Stream startet und zur gewünschten Quelle schickt.

Code:
nano geh_live.sh


.. in diese kommt dann folgender Code ..

Code:
ffmpeg -re -f concat -i playlist.txt -codec copy -f flv rtmp://SERVER/StreamKey


Kurz erklärt:

ffmpeg -re -f concat startet ffmpeg
-i playlist.txt gibt die Playlist Datei an
-codec copy den Codec der Videos verwenden. Wir rendern also nichts auf dem Server, sondern übergeben die Videos 1:1.
-f flv rtmp: ist der Zielserver an dem der Stream gesendet wird.

.. den Rtmp Server und euren Streaming Key müsst ihr natürlich selbst einfügen. Bei Youtube erführt man den ganz einfach sobald man auf der Homepage den Stream vorbereitet.

Für Twitch findet ihr hier eine Liste: https://stream.twitch.tv/ingests/. Hier ist es im Grunde egal welchen ihr nehmt. Es ist aber sicher empfehlenswert einen Server zu nehmen der in der Nähe ist.

Und wir gehen live ..

Mit ..

Code:
chmod +x geh_live.sh


.. noch die erforderlichen Rechte zum ausführen geben und dann mit ..

Code:
./geh_live.sh


.. können wir den Stream starten. ABER so würde das Script nur solange laufen bis die Playlist komplett abgespielt ist und dann sich beenden. Also noch kein 24/7 Stream.

Deswegen muss das ganze noch in einer Schleife laufen, so das einfach die Playlist von vorne abgespielt wird.

Man kann so auch wärend der Stream läuft die Playlist ergänzen/verändern und bei nächsten durchgang der Schleife wird die änderung übernommen.

Deswegen öffen wir nochmal:

Code:
nano geh_live.sh


.. und verändern den Code folgendermassen:

Code:
while [ 1 -eq 1 ]
do
ffmpeg -re -f concat -i playlist.txt -codec copy -f flv rtmp://SERVER/StreamKey
done


.. dies ist dann eine einfache Schleifenfunktion. Solange "1" wirklich "1" bleibt, wird der ffmpeg-Startbefehl ausgeführt.

Wichtig! Mach dies alles direkt am Server. Zu oft hört man dass wenn man die .sh Scrpte unter Windows erstellt es zu Fehlermeldungen kommt, weil dem Linux dann das Format wie Windows es abspeichert nicht passt ..

Wir geben der Datei die benötigten Rechte:

Code:
chmod +x geh_live.sh


.. und könnten den Stream, wie oben erwähnt starten. Nachteil ist jetzt aber wiederum das es nicht im Hintergrund läuft. Hier bringen wir das 2 Program "Screen" ins Spiel ..

Wir erstellen uns eine neue Batch-Datei:

Code:
nano start_stream.sh


.. und in diese fügen wir den Code:

Code:
screen -S 24StundenStream ./geh_live.sh


.. ein. Diese braucht dann natürlich auch die Rechte zum ausführen:

Code:
chmod +x start_stream.sh


.. und wir können einen 24/7 Stream starten, welcher im Hintergrund am Server läuft.

Code:
./start_stream.sh


.. es kommt der Output von FFMPEG und der Stream sollte live gehen ..


Wie kann ich den Stream beenden?

Frag mit:

Code:
screen -ls


.. die ID den sessionname (ist aber meistens eine Zahl) ab und mit:

Code:
screen -S sessionname -p 0 -X quit


.. dann einfach beenden. Der Stream geht offline.


Was verbraucht das Ganze an Leistung?

Ich habe bei meinen Tests auf Youtube und Twitch niemals mehr als 10% der CPU Leistung des Raspi gebraucht. Meistens sogar weniger.

Was das Datenvolumen angeht .. Ein 1920×1080 60FPS Stream hat für 24 Stunden knapp 40GB gebraucht.

Der Mensch ist ein naiver Tourist mit einem abgelaufenem Visum für den Planeten Erde ..

> Forums > RaspberryPi

Du hast bereits für diesen Post abgestimmt...

;-)



Logo https://t.ress.at/B9U6Y/


Ähnliche Themen:











Top