Ulrichs Werkbank

TV-Aufnahmen mit dem Rechner

16. Januar 2013
von Ulrich Hilger
alle Rechte vorbehalten

 

Zeit zum Fernsehen ist knapp bemessen, sie soll möglichst mit Inhalten verbracht werden, die wirklich interessant sind. Damit das gelingt, ist eine individuelle Vorauswahl und Aufzeichnung zu empfehlen. Wie es die Zeit erlaubt, können die Inhalte damit später je nach Laune angesehen werden. Natürlich hält der Handel jede Menge Gerätschaften für diesen Zweck bereit. Vieles hat man aber eventuell auch schon.

Hier einmal die Betrachtung einer Lösung auf der Grundlage eines Linux-Rechners, die aus der Vielzahl der möglichen Programme einige herausgreift, die schnell und unkompliziert zum Ziel führen.

 

Voraussetzungen
Sender finden
     channels.conf für Aufnahmen aufbereiten
Aufnehmen
     Aufnahme für eine bestimmte Zeit einplanen
Nachbearbeiten
Ansehen
Elektrische Fernsehzeitung
Fazit

 

 

Voraussetzungen

Zum Aufzeichnen von Fernsehsendungen genügen: 

  • Ein Rechner mit Linux und ausreichend Speicherplatz,
  • Anschluss an das Heimnetz und an das örtliche Fernsehsignal (DVB-T/-S/-C) und
  • ein TV-Empfänger.

Bei der Auswahl eines passenden TV-Empfängers ist beispielsweise das Wiki von Ubuntuusers hilfreich. Dort ist auch erwähnt, ob für das Gerät der Wahl ein Treiber existiert und wie er nötigenfalls installiert wird.

Ob letztlich die Hardware am eigenen Linux-Rechner erkannt wurde, läßt der Befehl ls /dev/dvb auf der Kommandozeile erkennen. Gibt er die Antwort adapter0 zurück, wurde der Empfänger ins System eingebunden und ist bereit für Wiedergabe und Aufzeichnung.

Sender finden

Das Progamm w_scan durchsucht die vom TV-Empfänger gelieferten Frequenzen und erstellt eine Datei mit den Daten, die man zur Wiedergabe oder Aufzeichnung benötigt. Da sich die Senderbelegung nur selten ändert muss w_scan nur einmal zu Beginn ausgeführt werden. Zum Glück, denn der Sendersuchlauf dauert eine ganze Weile. Zweifellos ist er mit w_scan allerdings bedeutend schneller, als eine vergleichbare Datei in Handarbeit zu erstellen, also Geduld!

w_scan -f c -c DE -X > /pfad/zur/datei/channels.conf

Der obige Befehl erzeugt eine neue Datei namens channels.conf mit der Liste der Kanäle, die über den angeschlossenen TV-Empfänger angesehen werden können. Mehr Informationen z.B. im Wiki von Ubuntuusers.

channels.conf für Aufnahmen aufbereiten

Um die Datei channels.conf von Inhalten zu befreien, die das im nächsten Abschnitt beschriebene Programm gnutv nicht verarbeiten kann, läßt sich beispielsweise folgender Java-Code verwenden:

String baseDir = '/pfad/zur/datei';
BufferedReader reader = new BufferedReader(new FileReader(new File(baseDir, 'channels.conf')));
BufferedWriter writer = new BufferedWriter(new FileWriter( new File(baseDir, 'channels_new.conf')));
String line = reader.readLine();
while(line != null) {
    writer.writeLine(line.replaceAll('\\((.+)\\)', '').replaceAll('[^A-Za-z0-9:_]', ''));
    line = reader.readLine();
}
writer.flush();
writer.close();
reader.close();

Obiger Code läßt sich mit Hilfe von Groovy als Skript ausführen und bereitet nach einem Lauf von w_scan die neu erzeugte Datei channels.conf im Handumdrehen für die Verwendung mit gnutv auf.

Aufnehmen

Mit dem Programm gnutv kann man Sendungen ins Netzwerk streamen oder auf Festplatte aufzeichnen. Bei der Aufzeichnung wird der MPEG-Transportstrom gespeichert, was recht große Dateien ergibt. Ein Spielfilm von zwei Stunden belegt etwa 7 GB auf der Platte. Eine Aufzeichnung wird per Befehl auf der Kommandozeile gestartet.

gnutv -channels /pfad/zur/channels.conf -out file /pfad/zur/zieldatei.ts -timeout 5700 DasErste

Mit diesem Befehl wird 95 Minuten lang DasErste in der Datei zieldatei.ts aufgezeichnet. Die Namen der Sender in der Datei channels.conf dürfen keine Leer- oder Sonderzeichen enthalten, wenn sie von gnutv verwendet werden sollen. Der Benutzer muss sich in der Gruppe video befinden um gnutv ausführen zu können. Mehr Informationen zu gnutv z.B. im Wiki von Ubuntuusers.

Aufnahme für eine bestimmte Zeit einplanen

Um eine Aufnahme für eine bestimmte Zeit einzuplanen wird das Programm at verwendet.

at 00:50 tomorrow
at> gnutv -channels /pfad/zur/channels.conf -out file /pfad/zur/zieldatei.ts -timeout 5700 DasErste
at> <EOT>
job 4 at Wed Jan 16 00:50:00 2013

Mit den obigen Eingaben auf der Kommandozeile wird für den folgenden Tag um 0:50 Uhr die Aufgabe eingeplant 95 Minuten lang DasErste aufzuzeichnen. Die Angabe <EOT> oben steht für "End of Task" und wird von at ausgegeben, wenn man mit [Strg]-[D] die Eingabe beendet. Diese Vorgehensweise eignet sich besonders, um für eine Aufgabe mehrere Befehle einzugeben. Für den einzelnen Aufruf von gnutv läßt sich das Vorgehen auf einen einzelnen Befehl vereinfachen:

echo "gnutv [Parameter]" | at 1500 jan 24

Die Verwendung von at kennt viele Varianten, die über das Internet gefunden werden können, z.B. bei IBM. Soll eine Aufnahme regelmäßig wiederholt werden, wird cron anstelle von at verwendet.

Nachbearbeiten

Häufig beginnen oder enden TV-Beiträge nicht auf die Minute zu den angegebenen Zeiten. Damit beim Aufzeichnen nichts verloren geht wird der Zeitpunkt für Beginn und Ende der Aufzeichnung ausreichend früher bzw. später gewählt. Zum Entfernen der so entstandenen überzähligen Teile zu Beginn und Ende der Aufzeichnung eignet sich sehr gut das Programm DVBCut. Es besitzt auch eine Betriebsart zur Verwendung auf der Kommandozeile und mithin zur Automatisierung.

Wird eine Aufzeichnung später per Streaming über das Netzwerk angesehen, sollte sie zuvor komprimiert werden. Das spart Platz auf der Festplatte und lässt sich besser über das Netz senden. Mit HandBrake gibt es dafür das passende Programm, es kann über eine grafische Oberfläche bedient werden oder über die Kommandozeile.

HandBrakeCLI -i /pfad/zur/quelldatei.ts -o /pfad/zur/zieldatei.mp4 -e x264 -q 22 -B 160

Mit dem obigen Kommando wird z.B. die zuvor erwähnte rund 7 GB große Datei zu einer Datei mit 1 GB komprimiert ohne dass nennenswerte Qualitätseinbußen entstehen. Mehr Informationen in der Dokumentation von HandBrake.

Leider funktioniert DVBCut nicht mit HD-Inhalten. Es wäre traumhaft, wenn sich der Entwickler dazu hinreißen ließe, das in sein geniales Programm einzubauen. Ansonsten wäre ich dankbar für Fingerzeige, welches Programm Vergleichbares für HD-Inhalte leistet.

Aufnahme ansehen

Stellt der Rechner, auf dem die aufgezeichnete Sendung gespeichert ist, Inhalte z.B. per HTTP oder per Samba-Freigabe im Netz bereit, genügt zum späteren Ansehen der Sendung ein beliebieges Gerät mit einem der vielen Programme zum Abspielen von Videos. Stellvertretendend sei hier der Video LAN Client (VLC) genannt, der für alle möglichen Apparate wie Linux-, Mac-, Windows-PC, Mobiltelefone und Tablets mit iOS oder Android gleichermaßen erhältlich ist. Auch wohnzimmertaugliche Abspieler wie z.B. der Raspberry Pi geben die so bereitgestellten Videos klaglos wieder.

Elektrische Fernsehzeitung

Der Beitrag wäre nicht vollständig ohne eine Möglichkeit zu erwähnen, wie vom Rechner aus das Fernsehprogramm studiert werden kann. Der TV-Browser ist hierfür ein universelles Mittel, das Programm läuft so ziemlich überall und ist an Vielfalt kaum zu übertreffen. Mein Tipp: Ausprobieren!

Fazit

Für Linux gibt es eine große Zahl an Programmen, die für Aufzeichnen, Bearbeiten und Ansehen digitaler Fernsehsendungen benutzt werden können. Während es auch umfangreiche, hochintegrierte Komplettlösungen gibt, greift dieser Beitrag Anwendungen heraus, die mit sehr geringem Aufwand zum Ziel führen. Sie eigenen sich auch für die Herstellung eines individuell automatisierten Ablaufs für TV-Aufzeichnungen und erfordern anders als manch andere Lösung keinen PC im Wohnzimmer.

Besorgt man sich für kleines Geld den passenden TV-Empfänger bringt ein einfacher Rechner alles mit was man braucht, um keine Sendung aus dem Fernsehen zu verpassen.