Unterbrechungsfreier Stream

Streams über eine normale Internetleitung zu schicken ist immer etwas wackelig, je schneller die Internetleitung desto besser. Manchmal kommt man aber nicht drum herum über wackelige Verbindungen wie z.B. UMTS zu senden. Hierfür gibt es eine Lösung.

Hierfür braucht man einen Server oder vServer mit Linux im Rechenzentrum und einen Rechner im Studio.

Auf dem Server installieren wir Icecast 2 als Streamingserver und liquidsoap als Software.

Nun speichert man in den Ordner /etc/liquidsoap/ eine Datei mit dem Namen live.liq und den Rechten 600 für root ab. In den gleichen Ordner legen wir eine OGG-Datei mit dem Namen problems.ogg für den Notfall, in dieser kann eine Ansage sein.

#!/usr/bin/liquidsoap
set(„log.file.path“,“/var/log/liquidsoap/live.log“)
set(„log.level“,3)
set(„init.daemon.pidfile.path“,“/var/run/liquidsoap/live.pid“)
set(„server.telnet“,true)
set(„server.telnet.port“,1233)
set(„harbor.bind_addr“,“0.0.0.0″)

def crossfade(a,b)
add(normalize=false,
[ fade.initial(duration=2., b),
sequence(merge=true,
[ blank(duration=0.), fallback([]) ]),
fade.final(duration=2.,a) ])
end

gfm = amplify(1.2, input.http(„http://radio-gfm.net:8000/electro.ogg“))
output.dummy(mksafe(gfm))
live = input.harbor(„live“, port=8080, password=“supersicher“)
live = audio_to_stereo(live)
live = strip_blank(threshold=-49., length=30., live)
security = drop_metadata(single(„/etc/liquidsoap/problems.ogg“))

radio = fallback(track_sensitive = false, transitions = [crossfade,crossfade], [live, gfm, security])
radio = amplify(1.7, radio)
radio = audio_to_stereo(radio)

#radio = mksafe(live)

live_name = „Ausfallsicherer Stream“
live_desc = “ „
live_url  = „http://vdoener.de/“

radio_mono = mean(radio)

output.icecast(%mp3.abr(bitrate=128,max_bitrate=192,id3v2=true), host=’127.0.0.1′, port=8000,
password=’hackme‘, mount=’live.mp3′, user=’source‘, public=false,
name=live_name, description=live_desc,
genre=“, url=live_url,
radio)

output.icecast(%vorbis(quality=0.4), host=’127.0.0.1′, port=8000,
password=’hackme‘, mount=’live.ogg‘, user=’source‘, public=false,
name=live_name, description=live_desc,
genre=“, url=live_url,
radio)

output.icecast(%aac(bitrate=32, channels=1), host=’127.0.0.1′, port=8000,
password=’hackme‘, mount=’live_low.aac‘, user=’source‘, public=false,
name=live_name, description=live_desc,
genre=“, url=live_url,
radio_mono)

Luqiudsoap bedient man auf dem Server mit

sudo /etc/init.d/liquidsoap start

sudo /etc/init.d/liquidsoap stop

Sobald Liquidsoap sind auf eurem Icecast2 Server 3 Streams die so sicher laufen wie eure Anbindung im Rechenzentrum. Diese Streams übernehmen das Webradio „Radio GFM – Electro“ wenn ihr nicht gerade senden wollt. Sollte der Stream von Radio GFM einmal ausfallen spielt der Server eure OGG Datei.

Um euch auf euren Stream zu schalten tragt in eurem Encoder wie z.B. „butt“ folgende Daten ein.

  • Server: die IPv4 Adresse eures Root oder V-Servers
  • Benutzer, falls erforderlich: source
  • Passwort: supersicher (falls ihr die .liq Datei nicht angepasst habt)
  • Mountpoint: live (wenn nicht geändert)
  • Port: 8080 (nicht euer Icecast2 Server)

Wenn ihr euch nun verbindet schickt ihr euer Signal an Liquidsoap, der reicht es dann weiter an den Icecast2. Sollte euer Signal mal wegbrechen oder für 30 Sekunden unter -49dB sein spielt euer Server „Radio GFM – Electro“ oder einen anderen programmierten Ersatzstream.

Nun kann man auch per UMTS senden ohne nachher einen ruckelnden Stream zu haben.

Beispiel:Ü-Wagen

Angenommen ihr hättet einen Ü-Wagen, in dem Studiotechnik eingebaut ist die ihren Strom über eine zusätzliche Autobatterie beziehen kann und wollt nun aus dem fahrenden Ü-Wagen senden ist dies nun Möglich.

Ich habe in so einem Fall ein kleines Netbook mit Ubuntu, eine externe Soundkarte und einen Surfstick mit externer Antenne. Der Encoder auf dem Netbook lasse ich mit 64 kbit und Mono MP3 zum Liquidsoap senden.

2 Gedanken zu „Unterbrechungsfreier Stream

  • 26. März 2016 um 14:10
    Permalink

    Super Script, Danke.

    Eine Frage, ich würde das gerne mit einer Playlist machen, heißt, wenn einen vom Stream geht, spielt Liquidsoap die Playlist ab, geht einen auf dem Stream bendet Liquidsoap die Playlist.

    Wie würde das ungefähr in deinem Script aussehen.

    Danke schon mal.

    Antwort
    • 25. Juli 2017 um 19:11
      Permalink

      in etwa so funktioniert es, wenn keiner auf dem Stream sendet läuft ja die Notmusik

      Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden .