Synchronized Multimedia Integration Language

Rheinisch-Westf¨alische Technische Hochschule Aachen Lehrstuhl f¨ur Informatik IV Prof. Dr. rer. nat. Otto Spaniol Synchronized Multimedia Integratio...
10 downloads 0 Views 83KB Size
Rheinisch-Westf¨alische Technische Hochschule Aachen Lehrstuhl f¨ur Informatik IV Prof. Dr. rer. nat. Otto Spaniol

Synchronized Multimedia Integration Language

Seminar: Kommunikationsprotokolle SS 2003 Matthias Raffelsieper Matrikelnummer: 235575

Betreuung:

Mesut G¨unes Lehrstuhl f¨ur Informatik IV, RWTH Aachen

Zusammenfassung In diesem Dokument wird eine Einf¨uhrung in die Sprache SMIL gegeben, die es erlaubt Multimediaobjekte in einer Gesamtpr¨asentation darzustellen. Dabei wird die aktuelle Version 2.0 zu Grunde gelegt. Der Text wurde im Rahmen des oben genannten Proseminars am Lehrstuhl IV f¨ur Informatik der RWTH Aachen im Sommersemester 2003 angefertigt.

2

Inhaltsverzeichnis 1 Grundlagen

4

1.1

Was ist SMIL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.2

Lesen, Schreiben und Abspielen von SMIL-Dateien . . . . . . . . . . . . . . . . . .

4

1.3

¨ Kurzer Uberblick u¨ ber die Syntax von SMIL . . . . . . . . . . . . . . . . . . . . . .

5

2 Layout von Pr¨asentationen

6

2.1

Layout einer Pr¨asentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.2

Layout der gesamten Pr¨asentation . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

2.3

Layout einzelner Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

3 Multimediaobjekte und Interaktion

9

3.1

Verwendbare Multimedia-Formate . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

3.2

Hyperlinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

3.2.1

Objekte als Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

3.2.2

Verweise auf andere Teile derselben Pr¨asentation . . . . . . . . . . . . . . .

12

3.2.3

Bereiche eines Objekts als Verweis deklarieren . . . . . . . . . . . . . . . .

12

4 Zeit

13

4.1

Zeitliche Steuerung von Multimediaobjekten . . . . . . . . . . . . . . . . . . . . .

13

4.2

Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

4.2.1

Elemente zur Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . .

14

4.2.2

Ereignisbasierte Synchronisation . . . . . . . . . . . . . . . . . . . . . . . .

17

4.2.3

Logische Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

5 Vergleich von SMIL 1.0 und SMIL 2.0

19

6 Zusammenfassung und Zukunft von SMIL

19

3

1 Grundlagen 1.1 Was ist SMIL? Die Abk¨urzung SMIL steht f¨ur Synchronized Multimedia Integration Language. SMIL ist eine Sprache, die dem bekannten HTML sehr a¨ hnlich ist: in HTML ist es m¨oglich, Objekte mit ganz unterschiedlichen Formaten in einem Dokument zu integrieren; dies ist mit SMIL im Bezug auf Multimediaobjekte m¨oglich. Die aktuelle SMIL Version ist 2.0; sie ist beim World Wide Web Consortium unter [SMIL2] abrufbar. Bei HTML-Seiten ist es nicht so wichtig, in welcher Reihenfolge die enthaltenen Objekte geladen werden; bei Multimediapr¨asentationen hingegen ist es von entscheidender Bedeutung, wann welches Objekt angezeigt wird (so soll zum Beispiel der Ton zu einem abgespielten Video synchron sein). Zu dieser zeitlichen Steuerung einer Pr¨asentation kommt noch die Steuerung des Layouts dieser Pr¨asentation. SMIL ist also eine Sprache zur Positionierung, Synchronisation und Pr¨asentation von Multimediaobjekten. SMIL kann, wie HTML auch, auf CDs oder auf Festplatten von PCs abgelegt werden. Die wirklichen St¨arken von SMIL kommen aber erst im Internet zum Tragen: SMIL wird haupts¨achlich mit dem Realtimestandardprotokoll rtsp u¨ bertragen, da es bei SMIL im Gegensatz zu HTML darauf ankommt, in welcher Reihenfolge die Objekte angezeigt werden. Durch Verwendung dieses Protokolls ist es nicht notwendig, dass erst die gesamte SMIL-Datei und die enthaltenen Multimedia-Objekte gelesen werden m¨ussen, sondern diese k¨onnen kontinuierlich geladen werden, w¨ahrend der Benutzer schon den Anfang der Pr¨asentation sieht. Dieses Verfahren ist nicht neu: so wurden zu Zeiten vor SMIL bereits u¨ ber dieses Protokoll Videobzw. Audio-Clips nacheinander u¨ bertragen. Mit SMIL ist es jetzt jedoch m¨oglich, diese koordiniert nebeneinander laufen zu lassen; außerdem k¨onnen mit SMIL Text- und Bildinformationen zeitlich koordiniert zu diesen Clips pr¨asentiert werden. Konnte dies noch in einem großen Film realisiert werden, so ist die M¨oglichkeit, auch Internet-Verweise in einer solchen Animation einzubauen, eine absolute Neuerung und macht so eine Interaktion des Benutzers mit der Pr¨asentation erst richtig m¨oglich: Mit SMIL kann der Benutzer zum Beispiel die Zusammenstellung der Multimedia-Objekte einer Pr¨asentation interaktiv ausw¨ahlen. Eine SMIL-Datei setzt die Existenz der in ihr verwendeten Texte, Bilder, Audios und Videos im digitalen Format voraus: die Aufgabe von SMIL ist es, diese zu einer Gesamtpr¨asentation zusammenzusetzen. Sollen diese Objekte mit Hilfe der Streamingtechnologie u¨ bertragen werden, so m¨ussen sie bereits darauf vorbereitet worden sein.

1.2 Lesen, Schreiben und Abspielen von SMIL-Dateien Ein SMIL-Dokument ist nur eine einfache Textdatei, die sich an eine festgelegte Syntax halten muss. Daher lassen sich SMIL-Dokumente mit einem einfachen Texteditor erstellen; die Endung der Dateien 4

muss dabei .smi oder .smil lauten. Inzwischen gibt es jedoch auch einige SMIL-Editoren, die eine grafische Benutzeroberfl¨ache besitzen und automatisch den SMIL-Code erstellen. Warum ist es dann u¨ berhaupt wichtig, zu wissen wie SMIL aufgebaut ist? Zum einen f¨uhrt dies zum besseren Verst¨andnis von den M¨oglichkeiten, die SMIL bietet, und von Multimediapr¨asentationen im Internet; zum anderen liefern grafische Editoren nicht immer das gew¨unschte Ergebnis, was durch einen kleinen Eingriff in die SMIL-Datei vielleicht schnell behoben werden kann. Um SMIL-Pr¨asentationen zu betrachten, ben¨otigt man entweder ein Programm, dass SMIL interpretieren kann, oder ein Plugin f¨ur den Web-Browser, damit die Pr¨asentation direkt im Browser abgespielt werden kann. Ein Beispiel f¨ur ein eigenst¨andiges Programm, das SMIL-Dateien abspielen kann, ist der RealOne-Player der Firma RealNetworks. Als Beispiel f¨ur eine M¨oglichkeit, SMIL-Dateien direkt im Browser anzuzeigen, sei hier SOJA genannt. Dies steht f¨ur SMIL Output in Java Applets und ist, wie der Name es vermuten l¨asst, ein Java-Applet.

¨ ¨ 1.3 Kurzer Uberblick uber die Syntax von SMIL Die Syntax von SMIL basiert auf der von XML, die a¨ hnlich zu der von HTML ist. Daher ist es relativ einfach, die Syntax von SMIL zu verstehen. Jedoch gibt es einige Unterschiede zwischen SMIL und HTML, auf die hingewiesen werden soll: • SMIL ist ”case-sensitive”, d.h. bei der Schreibweise von Tags wird zwischen Groß - und Kleinschreibung unterschieden. In SMIL sind alle Tags ausschließlich in Kleinbuchstaben zu schreiben. • SMIL basiert vollst¨andig auf XML, daher m¨ussen alle Elemente abgeschlossen werden. (Es gibt wie bei XML die M¨oglichkeit, ein Element direkt abzuschliessen.) Ein SMIL-Element besteht wie ein HTML-Element aus einem Elementtag und den Parametern dieses Tags, die bestimmte Werte annehmen k¨onnen. Diese werden wie in HTML und XML in spitze Klammern (’’) eingeschlossen. Abgeschlossen wird ein solches Element wie in XML durch das Elementtag mit vorangestelltem ’/’, dies ist wiederum einzuschliessen in spitze Klammern. Betrachten wir ein kleines Beipiel:

5

Jedes SMIL-Dokument beginnt mit und endet mit . Dieses Element kann bis zu zwei Unterelemente besitzen: das optionale und das obligatorische . Im Teil des Dokuments k¨onnen einige spezielle Angaben getroffen werden; diese werden alle vor der Anzeige des -Teils verarbeitet. So kann (wie in unserem Beispiel) einfach nur eine CopyrightInformation gesetzt werden, hier k¨onnen aber auch komplexe Layout Anweisungen mit Hilfe des -Elements vereinbart werden. Danach folgt der -Teil mit den darzustellenden Objekten. In unserem Beispiel sind dies einmal ein Bild, das im gleichen Verzeichnis wie das SMILDokument liegt und ,,bild.jpg“ heißt. Dieses Bild wird, da keine weiteren Angaben getroffen werden, mit der Standardgr¨oße und mit der Standardanzeigendauer von 5 sec dargestellt. Desweiteren befindet sich noch eine Audio-Datei in der Pr¨asentation, von der auch nur der Name ,,audio.rm“ bekannt ist, diese wird daher mit der Standardbitrate und mit voller L¨ange abgespielt. Im Beispiel kann man auch sehen, dass die Tags , und keine eigenen, abschliessenden Tags besitzen. Stattdessen werden sie direkt abgeschlossen durch ein ’/’ vor der schliessenden spitzen Klammer ’>’.

2 Layout von Pr¨asentationen 2.1 Layout einer Pr¨asentation Das Layout einer Pr¨asentation legt fest, wie die einzelnen Multimediaobjekte angezeigt werden. So werden im Layout zum Beispiel die Gr¨oße des gesamten Anzeigefensters, die Position und Gr¨oße einzelner Objekte und vieles mehr festgelegt. Das Layout einer SMIL-Pr¨asentation wird innerhalb des -Elements definiert, dieses muss im -Teil des SMIL-Dokuments stehen. Layoutdefinitionen k¨onnen auf zwei verschiedene Arten angegeben werden: zum einen mit Hilfe der Cascading-Style-Sheets (CSS2), zum anderen mit der SMIL eigenen Layoutsprache SMIL-Basic-Layout-Language. Die Verwendung der SMIL-BasicLayout-Language, die im Folgenden ausschließlich verwendet wird, wird im -Tag mit dem Attribut type="text/smil-basic-layout" kenntlich gemacht. Wird keine Angabe zum Typ gemacht, so wird die SMIL-Basic-Layout-Language als Standardwert gew¨ahlt. Da das -Tag innerhalb des optionalen -Teils steht, ist auch die gesamte Layoutdefinition optional. Wenn keine Informationen zum Layout gemacht werden, so werden alle Multimediaobjekte in ihrer Standardgr¨oße pr¨asentiert. Bei reinen Audiopr¨asentationen entf¨allt das Layout nat¨urlich komplett. Wie auch die beiden Tags und dient auch das Tag nur zur Kennzeichnung davon, was im betreffenden Abschnitt zu erwarten ist; bei sind dies nat¨urlich die Layoutdefinitionen der Pr¨asentation. Allerdings ist nur durch die Angabe dieses Tags noch keine einzige Definition getroffen worden, sondern nur der Bereich identifiziert, in dem das Layout mittels weiterer Tags definiert wird. 6

2.2 Layout der gesamten Pr¨asentation Die gesamte Pr¨asentationsfl¨ache (also das Anzeigefenster) wird u¨ ber das -Tag beeinflußt. Es existieren einige Attribute, die Eigenschaften des Anzeigefensters bestimmen: • Mit dem Attribut width kann die Breite des Anzeigefensters, mit height die H¨ohe des Anzeigefensters festgelegt werden. Erwartet wird jeweils eine numerische Angabe, die dann die Gr¨oße des Fensters in Pixeln angibt. • Das Attribut backgroundColor (in SMIL 1.0 hieß dieses Attribut noch background-color) bestimmt die Hintergrundfarbe des Anzeigefensters. Die Werte werden als RGB-Werte definiert. Wird dieses Attribut nicht gesetzt, so ist die Standardfarbe transparent; daher ist bei Nichtsetzen dieses Attributs nicht sichergestellt, dass die Pr¨asentation in allen Abspielprogrammen gleich aussieht.

2.3 Layout einzelner Objekte Ist das gesamte Fenster erst einmal konfiguriert, geht es daran die einzelnen Bereiche festzulegen, in denen Multimediaobjekte angezeigt werden sollen. Dazu wird das -Tag verwendet. Dieses kontrolliert die Position, die Gr¨oße und die Skalierung eines Multimediaobjekts. Dazu existieren einige Attribute: • Auch eine Region kann eine Hintergrundfarbe haben, diese wird mit dem Attribut backgroundColor (in SMIL 1.0: background-color) festgelegt. Ein spezieller Wert ist "inherit", durch Angabe dieses Wertes erbt die Region die Farbe des Elternelements. Wird dieses Attribut nicht gesetzt, so ist der Hintergrund transparent. Mit dem Attribut showBackground kann festgelegt werden, wann diese Hintergrundfarbe angezeigt werden soll (Standardwert ist "always"): – Der Wert "always" signalisiert, dass die Hintergrundfarbe immer angezeigt werden soll; also auch wenn zum aktuellen Zeitpunkt kein Objekt die Region belegt. Ist die Region einer anderen untergeordnet, so muss die Elternregion entweder aktiv sein oder auch showBackground=”always” gesetzt haben. – Wird das Attribut auf "whenActive" gesetzt, so wird die Hintergrundfarbe nur angezeigt, wenn die Region aktiv ist; d.h. wenn ein Medienobjekt auch tats¨achlich angezeigt wird. Die Hintergrundfarbe wird auch angezeigt, wenn eine untergeordnete Region aktiv ist. • Die Position einer Region kann mit den Attributen top, bottom, left und right gesetzt werden. Werden einfache Zahlen angegeben, so werden sie als Abstand in Pixeln von der jeweiligen Seite interpretiert. Es k¨onnen aber auch prozentuale Werte verwendet werden: Diese sind relativ zur u¨ bergeordneten Region, bzw. falls diese nicht existiert zum Anzeigefenster (also zu der Gr¨oße, die im festgelegt wurde). 7

• Zum Festlegen der Gr¨oße einer Region dienen die beiden Attribute height und width. Auch hier k¨onnen entweder absolute Pixel-Angaben oder prozentuale Angaben gemacht werden. • Um eine Region sp¨ater referenzieren zu k¨onnen, kann man das regionName-Attribut verwenden. Dieser Bezeichner muss nicht eindeutig sein; mehrere Regionen d¨urfen sich einen gemeinsamen regionName teilen. Meistens wird jedoch das Attribut id verwendet, das einen eindeutigen Bezeichner erwartet. Die Art, wie man eine Region benennt, ist sp¨ater nicht mehr wichtig; die Referenzierung ist immer dieselbe. • Mit dem Attribut fit wird die Skalierung eines Elements auf die Region festgelegt. Dieses Element ist nur in der SMIL-Basic-Layout-Language enthalten; es kann aber mit Hilfe von CSS2 simuliert werden. Wird das Attribut nicht gesetzt, so wird als Standardwert ”hidden” verwendet. M¨ogliche Werte sind: – "fill": H¨ohe und die Breite des Objektes werden unabh¨angig voneinander auf die Breite bzw. H¨ohe der Region gesetzt. Dadurch k¨onnen Verzerrungen auftreten, wenn das Seitenverh¨altnis der Region nicht gleich dem des Objekts ist. – "hidden": Wenn die Originalgr¨oße des Objektes kleiner ist als die der Region, so wird das Objekt an der oberen linken Ecke ausgerichtet und der Rest der Region mit der Hintergrundfarbe gef¨ullt. Ist die Originalgr¨oße des Objekts jedoch gr¨oßer als die Region, so wird es an der linken oberen Ecke ausgerichtet und alles, was aus der Region herausragt, wird abgeschnitten. – "meet": Ohne Verzerrungen wird so vergr¨oßert / verkleinert, dass die Region optimal ausgenutzt wird und das gesamte Objekt zu sehen ist. Auch hier wird an der linken oberen Ecke ausgerichtet und ungenutzte Bereiche der Region (die rechts oder unten auftreten k¨onnen) werden mit der Hintergrundfarbe gef¨ullt. – "scroll": Das Objekt wird in Originalgr¨oße an der linken oberen Ecke ausgerichtet. Wenn es nicht in die Region passt, so werden Scrollbalken angezeigt. – "slice": Es wird so skaliert, dass entweder die Breite oder die H¨ohe des Objekts mit dem jeweiligen Wert der Region u¨ bereinstimmt. Dabei muss das Objekt die gesamte Region ausf¨ullen, was nicht passt wird entweder rechts oder unten abgeschnitten. • Da sich Regionen auch u¨ berlappen k¨onnen, kann mit dem Attribut z-index eine Ordnung der Anzeigereihenfolge bestimmt werden: als Wert werden beliebige nat¨urliche Zahlen angegeben. Regionen mit h¨oherem z-index liegen weiter vorne als Regionen mit niedrigeren. Werden keine z-index-Attribute verwendet oder haben zwei Elemente denselben Wert, so entscheidet der Aktivierungszeitpunkt u¨ ber die Anordnung: eine sp¨ater angezeigte Region wird dann u¨ ber eine Region gelegt, deren Anzeige schon begonnen hatte. Werden beide Regionen jedoch gleichzeitig aktiv, so ist die Reihenfolge der anzuzeigenden Elemente im Quelltext entscheidend: Ein im Quelltext sp¨ater vorkommendes Element wird dann u¨ ber ein Element gelegt, dass im Quelltext schon vorher steht. 8

Wie bereits mehrfach erw¨ahnt, lassen sich Regionen auch ineinander verschachteln. Dadurch kann die Positionierung relativ zur Elternregion geschehen und muss nicht mehr wie in SMIL 1.0 relativ zum geschehen. Auch wird dadurch eine Gruppierung von Objekten m¨oglich, so dass das Layout einfacher ver¨andert werden kann. Um die genannten Tags einmal zu pr¨asentieren, folgt ein kurzes Beispiel:

Hier werden zwei Bilder angezeigt (und zwar f¨ur 5 Sekunden, da keine Zeitangaben gemacht wurden). Das gesamte Anzeigefenster hat die Farbe weiss, alle Regionen sind transparent und somit auch weiss. Es wird eine Region mit der ID "gruppe" definiert, die zwei andere Regionen enth¨alt. Diese Position und die Gr¨oße dieser Region werden relativ zum interpretiert, da diese Region in keiner anderen enthalten ist. Die beiden Regionen "objekt1" und "objekt2" hingegen werden relativ zur Region "gruppe" positioniert; die erste relativ zur H¨ohe / Breite dieser Elternregion, die zweite wird von den R¨andern der Elternregion eine feste Anzahl Pixel entfernt positioniert. Den beiden Bildern wird eine Region mit dem Attribut region zugewiesen. Da in der ersten Region fit="slice" gesetzt wurde, wird das erste Bild auf die gesamte Region skaliert (unter Beibehalten der Seitenverh¨altnisse).

3 Multimediaobjekte und Interaktion 3.1 Verwendbare Multimedia-Formate In SMIL k¨onnen verschiedenste Multimedia-Formate zu einer Pr¨asentation kombiniert werden. Alle diese Tags sind semantisch identisch; das Anzeigeprogramm muss u¨ ber andere Mechanismen an den 9

Typen der Datei gelangen (dieser l¨asst sich auch explizit mit dem Attribut type angeben). Jedoch sollten auf jeden Fall die unten aufgef¨uhrten Tags benutzt werden, weil dadurch die Lesbarkeit der SMIL-Dokumente erheblich gesteigert werden kann. • Bilder: Bilder k¨onnen mit dem -Tag in die Pr¨asentation aufgenommen werden. • Text: F¨ur Texte ist das -Tag vorgesehen. • Textstr¨ome: Textstr¨ome wurden erst mit SMIL 2.0 offiziell Bestandteil von SMIL. Vorher war es dem RealOne Player vorbehalten, Textstr¨ome anzuzeigen. Textstr¨ome sind Texte mit zus¨atzlichen Informationen, wann der Text angezeigt werden soll. Daf¨ur steht nun das Tag bereit. • Animationen: Animationen (wie zum Beispiel Flash-Dateien .swf) sollten mit dem Tag deklariert werden. • Audios: T¨one und Kl¨ange sollten mit dem Tag eingebunden werden. • Videos: F¨ur Videos steht das -Tag bereit. • Andere: Allgemeine Referenzen auf Multimediaobjekte sollten mit dem Tag integriert werden. Zu diesen Elementen existiert ein Satz an Attributen, die gesetzt werden k¨onnen. Teilweise sind diese jedoch Element-spezifisch, so braucht auch ein Klang keine Region, in der er angezeigt werden soll. Hier ein kleiner Auszug an Attributen, die f¨ur Multimediaobjekte bereitstehen: • src: das wichtigste Attribut von allen: hier wird definiert, wo die Inhalte gespeichert sind, die abgespielt werden sollen. • region: Legt die Region fest, in der das Element angezeigt werden soll (sofern es ein grafisches Element ist, siehe oben). • clipBegin, clipEnd, dur und andere Attribute stehen noch bereit, um bei solchen Elementen, die eine interne Zeitschiene besitzen (wie Audios, Videos, Animationen, etc.), das Abspielverhalten zu konfigurieren. Diese Attribute werden noch einmal im Kapitel Zeit genauer betrachtet.

3.2 Hyperlinks Auch in SMIL-Pr¨asentationen k¨onnen Hyperlinks wie in HTML definiert werden. In SMIL sind jedoch die M¨oglichkeiten gr¨oßer: So k¨onnen Clips miteinander verbunden werden, damit bei Klick auf einen Link ein anderer Clip statt des ersten angezeigt wird. Links k¨onnen auch mit HTML-Seiten verkn¨upft werden, die bei Aktivierung im Browser ge¨offnet werden und es k¨onnen Links erzeugt werden, die bewirken dass eine vollkommen neue SMIL-Pr¨asentation gestartet wird. 10

3.2.1 Objekte als Links Einfache Links werden wie in HTML mit dem Tag definiert. Das Ziel wird auch mit dem Attribut href definiert. Abgeschlossen wird auch wie in HTML mit einem , dazwischen stehen Objekte, die den klickbaren Bereich darstellen sollen. Dabei sind jedoch einige Unterschiede zu Verweisen, wie man sie aus HTML kennt, zu beachten: • In den meisten Abspielprogrammen gibt es keinen Zur¨uck-Knopf; der Benutzer darf also nicht in Sackgassen gef¨uhrt werden. • Ein Abspielprogramm kann nur einmal gestartet werden, es ist nicht wie in HTML-Seiten m¨oglich, mehrere Fenster zu o¨ ffnen. Die Layout-Definitionen sind mit Anklicken eines Links verloren, sollen sie in einem referenzierten SMIL-Dokument wieder verwendet werden, so m¨ussen sie auch dort neu definiert werden. Hier ein kurzes Beispiel: Wird das Bild aus der Datei "clickMe.jpg" angeklickt, so wird ein neues SMIL-Dokument namens "ziel.smi" angezeigt.

Auf die gleiche Weise k¨onnen auch HTML-Seiten als Ziel f¨ur einen Verweis benutzt werden. Diese werden dann in einem Browser-Fenster ge¨offnet. Mit dem Attribut show kann das Verhalten des Abspielprogrammes bei Aufrufen eines Links definiert werden. Dieses Attribut kann drei verschiedene Werte annehmen: • Wird der Wert auf "new" gesetzt, so wird das Ziel des Links in einem neuen Kontext ge¨offnet, w¨ahrend die urspr¨ungliche Pr¨asentation fortgesetzt wird. Enthalten die urspr¨ungliche Pr¨asentation und das Ziel jeweils ein Audioobjekt, so werden beide parallel abgespielt. • Der Wert "pause" bewirkt, dass die urspr¨ungliche Pr¨asentation pausiert wird und das Ziel in einem neuen Kontext ge¨offnet wird. Dieser Wert ist jedoch nur noch aus Kompatibilit¨atsgr¨unden in SMIL 2.0 enthalten; es sollte show="new" und sourcePlaystate="pause" benutzt werden. • "replace" ist auch der Standardwert, der verwendet wird, wenn dieses Attribut nicht angegeben ist. Er bewirkt, dass die urspr¨ungliche Pr¨asentation pausiert und durch das Ziel ersetzt wird. Bietet das Abspielprogramm eine History-Funktion, so wird bei einem Zur¨uck-Befehl die Pr¨asentation von der pausierten Stelle an fortgesetzt. Außer den beiden Attributen href und show existieren noch eine ganze Reihe von weiteren Attributen (zum Beispiel das nur kurz angedeutete sourcePlaystate), f¨ur weitere Informationen siehe [SMIL2]. 11

3.2.2 Verweise auf andere Teile derselben Pr¨asentation In SMIL-Dateien ist es aber auch m¨oglich, Verweise auf andere Teile der Pr¨asentation zu machen, um zum Beispiel ein Weiterbl¨attern in einer Pr¨asentation zu erm¨oglichen. Als Zielname wird hierbei einfach die eindeutige id mit vorangestelltem ’#’ verwendet. Ein Beispiel:

Wird diese Pr¨asentation gestartet, so wird zuerst das Bild aus der Datei "bild1.jpg" angezeigt; klickt der Benutzer dann jedoch auf das Bild, so wird es durch das Bild aus der Datei "bild2.jpg" ersetzt, da dieses dieselbe Region verwendet. Auf die gleiche Weise k¨onnen auch Elemente referenziert werden, die in anderen SMIL-Pr¨asentationen liegen. Hier wird einfach als Link-Ziel der Name der SMIL-Datei angegeben, gefolgt von einem ’#’ und danach die id des anzuzeigenden Elements. Ein kurzes Beispiel f¨ur eine solche Link-Deklaration:

Hier wird also, wenn auf das Bild geklickt wird, die SMIL-Pr¨asentation in der Datei ziel.smi ge¨offnet und es wird das Element mit dem Attribut id="element" angezeigt. 3.2.3 Bereiche eines Objekts als Verweis deklarieren Bislang wurden immer gesamte Objekte als aktive Fl¨ache des Verweises benutzt. Oft m¨ochte man aber auch nur Bereiche eines Objektes als sogenannten Hotspot definieren, das heißt die aktive Verweisfl¨ache wird eingeschr¨ankt. Dies kann in SMIL 2.0 mit dem -Tag erreicht werden (in SMIL 1.0 hieß dieses Tag noch ). Ein -Element wird, formal gesehen, in ein Multimediaobjekt eingef¨ugt: Das Multimediaobjekt wird nicht direkt durch einen ’/’ abgeschlossen, sondern es wird ein zus¨atzliches Ende Tag benutzt. Dazwischen werden dann einer oder mehrere Hotspots mit dem -Tag definiert. Ein Beispiel soll dies verdeutlichen:

12

In diesem Beispiel befindet sich der Hotspot genau in der Mitte des Bildes "bild1.jpg" und hat eine Ausdehnung von 50% der Bildbreite bzw. Bildh¨ohe (da das -Tag innerhalb des Tags vorkommt, sind die Abmessungen des Bildes die Referenz f¨ur den Hotspot). Die Koordinaten eines Hotspots, die u¨ ber das Attribut coords definiert werden, k¨onnen entweder Prozentangaben wie im Beispiel sein oder aber absolute Pixelangaben. Der erste Wert bestimmt den Abstand vom linken Rand, der zweite Wert den Abstand vom oberen Rand, der dritte Wert den Abstand vom rechten Rand und der vierte Wert den Abstand vom unteren Rand des Multimediaobjekts. Die Form des Hotspots kann mit dem shape-Attribut ver¨andert werden; dies funktioniert genauso wie das shape-Attribut von Image-Maps in HTML 4.01 [HTML4]. Auch das -Tag besitzt die Attribute begin, end und dur. Damit ist es m¨oglich, zeitlich begrenzte Hotspots zu definieren. So kann man zum Beispiel einen Link erst dann aktiv werden lassen, wenn das dazugeh¨orige Objekt schon ein bestimmte Zeit lang sichtbar gewesen ist. Genaueres zur zeitlichen Steuerung und den genannten Attributen findet sich im folgenden Kapitel.

4 Zeit 4.1 Zeitliche Steuerung von Multimediaobjekten SMIL-Pr¨asentationen besitzen immer einen zeitlichen Ablauf, der genau gesteuert werden kann. Dazu existieren im Wesentlichen drei Attribute: begin, end und dur. Diese steuern den Anfang, das Ende bzw. die Dauer der Pr¨asentation eines Multimediaobjekts. Der Startzeitpunkt eines Objekts ist der Zeitpunkt, zu dem das Objekt sichtbar wird. Dieser kann mit dem begin-Attribut gesetzt werden, das als Wert entweder einen Zeitpunkt oder aber eine durch Semikolons getrennte Liste von Zeitpunkten erh¨alt (wird eine Liste angegeben, so wird die Pr¨asentation gestartet sobald einer der Zeitpunkte in der Liste erreicht wird). Ein Zeitpunkt kann entweder in der Langform hh:mm:ss.xyz oder aber in einer Kurzform wie z.B. 2s, 2.5h oder 3.75min angegeben werden. Ein Spezialwert ist "indefinite": wenn dieser Wert als Startzeitpunkt angegeben wurde, so wird das Objekt nur dann angezeigt, wenn es u¨ ber einen Link aktiviert wird. Der Endzeitpunkt wird mit dem Attribut end gesetzt. Wird dieser erreicht, so wird das betroffene Objekt ausgeblendet. Das Attribut end erwartet dieselben Werte wie das begin-Attribut, hier hat der Wert "indefinite" jedoch eine andere Bedeutung: das Element wird solange angezeigt, wie die Pr¨asentation noch gezeigt wird. Anstatt den Endzeitpunkt der Pr¨asentation eines Objekts zu setzen, kann auch die L¨ange dieser Pr¨asentation festgelegt werden. Dazu existiert das Attribut dur, das dieselben Werte wie das endAttribut erwartet. Auch hier gilt f¨ur den Wert "indefinite", dass das Element solange angezeigt wird, wie die Pr¨asentation angezeigt wird. 13

Bei Audio- und Video-Objekten gibt es, wie vorher bereits einmal erw¨ahnt, zwei verschiedene Zeitschienen: Einmal die Zeitschiene der SMIL-Pr¨asentation, in der sie angezeigt werden und die Zeitschiene innerhalb des Objekts. So ist es w¨unschenswert, kontrollieren zu k¨onnen, ab welchem Zeitpunkt innerhalb eines solchen Objekts die Wiedergabe gestartet wird, bzw. wann gestoppt wird. Dazu gibt es in SMIL die Attribute clipBegin und clipEnd. Diese legen den Zeitpunkt fest, ab dem das Objekt abgespielt / beendet werden soll. Ein Beispiel:



Die Audiodatei sound.wav wird also nach 3 Sekunden Pr¨asentationsdauer von der Position, die 10 Sekunden hinter dem Anfang der Audiodatei liegt, abgespielt. Das Abspielen endet vorzeitig nachdem die Position ,,1 Minute“ in der Audiodatei erreicht wurde, die Abspieldauer der Audiodatei betr¨agt also 50 Sekunden. Dies kann man auch erreichen, indem man mit dur="50s" die Dauer der Pr¨asentation dieser Datei festlegt. Bei Videos gibt es noch ein weiteres, spezielles Attribut, das nur f¨ur diese Klasse von Objekten Sinn macht: Das Attribut fill definiert das Verhalten, nachdem die Anzeige des Videos beendet wurde. Hat fill den Wert "freeze", so bleibt das letzte Bild des Videos stehen, mit "remove" wird das Bild entfernt. Ist das Attribut fill nicht angegeben, so wird "remove" als Standardwert verwendet.

4.2 Synchronisation 4.2.1 Elemente zur Synchronisation Durch die Angabe von Startzeitpunkten ist noch nicht sichergestellt, dass zwei Elemente auch wirklich synchron anfangen; die Startzeiten k¨onnen auch leicht gegeneinander verschoben sein. Dies f¨allt aber zum Beispiel bei der Audiospur zu einem Videobild bereits bei wenigen Millisekunden auf; daher gibt es in SMIL spezielle Elemente, die zur Synchronisation verwendet werden. Bei diesen sorgt dann das Abspielprogramm daf¨ur, dass sie synchron abgespielt werden. Es gibt zwei verschiedene Elemente zur Synchronisation: und . Das -Element wird verwendet, wenn zwei oder mehr Objekte gleichzeitig abgespielt werden sollen. Diese Objekte werden dazu in ein -Element geschrieben, zum Beispiel:

14

In diesem Beispiel werden dann die Video- und die Audio-Datei parallel abgespielt, und zwar nachdem die Pr¨asentation bereits 2 Sekunden gelaufen ist, die Pr¨asentation dieser Gruppe wird nach 8 Sekunden beendet. Das -Element kann auch u¨ ber die Attribute begin, end und dur gesteuert werden. Diese Werte geben dann den Beginn, das Ende bzw. die Dauer der Pr¨asentation dieser Gruppe an. Dieser Wert gilt dann auch f¨ur die Elemente der Gruppe, wenn sie nicht eigene, k¨urzere Werte erhalten. Das -Element wird verwendet, wenn zwei oder mehr Objekte direkt nacheinander abgespielt werden sollen. So kann zum Beispiel eine Audiodatei an eine andere angeh¨angt werden:



Hier wird zuerst die erste Audiodatei nach 2 Sekunden f¨ur 6 Sekunden abgespielt. Danach sind wieder 2 Sekunden Pause und danach wird die zweite Datei f¨ur 6 Sekunden abgespielt. Die Gesamtdauer der Pr¨asentation ist daher 2+6+2+6=16 Sekunden. Dies soll grafisch noch einmal verdeutlicht werden:

Ton2

Ton1 0 sec

10 sec

20 sec

Beide Synchronisationselemente k¨onnen mehrfach wiederholt werden. Dazu gab es in SMIL 1.0 das Attribut repeat, der Wert des Attributs definiert die Anzahl der Wiederholungen der Gruppe. In SMIL 2.0 wird dieses Attribut zwar noch erkannt, wurde jedoch offiziell durch die Attribute repeatCount und repeatDur ersetzt. Das Attribut repeatCount funktioniert so wie das Attribut repeat: Es bestimmt die Anzahl der Wiederholungen der Gruppe. Das Attribut repeatDur bestimmt die Zeit, wie lange die Gruppe angezeigt werden soll. Wenn die Gruppe beendet ist, wird sie noch einmal von vorne neu gestartet. Die beiden Synchronisationselemente k¨onnen beliebig tief verschachtelt werden, um Gruppen von Elementen zeitlich zu synchronisieren. So k¨onnen auch komplexe zeitliche Beziehungen relativ einfach umgesetzt werden. 15

Das folgende Beispiel soll eine Anwendung von Verschachtelungen zeigen:

Hier wird zuerst die Gruppe bestehend aus Bild1 und Ton1 pr¨asentiert, direkt im Anschluss wird Bild1 durch Bild2 ersetzt (da die gleiche Region verwendet wird) und Text2 dazu angezeigt. Die folgende Grafik soll dies verdeutlichen:

Ton1

Text2

Bild1 0 sec

Bild2 10 sec

20 sec

Eine besondere Verschachtelung von Synchronisationselementen soll noch vorgestellt werden: Die ¨ -- Folge. Dazu ein paar Details der Ubertragung: Multimediaobjekte werden zuerst in einen Puffer geladen, bevor sie angezeigt werden; die Pr¨asentation beginnt erst dann, wenn ausreichend Daten vorhanden sind. Dieses Laden der Daten wird preroll genannt. Dieses Laden kann man optimieren, indem man die genannte Folge verwendet; im folgenden Beispiel soll zuerst ein Bild mit Text gezeigt und w¨ahrenddessen ein Video geladen werden, was danach angezeigt wird:

16

Durch das -Element wird erreicht, dass die beiden Gruppen nacheinander pr¨asentiert werden. Doch wozu noch das alles umfassende -Element? W¨are dieses nicht vorhanden, also das -Element von h¨ochster Wertigkeit, so w¨urde zuerst nur die erste Gruppe abgearbeitet, erst nach ihrem Ende w¨urden die Daten der zweiten Gruppe u¨ bertragen. Durch das -Element werden diese Gruppen als eine Einheit deklariert, es a¨ ndert jedoch nichts an der Pr¨asentationsreihenfolge. ¨ Dadurch wird Bandbreite, die durch die Ubertragung der ersten Gruppe nicht ben¨otigt wird, dazu verwendet, bereits Daten der zweiten Gruppe zu laden. Ist die Pr¨asentation der ersten Gruppe beendet, so kann ohne Unterbrechung die Pr¨asentation der zweiten Gruppe beginnen. Auch dies soll durch eine Grafik verdeutlicht werden:

Preroll der zweiten Gruppe

Preroll der ersten Gruppe

0 sec

Text1

Untertitel

Bild1

Video 10 sec

20 sec

4.2.2 Ereignisbasierte Synchronisation M¨ochte man ein Element abh¨angig von einem anderen steuern, so kann man einige Ereignisse, die mit diesem zweiten Element auftreten k¨onnen, als Start- oder Endzeit benutzen. Dazu gibt es eine spezielle Syntax f¨ur den Wert des begin- und des end-Attributs: der Wert wird auf die ID des anderen Elements gesetzt, gefolgt von einem Punkt und dem Namen des Events, das den Ausl¨oser darstellen soll. Ein Beispiel:

In diesem Beispiel wird das zweite Bild 3 Sekunden, nachdem das erste Bild angezeigt wurde, dargestellt. Das erste Bild kann dann zum Beispiel durch einen Hyperlink aktiviert werden; dann ist die absolute Startzeit des zweiten Bildes zwar unbekannt, jedoch wird es immer 3 Sekunden nach dem ersten Bild aktiv. F¨ur normale Multimediaobjekte existieren unter anderem die Events begin und end. An diese k¨onnen mit + oder - noch Zeitwerte angeh¨angt werden, die den Versatz zum jeweiligen Event definieren. Aus Kompatibilit¨atsgr¨unden wird auch noch die Syntax von SMIL 1.0 unterst¨uzt. Dabei wird mittels id(...) die ID des Objekts angegeben, das referenziert werden soll. Danach folgt in runden Klammern entweder begin, end oder aber eine Zeitangabe, die einen Zeitversatz zum Start des referenzierten Objekts bestimmt. 17

Gruppen, die durch ein -Element zusammengefasst sind, lassen sich auch noch durch ein besonderes Attribut beenden: das endsync-Attribut. Wird es auf den Wert "last" gesetzt, so endet die Gruppe, wenn das letzte Objekt beendet wurde. Dies ist der Standardwert. Das Gegenteil dazu ist der Wert "first", hierbei wird die Gruppe beendet, sobald das erste Objekt beendet wurde. Es kann aber auch auf einen ID-Wert eines Objekts dieser Gruppe gesetzt werden; dann endet die Gruppe genau dann, wenn auch das referenzierte Objekt beendet wird. 4.2.3 Logische Synchronisation In SMIL gibt es auch die M¨oglichkeit, abh¨angig von den Einstellungen und den M¨oglichkeiten des Benutzersystems eine bestimmte Version eines Objektes bzw. einer Gruppe von Objekten anzuzeigen. Dazu wird das Element verwendet. Innerhalb dieses Elements werden dann die verschiedenen Objekte aufgelistet, die gew¨ahlt werden k¨onnen. Diese Objekte erhalten dann eines oder mehr Testattribute mit einem dazugeh¨origen Wert. Stimmt die Einstellung, die das Testattribut repr¨asentiert, mit dem Wert des Testattributs u¨ berein, so wird dieses Element ausgew¨ahlt. Dabei wird in der ¨ SMIL-Datei von oben nach unten vorgegangen und es wird die erste Ubereinstimmung verwendet. Ein Beispiel soll dies verdeutlichen:

Im Beispiel wird abh¨angig von der Verbindungsgeschwindigkeit des Benutzers eine der Gruppen ausgew¨ahlt. Ist die Bitrate mindestens 40000 bps, so wird die bessere Version von Video und Audio ausgew¨ahlt. Ansonsten wird, da bei der zweiten Gruppe keine Testattribute angegeben sind, diese Gruppe ausgew¨ahlt; diese besteht nur aus einem Textstrom. Es gibt verschiedene m¨ogliche Testattribute, die verwendet werden k¨onnen. Ein kleiner Auszug sei hier gegeben, weitere finden sich in [SMIL2]: • systemBitrate: erlaubt es, abh¨angig von der Verbindungsgeschwindigkeit des Benutzers eine Version auszuw¨ahlen. Als Wert sind Ganzzahlen zugelassen, die in Bits per Second (bps) interpretiert werden. Ist die Verbindungsgeschwindigkeit mindestens so groß wie der angegebene Wert, so wird dieses Objekt ausgew¨ahlt. • systemLanguage: mit diesem Testattribut kann abh¨angig von der eingestellten Sprache des Benutzers eine Version eines Objekts in dieser Sprache ausgew¨ahlt werden. Erwartet wird eine Liste von Sprachelementen, wie sie in [RFC1766] definiert sind. So steht zum Beispiel "de" f¨ur die deutsche Einstellung. 18

• systemCaptions: wenn der Benutzer Untertitel zus¨atzlich zu einem Audioobjekt w¨unscht, hat dieses Attribut den Wert "on", ansonsten den Wert "off". • systemCPU: enth¨alt einen String, der die Prozessorklasse des Benutzersystems identifiziert. Die letztendliche Belegung ist dem Hersteller des Anzeigeprogramms u¨ berlassen; vom W3C wird jedoch die Belegung wie in den PR SI ARCHITECTURE Konstanten des Mozilla Projekts [MOZ] empfohlen. Es muss dem Anwender aber auch m¨oglich sein, diesen Wert auf "unknown" zu setzen; dies muss bei Abfragen beachtet werden. Mit Hilfe des -Elements kann auch die Layout-Definition abh¨angig von den Gegebenheiten des Benutzersystems gestaltet werden. Dabei sind die gleichen Testattribute wie bei der Objektauswahl m¨oglich. Dabei ist das -Element direktes Kind des -Elements und enth¨alt seinerseits verschiedene -Elemente.

5 Vergleich von SMIL 1.0 und SMIL 2.0 Wie bereits an manchen Stellen sichtbar wurde, unterscheiden sich SMIL 1.0 und SMIL 2.0 in einigen Bereichen. Einige dieser Unterschiede sollen in diesem Kapitel vorgestellt werden. So hat man sich bei SMIL 2.0 daf¨ur entschieden, die Attribute eines Objekts nun als sogenannten ,,Camel-Case” zu schreiben, d.h. das erste Wort wird klein, das zweite mit f¨uhrendem Großbuchstaben direkt an das erste Wort geschrieben. In SMIL 1.0 hatte man sich noch an der Syntax von CSS orientiert und Bindestriche ’-’ dazwischen gesetzt. Dies f¨uhrte jedoch zu Problemen mit Sprachen wie zum Beispiel Java-Script, die dynamisch auf den Inhalt von SMIL-Dokumenten zugreifen sollen; dort hat das Zeichen ’-’ die Bedeutung eines Minus-Operators und nicht die eines Bindestriches. Ein weiterer Unterschied zu SMIL 1.0 besteht darin, dass SMIL 2.0 die Wiederholung einer Gruppe von Objekten nun auch an der Zeit ausrichten kann, die diese Gruppe aktiv sein soll (durch das Attribut repeatDur). Dadurch kann eine Gruppe auch zweimal gestartet werden, der zweite Durchlauf aber vor dem eigentlichen Ende abgebrochen werden. Dies war mit SMIL 1.0 noch nicht m¨oglich. Ein dritter Unterschied, der bislang noch nicht erw¨ahnt wurde, ist die Verwendung von Echtzeitwerten. So kann man eine Pr¨asentation zum Beispiel starten lassen, wenn es 10 Uhr ist (die Syntax dieser sogenannten wallclock Werte findet sich in [ISO8601]).

6 Zusammenfassung und Zukunft von SMIL SMIL ist in der aktuellen Version 2.0 eine m¨achtige Sprache zur Pr¨asentation verschiedenster Medienformate in einer wohldefinierten Abfolge und mit großen M¨oglichkeiten zur Interaktion. Mit SMIL ist es sogar m¨oglich, die einzelnen Objekte, die in einer Pr¨asentation angezeigt werden, abh¨angig 19

von den Gegebenheiten und Einstellungen des Benutzers zu differenzieren: die Sprache ist zum Beispiel eine der M¨oglichkeiten. Dies geschieht in einer einzigen Datei in einer einfachen Auflistung; die endg¨ultige Auswahl trifft dann das Anzeigeprogramm des Benutzers. Jedoch hat die Version 2.0, die schon seit 2001 existiert, noch keine große Verbreitung erreicht. Mit SMIL 1.0 sieht es ein wenig anders aus, da der RealONE Player der Firma RealNetworks diese Version des SMIL-Standards unterst¨uzt (plus einige Erweiterungen, die teilweise auch in die Version 2.0 eingeflossen sind). Auf Seiten der Anbieter solcher Pr¨asentationen sieht es noch k¨arglicher aus: man findet meistens nur ein paar Demonstrationen von SMIL, jedoch kaum Pr¨asentationen, die einen anderen Inhalt vermitteln. Ein weiterer Nachteil von SMIL ist die fehlende M¨oglichkeit, Inhalte als sogenannte inline-Objekte direkt in die SMIL-Datei zu integrieren. Man m¨ochte zum Beispiel Bilder in der SMIL-Datei einbetten k¨onnen und nicht alles in eigenen Dateien ablegen m¨ussen. Dies soll vielleicht in Zukunft in SMIL integriert werden; da aber auch manche andere Dateiformate, die auf XML basieren, inline-Objekte sehr gut verwenden k¨onnten, ist eine allgemeine L¨osung f¨ur XML ger¨uchteweise in Planung. Auch ist die Entwicklung von SMIL-Pr¨asentationen derzeit nur sehr schwierig m¨oglich, da insbesondere die Fehlersuche extrem schwierig ist. Denn die Player zeigen bislang bei den meisten Fehlern nur eine allgemeine Fehlermeldung, so dass nicht auf diesen Fehler geschlossen werden kann. Daher bleibt abzuwarten, ob und in welcher Form sich SMIL im Internet bew¨ahren wird. Denn obwohl ein großes Potential vorhanden ist, bleibt abzuwarten, wie es sich verbreiten wird und in welcher Form es benutzt wird. Denn im Moment ist die Internetanbindung der meisten Benutzer noch nicht schnell genug, um die datenintensiven Multimediaobjekte in einer ansehnlichen Qualit¨at in Echtzeit u¨ bertragen zu k¨onnen. Deshalb besteht insbesondere bei der Synchronisation von Multimediaobjekten bislang kaum ein Bedarf. Allerdings ist mit SMIL ein offenes Format geschaffen, das f¨ur multimediale Pr¨asentationen und Objekte einfache und dennoch m¨achtige Kontroll- und Steuerm¨oglichkeiten bietet. Wenn die notwendigen Bandbreiten beim Benutzer vorhanden sind, dann f¨allt diese bislang einschr¨ankendste H¨urde. Danach bleibt jedoch die Frage der Umsetzung und Verbreitung des Standards; insbesondere den Webbrowsern kommt hierbei eine Schl¨usselposition zu.

20

Literatur [SMIL2] W3C, Synchronized Multimedia Integration Language (SMIL 2.0), 07.08.2001, < http://www.w3.org/TR/smil20/ > [HTML4] W3C, HTML 4.01 Specification, 24.12.1999, < http://www.w3.org/TR/html401/ > [MOZ]

Mozilla Project, mozilla.org - Mozilla, 11.04.2003, < http://www.mozilla.org/ >

[RFC1766] IETF, RFC1766 - Tags for the Identification of Languages, M¨arz 1995, < http://www.ietf.org/rfc1766.txt > [ISO8601] International Organization for Standardization, ”Data elements and interchange formats Information interchange - Representation of dates and times”, 1998.

21