ビデオ再生の制御

Flash Player 9 以降、Adobe AIR 1.0 以降

NetStream クラスは、ビデオ再生を制御する 4 つの主な方法を提供します。

pause() :ビデオストリームの再生を停止します。ビデオが既に停止している場合は、このメソッドを呼び出しても何も実行されません。

resume() :停止中のビデオストリームの再生を再開します。ビデオが既に再生中である場合は、このメソッドを呼び出しても何も実行されません。

seek() :指定された場所(ストリームの先頭からの秒単位のオフセット)に最も近いキーフレームをシークします。

togglePause() :ストリームの再生を停止または再開します。

注意: stop() メソッドはありません。ストリームを停止するには、再生を一時停止し、ビデオストリームの先頭にシークする必要があります。
注意: play() メソッドは再生を再開しません。ビデオファイルのロードに使用されます。

次の例は、様々なボタンを使用してビデオを制御する方法を示します。 次の例を実行するには、新しいドキュメントを作成し、ワークスペース内に pauseBtn playBtn stopBtn および togglePauseBtn の 4 つのボタンインスタンスを追加します。

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

ビデオの再生中に pauseBtn ボタンインスタンスをクリックすると、ビデオファイルが一時停止します。ビデオが既に一時停止状態にある場合、このボタンインスタンスをクリックしても何も効果がありません。 再生が一時停止状態にある場合に playBtn ボタンインスタンスをクリックすると、ビデオ再生が再開されます。ビデオが既に再生中であれば、何も効果がありません。

ビデオストリームの末尾の検知

ビデオストリームの先頭と末尾を監視するには、 netStatus イベントを監視するためのイベントリスナーを NetStream インスタンスに追加する必要があります。次のコードは、ビデオ再生全体において、様々なコードがどのように監視されるかを示します。

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

上のコードを実行すると、次のように表示されます。

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

特に便利なのは、ビデオ再生の先頭と末尾を知らせる「NetStream.Play.Start」および 「NetStream.Play.Stop」の 2 つのコードです。次のコード例では、switch ステートメントを使用してこれら 2 つのコードをフィルタリングし、メッセージをトレースします。

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

netStatus イベント( NetStatusEvent.NET_STATUS )を監視すると、再生中のビデオが終了したときに、プレイリストの次のビデオをロードするビデオプレーヤーを作成することができます。