Profilösung zur Erstellung einer SVCD


 
Na, gehören Sie auch zu den Leuten, die einfach keine richtige Video- oder Super Video CD hinbekommen? Egal was Sie mit Nero oder WinOnCD brennen, es wird alles "Schrott".

Entweder Sie haben Pausen in Ihrem Video, oder das Video spult nicht, oder der Player zeigt keine Zeitangabe, oder er springt nicht mit der GOTO-Funktion auf eine bestimmte Stelle im Video, oder er spielt es gar nicht ab, oder, oder....

Wollen Sie mal eine professionelle Lösung testen? Und auch eine Lösung, die noch kostenlos ist?

Dann empfehle ich Ihnen das Authoring-Programm GNU VCDImager von Herbert Valerio Riedel.

Der noch junge aber wirklich geniale Autor der Software studiert zur Zeit an der Technischen Universität in Wien Technische Physik und Informatik.

Nun gab es gerade im Linux/Unix-Bereich verschiedene Programme zur MPEG-Kodierung und auch zum Schreiben auf CDR - Medien. Jedoch fehlte die Komponente zwischen diesen beiden.

Sein Hobby, sich mit Programmiersprachen und speziell mit GNU/Linux zu beschäftigen, und sein Interesse an DVDs kombinierte er und entwickelte Anfang 2000 ein solches Authoring-Tool.

Leider gab es zu diesem Zeitpunkt eher spärliche bis gar keine verfügbaren Informationen zum Aufbau des Video-CD - Formats, so dass er im Trial-and-Error - Verfahren das Format auf der Grundlage von fertigen Video-CDs reverse-engineeren musste.

Nach einiger Zeit der "Forschung" konnte er schließlich im September desselben Jahres die erste Version 0.1 vorweisen.

Heute sind wir bei der Version 0.7.9 und das Programm läuft nicht nur unter Linux/Unix!


Gleich vorweg eine Warnung: Wenn Sie noch nie mit Command-Line-Befehlen gearbeitet haben, sollten sie sich gut überlegen, ob Sie sich damit rumschlagen wollen. Das Programm ist eher für den Poweruser als für den Anfänger gedacht. Doch die Einarbeitung in das Thema wird mit einem tollen Ergebnis belohnt und auch der Anfänger kann mit den richtigen Hilfsmitteln ganz ausgezeichnete Ergebnisse erzielen.

GNU VCDImager steht für GNU Video CD Image Maker

Das GNU-Projekt wurde vor knapp 20 Jahren gestartet, um damals ein vollständig freies Unix-artiges Betriebssystem zu entwickeln - das GNU System.  GNU steht für "GNU ist nicht gleich Unix". Wer zu dem Thema mehr wissen will, dem seien folgende Quellen empfohlen :


Erschrecken Sie nicht. Ich will Sie nicht in Richtung LINUX oder UNIX führen.

Das VCDImager-Tool ist zwar offizielles Teil des GNU Projektes, jedoch läuft es nicht nur in der Linux/Unix-Welt, sondern auch unter MacOS und Win32 - hier z.B. in einer DOS-Box.

Was macht das Programm denn nun wirklich. Wenn Sie so wollen, ist der GNU VCDImager eine Teilmenge von Nero oder WinOnCD. 

Es macht also auch aus einem MPEG-File eine VCD oder SVCD. 

Nun können Programme wie Nero oder WinOnCD viel mehr als der GNU VCDImager - aber dafür kann der GNU VCDImager das was es macht - viel besser!

Schauen wir uns zuerst einmal die doch sehr kryptischen Parameter der Software an:

Usage: VCDIMAGER [OPTION...] 
-t, --type=TYPEselect VideoCD type ('vcd11', 'vcd2'
 or 'svcd') (default: 'vcd2')
-c, --cue-file=FILEspecify cue file for output (default:
 'videocd.cue')
-b, --bin-file=FILEspecify bin file for output (default:
 'videocd.bin')
-l, --iso-volume-label=LABELspecify ISO volume label for video cd
 (default: 'VideoCD')
--iso-application-id=LABELspecify ISO application id for video
 cd (default: '')
--info-album-id=LABELspecify album id for video cd set
 (default: '')
--volume-count=NUMBERspecify number of volumes in album set
--volume-number=NUMBERspecify album set sequence number (<
 volume-count)
--broken-svcd-modeenable non-compliant compatibility
 mode for broken devices
--sector-2336use 2336 byte sectors for output
--add-dir=DIRadd directory contents recursively to
 ISO fs root
--add-file=FILE,ISO_FILENAMEadd single file to ISO fs
--add-file-2336=FILE,ISO_FILENAMEadd file containing full 2336 byte
 sectors to ISO fs
-p, --progressshow progress
-v, --verbosebe verbose
-q, --quietshow only critical messages
-V, --versiondisplay version and copyright
 information and exit
  
Help options: 
-?, --helpShow this help message
--usageDisplay brief usage message

Ich will die Parameter hier nicht im Detail erklären, das macht das ausführliche Handbuch viel besser als ich das je kann, ich möchte Sie einfach nur abschrecken.

Sie wollen sich nicht abschrecken lassen? Sehr schön, kann ich da nur sagen. Es wird auch wieder einfacher und verständlicher. Denn ich gehöre auch nicht zu den Leuten, die sich gerne mit solchen Befehlsstrukturen rumschlagen.

Nun gibt es im Internet fast nichts was es nicht gibt. Und so gibt es zu diesem Tool auch ein GUI, ein Grafisches User Interface. 

Clevere Programmierer haben sich hingesetzt und für das o.a. Programm ein schönes Windows-Tools programmiert, mit dem der Umgang fast zu einem Kinderspiel wird. Eines dieser Programme finden Sie auf der für den Videofreund recht interessanten Seite http://www.vcdhelp.com

Und so starten wir auch unsere Downloadreise ins Internet unter http://www.vcdhelp.com/vcdimagereasy.htm. Hier können Sie direkt eine grafische Benutzeroberfläche für den VCDImager herunterladen.  (Zwischenzeitlich ist in Laufe der Jahre aus einer Freeware eine kommerzielle Version unter  http://www.vcdeasy.org/ daraus geworden.

Nun finden Sie auf den o.a. Webseite schöne Programmbeschreibungen in englischer Sprache. Da viele EDV-TIPP-Leser damit aber so das ein oder andere Problem haben, will ich versuchen, die praktische Anwendung des Programms zu beschreiben.

Dabei werden zwei oder mehr MPEG-2-SVCD-Streams zu einem ganzen Stream zusammengesetzt und diese mittels VCDImager zu einer SVCD gebrannt. Ziel ist es, einen SVCD-Stream zu erzeugen, der keine Pause zwischen den einzelnen Stücken macht. Auf keinem DVD-Player.


Wir beginnen damit, das wir zwei oder mehr Files zu einem einheitlichen File verbinden.

Warum machen wir das?

Die IEC62107-Norm schreibt auf einer CD zwischen zwei MPEG-Segmenten einen Freiraum von mind. 150 Sektoren vor. Der MPEG-Stream startet also mit einer Pause von 150 leeren Sektoren.

Was machen denn nun die Brennprogramme?

Schauen wir uns zuerst Nero von Ahead an. Eine SVCD geschrieben im Disk-AT-Once-Modus:


Analyse einer mit Nero 5.5.2.4 erstellen SVCD

 

Wenn wir uns das o.a. Bild (erstellt mit IsoBuster http://www.IsoBuster.com) ansehen, so können wir erkennen, dass das erste MPEG-Segment bei LBA (Logical-Block-Adressing) 750 beginnt. Im eingeblendeten Fenster sehen wir, dass dieser Stream 1146 Blöcke lang ist.

750 + 1146 ist gleich Block 1896. Der nächste Stream fängt aber erst bei Block 2068 an. Zwischen den beiden Streams ist also ein Leerraum von 172 Blöcken oder Sektoren wie man auch sagt.

Nun ist es dabei vollkommen egal, ob Sie mit Nero DAO (Disk-AT-Once) oder TAO (Track-AT-Once) schreiben. Die 172 Blöcke bleiben. Auch ein Update auf Version 5.5.3.5 bringt keine Änderung.

 

Nun ist es nicht egal, ob Sie eine (S)VCD im DAO- oder TAO - Modus produzieren. Für mich gibt es da nur eine Methode um sicherzustellen, dass das Authoring-Programm und das Brennprogramm die volle Kontrolle über den Prozess haben - den DAO-Modus.

Im Gegensatz zum DAO- wird im TAO-Modus ja der Laser beim Brennen zwischen den einzelnen Tracks kurz abgeschaltet. Nach meiner Kenntnis führt das aber dazu, dass zwei zusätzliche "Linksektoren" eingeführt werden. Nicht gerade förderlich für das "ruckfreie" Abspielen von (S)VCDs. Und auch nicht gerade förderlich um die richtigen "entry points" zu finden und anzuspringen.


Doch zurück zum Thema:

WinOnCD von Roxio hält sich im Gegensatz zu Nero an der unteren Grenze von 150 Blöcke!


Analyse einer mit WinOnCD Ver 3.8 (incl. Update) erstellen SVCD

 

In unserem Beispiel: Start 1052 + Länge 1087  + 150 Blöcke Pause =  Block 2289 als Startadresse für das nächste MPEG-Segment.


Nun wundern sich die User immer wieder, dass zwischen den einzelnen MPEG-Streams auf einer SVCD Pausen auftreten, oder dass sich Player "verschlucken".

DVD-Player reagieren recht unterschiedlich auf solche Pausen - ob sie nun 150 oder 172 Sektoren lang sind ist im Prinzip schon fast egal. Aber in der Regel führt ein solcher Leerbereich zu einer merkbaren Unterbrechung im Videofilm.

Wir erinnern uns: Die SVCD wird mit 2 x 75 Sektoren / Sekunde abgespielt. Die VCD mit 1 x 75 Sektoren. Wie lang denn nun die Pausen wirklich ist, können Sie recht leicht selbst ausrechnen.

Nero nutzt die Segmentierung eines Streams dazu, mehr oder weniger hübsche Eingangsbilder zu erzeugen.

Nun frage ich mich ernsthaft, was soll das? Gut, Nero versucht damit DVD-like "Chapters" zu erzeugen - also einzelne Kapitel, die man anspringen kann. Doch sollte man da nicht besser einen langen zusammenhängenden Stream nehmen, um über "entry points" quasi seitlich in den MPEG-Stream hineinzuspringen?


Ich für meinen Teil bevorzuge lange einheitlich, nahtlose Streams, die auf jedem Player ohne Pause laufen. Und einen solchen Stream wollen wir als Grundlage nehmen. Zwar beschreibe ich das mit den "entry points" hier nicht, aber die Spezialisten unter den Lesern kennen die notwendigen Werkzeuge um einen solchen Film zu produzieren.

Wir machen also im ersten Schritt "nur" einen nahtlosen Film ohne Pausen und ohne Eingangsbild. Dafür wird das aber eine SVCD, die auf sehr vielen SVCD-fähigen-DVD-Playern läuft.


Gehen wir mal davon aus, dass Sie einzelne sep. Stream vorproduziert haben und diese verbinden wollen. 

Am einfachsten und billigsten geht das mit TMPGEnc. Nutzen Sie dafür nach Möglichkeit eine der neueren Versionen (>Beta 12g), da die ersten Versionen bei dieser Funktion noch fehlerbehaftet waren.

Gehen Sie über "File" und "MPEG-Tools..." und wählen Sie die Karteikarte "Merge & Cut".

Über "Add" wählen Sie sich die Files aus, die Sie ohne Pause verbinden wollen. Danach stellen Sie als Type "MPEG-2 Super VideoCD (VBR)" ein. Zum Schluss definieren Sie im Output-Pfad noch einen File-Namen.

Ein Klick auf "Run" startet die Operation. Sind die Files unterschiedlich, so bekommen Sie evtl. folgende Fehlermeldung:

Haben Sie alle richtigen Files zusammen, können Sie mit einem Doppelklick auf einen Eintrag in der Liste ein File auswählen:

 

Schließen Sie das Fenster mit "OK" ab und starten Sie den Prozess mit "Run".

Nach beendeter Arbeit können Sie die Maske schließen und TMPGEnc verlassen.


Im folgenden Schritt wollen wir nun mit dem GNU VCDImager und dem Programm VCDImagerEasy arbeiten.

Wenn Sie sich das o.a. ZIP-File oder ein einsprechend neueres File von der Website heruntergeladen habe, so entpacken Sie das File in ein Verzeichnis Ihrer Wahl:

Nun ist nicht immer sichergestellt, dass in dem ZIP-File auch die neuste Version von GNU VCDIMager enthalten ist.

Wir gehen deshalb direkt auf http://www.hvrlab.org/~hvr/vcdimager/

Unter http://vcdimager.hvrlab.org/pub/vcdimager/ finden Sie die verfügbaren Versionen. Hier können Sie schauen, ob Sie die aktuelle "stabile" Version haben und - sofern es eine neuere gibt - diese direkt in das o.a. Verzeichnis "entpacken".

Aber Achtung: Herr Riedel weist auf seiner Website immer ausdrücklich auf die stabilen und "unstable" Versionen hin. Beachten Sie dies bitte, um bei Ihren Versuchen all zu viel CD-Schrott zu vermeiden.


Starten Sie im nächsten Schritt das Programm VCDImagerEasy, wählen Sie den "VideoCD type" aus. Hier SVCD nach der Spezifikation 1.0. 

Fügen Sie nun über "Add" Ihr fertiges File ein:

So, im Prinzip sind Sie nun schon fast fertig. Im Feld "Bin Output File" definieren Sie im Zweifel noch den Pfad und den Namen Ihres Ausgangsfiles (in meinem Beispiel videocd.bin bzw. videocd2.bin).

Wollen Sie aber Ihrem Spieltrieb noch nachgehen, so können Sie in der o.a. Maske rechts oben noch einen Haken bei "Advanced Mode" machen. Jetzt stehen Ihnen noch ein paar zusätzliche Menüs zur Verfügung, wie z.B. das "ISO Files" - Menü:

Hier können Sie die spätere Struktur der SVCD sehen und noch weitere Unterverzeichnisse, ggfl. mit Textfiles etc., unterbringen.

Doch kommen wir zurück zu unserer Ausgangsmaske. Klicken Sie dort auf "Go" und warten Sie, bis der Prozess abgeschlossen ist.

Im Bereich "Log" können Sie zwischenzeitlich sehen was abläuft.

Schauen wir uns den Bereich "Command Lines" einmal genauer an, so sehen wir dort

"C:\PROGRAMME\GNUVCDIMAGER\vcdimager.exe" -p -tsvcd -l"VIDEOCD" --volume-count=1 --volume-number=1 -b"D:\Download\Test\videocd2.bin" -c"D:\Download\Test\videocd2.cue" "D:\Download\Test\fertig2.mpg" 

Das ist genau die Befehlsfolge, die Sie im MS-DOS-Modus am DOS-Prompt hätten eingeben müssen


Das Programm VCDImager Easy hat nun dem eigentlichen Programm, dem GNU VCDImager, über diese Befehlsfolge den Auftrag erteilt eine CD Image-Datei zu erstellen. Sie mussten sich also nicht mit den kryptischen Befehlen auf DOS-Ebene herumschlagen. Das Programm "VCDImager Easy" hat Ihnen als Grafisches User Interface (GUI) die Arbeit abgenommen.

Das Ergebnis sind zwei Dateien mit den Namen

  • videocd.bin 

  • videocd.cue

Das interessante an der Programmkombination ist nun nicht das Programm "VCDImager Easy", sondern der "GNU VCDImager".

Die Software beschreibt die Struktur einer VCD oder SVCD mittels XML-Statments. Vergleiche dazu: http://www.hvrlab.org/~hvr/vcdimager/xml_repository.html.


Was ist XML?

XML ist die Abkürzung für Extensible Markup Language und eine Teilmenge von SGML. 

SGML erlaubt es, Auszeichnungssprachen für Texte zu entwerfen. Die bekannteste Anwendung von SGML ist HTML. SGML bildet damit einen Grundpfeiler des World Wide Web.

XML wurde also eigentlich vom World Wide Web Consortium für den Einsatz im WWW entwickelt.


Herbert Valerio Riedel hat sich nun entschieden, XML zur Beschreibung von Video CDs zu verwenden, da er für sein Projekt kein neues Format definieren wollte und um auch auf bestehende Tools und Parser zurückgreifen zu können.

[Ein Parser ist nun ein Programm, das bestimmte syntaktische Strukturen erkennen und nach bestimmten Regeln weiterverarbeiten kann, z.B. Compiler, Browser, Datenbanken (beim Import von ASCII-Text)].

Ich will hier nicht auf die Einzelheiten der Programmierung eingehen, da sie einerseits einen Laien überfordern und anderseits den Profi langweilen. Sie finden dazu im Internet genügend Informationen. So z.B. das Programm VCD2XML mit dessen Hilfe Sie solche XML-Abläufe erstellen können.

Das Ergebnis, also das Output-File eines solches Programms, das wiederum an den "GNU VCDImager" übergeben wird, sieht dann etwa so aus:


Ausschnitt eines XML-Ablaufs


Also, hier eine SVCD mit Eingangsmenü. Ich will im Rahmen dieses EDV-TIPPs nicht weiter auf diese Entwicklungen eingehen, da das wirklich nur was für die Power-User ist. 

Aber wer will, kann sich die Ergebnisse mal unter http://vcdimager.hvrlab.org/pub/vcdimager/examples/demovcd/ ansehen. Dort finden Sie einige typische Beispiele von fertigen VCDs vor. Diese müssen Sie nur noch auf CD brennen.

Alternativ können Sie sich aber mit Hilfe der Daemon Tools ( http://www.daemon-tools.com) auch ein virtuelles CD-ROM-Laufwerk (PHANTOM CDROM) anlegen und die Demo-VCDs dann direkt auf dem Rechner mit geeigneten Software DVD-Playern ansehen.

Sie müssen dabei aber beachten, dass nicht alle Software-Player die Eingangsmenüs richtig anzeigen.

Michael Tam hat übrigens eine Beschreibung mit den wichtigen VCDImager-Kommandos zu diesem Thema ins Web gestellt:   http://www.geocities.com/medinotes/vcd/general_xml_structure.html 

Eine Diskussion dazu finden Sie im Internet z.B. unter: http://www.vcdhelp.com/phpBB/viewtopic.php?topic=51309&forum=1 


Wichtig scheint mir im Zusammenhang mit den verfügbaren GUIs auch noch der Hinweis, dass leider kein GUI alle Fähigkeiten des VCDImager unterstützt. Aber das ist halt nun so, wenn man Motor und Karosserie unabhängig voneinander entwickelt. Was wie auf den ersten Blick wie ein Nachteil aussieht, ist aber ein Vorteil, denn die offene XML-Schnittstelle inspiriert sicher weitere Programmierer auf den VCDImager aufzusetzen.


Kommen wir jedoch auf unsere oben erstellte Imagedatei zurück:

Nach meiner Kenntnis kann nun Nero z.B. auch eine bin-Datei zu einer CD machen - Sie sollten jedoch die Finger davon lassen, da dabei nach Berichten aus verschiedenen Foren Probleme auftreten können.

Eine kostenlose Lösung finden Sie unter http://cdrdao.sourceforge.net/.

Das Programm CDRDAO unterstützt:

  • FreeBSD
  • Irix
  • Linux
  • Solaris
  • HP-UX
  • Win32
  • OS/2

Hat aber auch den Nachteil kryptisch zu sein. Vermutlich ist es nur noch eine Frage der Zeit, bis jemand sowohl GNU VCDImager als auch CDRDAO unter einem gemeinsamen GUI (unter Windows) vereint.

Wer Alternativen sucht, ist bei http://www.brennmeister.com/ recht gut aufgehoben.

Ein nicht ganz kostenloses, aber preiswertes Programm ist der Fireburner (unter http://www.fireburner.com/). Ob sich die Registrierung lohnt, können Sie innerhalb von 15 Tagen mittels einer Testversion herausfinden.

Mit diesem Fireburner laden Sie das "Cuesheet" (hier: videocd.cue), das benötigt wird, um den Vorgang zu steuern. Ein Cuesheet ist eine einfache Textdatei, in der vom Anwender genau spezifiziert wird, wie die zu erstellende CD auszusehen hat.

In unserem Fall sieht diese Datei so aus:

Diese Datei wird also nun wie folgt geladen:

 

Im Prinzip finden Sie im folgenden Bild die Informationen der Cuesheet-Datei wieder:

Mit einem Click auf das Menü "Create CD" und "Burn" können Sie nun den Brennvorgang starten. Das Programm "brennt" also nun den Inhalt der "bin"-Datei nach den Regeln der "cue"-Datei auf die CD.

Alternativ können Sie auch CDRWin von http://www.goldenhawk.de/ nutzen (Demo-Version für 1 x Speed-Brennvorgänge verfügbar).

Über die Funktion "Schreiben"

kommen Sie an folgendes Bild:

Auch hier können Sie eine Cuesheet-Datei laden und daraus eine CD brennen.


Das Ergebnis ist eine VCD oder SVCD, die mit Programmen erstellt wurde, die alle kostenlos verfügbar sind. Was brauchen Sie also für eine gute SVCD?

Wo liegt der Vorteil dieser Programme? Sie sind -wie gesagt- alle kostenlos und sie funktionieren! 

Diese hier beschriebene Lösung mit dem GNU VCDImager unterstützt neben vielen anderen interessanten Punkten in vollem Umfang PBC (playback control), 99-Minuten CD-Rs (out-of-specification) und ermöglicht Ihnen auch die Analyse von bestehenden Video CDs. 

Sie können z.B. mit Hilfe von GNU VCDImager eine kpl. Video CD extrahieren und incl. der PBC-Information in entsprechende Files kopieren und analysieren.

Die Software ist also ein Tipp für alle Leute, die es bis dato noch nicht geschafft haben, spulende SVCD hinzubekommen. Lösungen wie z.B. mein Tipp "SVCDs mit Nero gebrannt, spulen nicht?" sind damit fast gegenstandslos. ;-)

GNU VCDImager ist allerdings auch kein Wunderwerkzeug, das aus nicht geeigneten MPEG-Streams eine abspielbare (S)VCD macht.

Viele Probleme, manchmal auch Spulprobleme und GOTO-Probleme, hängen z.B. damit zusammen, dass die "sequence header" vor den GOPs fehlen. Bei konformen MPEG-Streams hat der GNU VCDImager aber definitiv die Nase vorn. Er hat ein unschlagbares Preis/Leistungsverhältnis.

 

Zurück

Zur Index-Seite


 

Home zu "http://www.edv-tip.de"