Controllo della riproduzione video

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

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.