Sterowanie odtwarzaniem wideo

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

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.