Im ersten Codebeispiel zum Open Source Media Framework (OSMF) wurde gezeigt, wie man eine Videodatei abspielt (z.B. .flv oder .f4v).
Wie dort bereits angedeutet, ist das OSMF jedoch nicht auf Videos beschränkt. In diesem Artikel wird gezeigt, wie man auch andere Medientypen abspielt. Zusätzlich wird ein Sequenz erstellt, in der einige Medienelemente automatisch nacheinander abgespielt werden.
Videos, Bilder, Sounds und SWF
Das Open Source Media Framework (OSMF) kann neben Videos auch Bilder, SWFs oder Sounds abspielen. Dazu werden folgende Klassen verwendet:
VideoElement
für Videos (z.B. .flv, .f4v, etc.)SWFElement
für kompilierte Flashfiles (.swf)ImageElement
für Bilder (z.B. .jpg, .png, .gifAudioElement
für Sounds (z.B. .mp3 oder .m4a)
Das Tolle daran ist, dass das Laden und Abspielen immer nach dem gleichen Prinzip funktioniert. Man muss also nicht wissen, welche ActionScript-APIs im Hintergrund eingesetzt werden, da dies gekapselt ist.
Für jeden Medientyp gibt es eine entsprechende Klasse, die den spezifischen Ladevorgang implementiert (NetLoader, SWFLoader, ImageLoader, SoundLoader
).
[xml]
new VideoElement( new NetLoader(), new URLResource(myVideoURL))
new AudioElement( new SoundLoader(), new URLResource(myMP3URL))
new ImageElement( new ImageLoader(), new URLResource(myImageURL))
new AudioElement( new SoundLoader(), new URLResource(myMP3URL))
[/xml]
Medienelemente hintereinander abspielen
Es ist sehr einfach, eine sequenzielle Abfolge zu erstellen. Die Klasse heißt SerialElement
. Diesem Element kann man per addChild
nun einzelne Medienelemente hinzufügen, die dann einfach hintereinander angezeigt werden.
[xml]
var serialElement:SerialElement = new SerialElement();
serialElement.addChild ( new VideoElement( new NetLoader(), new URLResource(myVideoURL)) );
serialElement.addChild ( new AudioElement( new SoundLoader(), new URLResource(myMP3URL)) );
…
[/xml]
Anzeigedauer
Da z.B. Bilder keine Dauer haben, kann man die Anzeigedauer mithilfe eines TemporalProxyElement
-Objekts festlegen. Das Objekt wird mit einer Dauer in Sekunden (im Beispiel 3s) und einem Medienelement initiert.
[xml]
serialElement.addChild
( new TemporalProxyElement
( 3, new ImageElement( new ImageLoader(), new URLResource(myImageURL)))
);
[/xml]
Beispiel
Hier ein kleines Beispiel, dass mehrere Elemente hintereinander anzeigt. Zuerst steht ein Bilder für drei Sekunden, dann folgt ein kurzes Videos. Es folgt eine MP3-Datei und zuletzt ein SWF-File. Wie man sieht, kann die Sequenz über die Play-/Pausebuttons auch angehalten werden. Beispiel anschauen
[xml]
[/xml]
[ad]