Flv mit Netstream und Netconnection laden und steuern

Flash Videos, kurz .flv, lassen sich heute recht einfach mit Flash laden und steuern. Dazu gibt es die FLVPlayback-Komponente, die eine komplette Steuerung beinhaltet und somit das laden und steuern der Flv`s zum Kinderspiel macht. Möchte man aber eigenes Actionscript schreiben um Flv`s zu laden und zu steuern, muss man auf die NetStream und NetConnection Klasse zurückgreifen. Dies ist schon mit AS 2 möglich gewesen, wir wenden uns aber heute dem Beispiel mit AS 3 zu.

1. Zuerst erstellen wir eine Instanz der NetConnection. Dabei muss kein anderer Server angegeben werden, da die Verbindung auf demselben Server erfolgt:

var nc:NetConnection = new NetConnection();
nc.connect(null);

2. Danach wird ein NetStream Objekt instanziert und NetConnection angefügt:

var ns:NetStream = new NetStream(nc);

3. Zum eigentlichen Abspielen und Laden der Datei benötigen wir die Methode play(Datei). Da aber der Film am Anfang angehalten werden soll muss die Flv anfangs auf pause() gesetzt werden. Darüber hinaus muss, damit das erste Bild angezeigt wird, die Abspielposition auf seek(0) gesetzt werden. Das ganze sieht dann so aus:

ns.play("video.flv");
ns.pause();
ns.seek(0);

4. Der Video-Stream ist nur verwendbar, wenn wir ihn an ein Video-Objekt anhängen, das mit attachNetStream(NetStream) geschieht. Nun erhält das Video noch die korrekten Höhen,- und Breitenmaße und wird dann unterhalb eines Anzeigeobjektcontainers hinzugefügt, der sich unterhalb einer Maske befindet und so einen Teil des Videos ausschneidet:

var video:Video = new Video();
video.attachNetStream(ns);
video.height = 320;
video.width = 240;
placeholderMc.addChild(video);

5. Um das Video zu steuern benötigen wir einen Play,- , Stop,- und Pausebutton.
In AS 3 müssen nun Event-Listener für die verschiedenen Button angelegt werden:

playBtn.addEventListener(MouseEvent.CLICK, videoPlay);
stopBtn.addEventListener(MouseEvent.CLICK, videoStop);
pauseBtn.addEventListener(MouseEvent.CLICK, videoPause);

6. Zum Schluß müssen noch die Funktionen für die Event-Listener geschrieben werden. Dabei ist zu beachten, daß das Abspielen nicht mit play() gestartet wird, sondern mit resume(), da wir den Stream schon ganz am Anfang abgespielt und angehalten haben:

function videoPlay(evt:MouseEvent){
ns.resume();
}

7. Das stoppen des Streams besteht aus pause(), sowie seek(0) um den Abspielkopf wieder an den Anfang zu setzen:

function videoStop(evt:MouseEvent){
ns.pause();
ns.seek(0);
}

8. Als letztes erfolgt noch das pausieren des Streams mit der Methode pause():

function videoPause(evt:MouseEvent){
ns.pause();
}

Diese Grundsteuerung läßt sich dann nach belieben erweitern, mit z.B. einer Positionsanzeige oder Vor,- und Zurückspulbutton, um einen voll funktionsfähigen Flash Videoplayer mit AS 3 zu bauen.