Futter für den DVD-Player
Video-CDs und Super-Video-CDs unter Linux erstellen
Fazit
xawtv 3.74 bietet im Zusammenspiel mit den mjpegtools 1.6.0 einen zuverlässigen, flexiblen, qualitativ hochwertigen und schnellen Weg, eigene VCDs oder SVCDs zu produzieren. Insbesondere die mjpegtools müssen, was Qualität und Geschwindigkeit betrifft, den Vergleich mit der kommerziellen Konkurrenz unter Windows nicht scheuen, vom Preis ganz zu schweigen. Allenfalls das Fehlen einer grafischen Benutzeroberfläche stellt eine nicht zu unterschätzende Hürde dar.
Um die man-Page von mpeg2enc zu zitieren: MPEG ist ein "barocker" Standard. Er ist mit Parametern und Optionen überladen, die es dem Einsteiger schwer machen, auf Anhieb gute Ergebnisse zu erzielen oder einen Kompromiss zwischen Qualität und Dateigröße zu finden. Mit den vorgestellten Informationen sollte es jedoch kein Problem sein, diese Komplexität in einem Skript oder hinter einer Benutzeroberfläche mit vernünftigen Voreinstellungen und Parameter-Profilen zu verbergen.
Alternative: Aufnahme mit nuppelvideo/exportvideo
Das Projekt Nuppelvideo [10] von Roman Hochleitner stellt deutlich geringere Hardware-Anforderungen. Die Videodaten können seit der Version 0.5.2 ohne Kompression im NUV-Format abgespeichert werden. Das Aufnahmeprogramm nuvrec nutzt dabei eine andere Strategie als xawtv, um die Synchronisation von Bild und Ton zu gewährleisten. Für jeden empfangenen Frame wird ein Interrupt generiert, der dafür notwendigen Parameter für das bttv-Modul heißt fieldnr=1. Nuppelvideo erwartet deshalb unter anderem folgende bttv-Parameter in /etc/modules.conf:
options bttv fieldnr=1 gbuffers=2
Das Programm exportvideo [11] von Alexander Olezant konvertiert die Video-Information in das YUV-Format, das dann von den mjpegtools wie oben beschrieben weiterverarbeitet werden kann. Leider zerlegt nuvrec die Video-Information in 2GB große Dateien, obwohl die 2GB-Grenze für Dateien unter Linux schon lange gefallen ist. Um dies zu korrigieren, muss der Code für diese Aufteilung im Quelltext von nuvrec.c entfernt werden (es genügt dafür, nach MAXBYTES zu suchen). Danach müssen nuvrec, nuvplay und exportvideo mit den den C-Definitionen -D_LARGEFILE_SOURCE und -D_FILE_OFFSET_BITS=64 neu kompiliert werden [6].
Die Instruktions-Folge zur Erstellung einer VCD mit Nuppelvideo sieht nach diesen Patches so aus:
nuvrec -r -S1 -W352 -H288 cap # -r: Raw - Ohne Kompression # -S1: Quelle Composite-Eingang der TV-Karte # -W: Width - Horizontale Aufloesung # -H: Heigth - Vertikale Aufloesung nuvplay -e cap.nuv | toolame -b 224 -p 2 -m s /dev/stdin cap.mp2 # -e: extrahiere Audio-Informationen exportvideo cap.nuv "| mpeg2enc -f 1 -I 0 -S 800 -B 224 -N -s -o cap.m1v" mplex -v 1 -f 1 -S800 cap.mp2 cap.m1v -o cap%d.mpg vcdimager cap1.mpg
Für die Aufnahme einer SVCD muss nur die Auflösung geändert werden, die weitere Verarbeitung geschieht wieder mit den mjpegtools:
nuvrec -r -S1 -W480 -H576 cap nuvplay -e cap.nuv | toolame -b 224 -p 2 -m s /dev/stdin cap.mp2 exportvideo cap.nuv "| mpeg2enc -f 4 -q 12 -I 0 -g 6 -G 18 -V 230 -S 800 -B 224 -N -s -o cap.m2v" mplex -v 1 -f 4 -b 230 -S800 -V -o cap%d.mpg cap.m2v cap.mp2 vcdimager -t svcd cap1.mpg
Leider weisen Bild und Ton bei Nuppelvideo meistens einen Versatz von mehr als einer Sekunde auf. Zwar kann im Mplex-Schritt über den Parameter -O ein Offset gesetzt werden, um die Synchronität zu erzwingen. Allerdings kann man den genauen Versatz nur durch wiederholtes Ausprobieren verschiedener Werte und Anschauen der resultierenden MPEG-Datei mit einem beliebigen MPEG-Software-Player, wie z.B. mit xine [12] herausfinden.
xine cap1.mpg
Infos
[1] bttv-Treiber: http://bytesex.org/bttv/
[2] xawtv-3.7.4: http://bytesex.org/xawtv/
[3] SuSE-xawtv-rpms: http://www.suse.de/~kraxel
[4] mjpeg-tools 1.6.0: http://mjpeg.sourceforge.net
[5] toolame Audio MPEG encoder: http://sourceforge.net/projects/toolame
[6] Linux Large File Support: http://www.suse.de/~aj/linux_lfs.html
[7] Netwide Assembler: http://freshmeat.net/projects/nasm
[8] vcdimager: http://www.vcdimager.org/
[9] cdrdao: http://cdrdao.sourceforge.net
[10] Nuppelvideo 0.5.2a: http://mars.tuwien.ac.at/~roman/nuppelvideo/
[11] Exportvideo.7e-pre9: http://131.130.199.155/~aoe/mystuff/mpeg2_movie-avipatch/
[12] Xine: http://xine.sourceforge.net



