|
Fangen wir einmal mit einem MPEG-Stream des sicher allen noch bekannten Programms TMPGEnc an: Wir untersuchen diesen Stream mit
TMPGEnc beschränkt sich beim Einfügen der NAV_PACKs auf ein paar grundsätzliche Informationen, ohne allzu sehr ins Detail zu gehen:
Wir erkennen auf den ersten Blick die Muxrate und die Existenz eines Padding Streams. Padding bezeichnet übrigens ungenutzte Füllbytes, um Zellen aufzufüllen oder Datenstrukturen auf bestimmte Vielfache von Bytes auszurichten. Bei einer SVCD muss z.B. bei den Einsprung-Sektoren der Kapitelmarken, den APS (den AccessPoint Sectors) eine Bildsequenz (GOP) genau mit einem vollen Sektor starten. Das bedeutet, dass ggf. Füllbytes zwischen die Sequenzen zu schreiben sind, die überhaupt keine Bildinformationen enthalten. Als Alternative schauen wir uns einmal einen mit bbMPEG gemuxten Stream an. In den "Output Settings" gibt es die Möglichkeit, als Program-Stream-Typ "~DVD" einzustellen.
Vergleichen wir nun die NAV_PACK-Einträge der beiden MPEG-Streams so stellen wir mit Erstaunen fest, dass hier bei einem mit bbMPEG gemuxten Stream viel ausführlichere Informationen vorhanden sind:
Wir finden hier zusätzlich anstelle des Padding-Streams einen so genannten "Privat Stream 2" mit weiteren Streams .
Nehmen wir nun ein ganz normales Authoringprogramm, wie z.B. VideoPack 5.x von Roxio und als erstes unseren TMPEG-Stream. VP 5.x macht, wenn Sie einen Stream laden, zuerst einmal einen Kompatibilitäts-Check und meldet,
Hat man den Authoringvorgang abgeschlossen, so kann man sehen, dass VP 5.x den Stream demuxt
und anschließend erneut muxt.
Nun aber mit den richtigen Einstellungen. Ein Zwischenschritt ist die Erstellung eines VOB-Files. Ich habe ja oben schon davon berichtet.
Aus diesem VOB-File macht VP5.x nun direkt das entsprechende Image oder brennt eine DVD. Wir kommen später noch auf diesen Punkt zurück. Schauen wir nun in dieses VOB-File hinein, so sieht die Struktur ähnlich aus, als wenn bbMPEG den Stream gemuxt hätte (vergleiche Abb 4).
VP5.x erkennt, dass der Stream richtig gemuxt ist und darüber hinaus einen "Privat Stream 2" hat und macht sich gar nicht mehr die Mühe, den Stream zu demuxen und neu zu muxen. VP 5.x beginnt gleich damit ein Image zu bauen.
Diese Vorgehensweise ist nicht bei allen Programmen gleich. Einige Authoringprogramme muxen den Eingangsstream auf jeden Fall neu - egal ob er korrekt ist oder nicht. Wie dem auch sei, es geht hier nicht so sehr um ein bestimmtes Programm, sondern um die allgemeine Funktion hinter den Programmen. Schauen wir uns jetzt das Ergebnis der beiden Authorings an. Dazu habe ich einfach den Haupt-VOB-Stream aus der jeweiligen Image-Datei heraus extrahiert. Und das getrennt für das "bbMPEG-Image" und das "TMPGEnc-Image". Hier finden Sie die beiden NAV_PACKs gegenübergestellt (links als Ausgangsstream bbMPEG-gemuxt und rechts als Basis den Original-TMPGEnc-Stream) : Abb 10 (zum Vergrößern bitte auf das Bild klicken) Um genau zu sein, beinhalten diese NAV_PACKs (auch als NV_PCK bezeichnet) zwei weitere Pakete, die sich Presentation Control Information (PCI) und Data Search Information (DSI) nennen. Eine solche Data Search Information (DSI) ermöglicht im Prinzip erst das eigentliche Spulen, also den Vor- und Rücklauf mit variabler Geschwindigkeit in einem DVD-Video. Im Prinzip (ich will das hier nicht im Detail beleuchten), gibt es einen so genannten "track buffer", also einen Speicher zwischen der "Lesestufe" im DVD-Player und dem eigentlichen Decoder. Hier wird das Video, wenn Sie so wollen, einen kurzen Augenblick zwischengespeichert, um den Spulvorgang steuern zu können. Um nun diesen Speicher verwalten zu können, benötigt der Player bestimmte Steuerinformationen, wie sie durch PCI und DSI bereitgestellt werden. Wer sich für Details (auf Bit-Ebene) interessiert, dem seien folgende Webseiten empfohlen:
Von besonderem Interesse wäre dabei sicher das Feld "vobu_1stref_ea" in Sector 413 ("first reference frame end block, relative - used for fast playing" und die daraus folgenden Felder)
Aber wie gesagt, der Stream ist nicht da und auch der PCI-Anteil ist ohne Inhalt. Was bedeutet dass nun für die so hergestellte DVD? Schlicht und einfach, dass ein mit bbMPEG gemuxter MPEG-Stream, der mit dem Authoringprogramm VideoPack 5.x weiterverarbeitet wird, vermutlich in den meisten DVD-Playern nicht spulen wird. Im YAMMI 715 z.B. führt eine solche DVD zu einem Totalabsturz, wenn Sie versuchen, eine Spulgeschwindigkeit größer als 2-fach (vorwärts) auszuwählen. Rückwärts geht es gar nicht. bbMPEG war bis jetzt mein absoluter Favorit
hinsichtlich der Muxing-Möglichkeiten. Denken wir nur an einen Stream mit zwei
VP 5.x hingegen prüft den Ausgangsstream nicht konsequent genug. Das Programm hätte feststellen müssen, dass der Stream so nicht eingesetzt werden kann und hätte ihn automatisch demuxen und mit den richtigen NAV_PACKs neu muxen müssen. Nach Informationen aus dem Hause Roxio ist der "Fehler", wenn man dabei überhaupt von einem Fehler sprechen kann, in der neuen Authoring-Software WOC 6 DVD nicht mehr vorhanden. WOC6DVD muxt auch bbMPEG-gemuxte Stream direkt neu und ergänzt die richtigen NAV_PACKs. Dennoch mein Tipp an dieser Stelle: Stellen Sie die Ausgabe in TMPGEnc so ein, dass Sie direkt getrennte ES-Streams für Bild und Ton ausgeben (geht problemlos ab Version 2.58.xx.xxx):
Und wandeln Sie dann über die Formatumwandlung in VP5.x die Files zur Sicherheit direkt in ein normgerechtes VOB-File um:
Man kann übrigens aus der Abbildung 10a noch etwas anderes sehr schön sehen:
Abb 10 a
In den jeweiligen Feldern (z.B. in 040f, 0413, etc.) stehen Adressen. Und zwar relative Adressen. Diese hier dargestellte VOBU beginnt also bei Sektor 0 und endet an Sektor 79. Also muss an Sektor 80 der nächste NAV_PACK-Eintrag stehen. Kommt nun beim Brennen irgendwas durcheinander und der Brenner verschluckt sich beim Brennen, so findet der Player im Sektor 80 keinen weiteren NAV_PACK und Ihre DVD wird nicht richtig laufen. Man kann solche Phänomene recht häuft dann finden, wenn Sie die DVD nicht direkt aus dem Authoringprogramm heraus gebrannt haben, sondern wenn Sie über den Zwischenschritt einer Image-Datei oder über das Verzeichniss VIDEO_TS gegangen sind. Die DVD also "irgendwie" mit einem anderen Programm gebrannt worden ist.
| |||||||||