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.