3. Zeitliche Steuerung und Synchronisation
3.3. Synchronisationselemente
Wie die bislang benutzten Beispiele zeigen, werden mehrere im SMIL-Dokument spezifizierte Medienobjekte in der Reihefolge präsentiert, in der sie im SMIL-Dokument genannt sind. Die Präsentationsfolge mehrerer Medienobjekte entspricht ihrer Reihenfolge.
SMIL kennt drei Synchronisationselemente, das <seq>-Element,
um Medienobjekte explizit in einer bestimmten Folge zu präsentieren,
das <excl>-Element, um einzelne Objekte ohne bestimmte Reihefolge
zu präsentieren und das <par>-Element, um Medienobjekte
simultan zu präsentieren. Die Elemente werden durch eine
<seq>-, <excl>- bzw. <par>-Tag geöffnet
und durch einen </seq>, </excl>- bzw. </par>-Tag
geschlossen. Die Medienelemente, die in einer Folge oder synchron
präsentiert werden sollen, werden von den Synchronisationselementen
eingeschlossen.
Die Synchronisationselemente können auch als
Zeitcontainer beschrieben werden; sie setzen den zeitlichen Rahmen
einer Präsentation. Dieser Rahmen gilt unabhängig von
den zeitlichen Vorgaben der einzelnen Medienelemente.
3.3.1. Zeitliche Folge von Objekten – das <seq>-Element
In den bislang benutzten Beispielen wurden quasi automatisch mehrere Medienobjekte in einer Folge präsentiert. Dies wird durch eine Voreinstellung erreicht. Wird kein Synchronisationselement angegeben, gilt bei mehreren Medienobjekten automatische das <seq>-Element.
Sollen zwei Objekte explizit nacheinander präsentiert werden, müssen die beiden Objekte mit Hilfe des <seq>-Elements in eine Reihenfolge gebracht werden. Beispiel:
<smil>
<head>
<layout>
<root-layout width="300" height="200" background-color="white" />
<region id="bild" left="25" top="25" width="216" height="181" />
</layout>
</head>
<body>
<seq>
<img src="bild.jpg" alt="Bild" region="bild" dur="6s" begin="2s" />
<img src="bild2.jpg" alt="Bild" region="bild" dur="6s" begin="2s" />
</seq>
</body>
</smil>
Das erste Bild "bild.jpg" wird nach 2 Sekunden für 6 Sekunden sichtbar; nach einer Pause von 2 Sekunden erscheint dann das zweite Bild "bild2.jpg" für weitere 6 Sekunden. Die Präsentationsdauer beträgt insgesamt 16 Sekunden.
3.3.2. Zeitliche Parallelität von Objekten – das <par>-Element
Sollen Objekte zeitgleich präsentiert werden, wird das <par>-Element benutzt. Beispiel:
<smil>
<head>
<layout>
<root-layout width="300" height="300"
background-color="white" />
<region id="bild" left="25" top="25" width="216" height="181" />
<region id="bild2" left="125" top="125" width="216" height="181" />
</layout>
</head>
<body>
<par>
<img src="bild.jpg" alt="Bild 1" region="bild1" dur="6s" begin="2s" />
<img src="bild2.jpg" alt="Bild 2" region="bild2" dur="6s" begin="2s" />
</par>
</body>
</smil>
Beide Bilder werden nun zeitgleich in zwei Präsentationsbereichen für 6 Sekunden sichtbar. Die Gesamtpräsentationszeit beträgt 8 Sekunden.
3.3.3. begin und end als Attribut eines Synchronisations-elements
Sowohl beim <par>-Element als auch beim <seq>-Element kann die Präsentationszeit mit dem begin- und end-Attribute kontrolliert werden. Mit
<par begin="2s" end="8s">
.....
</par>
wird die Einblendung aller im <par>-Element eingeschlossenen
Multimediaobjekte nach 2 Sekunden gestartet; 8 Sekunden nach der
Einblendung werden die Objekte wieder ausgeblendet.
3.3.4. Zeitliche Exklusivität von Objekten
– das <excl>-Element
Sollen Objekte unabhängig von der Reihenfolge
in der SMIL-Datei präsentiert werden, wird das <excl>-Element
benutzt. Beispiel:
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
<head>
<layout>
<root-layout width="300" height="300"
background-color="white" />
<region id="bild" />
</layout>
</head>
<body>
<excl>
<img src="bild2.jpg" region="bild" begin="4s" dur="5s" />
<img src="bild.jpg" region="bild" begin="0s" dur="5s" />
</excl>
</body>
</smil>
Das in der Reihenfolge zweite
Bild bild.jpg wird 4 Sekunden vor bild2.jpg gezeigt. Anschliessend
wird bild2 gezeigt. Die Gesamtpräsentationszeit beträgt
9 Sekunden. Bei dem <excl>-Element muss immer eine Zeitangabe
vorhanden sein, da durch die Zeitangabe die Steuerung der Präsentationsreihenfolge
erfolgt. Ferner ist darauf zu achten, dass sich die Zeitangaben
überlappen. Der begin-Parameter von bild2 wurde also ganz
bewusst so gesetzt, dass die Präsentation von bild2 startet,
bevor die Präsentation des ersten Bildes beendet ist.
3.3.5. Kombination von <seg>- und <par>-Elemente
Beide Elemente können nach Bedarf kombiniert und verschachtelt werden.
3.3.5.1. <seq>-<par>-</par>-</seq>-Folge
In unserem Beispiel wird als erstes das Bild "melonen" präsentiert, gefolgt von den parallel präsentierten Bildern "bild" und "bild2"; den Abschluss bildet das Bild "servants".
<smil>
<head>
<layout>
<root-layout width="300" height="300" background-color="white" />
<region id="bild" left="75" top="50" width="216" height="181" />
<region id="bild1" left="25" top="25" width="216" height="181" />
<region id="bild2" left="125" top="125" width="216" height="181" />
</layout>
</head>
<body>
<seq>
<img src="melonen.jpg" alt="Bild" region="bild" dur="6s" begin="2s" />
<par>
<img src="bild.jpg" alt="Bild 1" region="bild1" dur="6s" begin="2s" />
<img src="bild2.jpg" alt="Bild 2" region="bild2" dur="6s" begin="2s" />
</par>
<img src="servants.jpg" alt="Bild" region="bild" dur="6s" begin="2s" />
</seq>
</body>
</smil>
3.3.5.2. <par>-<seq>-</seq></par>-Folge
Das oben stehende Beispiel wurde dahingehend verändert, dass ein vierter Präsentationsbereich definiert wurde; ferner werden durch die Umstellung der <par>-<seq>-Folge zu Beginn drei Bilder (melonen, bild2 und servants) gezeigt, während abschliessend ein Bild (bild) erscheint.
<smil>
<head>
<layout>
<root-layout width="300" height="300"
background-color="white" />
<region id="bild" left="25" top="0" width="216" height="181" />
<region id="bild1" left="50" top="50" width="216" height="181" />
<region id="bild2" left="125" top="125" width="216" height="181" />
<region id="bild3" left="0" top="175" width="216" height="181" />
</layout>
</head>
<body>
<par>
<img src="melonen.jpg" alt="Bild" region="bild" dur="6s" begin="2s" />
<seq>
<img src="bild2.jpg" alt="Bild 1" region="bild1" dur="6s" begin="2s" />
<img src="bild.jpg" alt="Bild 2" region="bild2" dur="6s" begin="2s" />
</seq>
<img src="servants.jpg" alt="Bild3" region="bild" dur="6s" begin="2s" />
</par>
</body>
</smil>
In diesen beiden Beispielen wurde eine einfache Verschachtelung der <par>- und <seq>-Elemente demonstriert; die Tiefe der Verschachtelung ist nicht begrenzt.
<seq>
<img src="servants.jpg" alt="Bild3" region="bild" dur="6s" begin="2s" />
</par>
</body>
</smil>
In diesen beiden Beispielen wurde eine einfache Verschachtelung der <par>- und <seq>-Elemente demonstriert; die Tiefe der Verschachtelung ist nicht begrenzt.
3.3.5.3. Die <par>-<seq>-<par>-Folge
Durch die Gruppierung von Mediaobjekten, die in einer Folge präsentiert werden, können problemfreie Übergänge zwischen den einzelnen Objekten geschaffen werden. Bei der Übertragung von Mediaobjekten, die in Folge präsentiert werden, werden zunächst Daten in einen Zwischenspeicher übertragen (preroll); die Präsentation beginnt erst, wenn ausreichend Daten vorhanden sind. Durch eine <par>-<seq>-<par>-Folge kann erreicht werden, dass Objekte, die nur wenig Bandbreite benötigen, zuerst präsentiert werden (1. <par>-Gruppe), anschliessend werden die Objekte übertragen, die viel Bandbreite benötigen (2. <par>-Gruppe); beide <par>-Gruppen werden durch ein <seq>-Element in eine Folge gebracht. Durch die Einbindung der Folge in ein weiteres <par>-Element (3. <par>-Gruppe) wird erreicht, dass die preroll-Daten der 2. <par>-Gruppe bereits übertragen werden, während die Übertragung der ersten <par>-Gruppe läuft. Wenn die Präsentation der ersten <par>-Gruppe beendet ist, kann die Präsentation der zweiten <par>-Gruppe unmittelbar beginnen, da die preroll-Daten dieser Gruppe ja bereits übertragen wurden. Beispiel:
<body>
<par>
<seq>
<par>
<!-- 1.Gruppe à
<audio ....>
<textstream ....>
</par>
<par>
<!—2. Gruppe à
<video ....>
</par>
</seq>
</par>
</body>
Gruppe 1 besteht aus einem Audioclip und einer Textpräsentation, die simultan präsentiert werden. Mit dem <seq>-Element wird geregelt, dass diese Gruppe vor der Gruppe 2 präsentiert wird. Wäre das <seq>-Element das Element der höchsten Wertigkeit, würde zunächst die 1. Gruppe abgearbeitet; erst nach dem Ende der 1. Gruppe würden die Daten der 2. Gruppe übertragen. Das beide Gruppen umfassende <par>-Element sorgt dafür, dass beide Gruppen als eine Einheit betrachtet werden. Obwohl dies die Präsentationsreihenfolge der Gruppen nicht weiter beeinflusst, wird damit erreicht, dass die zur Verfügung stehende Bandbreite voll genutzt wird. Sobald die Übertragung der 1. Gruppe beginnt, wird die von dieser Gruppe nicht benötigte Bandbreite genutzt, um bereits Daten der 2. Gruppen zu übertragen. Ist die Präsentation der 1. Gruppe beendet, kann die Präsentation der 2. Gruppe ohne weitere Verzögerung beginnen.
3.3.6. Die Wiederholung von Gruppen – das repeat-Attribut
Das repeat-Attribut dient der Steuerung von Wiederholungen. Es kann sowohl in einem Mediaelement als auch in einem Synchronisationselement benutzt werden.
In einem Medialement wird das Attribut wie folgt benutzt:
<video
src="video/video1.rm"
repeat="2"/>
In unserem Beispiel wird das Video "video1" zweimal nacheinander gezeigt.
In einer Gruppe wird das Attribut wie folgt benutzt:
<par repeat="2">
<video src="video/video1.rm" />
<textstream src="texte/liedtext1.rm" />
</par>
In diesem Beispiel wird ein Musikvideo mit eingeblendetem Liedtext zweimal gezeigt.

|