« Rollern mit Strom die… | home | To air or not to air »
20 views
14. Okt 2016

live streaming mit Linux

...und das alte Ding reicht doch!

Vor ein paar Tagen begab es sich, dass die Fußballmannschaft meiner Tochter ein Pokalspiel hatte, das sehr spannend zu werden versprach. (Das Spiel haben sie übrigens gegen eine höherklassige Mannschaft verdient gewonnen!) Leider konnte ich nicht auf'm Platz sein, und es hat sich auch niemand dazu herabgelassen, wenigstens die wichtigsten Begebenheiten mitzuteilen, obwohl es da ja nun doch etliche Möglichkeiten für gibt und fast(?) jede der zuschauenden Mannschaftsmitgliederinnen ein Smartphone ihr eigen nennt. Das fand ich total doof, und die Idee war geboren...

Wie wäre es, zumindest einen Teil der Heimspiele live ins Netz zu streamen, als "Radio"kommentar? Das gäbe den verzweifelten Anhängern zuhause eine Möglichkeit irgendwie dabei zu sein, ich hätte eine Ausrede um hinzufahren und dem Verein könnte es auch weiter helfen.

Also flugs ein paar Dinge angeschaut. Als erstes fiel mir Youtube ein, dort ist das live streaming ja seit kurzer Zeit auch in Deutschland möglich, endlich. Aber was für einen Encoder nutzen? Linux wird da immer noch ein wenig stiefmütterlich behandelt, die von Youtube empfohlenen Encoder laufen allesamt nicht auf Linux.

Aber es gibt ja ffmpeg :-) Damit waren recht schnell die ersten Versuche getan, aber YT hat sich standhaft geweigert den Stream zu akzeptieren.

Da im Netz viel von Open Broadcaster Software gehalten wird, habe ich mir das jetzt auch für Linux verfügbare Programm mal aus den Quellen kompiliert. Das ging auch alles ganz wunderbar, nur hatte ich übersehen, dass mein Laptop - denn auf dem soll das Encoding passieren - die hohen graphischen Anforderungen nicht erfüllt. Es wird nämlich OpenGL 3.2+ verlangt, während meine alte Kiste - ein Dell Latitude D505 von mindesten 2006 - nur Version 1.3 anbietet. Schade...

Dann habe ich mich nach anderen Streaming-Plattformen umgesehen: Ustream, Livestream, twich und wie sie alle heißen... Nichts davon fand ich befriedigend.

Also doch wieder Youtube mit ffmpeg, und so langsam näherte ich michdem, was ich wollte. Mit $SUCHMASCHINE, ein bisschen selber denken und vor allem RTFM!!! gelang mir das erste streaming. Viele Fehler und der Rechner war voll ausgelastet. Absolut unbenutzbar während das encoding lief. Da ich nicht eine ganze Batterie von Rechnern mit auf den Sportplatz nehmen wollte, habe ich weiter versucht, etwas zu optimieren, diesmal aber mit Hilfe der Leute aus dem IRC chat #ffmpeg. Da wurde der ffmpeg-Befehl so langsam rund und etwas sparsamer bei den Ressourcen. Wir kamen auf folgenden CLI-Befehl:

$ ffmpeg -loop 1 -r 1 -i Bilder/schwalben_klein_2.jpg \
-f alsa -i hw:0,0 -preset ultrafast -flags +global_header \
-acodec libmp3lame -ar 44100 -ab 64k -ac 1 -vcodec h264 \
-pix_fmt yuv420p -vf fps=6 -g 2 -shortest -f flv \
"rtmp://a.rtmp.youtube.com/live2/YourStreamID"

Damit war was zu hören und zu sehen: Ein statisches Bild von bei uns geschlüpften Schwalben und der Bitstream der Soundkarte hw:0,0. Die Auslastung der CPU - ja, der Rechner hat nur einen einzigen Kern! - lag bei ca. 90%. Viel zu viel, daher habe ich weiter gesucht.

Das entscheidende schien zu sein, dass der Bitstream der Soundkarte ein 48kHz PCM Stream mit 1536kbit/s ist. Den zu verarbeiten braucht einfach Rechenkraft. Bis ich darauf kam, das ALSA sich davon überzeugen lässt den Stream auch mit geringerer Abtastrate zu schicken verging einige Zeit im Netz, aber dann war es soweit. Der folgende Befehl lastet den Rechner zu nicht einmal 20% aus und liefert fehlerfrei den gewünschten Livestream mit ungefähr 150kbit/s:

$ ffmpeg -re -loop 1 -r 1 -i Bilder/schwalben_klein_2.jpg \
-f alsa -ar 11025 -i hw:0,0 -preset ultrafast -flags +global_header \
-acodec libmp3lame -ab 64k -ac 1 -vcodec h264 -pix_fmt yuv420p \
-vf fps=1 -g 2 -shortest -f flv \
"rtmp://a.rtmp.youtube.com/live2/YourStreamID"

Damit kann ich selbst mit meinem uralten Laptop demnächst auf der Tribüne sitzen und allen, die es hören wollen, vom Spiel berichten, wenn der Verein und die Spielerinnen es wünschen und dahinter stehen. Und die Netzanbindung muss natürlich auch noch passen, aber da sollte selbst ein kleiner DSL-Tarif mit flatrate passen.

Ich freu mich drauf!

Kein Kommentar


(optionales Feld)
(optionales Feld)
Es wird nach dem Rechenergebnis gefragt, um Spammern das Leben schwerer zu machen.

Auf dieser Seite werden die Kommentare moderiert.
Das bedeutet, dass die Kommentare erst dann veröffentlicht werden, wenn sie freigeschaltet wurden.

Persönliche Informationen speichern?
Hinweis: Alle HTML-Tags außer <b> und <i> werden aus Deinem Kommentar entfernt. URLs oder Mailadressen werden automatisch umgewandelt.