Styra videouppspelning

Flash Player 9 och senare, Adobe AIR 1.0 och senare

I klassen NetStream finns fyra huvudmetoder för styrning av videouppspelning:

pause() : Pausar uppspelningen av ett videoflöde. Om videon redan är pausad när du anropar metoden händer ingenting.

resume() : Återupptar uppspelningen av ett pausat videoflöde. Om videoklippet redan spelas upp när du anropar metoden händer ingenting.

seek() : Söker efter nyckelbildrutan som är närmast den angivna platsen (en förskjutning i sekunder från direktuppspelningens början).

togglePause() : Pausar eller återupptar uppspelningen av ett videoflöde.

Obs! Det finns ingen stop() -metod. För att stoppa direktuppspelningen måste du pausa uppspelningen och söka efter början av videoflödet.
Obs! Det går inte att återuppta uppspelningen med play() -metoden, den används för inläsning av videofiler.

I följande exempel visas hur du styr en video med flera olika knappar. För att köra följande exempel skapar du ett nytt dokument och lägger till fyra knappinstanser på din arbetsyta ( pauseBtn , playBtn , stopBtn och 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(); 
}

Om du klickar på pauseBtn -knappen när videon spelas upp pausas videofilen. Om videon redan har pausats händer ingenting när du klickar på knappen. Om du klickar på playBtn -knappen återtas videouppspelningen om den var pausad tidigare, annars händer ingenting om videon redan håller på att spelas upp.

Identifiera slutet av ett videoflöde

För att kunna avlyssna början och slutet i ett videoflöde, måste du lägga till en händelseavlyssnare i NetStream-instansen som ska avlyssna netStatus -händelsen. I följande kod visas hur de olika koderna avlyssnas i videouppspelningen:

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

Den föregåenden koden genererar följande utdata:

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

De två koder som du speciellt vill avlyssna är ”NetStream.Play.Start” och ”NetStream.Play.Stop", vilka signalerar början och slutet av en videouppspelning. I följande kodutdrag används en switch-programsats för att filtrera de här två koderna och spåra ett meddelande:

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

Genom att avlyssna netStatus -händelsen ( NetStatusEvent.NET_STATUS ), kan du skapa en videospelare som läser in nästa video i en spelningslista när uppspelningen av den aktuella videon har slutat.