Ulrich Hilger
Startseite Programme Artikel und Tipps Demos Info

TV-Aufnahmen mit dem Rechner

16. Januar 2013

 

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: 

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 enthält im Kern die zwei folgenden regulären Ausdrücke:

Der 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 ubuntuusers. Soll eine Aufnahme regelmäßig wiederholt werden, wird cron anstelle von at verwendet. Zur Vereinfachung der Formulierung eines Aufzeichnungsbefehls für gnutv und at kann der Aufzeichnungsplaner verwendet werden.

Nachbearbeiten

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 dem Programm FFmpeg läßt sich das in einem Schritt erledigen.

ffmpeg -i /pfad/zur/quelldatei.ts -c:v libx264 -preset slow -crf 21 -tune film -c:a aac -b:a 128k /pfad/zur/zieldatei.mp4

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. Auch zum Entfernen der so entstandenen überzähligen Teile zu Beginn und Ende der Aufzeichnung eignet sich sehr gut das Programm FFmpeg. Der folgende Befehl entfernt überzählige Teile zu Beginn und am Ende

ffmpeg -ss 00:13:02 -i /media/tv-in/name-der-datei.m4v -to 01:40:09 -c copy out.mp4

Nur Inhalte ab Position 00:13:02 für eine Dauer von 1:40:09 werden in die Datei out.mp4 kopiert. FFmpeg kann auch mit Hilfe von Docker verwendet werden.

Aufnahme ansehen

Stellt der Rechner, auf dem die aufgezeichnete Sendung gespeichert ist, Inhalte z.B. per HTTP oder per Freigabe (NFS, SMB) 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.

Copyright © 2024 Ulrich Hilger, alle Rechte vorbehalten