SMIL - Synchronisiertes Multimedia fürs Web
| Rudolf Arnold, Valckenburgschule Ulm |
Bitte lächeln - ein neues W3C Format ist da Mit der Einführung von SMIL (gesprochen smile"), der Synchronized Multimedia Integration Language, haben die Gestalter von multimedialen Webseiten ein neues Werkzeug in der Hand, um zeitabhängige multimediale Präsentationen zu kreieren, die Audio, Video, Bilder und Text vereinigen. Der vom Word Wide Web Consortium W3C vorgeschlagene SMIL-Standard definiert eine XML-basierte Sprache, die die Kontrolle darüber erlaubt, welcher Medienbaustein wann und wo in der Multimedia-Präsentation erscheint. SMIL ist eine einfache und klare Markierungssprache ähnlich wie HTML. In einer SMIL-Präsentation wird auf alle Medienelemente, also Audioclips, Videoclips, Animationen und formatierter Text von einer SMIL-Datei verwiesen, ähnlich wie eine HTML-Seite auf ihre Bilder, Applets und andere Bestandteile verweist. Dies bietet eine Reihe von Vorteilen fürs Streaming. Erstens macht es der reine Text, aus dem SMIL-Dateien bestehen, möglich, daß sie leicht zu erstellen, editieren und sogar von Java-Anwendungen oder CGI-Skripten erzeugt werden können. Zweitens sind sie ein bandbreitenfreundlicher Weg zur Gestaltung gut aussehender Multimedia-Präsentationen. Der erste kommerzielle SMIL-Player ist die neueste Version von RealNetworks RealPlayer, nämlich G2. Während die Vorgängerversionen des RealPlayer nur das Abspielen der RealNetworks eigenen Audio- und Videoformate gestattete, unterstützt G2 auch viele andere Medientypen wie WAV, AVI, JPEG, MPEG etc. RealNetworks hat den größten Teil der SMIL 1.0 Spezifikationen in G2 umgesetzt und plant, bald alle Bestandteile zu integrieren. |
![]() |
| Um zu verstehen, wie eine SMIL-Präsentation aufgebaut wird, betrachten wir ein einfaches Beispiel. Unser Programmbeispiel ist eine Präsentation mit dem Titel Geschichte der Oboe". Dabei handelt es sich um eine mit Musik und Sprache vertonte Diaschau die über eine ISDN-Verbindung laufen sollte. |
| Elemente eines SMIL Programms
Listing 1 zeigt den grundlegenden Rahmen einer Präsentation mit dem Titel Geschichte der Oboe" und wurde als Datei oboe.smi (ohne die Zeilennummern) abgespeichert. Ähnlich wie eine HTML-Datei beginnt eine SMIL-Datei mit einem <smil> Identifizierungskennzeichen (im weiteren Text wird hier der amerikanische Ausdruck Tag" verwendet), das sie als SMIL-Datei identifiziert und <head> und <body> Abschnitte enthält. Der <head> Abschnitt enthält Informationen, die das Erscheinungsbild und das Layout unserer Präsentation beschreiben, während der <body> Abschnitt Informationen über den eigentlichen Inhalt und die zeitlichen Abläufe enthält. Listing 1 1 <smil> Sie haben wahrscheinlich bemerkt, daß manche Tags in einem SMIL Listing vor der schließenden Klammer (>) einen nach vorne geneigten Schrägstrich (/) enthalten. Tags wie <body> die ein entsprechendes Abschlußtag </body> enthalten, werden wie in HTML geschrieben. Dagegen müssen in XML basierten Sprachen Tags, die kein entsprechendes Abschlußtag besitzen, wie zum Beispiel <region/>, mit /> enden. Innerhalb der <body> Sektion arrangieren wir die Abfolge und das Timing unserer Medienelemente. Die beiden grundlegenden Tags zur Kontrolle des Timings sind <par> und <seq>. Medien, auf die innerhalb von <par>-Tags verwiesen wird, werden parallel, das heißt gleichzeitig abgespielt. Medien innerhalb von <seq>-Tags spielen nacheinander ab. Es ist möglich, <par> und <seq>-Tags in jeder Kombination zu verschachteln, um komplizierte Effekte zu schaffen. Im vorliegenden Beispiel läuft eine Folge von Bildern, die über die Datei oboe.rp gesteuert wird parallel zum Ton, der in oboeges.rm gespeichert ist. Das Timing zwischen den <seq> und <par> Tags ist automatisch. Eine Datei, auf die innerhalb eines <seq> Abschnitts nach einer anderen verwiesen wird, spielt sofort ab, wenn das Playback der ersten beendet ist, gleichgültig wie lange das dauern mag. Wenn Sie jedoch ausdrücklich Kontrolle wollen, können die Timingeigenschaften begin, end oder dur (duration) setzen, um festzulegen, wann und wie lange eine Datei abgespielt wird. Wir betrachten nun den Code, der in den Zeilen 20-23 die Medienelemente tatsächlich in die Präsentation einfügt SMIL erlaubt einige Medien-Tags, unter anderem img, text, textstream, video, audio und animation. Im <par> Block in Zeile 20 habe ich einen Verweis auf die Diaschau, die RealPics-Datei oboe.rp eingefügt. Sie soll in der Bildschirmregion "full" ablaufen. In diesem Fall ist die von mir erstellte Bildfolge eventuell bereits beendet, während der Ton noch läuft, d.h. die Audiodatei bestimmt die Dauer dieses Parallelblocks. Da der Ton also auch nach Beendigung der Animation noch weiterläuft, muß ich sicherstellen, daß die Bilder noch bis zum Ende des Parallelblocks auf dem Bildschirm sichtbar bleibt. Deshalb habe ich das Attribut fill="freeze" dem Image-Tag hinzugefügt. Der voreingestellte Wert von fill ist remove, was die entsprechenden Elemente am Ende des Abspielvorgangs vom Bildschirm entfernt. Auf den in oboeges.rm gespeicherten Ton, wird in Zeile 23 verwiesen. |
| Elemente einer RealPix-Datei
Bis jetzt war der ganze Programmcode, den wir betrachtet haben, strenge SMIL 1.0, so wie das W3C sie definiert hat. Auf die SRC Eigenschaften jedes Elements kann über eine relativen Dateipfad oder eine komplette URL verwiesen werden, die auf einen HTTP-Server oder idealerweise einen Streaming Media Server" (wie den RealServer G2) zeigt. Hier gilt es zu beachten, daß die Dateiformate, auf die ich über meine img, text, video, audio, animation und andere Tags verweise, von der Implementierung abhängen. Während z.B. SMIL ein image Tag enthält, kann es sein, daß ein spezieller Player nicht jedes gebräuchliche Bildformat unterstützt Die gegenwärtige Version des RealPlayer kann JPEG-, GIF- oder HTML-Dateien nicht direkt über die SMIL-Datei ansprechen, wenngleich diese Möglichkeiten später unter Ausnutzung der Plug-in-Architektur des RealPlayer unterstützt werden könnten. Zur Zeit kann mit dem RealPlayer auf Bilder und Texte nur über RealText- und RealPics-Dateien zugegriffen werden. Jede beruht auf einer XML-basierten Markierungssprache, die ihre eigenen Formatierungs-, Effekt- und Timing-Informationen für die Bilder oder Texte enthält, die dargestellt werden sollen. Betrachten wir nun die zur Präsentation gehörende RealPix-Datei oboe.rp . RealPix erlaubt eine Vielzahl von Bildeffekten wie Überblendung, Zoom und Schwenk. Listing 2 zeigt oboe.rp, den RealPix-Code für die Diaschau, die in Zeile 20 des SMIL-Programms aus Listing 1 aufgerufen wird. Listing 2 1 <imfl> Zunächst beginnt und endet eine RealPix-Datei mit den <imfl> </imfl> Tags. Es folgt ein <head> Tag, der in diesem Fall aber keinen abschließenden </head> Tag wie in einer HTML- oder SMIL-Datei hat. Innerhalb des <head> Tags definiere ich einige erforderliche Eigenschaften. In Zeile 2 habe ich die Gesamtdauer der RealPix-Präsentation auf 2 Minuten 29 Sekunden gesetzt. Außerdem habe ich die Breite und Höhe auf die selbe Größe wie das SMIL-Fenster festgelegt, nämlich 450 x 425 Pixel. In Zeile 7 wird aspect="true" gesetzt, was dem Player mitteilt, bei der Skalierung der Bilder das korrekte Seitenverhältnis beizubehalten. Außerdem habe ich die timeformat Eigenschaft gesetzt um das dd:hh:mm:ss.xyz Zeitformat in meinem Code benutzen zu können. Zeile 5 legt die Streaming-Bitrate, die ich der RealPix-Präsentation zuweisen will in Bits pro Sekunde (bps) fest. Dieser Bitratenwert bestimmt die maximale
Bandbreite, die der RealPix-Teil meiner SMIL-Präsentation für das Laden der Bilder
nutzen kann. Nehmen wir an, die Präsentation soll über eine ISDN-Verbindung laufen. Man
befindet sich auf der sicheren Seite, wenn man annimmt, daß man auf einer 64 kbps
Verbindung im Durchschnitt eine Übertragungrate von ungefähr 40 kbps erreicht. Ich
weiß, daß ich eine 32 kbps Audio-Datei erstellt habe, die abgespielt wird, während die
Bilder angezeigt werden sollen. Um die Bandbreite von 40 kbps einzuhalten, kann ich also
nur 8 kbps für RealPix verwenden. Wenn Sie eine RealPix-Präsentaion kreieren, ist es
wichtig, die Gesamtgröße der RealPix-Präsentation im Auge zu behalten und zu berechnen,
wieviel Zeit man benötigt um sie herunterzuladen. Ich muß sicherstellen, daß meine
Bilder, bei der gewählten RealPix-Bitrate, während der Zeit, in der sie angezeigt werden
sollen, genügend Zeit zum Laden haben. Eines ist dabei behilflich: Der RealPlayer
berechnet die Gesamtgröße der Dateien, die ich einschließen will In diesem Fall haben die Bilder eine Gesamtgröße von 64 kB oder 512 kbits, was bei einer Downloadrate von 8 kbps ungefähr 64 Sekunden entspricht. RealPix sieht eine preroll Eigenschaft im head-Teil der .rp-Datei vor. Damit kann man minimale Zeit festlegen, innerhalb derer die Bilder vorgeladen werden, bevor RealPix abgespielt wird. Der RealPlayer berechnet seinen eigenen Vorlaufwert und benutzt entweder diesen oder den ausdrücklichen Preroll-Wert, je nachdem welcher größer ist. In Zeile 6 habe ich preroll="00:20" gesetzt, um zu gewährleisten, daß der Player von der gesamten verfügbaren Vorlaufzeit Gebrauch macht. In den Zeilen 10-13 von Listing 2 lade ich die Bilder, die ich für meine Diaschau brauche. Jedes <image>-Statement hat eine name-Eigenschaft, die den Pfad und den Dateinamen relativ zum Speicherort meiner .rp-Datei angibt. Außerdem ist da noch eine handle-Eigenschaft, die aus einer einmaligen Nummer besteht, die später benutzt wird, um auf das betreffende Bild zu verweisen. Ein einfaches Laden der Bilder mit <image> Tags spielt sie jedoch nicht ab. Es gibt eine zweiten Satz von Tags, die ich hier Action-Tags nennen möchte. Diese kontrollieren das Timing und die Art der Darstellung der Bilder innerhalb der RealPix-Präsentation. In Zeil 15 beginne ich mit einem <fadein start="00:00" duration="00:08" target="1"/> Statement. Die Ziel-Eigenschaft identifiziert das Handle des Bildes, das ich darstellen will. In diesem Fall soll das Bild eine Sekunde nach Start der Präsentation aus Schwarz aufblenden, was acht Sekunden lang dauern soll. |
![]() |
| In den Zeilen 19, 23 und 27 beginnt jeweils ein <crossfade/> Tag, mit dem Beginn, Dauer und Ziel einer Überblendung festgelegt wird. Und schließlich wird mit <fadeout/> ausgeblendet. |
| Zusammenfassung SMIL eröffnet einen neuen Weg für die Zusammenstellung und die Auslieferung von Multimedia-Präsentationen im Streaming-Modus. Anders als bei der herkömmlichen Erstellung, bei dem ein Satz Medien in eine einzige Datei kompiliert wird, gestattet es SMIL, einzelne Medienstücke wie in einer Choreographie schnell und einfach zusammenzustellen und das mit einfachen Werkzeugen wie einem Texteditor. Es ist sogar möglich ein Web-basiertes Interface zu konstruieren, das es dem Benutzer gestattet, Multimedia-Präsentationen zu bearbeiten oder sogar neue zu erstellen. Für diejenigen, die eine graphische Benutzeroberfläche für das Verfassen solcher Präsentationen bevorzugen, haben verschiedene Anbieter bereits Werkzeuge zur Erstellung von SMIL, RealPix- und RealText-Präsentationen angekündigt, die den meisten Multimediaautoren vertraut vorkommen werden. Die Möglichkeit, Text im Streamingmodus zu senden, eröffnet neue Horizonte, indem Video mit niedriger Bitrate (und damit Bildqulität) mit kristallklarem Text kombiniert wird. RealNetworks bietet einen Livetext Stream Encoder an, der die Aussendung von Echtzeitdaten aller möglicher Typen inklusive Informationen über Ereignisse, Aktienpreise, Untertitel und mehr gestattet. Obwohl SMIL viele Fähigkeiten existierender Multimedia-Umgebungen wie QuickTime hat, ist sie nicht als Ersatz für diese Technologien gedacht. Sie ist vielmehr ein Universalkleber um alle möglichen Medienformate und -typen auf interessante und nützliche Art zusammenzufügen. RealNetworks sieht seinen G2 RealPlayer als einen universellen Player an. Seine Architektur gestattet es Drittanbietern, Schnittstellen für neue Medientypen hinzuzufügen. Beispiele währen etwa MPEG1, VRLM und MIDI. In den kommenden Monaten und Jahren wird der Reifungsprozess sowohl von SMIL als auch dem G2 RealPlayer vielleicht ungeahnte Möglichkeiten für den Internet-basierten Multimediaeinsatz an Schulen bieten. |


