La classe NetStream fornisce quattro metodi principali per controllare la riproduzione video:
pause()
: mette in pausa la riproduzione di uno streaming video. Se il video è già in pausa, la chiamata a questo metodo non ha alcun effetto.
resume()
: riprende la riproduzione di uno streaming video in pausa. Se il video è già in fase di riproduzione, la chiamata a questo metodo non ha alcun effetto.
seek()
: cerca il fotogramma chiave più vicino alla posizione specificata (uno scostamento, in secondi, dall'inizio del flusso).
togglePause()
: mette in pausa o riprende la riproduzione di uno streaming.
Nota:
non è presente alcun metodo
stop()
. Per interrompere uno streaming, è necessario mettere in pausa la riproduzione e cercare l'inizio del flusso video.
Nota:
il metodo
play()
non riprende la riproduzione; viene utilizzato per caricare i file video.
L'esempio seguente mostra come controllare un video mediante diversi pulsanti. Per eseguirlo, create un nuovo documento e aggiungete quattro istanze di pulsante all'area di lavoro (
pauseBtn
,
playBtn
,
stopBtn
e
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();
}
Se fate clic sull'istanza del pulsante
pauseBtn
mentre il video è in corso di riproduzione, il file video viene messo in pausa. Se il video è già in pausa, un clic su questo pulsante non ha alcun effetto. Se fate clic sull'istanza del pulsante
playBtn
, viene ripresa la riproduzione del video se quest'ultima era stata precedentemente messa in pausa; in caso contrario, il pulsante non ha alcun effetto se il video era già in fase di riproduzione.
Rilevamento della fine di un flusso video
Per ascoltare l'inizio e la fine di un flusso video, dovete aggiungere un listener di eventi all'istanza NetStream che intercetti l'evento
netStatus
. Il codice seguente illustra come ascoltare vari codici durante l'intera riproduzione del video:
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
function statusHandler(event:NetStatusEvent):void
{
trace(event.info.code)
}
Il codice precedente genera il seguente risultato:
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
I due codici specifici che desiderate intercettare sono “NetStream.Play.Start” e “NetStream.Play.Stop”, che segnalano l'inizio e la fine della riproduzione del video. Lo snippet di codice seguente utilizza un'istruzione switch per filtrare i due codici e visualizzare un messaggio:
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;
}
}
Intercettando l'evento
netStatus
(
NetStatusEvent.NET_STATUS
) potete creare un lettore video che, al termine della riproduzione del video corrente, carica il video successivo all'interno di una playlist.