Controle da reprodução de vídeo

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

A classe NetStream oferece quatro principais métodos para controlar a reprodução de vídeos:

pause() : pausa a reprodução de um vídeo em fluxo contínuo. Se o vídeo já estiver pausado, chamar este método não terá efeito.

resume() : reinicia a reprodução de um vídeo em fluxo contínuo que foi suspenso. Se o vídeo já estiver em reprodução, chamar este método não terá efeito.

seek() : busca o quadro-chave mais próximo do local especificado (um deslocamento, em segundos, a partir do início do fluxo).

togglePause() : pausa ou reinicia a reprodução de um fluxo contínuo.

Nota: Não há um método stop() . Para interromper um fluxo, você deve pausar a reprodução e fazer a busca até o início do fluxo de vídeo.
Nota: O método play() não reinicia a reprodução; ele é usado para carregar arquivos de vídeo.

O exemplo a seguir demonstra como controlar um vídeo usando vários botões diferentes. Para executar o exemplo, crie um novo documento e adicione quatro ocorrências de botão ao seu espaço de trabalho ( 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(); 
}

Quando você clica na ocorrência do botão pauseBtn durante a reprodução do vídeo, o arquivo de vídeo é pausado. Se o vídeo já estiver pausado, clicar neste botão não terá efeito. Clicar na ocorrência do botão playBtn reinicia a reprodução do vídeo se a reprodução foi pausada anteriormente; caso contrário, o botão não terá efeito se o vídeo já estiver sendo reproduzido.

Detecção do final de um fluxo de vídeo

Para monitorar o começo ou o final de um fluxo de vídeo, você precisa adicionar um ouvinte de eventos à ocorrência de NetStream para monitorar o evento netStatus . O seguinte código demonstra como monitorar os diversos códigos durante a reprodução do vídeo:

ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); 
function statusHandler(event:NetStatusEvent):void 
{ 
    trace(event.info.code) 
}

O código anterior gera a seguinte saída:

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

Os dois códigos que você deseja monitorar especificamente são “NetStream.Play.Start” e “NetStream.Play.Stop”, que sinalizam o início e o fim da reprodução do vídeo. O seguinte snippet usa uma instrução de opção para filtrar esses dois códigos e rastrear uma mensagem:

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; 
    } 
}

Ao monitorar o evento netStatus ( NetStatusEvent.NET_STATUS ), você pode criar um player de vídeo que carregue o próximo vídeo de uma lista de exibição depois que a reprodução do vídeo atual for concluída.