La classe NetStream comporte quatre méthodes principales pour contrôler la lecture vidéo :
pause()
: interrompt la lecture d’un flux vidéo. Si la lecture de la vidéo est déjà interrompue, l’appel de cette méthode n’a aucun effet.
resume()
: reprend la lecture d’un flux vidéo interrompu. Si la vidéo est en cours de lecture, l’appel de cette méthode n’a aucun effet.
seek()
: recherche l’image-clé la plus proche de l’emplacement spécifié (décalage, exprimé en secondes, par rapport au début du flux).
togglePause()
: interrompt ou reprend la lecture d’un flux.
Remarque :
il n’existe pas de méthode
stop()
. Pour arrêter la lecture de la vidéo, il est nécessaire de la mettre en pause et de retourner au début du flux vidéo.
Remarque :
la méthode
play()
ne reprend pas la lecture, elle est destinée au chargement de fichiers vidéo.
L’exemple suivant montre comment contrôler la lecture d’une vidéo à l’aide de divers boutons. Pour exécuter cet exemple, créez un document et ajoutez quatre occurrences de boutons à l’espace de travail (
pauseBtn
,
playBtn
,
stopBtn
et
togglePauseBtn
) :
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("video.flv");
function asyncErrorHandler(event:AsyncErrorEvent):void
{
// ignore error
}
var vid:Video = new Video();
vid.attachNetStream(ns);
addChild(vid);
pauseBtn.addEventListener(MouseEvent.CLICK, pauseHandler);
playBtn.addEventListener(MouseEvent.CLICK, playHandler);
stopBtn.addEventListener(MouseEvent.CLICK, stopHandler);
togglePauseBtn.addEventListener(MouseEvent.CLICK, togglePauseHandler);
function pauseHandler(event:MouseEvent):void
{
ns.pause();
}
function playHandler(event:MouseEvent):void
{
ns.resume();
}
function stopHandler(event:MouseEvent):void
{
// Pause the stream and move the playhead back to
// the beginning of the stream.
ns.pause();
ns.seek(0);
}
function togglePauseHandler(event:MouseEvent):void
{
ns.togglePause();
}
Un clic sur l’occurrence de bouton
pauseBtn
pendant la lecture de la vidéo provoque la mise en pause de celle-ci. Si la lecture de la vidéo est déjà en pause, l’appel de cette méthode n’a aucun effet. Un clic sur l’occurrence de
playBtn
reprend la lecture de la vidéo si celle-ci était en pause, sinon ce bouton n’a aucun effet.
Détection de la fin d’un flux vidéo
Pour afficher le début et la fin d’un flux vidéo, vous devez ajouter à l’occurrence de NetStream un écouteur pour l’événement
netStatus
. L’exemple suivant montre comment écouter les divers codes pendant la lecture de la vidéo :
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
function statusHandler(event:NetStatusEvent):void
{
trace(event.info.code)
}
Le code précédent affiche le résultat suivant :
NetStream.Play.Start
NetStream.Buffer.Empty
NetStream.Buffer.Full
NetStream.Buffer.Empty
NetStream.Buffer.Full
NetStream.Buffer.Empty
NetStream.Buffer.Full
NetStream.Buffer.Flush
NetStream.Play.Stop
NetStream.Buffer.Empty
NetStream.Buffer.Flush
Les deux codes d’événement qu’il est nécessaire d’écouter sont « NetStream.Play.Start » et « NetStream.Play.Stop », qui signalent le début et la fin de la lecture de la vidéo. Le fragment de code suivant utilise une instruction « switch » pour filtrer ces deux codes et émettre un message :
function statusHandler(event:NetStatusEvent):void
{
switch (event.info.code)
{
case "NetStream.Play.Start":
trace("Start [" + ns.time.toFixed(3) + " seconds]");
break;
case "NetStream.Play.Stop":
trace("Stop [" + ns.time.toFixed(3) + " seconds]");
break;
}
}
En écoutant l’événement
netStatus
(
NetStatusEvent.NET_STATUS
), vous pouvez créer un lecteur vidéo qui chargera la vidéo suivante dans une liste de lecture une fois la lecture de la vidéo en cours terminée.