Lieblingsserien auf DVD brennen, Bluray-CDs erzeugen, Videos hochauflösend digitalisieren: Der Personal Video Recorder von Hauppauge macht’s möglich, indem er analoge Signale in digitaler Höchstqualität aufzeichnet.
Hersteller Hauppauge spendiert dem Windows-Nutzer auf dem seit Anfang September in Deutschland erhältlichen analog-digitalen Videorekorder (Abbildung 1) allerlei Aufzeichnungs- und Umwandlungssoftware. Linux-Foren berichten hingegen, dass für Linux noch nicht mal ein Treiber zu erwarten sei [1]. Mitte Juni verkündete jedoch Janne Grunau auf der MythTV-Entwicklerliste die Verfügbarkeit seines Treibers, der “höchste Alpha-Qualität” habe [2].
Für unseren Test verwendeten wir die Treiber-Version vom 21. November 2008. Als mobiles Testsystem dienten ein MSI-Notebook mit AMD-Turion-Dualcore unter Ubuntu 8.10. Als Desktop kam ein Rechner mit dem Asus-Board M3A78-EM und einem AMD-Quadcore-Phenom unter Opensuse 11.1 RC2 zum Einsatz. Beide Systeme arbeiten mit dem AMD-Grafikchipsatz 780G, auf der Asus-Platine versieht die Desktop-Version ihren Dienst, im Notebook die Mobil-Variante. Als HD-Aufzeichnungsgerät nutzten wie eine JVC-HD-Digitalkamera mit Component- und AV-Ausgang.
Die Hardware
Der Hauppauge-PVR legt Filme im High-Definition-Format auf der Festplatte ab. Dazu führt er analoge Videosignale aus dem Quellmedium heraus und benutzt entweder den S-Video-Anschluss, das gelbe Composite-Videosignalkabel mit weiß-roten Audiosteckern (Abbildung 1) oder das rot-blau-grüne Komponentenvideo-Bündel (Abbildung 2). Die Audiosignale nimmt der Rekorder über optische S/P-DIF-Schnittstellen oder die Klinkenstecker des Composite-Bündels entgegen.

Abbildung 1: Der High-Definition-Rekorder von Hauppauge ist seit Herbst im deutschen Handel und kostet rund 150 Euro.

Abbildung 2: Der PVR sieht Videosignale über S- oder Composite-Video an der Vorderseite. An der Rückseite finden sich neben optischen Schnittstellen auch solche für Component-Video.
An einen Videorecorder, DVD-Abspieler oder HDTV-Empfänger angeschlossen, komprimiert der Rekorder die Videodaten nach dem H.264-Verfahren (MPEG-4/AVC). Im Vergleich zu MPEG-2 erzielt MPEG-4 bei geringerem Platzverbrauch eine deutlich bessere Bildqualität und eignet sich damit ideal zur High-Definition-Aufzeichnung. Die Audiodaten fügt der Rekorder im AAC-Kompressionsformat hinzu (Advanced Audio Coding). Schließlich transportiert der PVR das MPEG-4-Format als Streaming-Datei (Endung: .ts) über USB auf den angeschlossenen Rechner.
Erst mal klonen
Der Entwickler des PVR-Treibers arbeitet mit dem Versionierungssystem Mercurial. Es ermöglicht verteilte Repositories, sodass jedem Programmierer ein lokaler Entwicklungsverzeichnisbaum zur Verfügung steht, in dem er offline arbeitet. Der Anwender der Treibersoftware kopiert sich ebenfalls das komplette Repository auf die Festplatte, bevor er den Treiber kompiliert.
Möchten Sie das Treiber-Binary unter Ubuntu 8.10 bauen, richten Sie dazu zuerst die Build-Umgebung mit den Kompiliertools, das Mercurial-System und die Linux-Kernel-Header samt Übersetzungsinformationen für den aktuell vorhandenen Kernel ein (Listing 1, Zeile 1). Anschließend klonen Sie das Mercurial-Repository des Treiberentwicklers [3] in das aktuelle Verzeichnis (Listing 1, Zeile 2). Dabei entsteht das Unterverzeichnis /hdpvr, das neben dem HDPVR-Treiber den kompletten Quellcode der DVB- und Video-for-Linux-Treiber (V4L) enthält.
$ sudo apt-get install build-essential mercurial linux-headers-`uname -r` $ hg clone http://hg.jannau.net/hdpvr/
Unter Opensuse 11.1 RC2 genügt es, mit dem Befehl sudo zypper install mercurial Mercurial zu installieren. Das Repository mit dem HDPVR-Treiber wandert auch hier mit dem Clone-Kommando aus Listing 1 auf die Platte.
Wie am Schnürchen
Auf dem Ubuntu-System ließ sich der Treiber reibungsfrei per make kompilieren und mit make install installieren. Anschließend lädt sudo modprobe hdpvr den neuen Treiber als Modul in den Kernel. Rufen Sie jetzt lsmod auf, erscheint hdpvr in der Liste der geladenen Module. In der Spalte rechts daneben sehen Sie, welche anderen Module der HDPVR-Treiber benutzt, wie etwa die Videogeräte-Registrierung videodev, das Modul v4l2_compat_ioctl32 für die Kompatibilität zwischen 32-Anwendung und 64-Bit-System oder – da es sich bei dem Rekorder um ein USB-Gerät handelt – das USB-Modul usbcore.
Bei Opensuse machte die Make-Routine zunächst Schwierigkeiten. Produziert der Übersetzungsvorgang Meldungen wie in Listing 2, dann sollten Sie nachsehen, ob der Kernel-Quellcode auf dem System vorhanden ist. Fördert die Abfrage rpm -qa | grep kernel kein Paket namens kernel-source zu Tage, installieren Sie den Kernel-Quellcode mit sudo zypper install kernel-source nach. Das make des HDPVR-Treibers läuft anschließend reibungslos ab und braucht wie bei Ubuntu gut zehn Minuten.
$ make […] File not found: /lib/modules/2.6.27.7-6-pae/build/.config at ./scripts/make_kconfig.pl line 32, <IN> line 4. make[1]: * Keine Regel vorhanden, um das Target ».myconfig«, benötigt von »config-compat.h«, zu erstellen.
… und Action!
Zur Aufzeichnung muss der aus dem Rekorder zum Rechner geführte Stream in eine MPEG-Datei fließen. Um die Adresse des als Video-Device eingehängten HD-Rekorders herauszufinden, werfen Sie einen Blick in das Kernellog:
$ sudo tail -f /var/log/messages
Anschließend leitet ein Cat-Kommando den Datenstrom aus dem Video-Device in eine TS-Datei um. Für N setzen Sie dabei die vorher ermittelte Device-Nummer ein:
$ cat /dev/videoN > datei.ts
Mit etwa zwei Sekunden Verzögerung startet der HDPVR mit der Aufnahme. Dabei kümmert ihn wenig, ob es auch tatsächlich bereits etwas zum Aufnehmen gibt – Cat überführt unbeirrt die beim Video-Eingang ankommenden Daten in die Streaming-Datei. Dass der Rekorder gerade aufnimmt, erkennen Sie daran, dass dass an seiner Vorderseite neben dem blauen Power-LED ein rotes Aufnahmelicht leuchtet. Außerdem scheint es unter dem deckelartigen Aufsatz des Geräts blau hervor.
Pannenhilfe
Auf beiden Testsystemen klappte die Aufzeichnung des Streams – aber das gelang nicht ganz ohne Pannen. So lud etwa Linux das neue Modul nicht auf Anhieb.
Das HDPVR-Howto [4] bei MythTV.org weist für diesen Fall als potenzielle Fehlerursache aus, dass der Treiber cx88-dvb für den Capture-Chip des HD-Rekorders möglicherweise doppelt im System liegt. Das kommt daher, dass dieses Kernelmodul zum HDPVR-Treiberpaket zählt und mit bereits vorhandenen Versionen in Konflikt gerät. Der Konflikt der cx88-Treiberversionen hindert dann den Start des HDPVR-Treibers. Ein Locate-Kommando fördert zu Tage, Ob es solche konkurrierenden cx88-dvb-Objektdateien gibt, prüfen Sie mittels des Befehls:
$ locate cx88-dvb.ko | grep `uname -r`
Findet sich dabei ein doppeltes Lottchen, verschieben Sie die rivalisierende Moduldatei in ein Backup-Verzeichnis und starten den Rechner neu.
Erzeugt die PVR-Aufnahme zwar eine TS-Datei, die aber leer bleibt oder viel zu kurz gerät, ist der Treiber abgestürzt. Das zeigte sich im Test zum Beispiel darin, dass die Aufnahmen-LED am Rekorder beim Start der Stream-Aufzeichnung nur kurz aufleuchtete und nach etwa vier Sekunden wieder erlosch. Der aufgezeichnete Film fiel entsprechend kurz aus, obwohl Cat in der Shell scheinbar fleißig vor sich hin werkelte: Es ließ sich nicht davon stören, dass der PVR nichts zur Aufzeichnung an den Rechner weitergab (Abbildung 3).
Abbildung 3: Die Datei ist null Byte groß (links). Das Cat-Kommando läuft (rechts), speist jedoch nichts in die Datei ein.
Das Cat-Kommando beschwert sich allerdings, wenn es über den angegebenen Device-Ausgang keinen Zugriff auf den Rekorder hat. Es erscheint dann die Fehlermeldung cat: /dev/video0: Bad address. Hier kann helfen, den Rekorder einfach neu zu starten. Dabei passiert es aber gelegentlich, dass die Nummer des Video-Devices, mit dem Linux den PVR einbindet, bei jedem Aus- und Anschalten um Eins hochzählt (Abbildung 4). Dann müssen Sie nach jedem Neustart des Rekorders das Ziel des Cat-Kommandos entsprechend anpassen, sonst hagelt es Beschwerden.

Abbildung 4: Ein Neustart des Rekorders per Netzschalter setzt den Treiber wieder in Gang, verschafft ihm aber unter Umständen ein anderes Mount-Device.
Wenn auch das nicht hilft, entfernt das Kommando sudo rmmod -f hdpvr den Treiber. Die Force-Option -f sorgt dafür, dass Crmmod den Treiber auch dann entfernt, wenn er abgestürzt ist und sich anders nicht mehr erreichen lässt. Anschließend bindet das Modprobe-Kommando den Treiber neu ein, eventuell ist noch ein Neustart nötig.
Film ab
Liegt das HD-Video endlich auf der Platte, folgt erst einmal Ernüchterung: Videospieler wie Mplayer, VLC oder Xine zeigen den unbearbeiteten Film nur ruckelnd, in Zeitlupe oder mit anderen Macken an. Da der AMD-Chipsatz unserer Testsysteme laut Spezifikation High-Definition-Video unterstützt, liegt hier wohl ein Treiberproblem vor. Wer eine Nvidia-Karte benutzt und ein wenig Bastelarbeit nicht scheut, sollte sich den Blogeintrag von Christof Franke anschauen, der für Gentoo einen Workaround entwickelt hat [5].
Um die aufgezeichneten Filme aber auf dem vorhandenen System anzuschauen, hilft nur das Herunterskalieren der Auflösung. Was sich theoretisch recht einfach anhört, stellt sich in der Praxis als schwierig heraus. Mit dem Konvertierer Ffmpeg führen weder die Option -target DVD noch -vcodec mpeg2video oder -s svga zu einem befriedigenden Ergebnis. Mit der fps-Rate herumzuspielen half ebenso wenig wie die Optionen in Mencoder, die die Auflösung verringern sollen.
Nach einigem Herumprobieren fanden wir Mencoder-Optionen, die das Video auch für das Notebook in eine abspielbare Auflösung bringen. Dabei laufen Bild und Ton synchron, und auch die Dateigröße hält sich in Maßen. Der Knackpunkt ist die mc-Option, die die maximale Audio-Video-Synchronisationskorrektur pro Frame und Sekunde angibt.
Mit dem Befehl aus Listing 3 dauert es etwa zwei Minuten, um ein einminütiges Video von 63 MByte Größe in eine abspielbare Datei mit SVGA-Auflösung zu verwandeln, die nur noch 10 MByte Platz braucht. Bei der Angabe des Video-Codecs (Option -ovc) sorgt lavc dafür, dass die Zieldatei handlich ausfällt. Belässt man mit -ovc raw den Video-Output beim ursprünglichen Codec, wächst die Datei auf mehrere Gigabyte an. Die Bildqualität bleibt jedoch fast gleich. Fazit: Das mit dem HD unter Linux üben wir nochmal – bis dahin lohnt sich die Anschaffung eines HD-Rekorders eher nicht.
$ mencoder stream.ts -mc 1 -vf scale=800:600 -o stream.avi -oac mp3lame -ovc lavc -lavcopts aspect=16/9
Glossar
-
S/P-DIF
-
Sony/Philips Digital Interface, eine Bus- und Schnittstellenspezifikation für die Übertragung digitaler Audiosignale.
-
MPEG-4/AVC
-
MPEG-4 with Advanced Video Coding, ISO/IEC 14496-10. Standard zur Videokompression, erreicht typischerweise eine rund dreimal höhere Codiereffizienz als MPEG-2 (H.262).
-
AAC
-
Advanced Audio Coding. Verlustbehaftetes Kompressionsverfahren für Audiodaten, mit dem MPEG-2-Standard spezifiziert.
-
fps
-
Frames per second. Bildfrequenz in Bildern pro Sekunde.
[1] Fehlende Linux-Treiber: http://www.gossamer-threads.com/lists/mythtv/users/328632
[2] Announcement des HDPVR-Alpha-Treibers: http://www.gossamer-threads.com/lists/mythtv/dev/337302
[3] Repository des HDPVR-Treiberentwicklers: http://hg.jannau.net/hdpvr
[4] HDPVR-Howto bei MythTV.org: http://www.mythtv.org/wiki/index.php/Hauppauge_HD-PVR
[5] Basteln für HD mit Nvidia: http://blog.wurzt.de/index.php/2008/12/09/linux-hd-videos-mplayer-vdpaunvidia-driver-18006-ebuild





