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
)を監視すると、再生中のビデオが終了したときに、プレイリストの次のビデオをロードするビデオプレーヤーを作成することができます。