Aus Linux-Magazin 01/2015

Raspberry Pi als DVR

© li-xuejun, 123RF

Mehr braucht er nicht: ein Linux, einen DVB-T-Stick und einen Raspberry Pi. Linux-Magazin-Autor Konstantin “MacGyver” Agouros genügt das, um einen Videorekorder zu bauen, der Sendungen mit Hilfe eines EPG aufzeichnet und die Aufnahmen auf ein NFS-Share im lokalen Netzwerk schiebt.

Nachdem mein Artikel im Linux-Magazin [1] vor einiger Zeit demonstrierte, wie Bastler über einen gewöhnlichen DVB-T-Stick Daten der lokalen Wetterstation abgreifen – Stichwort: Software-defined Radio –, schaufelte der verwendete TV-Stick noch eine Weile lang fleißig Daten auf meinen Raspberry Pi. Anschließend nutzte ich die Hardware dazu, den Flugverkehr über meinem Haus zu beobachten [2]. Irgendwann beschloss ich jedoch, ihn wieder seiner eigentlichen Berufung zuzuführen, dem Empfang von Fernsehprogrammen.

Hardware

Während der Terratec Cinergy T Stick RC ohne zusätzliche Verrenkungen funktionierte [1], stellte mich die Terratec H7, eine USB-Box, die sowohl DVB-T als auch DVB-C verarbeitet, vor etwas größere Herausforderungen. Trotz vorhandener Treiber wollte das Modul im ersten Anlauf nicht kooperieren. Ein Blick in die Ausgabe von »dmesg« machte mich schlauer, denn dort stand schwarz auf weiß, dass der Treiber eine Firmwaredatei vermisst. Da die Ausgabe freundlicherweise auch den Namen der fehlenden Datei verriet, ließ sich per Onlinesuche schnell Abhilfe schaffen.

Den zweiten Fallstrick spannte die Doppelfunktion der H7-Box. In der Standardeinstellung steht sie auf DVB-T. TV-Headend behandelt sie auch so und erkennt folglich keine Kabel-TV-Kanäle. Die Lösung brachte das Werkzeug »dvb-fe-tool« , mit dem ein Admin den Modus des Adapters auf DVB-C umstellt. Vor dem Start von TV-Headend gibt er dafür die Befehlszeile »dvb-fe-tool -a 1 -d DVBC/ANNEX_A« ein.

Im Betrieb fiel auf, dass die H7-Box unter Linux weitaus stabiler lief als auf dem Mac, auf dem sie nach ein paar Tagen stets einen Neustart der Box erforderte.

Das hat eine Vorgeschichte, denn seit ein paar Jahren betreibe ich als digitalen Videorekorder eine proprietäre Lösung, die aus einem Mac Mini besteht, auf dem die Software Eye-TV läuft. Es war also höchste Zeit, einmal Open-Source-Software an die Aufgabe “digitaler Videorekorder” zu lassen. Auf Empfehlung kam TV-Headend [3] zum Einsatz.

Web-TV

TV-Headend installiert einen digitalen Videorekorder, der von Hause aus ein Webfrontend mitbringt, das einen elektronischen Programmführer integriert. Es lässt sich im Gegensatz zu anderen Frontendlösungen allerdings nicht mit einer normalen Fernbedienung steuern. Die Software wartet als Debian-Paket unter [4], wobei es auch ein Paket für die Raspberry-Pi-Distribution Raspian gibt. Das vereinfacht merklich die Installation auf dem Pi, der als Zielplattform dient, und holte noch einige Perl-Pakete nach, die im Hintergrund werkeln.

Nach der Installation ruft der Benutzer über »localhost:9881« das Web-GUI auf. Er muss zunächst den angeschlossenen DVB-Adapter einrichten, auf den das System über »/dev/dvb/adapterX« zugreift. Bringt das verwendete Linux einen Kerneltreiber und gegebenenfalls eine Firmware für den Adapter mit (siehe Kasten “Hardware”), erscheint dieser unter »Configuration/DVB-Inputs« .

Im nächsten Arbeitsschritt fügt der Bastler die Trägerfrequenzen hinzu, die im Sprachgebrauch von TV-Headend Muxe heißen. Die ergänzt er entweder manuell, indem er die Frequenz, die Modulation sowie einige weiterer Parameter angibt, oder er greift der Einfachheit halber zu dem Tool »Add DVB Network by location« (Abbildung 1). Die Software unterstützt von Haus aus eine lange Liste mit Empfangsparametern auch deutscher Regionen.

Abbildung 1: Über einen Button lassen sich die regionalen Trägerfrequenzen über Listen einlesen.

Abbildung 1: Über einen Button lassen sich die regionalen Trägerfrequenzen über Listen einlesen.

Sendersuche

Hat der Nutzer seine Location gewählt und ist der DVB-T-Adapter einsatzbereit, beginnt der automatische Sendersuchlauf, sofern ihn der Admin nicht deaktiviert. Hier ist jetzt Geduld angesagt. Die Webseite zeigt im Durchlauf zwar an, welche Trägerfrequenz sie gerade prüft und wie viele noch fehlen, aber innerhalb einer Frequenz gibt es keinen Fortschrittsbalken. Erreicht der Eintrag »Muxes awaiting initial scan« unten rechts den Wert » « , ist der Scanprozess abgeschlossen.

Als Ergebnis des Suchlaufs spuckt TV-Headend aber nicht Kanäle, sondern Services aus, die allerdings schon die Namen der Sender tragen. Die muss der Admin jetzt noch über »Map DVB services to channels« auf die Kanäle mappen. Praktischerweise kann er dies aber in einem Rutsch tun, in dem TV-Headend die Servicenamen in Kanalnamen verwandelt. Für das Kabelnetz in München musste ich zuvor noch zwei Frequenzen manuell hinzufügen, da sich München hier vom Rest Bayerns unterscheidet.

Schließlich aktiviere ich noch den EPG. Für Deutschland empfiehlt sich als Programmführer das XML-TV-Modul »Egon zappt« , für das ich noch die Trägerfrequenz, über die es die Daten herunterlädt, einstellen muss. Dann steht der digitale Videorekorder bereit.

Bedienkomfort

Dem Anwender präsentiert sich dann im ersten Reiter der EPG mit allen bekannten Sendern und Sendungen, wie Abbildung 2 zeigt. Oben links kann er per Filter Sendungen und Kanäle durchforsten. Daneben gibt es Filter für Tags zu den Kanälen. Letztere muss der TV-Headend-Betreiber aber zuvor den Sendern über »Configuration/Channels« zuordnen. Die »Content Types« bleiben in der deutsch lokalisierten Fassung meist leer.

Abbildung 2: Der Electronic Program Guide lässt sich mit Hilfe von Filtern durchsuchen.

Abbildung 2: Der Electronic Program Guide lässt sich mit Hilfe von Filtern durchsuchen.

Ein Klick auf die Sendung führt zu einem Fenster mit einer Inhaltsangabe und der Option, die Sendung aufzunehmen beziehungsweise sie auf die »Autorec« -Liste für automatische Aufnahmen zu setzen. Der Unterschied zwischen »Record Program« und »Autorec« besteht darin, dass »Record Program« einmalig aufzeichnet, während der »Autorec« -Speicher regelmäßige Aufnahmen triggert, was etwa für TV-Serien Sinn ergibt.

Außerdem findet sich ein Link auf die International Movie Database (IMDB), über den ein Zuschauer nicht nur mehr Informationen zu einem Film erhält, sondern auch eine Beurteilung in Form eines Ratings sieht. Das hilft jedenfalls mir, bereits im Vorfeld zu entscheiden, ob eine Sendung tatsächlich aufnahmewürdig ist. Ein »Play« -Link sucht entweder nach einem VLC-Plugin oder bietet einen Link an, um den Stream manuell an einen netzwerkfähigen Player zu senden. Dieser Link erscheint jedoch nur, wenn die Sendung schon läuft.

Rekordhalter

Unter dem Reiter »Digital Video Recorder« stößt der Benutzer auf die Punkte »Upcoming Recordings« , »Finished Recordings« , »Failed Recordings« sowie »Autorec« . Der erste Unterpunkt zeigt die aktuell programmierten Sendungen und deren nächste Aufnahmen. Das schließt Sendungen ein, die der Nutzer über das »Autorec« -Feature ergänzt hat.

Über den Plusknopf oben links fügt der Anwender eine Aufnahme hinzu, indem er “wie in der guten alten Zeit” lediglich einen Sender und eine Uhrzeit definiert. Ein Klick auf eine Sendung entfernt diese aus der Liste der Aufnahmen.

Unter »Finished Recordings« zeigt die Software die erfolgreichen Aufnahmen an. Hier finden sich wieder ein »Play« -Link und eine Inhaltsangabe, was gerade bei Serienaufnahmen hilfreich ist. Zudem lassen sich hier Aufnahmen löschen, wobei die Software sowohl die Datei selbst als auch den Eintrag aus der TV-Headend-Datenbank entfernt.

In der Abteilung »Failed Recordings« landen Sendungen, bei denen die Aufnahme nicht geklappt hat, weil zum Beispiel die Festplatte voll ist oder der DVB-Adapter Empfangsprobleme hatte.

Perfektes Timing

Schließlich folgt die Funktion, die aus meiner Sicht das Highlight der Software darstellt: »Autorec« . Gibt ein Anwender hier Suchkriterien an, nach denen er aufnehmen will, sucht TV-Headend alle Sendungen aus dem EPG, die dazu passen und zeichnet sie auf. Timing ist dabei alles: Gerade bei Privatsendern variieren die Anfangszeiten von Serien nicht selten.

Dank der »Autorec« -Funktion findet die Software von allein die richtigen Startzeiten, vorausgesetzt diese stimmen im EPG. Erhält der Eintrag eine Uhrzeit, interpretiert TV-Headend diese nicht exakt, sondern startet etwa gegen XX Uhr. Zudem schränkt der Anwender Aufnahmen auf Wochentage und TV-Sender ein, um etwa Wiederholungen alter Folgen auszufiltern, die an anderen Wochentagen laufen. Die »Autorec« -Funktion hat mich letztlich dazu bewegt, auch den DVB-C-Adapter von der kommerziellen Eye-TV-Lösung zu TV-Headend auf dem Pi zu migrieren.

Für jede Aufnahme kann der Anwender zudem ein Aufnahmeprofil angeben. Das legt fest, in welchem Ordner TV-Headend die zugehörigen Videodateien stapelt und ob es die Daten im Matroska-Containerformat oder als rohen Mpeg-Strom speichert. Außerdem kann der User in diesem Profil die Struktur der Dateinamen (etwa SendungsnameDatumUhrzeit) bestimmen und festlegen, ob TV-Headend Unterordner anlegt.

Eine spannende Einstellung heißt »Skip Commercials« , sie funktioniert jedoch nur, wenn der Benutzer Matroska als Dateiformat aktiviert. Sie fügt in die Matroska-Datei Indexmarker ein, wenn TV-Headend Werbung erkennt. Im Test klappte dies bei Sendungen der Prosieben-Sat1-Gruppe recht zuverlässig, bei anderen Sendern jedoch nicht.

Bei meiner Konfiguration kam ein NFS-Laufwerk zum Einsatz, um die Videodateien zu speichern, da der Pi selbst nicht genug Speicherplatz besitzt. Außerdem blieb nach dem Anschluss des zweiten Adapters kein USB-Port mehr frei. Aufnahmen klappten in den Tests selbst dann zufriedenstellend, wenn beide Adapter gleichzeitig aufzeichnen.

Stolpersteine

Doch ganz ohne Probleme läuft auch der Raspi-basierte TV-Rekorder nicht. Im Laufe des dreimonatigen Betriebs fror das System dreimal vollständig ein. Nach dem Neustart brauchte ich wieder etwas Geduld, um alle Kabelkanäle wiederzufinden.

Beim Betrieb auf einem Pi sollte der Nutzer zudem kein Systemupdate einleiten, während eine Aufnahme läuft. Dateien spielt TV-Headend im Transportstream-Format ab, das sich nicht gut vor- und zurückspulen lässt. Nicht zuletzt wies eine Aufnahme des ARD-HD-Programms eine so hohe Bitrate auf, dass Ffmpeg sich weigerte sie umzuwandeln und darauf beharrte, dass die Framerate einen illegalen Wert besitze.

Alles in allem ist TV-Headend bei Fehlermeldungen nicht besonders freigiebig mit Details. Das Webfrontend benötigt mit seiner Javascript-Implementierung ab und zu einen Reload, damit es den aktuellen Status anzeigt. Bei Sendungen, die Fernsehsender mit Surround-Sound ausstrahlen, kommen immer zwei Tonkanäle in der Datei an – einer im AC3-, der andere im MP2-Format ohne Surround-Sound. Zumindest meine Abspielgeräte haben das nicht unterstützt (auch die Auswahl einer anderen Tonspur klappte nicht). Um den Surround-Sound zu genießen, musste Ffmpeg den Stream umwandeln und die MP2-Tonspur ausblenden.

Fazit

Trotz einiger störender Kleinigkeiten erwies sich die Software mit ihrer intelligenten »Autorec« -Funktion und dem einfach zu bedienenden Webfrontend genau als das, was ich gesucht hatte. Dass ein Pi ausreicht, diese Möglichkeiten umzusetzen, macht den Einsatz im Wohnzimmer noch einfacher und interessanter. Ein in einen Blu-ray-Player eingebauter Medienplayer spielt die Aufnahmen ab, wobei er auf das Netzwerklaufwerk zugreift, auf das der Pi seine Filme schiebt.

Da TV-Headend den Einsatz alternativer Frontends wie Kodi (vormals XBMC) erlaubt [5], ließe sich der Pideo-Rekorder auch über den TV-Bildschirm im Wohnzimmer steuern. Allerdings dürfte der dabei entstehende zusätzliche Datendurchsatz die Performance des Raspberry Pi spürbar beeinträchtigen. Insgesamt stellt TV-Headend daher eine runde Lösung für User dar, die einen DVR-Server suchen, aber nicht zwingend auf ein Wohnzimmer-kompatibles Interface zur Fernbedienung angewiesen sind.

Infos

  1. Konstantin Agouros, “Wellenreiten”: Linux-Magazin 10/14, S. 30, https://www.linux-magazin.de/Ausgaben/2014/01/Software-Defined-Radio/
  2. Charly Kühnast, “Flight-Spotting”: Linux-Magazin 11/14, S. 57
  3. TV-Headend: https://tvheadend.org
  4. TV-Headend-Downloadseite: https://tvheadend.org/projects/tvheadend/wiki/AptRepository
  5. XBMC und TV-Headend: http://kodi.wiki/view/PVR/Backend/Tvheadend#Tvheadend_quick_start_guide

Der Autor

Konstantin Agouros arbeitet bei der Xantaro Deutschland GmbH als Technical Lead Security Technologies. Sein Buch “DNS/DHCP” ist bei Open Source Press erschienen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben