Logo

/// 

Tutorial: Mehrsprachige-Menus erstellen mit Encore und PgcEdit.



Noch was unklar? Dann in unserem Forum nachfragen
Zum Original-Thread / Zum Videobearbeitung / DVD Authoring / Encoding-Forum

Frage von grovel:


Herzlich willkommen,

Dieses kleine Tutorial richtet sich an alle fortgeschrittenen DVD-Autoren, welche nicht das Geld für Sonic-Scenarist ausgeben könne, aber trotzdem ganz gerne mehrsprachige Menus auf ihren DVDs haben, und zwar ohne dass der Benutzer jedesmal auf eine Flagge oder einen anderen Sprachauswahlbutton klicken muss. Schliesslich bietet (fast) jeder DVD-Player die Möglichkeit, eine bevorzugte Menusprache einzustellen.

Eine Warnung hier gleich zu Beginn. Wir müssen dafür direkt in die DVD-Struktur eingreifen, buchstäblich hacken. Die Vorgehensweise wird hier anhand einer extrem simplen DVD aufgezeigt, komplexere DVDs würden auch komplexere Hacks erfordern - mit ein bisschen Geduld lässt sich allerdings fast jede DVD umbiegen und abändern. Ich gehe allerdings davon aus, dass man ein rudimentäres Programmierwissen mitbringt, begriffe wie "if, call, goto, set" sollten klar sein.

Die fertige DVD findet man hier:
http://rapidshare.de/files/21971808/PGC-Edit_DVD-Projekt.zip.html
Im darin enthaltenen VIDEO_TS-Ordner gibt es auch einen Backup-Ordner, wenn man dessen Dateien in den VIDEO_TS-Ordner gibt, so erhält man die Ausgangs-DVD.

1) Als erstes habe ich ein simples DVD-Projekt in Adobe Encore erstellt. Es besteht aus einer TimelineTimeline im Glossar erklärt (fünf Sekunden, dafür aber dreisprachig und mit drei Untertiteln) und vier Menus. Das Haupt-Menu (firstplay) zur Sprachauswahl (welches wir erst noch einbauen um es dann später zu umgehen) und einem Menu für jede Sprache.
Im Flussdiagramm sieht das dann folgendermassen aus:
zum Bild
Die Original-Ausgangsdateien und Encore-Dateien kann man sich hier herunterladen, wenn gewünscht (Notwendig fürs Projekt sind sie nicht):
http://rapidshare.de/files/21972314/projekt-dateien.zip.html

2) Nachdem wir nun eine funktionierende DVD, aber mit nervendem und laut DVD-Standard überflüssigem Anfangsmenu haben, laden wir erstmal PgcEdit herunter. Diese freie Tool, mit dem man bereits geauthorte DVDs noch nachbearbeiten kann findet sich hier:
http://www.videohelp.com/~r0lZ/pgcedit/
Wir starten das Programm, gehen auf "File->Open DVD", öffnen den in Encore erstellten VIDEO_TS-Ordner und schliessen den erscheinenden Info-Dialog mit "Close". Dann erhalten wir so ungefähr das hier:
zum Bild
Jetzt sind wir wahrscheinlich erst mal überfordert, aber das ist egal, deshalb hier eine kleine Einführung in diejenigen Funktionen von PgcEdit welche wir für unser Vorhaben benötigen.
Im linken Teil des Fensters sehen wir die PGC-Struktur der DVD, im rechten Teil die Skript-Befehle des ausgewählten PGCs, dies sollte Aktuell der First-Play-PGC sein. Jeden Befehl kann man mit einem einfachen Doppelklick bearbeiten, Syntax-Errors sind so fast unmöglich.
Das tollste ist aber der Trace-Modus, damit kann man Schritt für Schritt die DVD abspielen und sehen, was genau passiert. Gestartet (und gestoppt) wird der Modus mittels Ctrl+T. Klicken wir auf "Watch" so erhalten wir ein Übersichtsfenster, welches die verschiedenen Variablen, auf welche eine DVD zugreifen kann angezeigt werden.
Hier gibt es z.B. die SPRMs welche Systeminformationen speichern, von ihnen ist nur jene mit der Nummer 0 relevant, denn sie speichert die bevorzugte Sprache des Abspielgerätes. Mittels "Help->ISO639 Language Codes" erhalten wir auch eine Liste, welche uns mitteilt, welche Sprache welcher Nummer entspricht. Für mich relevant sind Deusch, Französisch und Englisch, respektive in Zahlen 25701, 26226 und 25966.
Im Watch-Dialog sieht man auch wie sich die GPRM-Variablen verändern - in ihnen kann eine DVD beliebige Infos speichern, meist zur Navigation. Encore braucht bei simplen DVDs immer nur die Variable 15. Da wir selbst bei einer hochkomplexen DVD aber nur im Startstadium Dinge verändern werden, ist nur jene Variable interessant, bzw. auch noch Variable 14 welche wir für eigene Zwecke misbrauchen.

3) Ok. Beginnen wir. Da wir die DVD ja nur einmal beim Aufstarten ändern wollen, müssen wir uns auf die Suche machen, auf den letzten Befehlsblock der Startroutine. Glücklicherweise ist das immer der letzte Block des VMGM-Blockes, so wie oben angezeigt im Screenshot. Wenn wir ihn Rechtsklicken und mittels "Go to Calling Command" überprüfen, wer auf ihn verlinkt, sehen wir, dass er nur direkt von der First-Play-Routine aufgerufen wird. Er selbst ruft das Root-Menu in VTSM 1 auf, welches aber auch von zig andern Routinen in Anspruch genommen wird. Hier ist es alos, wo wir unsere Änderungen einfügen müssen.

4) Nur was für Änderungen. Wenn wir uns im Trace-Modus bis zum Root-Menu durcharbeiten, sehen wir, dass an dessen Anfang die GPRM-15-Variable auf 1 steht. Da sie dadurch grösser als 0 ist werden wir direkt zum zweiten PGC-Block weitergeleitet (man beachte die IF-Verknüpfung). Der zweite Block ist wesentlich komplexer:
[url=http://img267.imageshack.us/my.php?image=emptyvtsm129rw.jpg][img=http://img267.imageshack.us/img267/5521/emptyvtsm129rw.th.jpg][/url]

[code:1:d7a9fc9421][00 C1 00 0F 00 09 00 28] 1 if ( gprm(15) >= 9 ) then { Goto line 40 }
[00 C1 00 0F 00 05 00 15] 2 if ( gprm(15) >= 5 ) then { Goto line 21 }
[00 C1 00 0F 00 03 00 0C] 3 if ( gprm(15) >= 3 ) then { Goto line 12 }
[00 C1 00 0F 00 02 00 08] 4 if ( gprm(15) >= 2 ) then { Goto line 8 }
[71 00 00 0F 00 00 00 00] 5 Set gprm(15) =(mov) 0
[56 00 00 00 04 00 00 00] 6 (SetHL_BTN) Set Highlighted Button =(mov) 1024 (button 1)
[20 04 00 00 00 00 00 06] 7 LinkPGCN PGC 6
[71 00 00 0F 00 00 00 00] 8 Set gprm(15) =(mov) 0
[51 00 00 00 80 00 00 00] 9 (SetSTN) Set Sub-picture stream = 0, off
[71 00 00 0D 00 01 00 00] 10 Set gprm(13) =(mov) 1
[30 05 00 01 00 01 00 00] 11 (JumpVTS_PTT) Jump to TTN 1, Chapter 1
[00 C1 00 0F 00 04 00 11] 12 if ( gprm(15) >= 4 ) then { Goto line 17 }
[71 00 00 0F 00 00 00 00] 13 Set gprm(15) =(mov) 0
[51 00 00 82 00 00 00 00] 14 (SetSTN) Set Audio stream = 2
[71 00 00 0D 00 02 00 00] 15 Set gprm(13) =(mov) 2
[30 05 00 01 00 01 00 00] 16 (JumpVTS_PTT) Jump to TTN 1, Chapter 1
[71 00 00 0F 00 00 00 00] 17 Set gprm(15) =(mov) 0
[51 00 00 00 C2 00 00 00] 18 (SetSTN) Set Sub-picture stream = 2, on
[71 00 00 0D 00 03 00 00] 19 Set gprm(13) =(mov) 3
[30 05 00 01 00 01 00 00] 20 (JumpVTS_PTT) Jump to TTN 1, Chapter 1
[00 C1 00 0F 00 07 00 1F] 21 if ( gprm(15) >= 7 ) then { Goto line 31 }
[00 C1 00 0F 00 06 00 1B] 22 if ( gprm(15) >= 6 ) then { Goto line 27 }
[71 00 00 0F 00 00 00 00] 23 Set gprm(15) =(mov) 0
[51 00 00 81 00 00 00 00] 24 (SetSTN) Set Audio stream = 1
[71 00 00 0D 00 04 00 00] 25 Set gprm(13) =(mov) 4
[30 05 00 01 00 01 00 00] 26 (JumpVTS_PTT) Jump to TTN 1, Chapter 1
[71 00 00 0F 00 00 00 00] 27 Set gprm(15) =(mov) 0
[51 00 00 00 C1 00 00 00] 28 (SetSTN) Set Sub-picture stream = 1, on
[71 00 00 0D 00 05 00 00] 29 Set gprm(13) =(mov) 5
[30 05 00 01 00 01 00 00] 30 (JumpVTS_PTT) Jump to TTN 1, Chapter 1
[00 C1 00 0F 00 08 00 24] 31 if ( gprm(15) >= 8 ) then { Goto line 36 }
[71 00 00 0F 00 00 00 00] 32 Set gprm(15) =(mov) 0
[51 00 00 80 00 00 00 00] 33 (SetSTN) Set Audio stream = 0
[71 00 00 0D 00 06 00 00] 34 Set gprm(13) =(mov) 6
[30 05 00 01 00 01 00 00] 35 (JumpVTS_PTT) Jump to TTN 1, Chapter 1
[71 00 00 0F 00 00 00 00] 36 Set gprm(15) =(mov) 0
[51 00 00 00 C0 00 00 00] 37 (SetSTN) Set Sub-picture stream = 0, on
[71 00 00 0D 00 07 00 00] 38 Set gprm(13) =(mov) 7
[30 05 00 01 00 01 00 00] 39 (JumpVTS_PTT) Jump to TTN 1, Chapter 1
[00 C1 00 0F 00 0D 00 38] 40 if ( gprm(15) >= 13 ) then { Goto line 56 }
[00 C1 00 0F 00 0B 00 31] 41 if ( gprm(15) >= 11 ) then { Goto line 49 }
[00 C1 00 0F 00 0A 00 2E] 42 if ( gprm(15) >= 10 ) then { Goto line 46 }
[71 00 00 0F 00 00 00 00] 43 Set gprm(15) =(mov) 0
[56 00 00 00 10 00 00 00] 44 (SetHL_BTN) Set Highlighted Button =(mov) 4096 (button 4)
[20 04 00 00 00 00 00 06] 45 LinkPGCN PGC 6
[71 00 00 0F 00 00 00 00] 46 Set gprm(15) =(mov) 0
[56 00 00 00 04 00 00 00] 47 (SetHL_BTN) Set Highlighted Button =(mov) 1024 (button 1)
[20 04 00 00 00 00 00 06] 48 LinkPGCN PGC 6
[00 C1 00 0F 00 0C 00 35] 49 if ( gprm(15) >= 12 ) then { Goto line 53 }
[71 00 00 0F 00 00 00 00] 50 Set gprm(15) =(mov) 0
[56 00 00 00 04 00 00 00] 51 (SetHL_BTN) Set Highlighted Button =(mov) 1024 (button 1)
[20 04 00 00 00 00 00 05] 52 LinkPGCN PGC 5
[71 00 00 0F 00 00 00 00] 53 Set gprm(15) =(mov) 0
[56 00 00 00 08 00 00 00] 54 (SetHL_BTN) Set Highlighted Button =(mov) 2048 (button 2)
[20 04 00 00 00 00 00 05] 55 LinkPGCN PGC 5
[00 C1 00 0F 00 0F 00 40] 56 if ( gprm(15) >= 15 ) then { Goto line 64 }
[00 C1 00 0F 00 0E 00 3D] 57 if ( gprm(15) >= 14 ) then { Goto line 61 }
[71 00 00 0F 00 00 00 00] 58 Set gprm(15) =(mov) 0
[56 00 00 00 04 00 00 00] 59 (SetHL_BTN) Set Highlighted Button =(mov) 1024 (button 1)
[20 04 00 00 00 00 00 04] 60 LinkPGCN PGC 4
[71 00 00 0F 00 00 00 00] 61 Set gprm(15) =(mov) 0
[56 00 00 00 08 00 00 00] 62 (SetHL_BTN) Set Highlighted Button =(mov) 2048 (button 2)
[20 04 00 00 00 00 00 04] 63 LinkPGCN PGC 4
[00 C1 00 0F 00 10 00 44] 64 if ( gprm(15) >= 16 ) then { Goto line 68 }
[71 00 00 0F 00 00 00 00] 65 Set gprm(15) =(mov) 0
[56 00 00 00 04 00 00 00] 66 (SetHL_BTN) Set Highlighted Button =(mov) 1024 (button 1)
[20 04 00 00 00 00 00 03] 67 LinkPGCN PGC 3
[00 C1 00 0F 00 11 00 48] 68 if ( gprm(15) >= 17 ) then { Goto line 72 }
[71 00 00 0F 00 00 00 00] 69 Set gprm(15) =(mov) 0
[56 00 00 00 08 00 00 00] 70 (SetHL_BTN) Set Highlighted Button =(mov) 2048 (button 2)
[20 04 00 00 00 00 00 03] 71 LinkPGCN PGC 3
[71 00 00 0F 00 00 00 00] 72 Set gprm(15) =(mov) 0
[56 00 00 00 10 00 00 00] 73 (SetHL_BTN) Set Highlighted Button =(mov) 4096 (button 4)
[20 04 00 00 00 00 00 06] 74 LinkPGCN PGC 6
[/code:1:d7a9fc9421]
Wenn wir aber genau hinschauen, dann wird klar, dass hier die Navigation über die GPRM-Variable 15 gesteuert wird. Bereits am Anfang passieren wir ein paar if-Variablen, welche würden sie denn zutreffen einen bedeutenden Teil des Blockes überspringen würden. Da unsere DVD ja zuerst das Sprachmenu aufruft, zu welchem wir auch ohne Verweilen (denn alle if-Fragen werden verworfen) bereits in Zeile 7 springen (LinkPGCN PGC 6), müssen wir nur herausfinden, welcher Wert denn für unsere eigentlichen angespassten Menus spricht.
So findet sich etwa das deutsche Menu im PGC 3 desselben VTSM-Blockes. Es würde also aufgerufen mittels "LinkPGCN PGC 3". Diesen Befehl findet man zuerst in Zeile 67. Es ist strukturell logisch, dass alle Befehle zwischen diesem Befehl und dem letzen vorherigen Menuaufruf-Befehl noch vorher ausgeführt werden. Also alles von der if-Abfrage in Zeile 64 an.
Ergo müssen wir herausfinden, wie wir zur Zeile 64 kommen, dies ist (weil der vorangehende Menuaufrufbefehl in Zeile 63 das Skript verlässt) nur über einen GOTO-Befehl möglich. Und tatsächlich finden wir nur einige Zeilen höher (Zeile 56) den Befehl "if ( gprm(15) >= 15 ) then { Goto line 64 }". Zu Deutsch: Ist die GPRM-Variable-15 grösser oder gleich 15 (dummer Zufall, dass beide Zahlen gleich sind), dann wird das deutsche Menu aufgerufen. Verfolgen wir die IF-Fragen weiter zurück, so sehen wir, dass man, wenn der Wert 15 beträgt in nur drei Hüpfern hier landet.
Wir müssen also einfach die GPRM-Variable-15 auf 15 stellen und schon kommen wir direkt zum deutschen Menu. Mit derselben Vorgehensweise erfahren wir, dass der Wert für das französische Menu 13 und derjenige fürs englische 11 beträgt.

5) Wir gehen also zurück zum letzten PGC des VMGM-Blockes, denn jenen müssen wir wie angekündigt verändern.
Dazu lassen wir einfach den ersten Befehl, welcher die wichtige Variable auf 1 stellt stehen (denn für den Fall, dass der User eine Sprache bevorzugt, die wir gar nicht anbieten wollen wir ja immer noch zum Sprachauswahlmenu) und fügen danach folgende Befehle ein:
[code0]Set gprm(14) =(mov) 25701 ("de")
if ( gprm(14) == sprm(0:Preferred menu language) ) then { Set gprm(15) =(mov) 15 }
Set gprm(14) =(mov) 0 [/code]

Dazu klicken wir einfach auf den ersten Befehl, und dann auf "Add After" und erhalten einen leeren Befehl. Jenen doppelklicken wir, gehen im sich öffnenden Dialog auf "By Type->Set->GPRM->Set GPRM (Set)" wählen im Schieber die Variable 14 aus und geben den Wert für die deutsche Sprache ein (Siehe Schritt 2).
Das wiederholen wir gleich nochmal und geben wieder den Wert 0 ein. Denn diese Variable brauchen wir hier nur kurz und wir wollen nicht irgendwelche Nebenwirkungen im späteren DVD-Ablauf haben.
Zwischen diese beiden Befehle setzen wir nun eine if-Abfrage. Die Vorgehensweise ist erstmal gleich wie für die beiden anderen Befehle. Wir erstellen einen Set-Befehl und fügen dadurch in die GPRM-Variable-15 den Wert für unser deutsches Menu (15) ein (siehe vorheriger Schritt). Dann aktivieren wir das Kästchen vor "if" wählen die Variable 14 aus, stellen auf "ist gleich" also "==" um und vergleichen sie mit der Systemvariable SPRM-0.
Dadurch wird die GPRM-Variable mit dem Wert 15 (anstatt dem Wert 1) auf die Reise geschickt, sollte der DVD-Player Deutsch als bevorzugte Sprache eingestellt haben. Dies wiederum bewirkt im weiteren Programmverlauf, dass wir anstelle des Sprachauswahlmenus direkt im deutschen Menu landen.
Wir wiederholen dies nun für französisch und englisch, bis der PGC folgendermassen aussieht:
[url=http://img310.imageshack.us/my.php?image=newvmgmlast3vz.jpg][img]http://img310.imageshack.us/img310/2360/newvmgmlast3vz.th.jpg[/img][/url]

Dann gehen wir auf "File->Save DVD" und unser Projekt ist beendet.

6) Natürlich wollen wir das erst noch überprüfen. Dazu brauchen wir einen Software-Player, bei welchem man die Lieblingssprache einstellen kann. Dies geht etwa mit dem Media Player Classic (http://sourceforge.net/projects/guliverkli/). Die entsprechende Einstellung findet man unter "View->Options->Playback->DVD/OGM".

Den abgeänderten VIDEO_TS-Ordner findet man hier:
http://rapidshare.de/files/21971808/PGC-Edit_DVD-Projekt.zip.html (Nur 311 KB)
Ersetzt man die IFO-Dateien im VIDEO_TS-Ordner durch jene im Backup-Ordner erhält man wieder die Original-Encore-DVD und kann dadurch auch das Tutorial selbst nachbasteln (auch ohne Encore).

Ich hoffe, dass das nicht nur mir nützlich war, wünsche viel Spass und bin wie immer für Fragen und Kommentar gerne da. (Obwohl ich meinen Forenaufenthalt nächste Woche wohl ein wenig reduzieren werde.)

SeeYa grovel




Noch was unklar? Dann in unserem Forum nachfragen
Zum Original-Thread / Zum Videobearbeitung / DVD Authoring / Encoding-Forum

Antworten zu ähnlichen Fragen:
mehrsprachige dvd in dvd studio pro
Encore CS4 Problem mit DL-DVD erstellen
Button erstellen im Photoshop für Encore
Encore CS5: Transcoding-Einstellungen ändern/erstellen
Wie kann man gleichmäßige Absätze in Encore erstellen ?
Encore einfaches Hauptmenü erstellen funzt nicht
Maximal 18 Buttons pro Menü? (Erstellen einer DVD mit Encore)
"Authoring Schnitt II DVD" unser erstes Encore Tutorial
Kann ich mit Adobe Photoshop Elements DVD-Menü für Adobe Encore erstellen?
Adobe Encore/Premiere CS 3 - DVD Inhalt ungleich Encore Projekt
Farbkorrektur in CS4 -->Tutorial?
JVC GZ-HD7 Import Tutorial (Mac)
Jahplayer Tutorial
Untertitel Tutorial
After effekt tutorial auf deutsch
Neues Tutorial: Think BIG - 4K ist online
DAS hilfreichste Tutorial zur Lichtsetzung...
learningdslrvideo.com - Red Epic Tutorial
After Effects Einsteiger Tutorial
Video Codecs: What to know - Tutorial
Tutorial: Besseres Sounddesign
Tutorial: Cinema 4D nach Motion
15 Minuten Tutorial von Frank Glencairn
Array Animation Tutorial mit Blender...
After Effects Tutorial: Monstergesicht (deutsch)
neues AE Tutorial: Trapcode 3D Stroke































weitere Themen:
Spezialthemen


16:9
3D
AVCHD
AVI
Adapter
Adobe After Effects
Adobe Premiere Pro
After effects
Akku
Akkus
Apple Final Cut Pro
Audio
Aufnahmen
Avid
Bild
Blende
Book
Brennen
Cam
Camcorder
Camera
Canon
Canon EOS 5D MKII
Capture
Capturing
Clip
ClipKanal
Clips
Codec
Codecs
DSLR
Datei
Digital
ENG
EOS
Effect
Effekt
Effekte
Export
Fehler
Festplatte
File
Film
Filme
Filmen
Filter
Final Cut
Format
Formate
Frage
Frame
HDR
Hilfe
Import
JVC
Kabel
Kamera
Kanal
Kaufe
Kaufen
Layer
Licht
Lösung
MAGIX video deLuxe
MPEG
MPEG-2
MPEG2
Mac
Menü
Mikro
Mikrofon
Mikrophone
Monitor
Movie
Musik
Nero
News
Objektive
PC
Panasonic
Pinnacle
Pinnacle Studio
Player
Premiere
Projekt
RED
Recorder
Red
Render
Rendern
Schnitt
Software
Sony
Sony Vegas Video
Sound
Stativ
Stative
Streaming
Studio
TV
Test
Titel
Ton
USB
Umwandeln
Update
Vegas
Video
Video-DSLR
Videos
Videoschnitt
Windows



update am 17.September 2014 - 18:00
ist ein Projekt der channelunit GmbH
*Datenschutzhinweis*