Klasa NetStream udostępnia cztery główne metody do sterowania odtwarzaniem wideo:
pause()
: wstrzymuje odtwarzanie strumienia wideo. Jeśli wideo jest już wstrzymane, wywołanie tej metody nie odnosi żadnego skutku.
resume()
: wznawia odtwarzanie wstrzymanego strumienia wideo. Jeśli wideo jest odtwarzane, wywołanie tej metody nie odnosi żadnego skutku.
seek()
: wyszukuje klatkę kluczową znajdującą się najbliżej określonego miejsca (przesunięcia w sekundach względem początku strumienia).
togglePause()
: wstrzymuje albo wznawia odtwarzanie strumienia.
Uwaga:
Nie istnieje metoda
stop()
. Aby zatrzymać odtwarzanie strumienia, należy wstrzymać odtwarzanie i przejść (seek) na początek strumienia.
Uwaga:
Metoda
play()
nie wznawia odtwarzania, służy do ładowania plików wideo.
Poniższy przykład ilustruje sposób sterowania odtwarzaniem wideo przy użyciu kilku różnych przycisków. Aby uruchomić poniższy przykład, utwórz nowy dokument i dodaj cztery instancje przycisków do obszaru roboczego (
pauseBtn
,
playBtn
,
stopBtn
i
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();
}
Kliknięcie instancji przycisku
pauseBtn
podczas odtwarzania wideo powoduje wstrzymanie pliku wideo. Jeśli wideo jest już wstrzymane, kliknięcie tego przycisku nie odnosi żadnego skutku. Kliknięcie instancji przycisku
playBtn
powoduje wznowienie odtwarzania wideo, jeśli było wcześniej wstrzymane; jeśli wideo jest już odtwarzane, kliknięcie przycisku nie odnosi żadnego skutku.
Wykrywanie końca strumienia wideo
Aby wykrywać początek i koniec strumienia wideo, należy dodać do instancji NetStream detektor zdarzenia
netStatus
. Poniższy kod ilustruje sposób wykrywania różnych kodów w czasie odtwarzania wideo:
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
function statusHandler(event:NetStatusEvent):void
{
trace(event.info.code)
}
Poprzedni fragment kodu generuje następujące wyniki:
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
W szczególności interesuje nas wykrywanie kodów „NetStream.Play.Start” i „NetStream.Play.Stop”, które sygnalizują początek i koniec odtwarzania wideo. W poniższym urywku kodu zastosowano instrukcję switch w celu odfiltrowania tych dwóch kodów i wyświetlenia komunikatu:
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;
}
}
Wykrywając zdarzenie
netStatus
(
NetStatusEvent.NET_STATUS
), można skonstruować odtwarzacz wideo, który ładuje następne wideo z listy odtwarzania po zakończeniu odtwarzania bieżącego wideo.