Praxis DVD Scripte schreiben mit DVDStyler

DVD Scripte schreiben mit DVDStyler

DVDs selbst zu erstellen ist einfach – jedes Videoschnittprogramm bietet eine DVD-Exportfunktion an, doch wie zum Beispiel realisiert man eine Funktion wie die Möglichkeit, entweder alle oder nur einzelne Kapitel eines Filmes anzuschauen?

// 11:59 Do, 22. Jan 2009von



DVD Scripting Allgemein

DVDs selbst zu erstellen ist einfach – jedes Videoschnittprogramm bietet eine DVD-Exportfunktion an und darüber hinaus gibt es eine Vielzahl billiger Authoringprogramme, die das Erstellen von DVDs zu einem Kinderspiel machen. Doch auf professionellen DVDs sind interessante Abspiel-Optionen zu finden, die nur von einigen DVD-Authoring-Tools angeboten werden, wie zum Beispiel die Möglichkeit, entweder alle oder nur einzelne Kapitel eines Filmes anzuschauen oder auch die Option, unterschiedliche Sprachversionen eines Films auszuwählen. Das sind Funktionen, die durch sogenannte DVD Skripte ermöglicht werden. Der DVD Player wechselt nämlich in gewisser Weise beim Anschauen einer DVD zwischen einem Wiedergabemodus, in dem Video und Audio einfach abgespielt werden, und einem Kommandomodus, in dem der Player auf der DVD enthaltene Anweisungen liest, die angeben, was unter welchen Bedingungen abgespielt werden soll. So muss zum Beispiel am Ende eines jedes Videotracks ein Befehl stehen, der den DVD Player anweist, was als nächstes abgespielt werden soll, ein so genannter Sprung-Befehl, in einer „Sprache“, die der Player versteht. Diese Sprache ist eben die DVD Skriptsprache - den DVD Spezifikationen gemäß wird die Gesamtheit aller möglichen Befehle auch der „Virtual-Machine DVD Befehlssatz“ genannt, den jeder DVD Player, egal ob Software oder Hardware, unterstützen muss. Mit seiner Hilfe können Funktionen, die über das bloße lineare Abspielen von Videos hinausgehen, realisiert werden.



Einsteiger DVD Authoringprogramme verbergen diese meist Befehle vor dem User, da für viele Anwendungen einfache Verknüpfungen zwischen Menüs und Videos ausreichen, und die DVD Skriptsprache zwar bei weitem nicht so kompliziert wie eine „große“ Programmiersprache wie zum Beispiel C++ oder Java ist, aber trotzdem noch schwierig, oder zumindest neuartig genug, um auf Nicht-Programmierer abschreckend zu wirken.



Will man jedoch etwas komplexere DVDs erstellen, stößt man schnell an die Grenzen der simplen Verknüpfungen von Buttons zu Tracks und Tracks zu Tracks: Nehmen wir ein Beispiel: es soll von jeder Menüseite einer komplexen DVD (mit mehreren Untermenüs) aus eine Seite mit einer Übersicht der Menüstruktur der DVD zugänglich sein. An sich simpel zu bewerkstelligen: ein „Hilfe“ Button wird gemacht und mit dem entsprechenden Video verknüpft. Das Problem allerdings ist: wohin soll nach dem Abspielen des Videos zurückgesprungen werden? Dass immer ein konkreter Ziel-Track für jeden Sprung angegeben werden muss, beißt sich mit dem Wunsch, dass nach der Hilfeseite natürlich am besten wieder zu dem Menü gesprungen werden sollte, von dem aus man gesprungen ist. Dieses Problem stellt sich immer dann, wenn bei komplexeren DVD Strukturen ein und derselbe Track von verschiedenen Stellen aus angesprungen werden kann und danach zum Ausgangsort zurückgekehrt werden soll, wenn also verschiedene „Wege“ durch eine DVD führen sollen. Die Lösung: Variablen – aber dazu später.



Auch die Auswahl einer anderen Sprachversion (mit einer alternativen Tonspur und Menüs) eines Videos lässt sich ohne zumindest implizites Scripting nicht lösen – außer natürlich der Lösung, einen Videotrack ganz einfach zweimal mit jeweils verschiedenen Tonspuren und Menüs auf die DVD zu packen. Eine Möglichkeit, die zwar das Problem lösen würde, aber gerade bei viel Material ziemlich ineffizient ist, denn es wird doppelt soviel Speicherplatz verbraucht, was eventuell auf Kosten der Bildqualität geht, wenn mit niedrigeren Bitraten komprimiert werden muss um das ganze dann doppelt vorhandene Material auf eine DVD zu packen.



Hier einige Beispiele für den nützlichen Einsatz von DVD Skripten:



- Hilfeseite oder Creditseite, die von verschiedenen Stellen aus verlinkt ist


- Random Play/Zufallswiedergabe von Tracks


- interaktive Ratespiele


- verschiedene Wege durch die DVD


- ein Glossar


- „Ostereier“, versteckte Videos


- Passwortschutz von Bereichen


- Video-Loops


- verschiedene Sprachversionen








Grundlagen des DVD Scripting

Im Gegensatz zu Videotracks, die einfach abgespielt werden, sind Skripte von einer anderen Art: sie enthalten Zeile für Zeile Anweisungen an den DVD Player, die ihm sagen, was er etwa in Abhängigkeit etwa von den unterschiedlichen Zuständen der Variablen tun soll, welches Skript als nächstes ausgeführt werden soll, oder welches Track abgespielt werden soll.



Diese Anweisungen beruhen auf einer so genannten Programmiersprache, die, ähnlich wie eine echte Sprache, aus Worten besteht, ihren Bedeutungen (in diesem Fall konkrete Anweisungen an den Player, was zu tun ist) und den Regeln nach denen diese Worte (hier auch Befehle oder Kommandos genannt) kombiniert werden können (die Syntax). Die DVD Programmiersprache ist relativ simpel und umfasst eine begrenzte Anzahl von System-Konstanten, Variablen und Befehlen – das Ziel ist vor allem das kontrollierte Abspielen von Tracks.



In ihrer Struktur ähnelt sie größeren und komplexerer Programmiersprachen wie C, Java, Javascript, PHP oder Perl, in denen Computerprogramme beziehungsweise Webskripte geschrieben sind. DVD Scripting ist in der Anzahl seiner Variablen und Funktionen stark beschränkt, dafür aber universell auf jedem DVD Player lauffähig, da es zu den DVD Spezifikationen gehört und auch von den ältesten DVD Playern noch verstanden und ausgeführt wird - leider kann es aber trotzdem bei einzelnen Player zu unvorhersehbaren Inkompatibilitäten kommen.



Skripte können an verschiedenen Stellen in die Struktur einer DVD eingebunden werden, entweder einzeln, verlinkt von einem Track oder Menü, oder als so genanntes Prescript, das mit einem Objekt wie einem Video oder Menü verbunden ist und automatisch vor diesem ausgeführt wird: es kann zum Beispiel dazu benutzt werden, in einem Menü immer einer Variablen einen Defaultwert zuzuweisen. Allerdings werden Prescripte nur bei einem Sprung auf das Objekt selbst aktiviert, nicht aber wenn direkt auf ein untergeordnetes Objekt wie einen Marker oder einen Button gesprungen wird. Maximal kann ein Skript 128 Befehle umfassen – was aber keine wirkliche Beschränkung darstellt, da ein Skript problemlos ein weiteres aufrufen kann und man eher selten in die Verlegenheit kommen wird, ein so langes Programm zu schreiben. Außerdem sollte beachtet werden, dass am Ende eines Skriptes immer ein Sprungbefehl stehen sollte, da sonst der DVD Player stehen bleibt und ewig auf das Ende des Skriptes wartet.



Die meisten Authoring-Programme, die das direkte Erstellen von Skripten erlauben, vereinfachen deren Gebrauch u.a. durch symbolische Namen und Syntaxhilfen – wer wirklich direkt DVD Skripte (auch schon fertiggestellter DVDs) anschauen, erstellen oder beliebig ändern will, kann das mit Hilfe von PgcEdit machen – wirklich auf der untersten, Assembler-ähnlichen Ebene. Im folgenden werde ich auf die etwas verständlichere, abstrahierte Form von DVD-Skripten eingehen – erst mit einer kleinen Einführung, dann mit einigen, auf DVD-Styler gemünzten Beispielen






Befehle, Elemente und Syntax von DVD Skripten

Basiselemente



Skripte können mit allen Elementen interagieren, die man aus dem DVD Authoring kennt, und die von unterschiedlichen Programmen verschieden benannt werden können. Es gibt da Videos, oder genauer gesagt Video- und Audiotracks, Menüs oder auch Menütracks. Diese Objekte sind in den meisten Auhoringprogrammen aber eigentlich nur hilfreiche Abstraktionen, welche die wahre, komplexe Struktur von DVDs verbergen, die aus PGCs (Programm Chains), VTS (Video Title Set), VMG (Video Manager) und anderen Objekten besteht. Die eigentliche DVD Skriptsprache ohne Vereinfachungen hängt sehr stark mit dieser Struktur zusammen und ist nur verständlich, wenn man diese Struktur kennt.




Variablen



Wie bei allen Programmiersprachen besteht die Grundfunktion eines Programms im Abfragen von Systemzuständen beziehungsweise Useraktionen und, davon abhängig, vom Ausführen bestimmter Befehle, hier also meist dem Abspielen bestimmter Videotracks. Die Grundlage, sozusagen das Kurzzeitgedächtnis, in dem sich der Player etwas merkt, sind die Variablen. Dies sind Container, denen unterschiedliche Zahlenwerte zugewiesen werden können, und die dann vom Programm abgefragt werden können, um in Abhängigkeit davon weitere Befehle auszuführen.




Grundlegende DVD Scripting Befehle



Im folgenden eine kurze Übersicht über die wichtigsten Befehle beim DVD Skripting - die tatsächliche Darstellung/Benennung ist in verschiedenen DVD Authoringprogrammen oft unterschiedlich und abstrahiert mehr oder weniger von den tatsächlichen Low-Level Befehlen der DVD Scriptingsprache. Genannt sind allgemein verwendete Namen dieser Befehle, die von verschiedenen Authoringprogrammen oft unterschiedlich benannt werden, aber doch immer die gleiche Funktion bezeichnen.




Zuweisungen von Werten für Variablen



Jeder Variable kann ein Zahlenwert zugewiesen werden.



Nehmen wir zum Beispiel eine Variable mit dem Namen A, eine andere mit dem Namen B.


Der Variable A wird der Wert 1 zugewiesen:


A = 1




Der Sprungbefehl: JUMP/PLAY


Ein Sprungbefehl führt einen bedingungslosen Sprung zu einem anderen Objekt aus – Skripte werden Befehl für Befehl ausgeführt, Videotracks werden abgespielt. Am Ende wird jeweils, sofern nicht auf eine Aktion des Zuschauers gewartet wird (Menüs) oder die Wiedergabe gestoppt werden soll, zu einem nächsten Objekt weitergesprungen. Eine Besonderheit sind Sprünge hin zu Menübuttons (ein Menü wird angezeigt mit dem angesprungenen Button im aktivierten Zustand), eine andere Sprünge hin zu Markern, also vorher definierten Stellen innerhalb eines Videotracks.




Vergleichsfunktion: COMPARE / IF THEN


Einer der komplexesten Befehle ist der sogenannte bedingte Sprung, das heißt es wird ein bestimmter Track angesprungen nur in dem Fall, dass eine bestimmte Bedingung erfüllt beziehungsweise nicht erfüllt ist. Ein Beispiel: der nächste Track wird nur abgespielt, wenn eine Variable einen bestimmten Wert hat.



Hier werden die Werte von Uservariablen mit den Werten anderer User- oder Systemvariablen oder auch mit einem festen Zahlenwerte verglichen (u.a. auf gleich, ungleich, größer oder kleiner) und wenn der Vergleich positiv ausgegangen ist, wird zu einem Objekt gesprungen.









DVD Scripting Beispiele

Im Anschluss an unseren Artikel über DVD-Authoring mit dem kostenlosen DVDStyler beschreiben wir hier die sehr interessanten Funktionalitäten, die man durch DVD-Scripte seinen DVDs geben kann - ebenfalls wieder am Beispiel von DVDStyler.



Das den Funktionen von DVDStyler zugrunde liegende DVD-Authoring Programm DVDAuthor erlaubt komplexe Aktionen, indem in der einfachen DVD-Programmiersprache Befehlszeilen an einzelne Menüs oder Tracks angefügt werden: so kann z.B. relativ einfach ein Button mit einer Funktion belegt werden, die alle oder nur bestimmte Clips der Reihe nach abspielt. Dazu wird auf die schon oben beschriebenen internen Variablen zurückgegriffen und die Möglichkeit, je nach deren Wert gewisse Aktionen durchzuführen oder zu lassen. Zur Verwendung stehen 16 Variablen, aber da 3 von DVDStyler intern verwendet werden (u.a. für die "Alles Abspielen Funktion") stehen dem User 13 zur Verwendung zur Verfügung genannt g0-g12.



Wer etwas programmieren/scripten kann wird sich leicht in der extrem simplen DVD Scriptingsprache zurechtfinden. Ist genügend Platz auf der DVD frei, gibt es als Alternative zur Programmierung vieler Funktionen die Möglichkeit die Videos einfach in verschiedenen Versionen auf die DVD zu packen, also zB einmal eine Version mit deutscher Sprache einmal mit englischer - eleganter (und oft vom Platz her nur möglich) ist aber die Programmierung dieser Funktion - hier wird statt zwei ganzen Videoclips nur eine zusätzliche Audiospur benötigt.



Die Beispiele gelten, da sie direkt in der DVD-Programmiersprache geschrieben sind, auch weitestgehend bzw in Übertragung (verschiedene Programme reservieren für den internen Gebrauch z.B. verschiedene der g-Variablen, benennen diese oder die Tracks/Titles oder Menüs anders) für alle anderen Auhtoringprogramme, die DVD-Scripting unterstützen. Eine kleine Dokumentation der Syntax von DVDStyler findet man hier.



Durch das nutzen mehrere Variablen können sogar verschiedene Wege/Funktionen gleichzeitig angeboten werden. Für jede verwendete Funktion sollte eine eigene Variable verwendet werden, sonst beeinflussen sich die Funktionen gegenseitig. In unseren Beispielen verwenden wir verschiedene Variablennamen - aber egal ob g1, g3 oder g4 verwendet wird, Hauptsache für die gleiche Funktion wird die gleiche Variable verwendet, der Name an sich ist egal und austauschbar.




Beispiele für Scripting Funktionen



Tip:Eventuelle Script-Fehlermeldungen werden beim Erstellen des DVD-Images von DVDStyler meist sehr verständlich im "Erstelle Menü" Fenster ausgegeben und helfen beim evtl notwendigen Debuggen.






Alles abspielen - Funktion - Wege durch die DVD

DVDStyler hat die "Alle Clips abspielen"-Funktion schon als Shortcut integriert: Bei Aktion eines Feldes muss dazu einfach nur das Kästchen "Alle wiedergeben" angekreuzt werden, dann werden bei Aufruf alle Videos der Reihe nach abgespielt.



Wir zeigen aber hier einmal genau, wie man diese Funktion selbst programmiert - mit diesem Wissen kann man dann leicht eigene "Wege" durch die DVD erstellen, also eigene Abspiel-Knöpfe, die dann nur bestimmte Clips nacheinander wiedergeben.



So wird ein Button per "Eigenschaften/Aktion/benutzerdefiniert" mit dem Befehl "g0=1; jump title 1;" belegt, d.h. die interne Variable g0 wird auf 1 gesetzt und dann wird Titel 1 (wie in der unteren Leiste dargestellt) abgespielt.



DVD Scripte schreiben mit DVDStyler : Playall


Ein Tip: Unten links in der Infoleiste wird wenn die Maus drüber fährt, das zum Menüknopf gehörige Scriptkommando (und Nummer des Knopfes) angezeigt - sehr praktisch, wenn man um eine Programmierung zu überprüfen nicht alle "Eigenschaften" Menüs der Knöpfe erst öffnen muss.



Klickt man auf Eigenschaften des Titels unten kann im Feld "Nachbefehl" angegeben werden welche Aktion ausgeführt werden soll wenn der Track abgespielt wurde - standargemäss wird einfach wieder das Menü angesprungen ("call vmgm menu 1;")



Fügen wir stattdessen die folgende Zeile ein, verhält sich die DVD beim Abspielen anders, wenn der neue "Alles abspielen" Button gedrückt wurde, dann nämlich wird der zweite Titel angesprungen statt dem Menü.


if (g0==1) { jump title 2; } else { call vmgm menu 1;}



Editiert man im gleichen Sinn den zweiten Titel mit


if (g0==1) { jump title 3; } else { call vmgm menu 1;}


folgt nach Abspielen dieses Videos automatisch der dritte Titel.



DVD Scripte schreiben mit DVDStyler : playall2




Natürlich ist beliebig definierbar, welcher Track angesprungen werden soll, so kann irgendein alternativer Weg für den Zuschauer durch die DVD definiert werden, z.B. um bei einer Vielzahl von Ferienclips nur die anzuzeigen die an einem bestimmten Ort gedreht wurden oder eine bestimmte Person zeigen oder es wird zu jedem Film auch ein Making-Of danach gezeigt - die Möglichkeiten sind vielfältig dazu muss einfach nur die dafür notwendige Abspielreihenfolge festgelegt werden.







Zufalls-Clip abspielen

Eine einfache Funktion: wird ein Button mit diesem Script versehen und gedrückt, wird ein zufälliger Clip abgespielt (in diesem Beispiel einer der ersten vier) - unter "Aktion/benutzerdefiniert" sollte dann dieser Code stehen:



g1=random(4); if ( g1==1) {jump title 1;} if ( g1==2) {jump title 2;} if ( g1==3) {jump title 3;} if ( g1==4) {jump title 4;}



 Random-Script in DVDStyler
Random-Script in DVDStyler


Funktionsweise: g4 bekommt einen zufälligen Wert zwischen 1 und dem angegebenen Wert, hier 4 - Dann wird, je naqchdem welcher (Zufallswert) g1 dann zugewiesen wird, ein Track angesprungen.






Videoclip nur beim ersten Abspielen

Um ein kurzes Video nach dem Einlegen einer DVD zu zeigen, aber nur auch dann, kann man folgendes Script verwenden. Erst den Clip als z.B. "title 1" in die untere Leiste ziehen, dann bei "Eigenschaften" des Menüs folgende Befehle eingeben:



Vorbefehl: if (g3==0) { g3 = 1; jump title 1; }


Nachbefehl: call menu; bzw jump cell 1;



Funktionsweise: Beim ersten Aufruf wird vor dem automatischen Aufruf des Start-Menüs der Wert der Variable g3 abgefragt - da er noch nicht explizit definiert wurde, ist er per Default "0", also werden in der if-then Abfrage die Befehle in der Klammer ausgeführt: g3 wird auf "1" gesetzt und dann wird der Intro-Clip "title 1" abgespielt. Wird das Menü das nächste Mal aufgerufen ist g3 nicht mehr Null d.h. der Clip wird nicht mehr davor abgespielt.






Verschiedene Audiotracks

Sollen - wie auf kommerziellen DVDs - verschiedene Audiospuren/Sprachspuren zu einem Film angeboten werden, läßt sich das folgendermaßen realisieren. Einmal mit einem zusätzlichen Button, der ein Video ("title") mit einer definierten Audiospur anspricht, und einmal mit einem Button der für alle Videos einen bestimmten Audiotrack (also eine Art Sprachauswahl) vorgibt. Zu beachten ist, das die Nummerierung der Audiospuren mit 0 anfängt, also beginnen zusätzliche Tonspuren (wenn schon eine im Video vorgegeben ist) mit "1". Ausserdem wichtig: Eine Audiospur, die auf die unteren Leiste zu den verwendeten Assetts hinzufügt wird, wird immer dem letzten Title zugewiesen, also jeden Clip der eine (oder mehrere Ausspuren) zusätzlich erhalten soll, erst den Clip hinzufügen dann die Audiospur, dann den nächsten Clip und dessen Audiospur usw - um diese Beschränkung zu umgehen (und die Clips schon alle im Projekt sind) kann man alternativ auch manuell im XML-Projektfile weitere Audiofiles hinzufügen. Dann einem neuen Abspiel-Button folgende Aktion zuweisen um den ersten Clip ("title 1") mit der zweiten Tonspur zusammen abzuspielen:



audio = 1; jump title 1;



Soll das ganze global erfolgen, einen Button zur Sprachwahl definieren, also z.B. "englisch" und die Aktion



g3=1;


hinzufügen.








Weitere Beispiele für DVDScripte in DVDStyler findet ihr hier.



Und hier der Artikel über einfaches DVD-Authoring mit DVDStyler


Ähnliche Artikel //
Umfrage
    Welche Streaming-Dienste nutzt Du?













    Ergebnis ansehen

slashCAM nutzt Cookies zur Optimierung des Angebots, auch Cookies Dritter. Die Speicherung von Cookies kann in den Browsereinstellungen unterbunden werden. Mehr Informationen erhalten Sie in unserer Datenschutzerklärung. Mehr Infos Verstanden!
RSS Suche YouTube Facebook Twitter slashCAM-Slash