Live-Streaming von DVB-Streams an die Squeezebox

Livestreaming

Hat man sich zuhause Squeezebox Mediaplayer aufgebaut und einen Logitechmediaserver im Haus kommt auch der Wunsch auf, damit Radio hören zu können. Problemlos kann man verschiedene Webstreams einrichten, aber eigentlich kommen auch über Satellit und im Kabelfernsehen etliche Radioprogramme. Diese Datenströme haben (technisch) eine hohe Qualität und es skaliert sehr gut. Das bedeutet daß auch zu Stoßzeiten der Empfang sichergestellt ist, da es sich um die Nutzung des "Broadcastdienstes" handelt. Allerdings werden die Radioprogramme via DVB-S und DVB-C als MPEG2-Transportströme übertragen.

Mit mpeg2-Transportströme kommt die Squeezebox allerdings nicht zurecht und demzufolge ist eine Konvertierung erforderlich.

Da man für die Nutzung einer TV Karte aber sowieso eine spezialisierte Applikation braucht verwende ich hierzu tvheadend. Die Einrichtung empfand ich persönlich als nicht trivial und es funktioniert auch noch nicht alles, was wünscheswert wäre (z.B. die "Untertitel").

TV Karte

Zum Empfang der Kabel DVB-C Datenströme wird bei mir eine Digital Devices Cine-C2 verwendet. Das Linux-Kernelmodule ddbridge darf bei mir zumindest nicht mit MSI-X Interrupts geladen werden, da es ansonsten zu I2C Bus-Timeouts kommt. Ich habe daher die folgenden Optionen angegeben:

mamba:/etc>cat modules |grep ddbridge
ddbridge msi=0 
mamba:/etc>cat modprobe.d/ddbridge.conf
options ddbridge msi=0

tvheadend

Nachdem die Low-Level-Module problemlos geladen werden, kann man sich an die Installation der Middleware machen. Ich nutze tvheadend, aktuell in der Version 4.1-2405 auf einem Debian Jessie. Das ist eine Beta-Version die nicht im Debian Jessie Standard-Repository ist (die aber die nötigen Transcoding-Module schon mitbringt). Für nähere Infos hierzu bitte die entsprechende Wiki-Seite des tvheadend Projektes besuchen. Nach der Installation von tvheadend fällt auf, daß die Konfiguration etwas ungewöhnlich ist. Alles wird über das Webfrontend eingestellt. Es gibt keine zentrale Konfigurationsdatei sondern eher ein Konfigurationsverzeichnis welches sich dann in /home/hts/.hts/ befindet. Eher Linux-unüblich ist eine manuelle Konfiguration eher nicht möglich sondern alle Einstellungen müssen über das Webfrontend gemacht werden.

Im weiteren gehe ich davon aus, daß tvheadend schon soweit eingerichtet ist, daß man z.B. mit vlc oder kodi TV gucken bzw. Radio hören kann.

Um die Streams mit der Squeezebox dekodiert abzurufen muß man den mpeg2-transportstrom konvertieren. Hierzu enthält tvheadend (wenn man als tvheadend-"superuser" angemeldet ist) die Möglichkeit unter Configuration->Stream einen Streamkonverter anzulegen (Versionen ab 4.1). Nachdem man auf Add geclickt hat wählt man den Type Transcode/avlib aus.

Ich habe folgende Einstellungen gemacht

[Bitte Bild herunterladen

Es soll also ein roher audio-strom erzeugt werden, ohne Containerformat. Andere Formate außer AAC scheinen mit der Squeezebox nicht zu funktionieren, auch wenn libvorbis viel sinnvoller erscheint (am besten wäre wahrscheinlich uncompressed PCM). Jetzt habe ich das nochmal ausprobiert, mpeg2 im Raw Format funktioniert auch. Das hat den Vorteil, daß der mpeg2-Transportstrom nicht neu kodiert sondern nur "ausgepackt" werden muß. Das verbessert die Qualität und verringert die CPU-Last.

Damit tvheadend den Streamconverter auch nutzt muß ein User eingerichtet werden der diesen verwendet. Configuration->User->Add. Ich habe einen Nutzer names user eingerichtet. Wenn man keine Squeezeboxen sondern irgendwelche Webradios nutzen möchte kommen diese evtl. mit der Nutzerauthentisierung nicht klar. Dann kann man sich auch einen "User" ohne Namen und Passwort anlegen. Dann funktioniert aber wieder das TV gucken evtl. nicht mehr richtig. Evtl. muß man in diesem Spezialfall da dann einen Apache als Proxy "zwischenschalten". Die Squeezeboxen haben damit aber gar kein Problem.

[Bitte Bild herunterladen

Wichtig: Allowed networks auf jeden Fall an die eigene Installation anpassen. Das ist die IP-(Range) in der sich die Squeezeboxen und der LMS (=Logitech Media Server) befinden. Danach noch ein Passwort setzen.

Nun kann das ganze schonmal getestet werden. Bei mir befindet sich LMS und tvheadend auf dem gleichen Rechner, das muß aber nicht zwingend so sein.

Im Channel-Dialog von tvheadend muß man sich jetzt die Kanalnummern heraussuchen die die gewünschten Radioprogramme verwenden.

[Bitte Bild herunterladen

Für einen Stream von DRS3 (bzw. SRF3, Unitymedia ist in der Kabel-BW Zeit stehengeblieben) muß man Channel-Nummer 966 aussuchen. Das ist auch die Programmnummer im Unitymedia-Netz von BW.

Squeezebox

Nun wechselt man in die Weboberfläche des LMS und editiert die Favoriten (Da habe ich die Radioprogramme hingelegt, dann kann man denen auch einfach ein Logo zuordnen)

. [Bitte Bild herunterladen

Da mehrere Radioprogramme manuell einzugeben etwas umständlich ist und man insbesondere kein Logo zuordnen kann, habe ich direkt die Favoriten editiert und den LMS restartet. Hierzu muß man die Datei /var/lib/squeezeboxserver/prefs/favorites.opml auf dem LMS editieren. Will man, daß die Änderungen aktiv werden muß man den LMS restarten, vielleicht geht es auch einfacher, allerdings macht man das ja nicht so oft. Ein Eintrag in den Favoriten sieht dann z.B. wie folgt aus (user ist der oben im tvheadend angelegte User, squeeze das Passwort):

<outline URL="http://user:squeeze@172.16.0.4:9981/stream/channelnumber/966" icon="http://172.16.0.4/logos/SRG-DRS%203.png" text="DRS 3" type="audio" />

Die Logos habe ich mir direkt von den jeweiligen Infoseiten über das Radioprogramm bei der Wikipedia als png Datei heruntergeladen. Auf dem tvheadend Server läuft auch ein kleiner Webserver der dann u.a. die Bilder bereitstellt. Damit die Logos richtig funktionieren muß übrigens die IP Adresse der Icon-URL hart hereingeschrieben werden. Ansonsten wird der "Imageproxy" von mysqueezebox verwendet. Der kommt aber an einen Webserver den es nur im LAN gibt gar nicht heran. Achtung: Wenn man sich in der favorites.opml vertippt, dann wird einem die Datei bei Start des logitechmediaservers zurückgesetzt. Schaltet man das Debugging für die favoriten an, kann man im Logfile sehen, welche Zeile ihm nicht passt.

Icons für tvheadend und Squeezebox

Damit die Icons auch über tvheadend z.B. in kodi genutzt werden können sind noch folgende Einstellungen im tvheadend sinnvoll Configuration->General:

[Bitte Bild herunterladen

Ich habe ziemlich lange herumgerätselt was ein picon ist, wer es bereitstellt und wie das eingerichtet werden soll, bin aber der Meinung das es auf einem getrennten Webserver mit Channel-Namen benannt am besten übergreifend funktioniert.

Vorteile dieses Setup sind folgende

  • Privacy - Die erhöhte Privacy gegenüber Webstreaming da keiner weiß welches Programm man hört.
  • Qualität - Die hohe Qualität der MPEG-2 Medienströme, egal ob Satellit oder Kabel
  • Sparen - Das Einsparen der Bandbreite
  • Unabhängigkeit - Unabhängigkeit vom Erreichen von Lastgrenzen des Webstreamings.
  • Ausfallsicherheit - Hat man "alles richtig gemacht" geht alles sogar noch wenn das Internet ausgefallen ist.

Viel Erfolg

© Carsten Groß - Letzte Änderung 22.05.2017 13:20 - Impressum