Futter für den DVD-Player
Video-CDs und Super-Video-CDs unter Linux erstellen
Video-MPEG-Kodierung und Erzeugen des (S)VCD-Image
Im nächsten Schritt muss mit dem Programm yuvscaler das Video auf VCD- bzw. SVCD-Auflösung skaliert werden, falls es nicht bereits entsprechend aufgenommen wurde. Danach komprimiert mpeg2enc die Videoinformation gemäß MPEG, anschließend werden die getrennten Audio- und Video-Streams vom Multiplexer mplex zusammengeführt. All diese Programme sind Teil der mjpegtools. Zum Schluss schreibt der GNU-VCD-Imager vcdimager [8] den kompletten MPEG-Datenstrom zusammen mit den notwendigen Header-Informationen in zwei Dateien (videocd.cue und videocd.bin). Die letzte als stabil gekennzeichnete Version 0.6.2 liefert jedoch beim Schreiben von SVCDs gelegentlich folgende Fehlermeldung:
(assert (_vcd_salloc_get_highest (obj->iso_bitmap) + 1 == 225))
Diese tritt bei Verwendung der Entwicklerversion 0.7.7 nicht mehr auf. Hier sind die zur Erstellung eines kompletten VCD-Image notwendigen Schritte:
cat cap.yuv | yuvscaler -O VCD | 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
Tabelle 3: Allgemeine und VCD-spezifische Parameter
| Programm | Parameter | Erklärung |
| mpeg2enc,mplex | -f 1 | VCD 2.0 Standardeinstellungen, abweichende Parameter werden ignoriert |
| yuvscaler | -O VCD | skaliert den Video-Datenstrom auf VCD-Auflösung (-O SVCD für SVCDs) |
| mpeg2enc,mplex | -o | Name der Ausgabedatei, %d ist Platzhalter für den laufenden Datei-Index |
| mpeg2enc | -I 0 | Ohne Deinterlacing läuft der Encoder wesentlich schneller. |
| mpeg2enc | -B 224 | Audio-Bitrate in kbit/s |
| mpeg2enc,mplex | -S 800 | Nach 800 MB (einschließlich Audio entsprechend -B) wird eine neue MPEG-Sequenz gestartet. mplex beginnt eine neue Ausgabedatei, wobei der laufende Index anstelle des Platzhalters %d im Namen inkrementiert wird. |
| mpeg2enc | -N | Schneidet hohe Frequenzen ab und dient so als leichte Rauschunterdrückung. Die volle Auflösung erreicht man mit -h statt -N. |
| mpeg2enc | -s | Erzeugt einen Sequenz-Header vor jeder Bildergruppe (GOP). Manche DVD-Player brauchen das für den schnellen Vor- und Rücklauf |
| mplex | -v 1 | Liefert neben Warnungen und Fehlern zusätzliche Informationen |
Da bei einer SVCD die Video-Information mit variabler Bitrate komprimiert wird, sind zusätzliche Angaben notwendig. Hier sind die zur Erstellung eines kompletten SVCD-Image notwendigen Schritte:
cat cap.yuv | 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
Tabelle 4: SVCD-spezifische Parameter
| Programm | Parameter | Erklärung |
| mpeg2enc,mplex | -f 4 | SVCD-Standardeinstellungen, abweichende Parameter werden ignoriert |
| mpeg2enc | -q 12 | Die Quantisierung bestimmt die Encoder-Genauigkeit. Je kleiner der Wert, desto präziser arbeitet der Encoder. Gleichzeitig gehen jedoch Rechenzeit und Dateigröße drastisch in die Höhe. Möglich sind Werte zwischen 2 und 31. Werte zwischen 8 und 12 liefern gute Resultate. |
| mpeg2enc | -g, -G | Bestimmt die minimale und maximale Größe einer Bildergruppe (GOP) im Daten-Stream. Sind diese Werte verschieden, versucht mpeg2enc, Szenenwechsel und I-Frames (Vollbilder) zu synchronisieren. |
| mpeg2enc | -V 230 | Größe des Dekoder-Video-Buffer laut SVCD-Standard. Kann für Software-Dekoder weiter erhöht werden. |
| mplex | -b 230 | Größe des Dekoder-Video-Buffer |
| mplex | -V | Variable-Bitrate-Multiplexing ist für SVCD erforderlich. |
| vcdimager | -t svcd | erzeugt einen SVCD-konformen Header (default: VCD) |
Um ein Gefühl für die Auswirkung der einzelnen Parameter zu bekommen, zeigt Abbildung 3 die Größe der MPEG-2-Videodatei des Films "Lola rennt" für verschiedene Quantisierungswerte und in Abhängigkeit von der Verwendung der Parameter -N oder -h. Kennt man die Laufzeit des Films und die Größe des Audio-Streams (im Beispiel 72 MB), kann man vor der rechenintensiven Video-Komprimierung die Parameter so wählen, dass die fertige MPEG-Datei mit 800 MB gerade noch auf einen 80-Minuten-Rohling passt (im Beispiel -N -q 12). Für andere Laufzeiten muss man entsprechend umskalieren.
Brennen der (S)VCD
Zu guter Letzt wird das Image mit dem Programm cdrdao [9] auf einen Rohling geschrieben. Die Parameter im folgenden Beispiel gelten für einen Yamaha CDR-400t (Treiber generic-mmc) am SCSI-Adapter 0 mit der SCSI-ID 4, LUN 0.
cdrdao write --device 0,4,0 --driver generic-mmc videocd.cue



