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.