ADOBE®   MEDIA SERVER 5.0.3

デベロッパーズガイド


翻訳:株式会社サムライズ

 

注意

Adobe Media Server® バージョン 5についての本ドキュメントは第三者によって翻訳されたものであり、Adobe Systems Incorporated(アドビ システムズ社)は本翻訳物の正確性や完全性を査閲していません。

 

再生リストの操作

 

再生リストについて

再生リストとは、順に再生されるストリームのリストです。サーバーは、ストリームのリストを連続ストリームとして処理し、バッファリングを提供します。これにより、ストリームが切り替わる場合でも中断が発生しません。再生リストの作成には、クライアントサイドの ActionScriptとサーバーサイドの ActionScriptの両方を使用できます。

アドビシステムズ社の伝道者 Jens Loefflerは、ライブストリームをハイライトリールに編集するためにクライアントサイドとサーバーサイドの再生リストを使用する内容の Adobe DevNet の記事を書いています。

 

 

クライアントサイド再生リストの作成

重要1 番目の項目がないクライアントサイド再生リストに影響するバグがあります。そのような再生リストはユーザーが最初に再生するとき、1 番目の項目がスキップされて再生されます。その後は、毎回その再生リストをユーザーが再生するたびに、再生リストが再生されません。

 

この再生リストは、サーバーに格納されているストリームの名前を使用します。この再生リストを変更するには、アプリケーションクライアントのコードを変更する必要があります。

注意MediaPlayer サンプルの MediaPlayer.as を使用してください(これは ActionScript 3.0 で記述されています

 NetConnection オブジェクトを作成し、サーバーに接続してnetStatus イベントハンドラーを追加します。

 NetStream オブジェクトを作成しnetStatus イベントをリッスンします。

 

private function createPlayList(nc:NetConnection):void {

stream = new NetStream(nc);

stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

stream.client = new CustomClient();

...

}

3    NetStream オブジェクトを Video オブジェクトに割り当てます。

 

video = new Video();

video.attachNetStream(stream);

4    NetStream オブジェクトに、一連の play() メソッドを定義します。

 

stream.play( "advertisement", 0, 30 );

stream.play( "myvideo", 10, -1, false );

stream.play( "bikes", 0, -1, false );

stream.play( "parade", 30, 120, false); addChild(video);

 netStatus イベントハンドラー内で、NetStream イベントコードをリッスンします。

 

private function netStatusHandler(event:NetStatusEvent):void

{

...

case "NetStream.Play.Stop":

trace("The stream has finished playing");

break;

case "NetStream.Play.StreamNotFound":

trace("The server could not find the stream");

break;

}

この再生リストは、以下のストリームを再生します。

•    advertisement.flv という名前の記録済みストリーム、最初から 30 秒間

•    myvideo.flv という名前の記録済みストリーム、開始後 10 秒の位置から最後まで

•   bikes.flv という名前の記録済みストリーム、最初から最後まで

•   parade.flv という名前の記録済みストリーム、開始後 30 秒の位置から 2 分間継続

 

再生リスト内のストリームのスワップ

Flash Player 10 Flash Media Server 3.5

 

ストリームのスワップとは、1 つのストリームと別のストリームを交換することです。ストリームの切り換えがキーフレームで行われるのに対して、ストリームのスワップはストリームの境界で実行されます。したがって、ストリームのスワップは再生リストを使用するのに役立ちます。例としては、広告セグメントがあるコンテンツを含む再生リストで使用します。使用パターンに関する統計を収集した後で、1 つの広告と別の広告をスワップすることができます。

再生リスト内でストリームをスワップするにはトランジションモードが SWAPである NetStream.play2()メソッドを使用しますNetStream.play2()メソッドでは、パラメーターとして NetStreamPlayOptionsオブジェクトを使用します。NetStreamPlayOptionsオブジェクトでは、古いストリーム、切り替え先のストリーム、使用するトランジションの種類を指定します(ここでは NetStreamPlayTransitions.SWAP

例えば、再生リストがストリーム ABCをこの順序で再生するように設定されているとします。

 

ns.play("streamA", 0, -1, true);

ns.play("streamB", 0, -1, false);

ns.play("streamC", 0, -1, false);

...

 

ストリーム Aを再生し、サーバーがストリーム Cの送信を開始する前に、ストリーム C ではなくストリーム Zを再生することにしたとします。このトランジションを実行するには、次のサンプルのようなコードを使用します。

 

var param:NetStreamPlayOptions = new NetStreamPlayOptions();

param.oldStreamName = "streamC";

param.streamName = "streamZ";

param.transition = NetStreamPlayTransitions.SWAP

ns.play2(param);

SWAPトランジションは SWITCH トランジションとは異なりますストリームをスワップする呼び出しはサーバーが古いストリーム(この例ではstreamC)を配信する前に行う必要がありますstreamCが既に再生されている場合、サーバーはコンテンツをスワップせずNetStream.Play.Failedイベントを送信します。サーバーがまだ streamCを配信していない場合、サーバーはコンテンツをスワップします。結果的にstreamAstreamBおよび streamZが再生されます。

 

サーバーが異なるコンテンツのストリームにスワップする場合、クライアントアプリケーションはバッファーをリセットします。サーバーは新しいストリームの先頭からスワップします。このとき、操作が中断されることはありません。

 

 

サーバーサイド再生リストの作成

サーバーサイド再生リストはサーバーサイド ActionScriptStreamオブジェクト上の順番で再生されるメディアのリストです。再生リストには、ライブメディアと記録済みメディアの両方を含めることができます。

 

サーバーサイド再生リストはライブストリーム(Streamオブジェクト)で再生されます。再生時に FLVまたは F4Vファイルとしてストリームを記録することができます。再生リストに FLVファイルのみが含まれる場合は、再生リストを FLV ファイルまたは F4Vファイルとして記録できます。それ以外の場合は、F4Vファイルとして記録します。

次のコードは、2 つのライブストリームと 1 つの記録済みストリームからなるサーバーサイド再生リストを作成します。

// Start the playlist when the application loads.

// This is a live playlist, it is not recorded.

application.onAppStart = function(){

this.myStream = Stream.get("serverplaylist");

// Play a live stream for 30 seconds.

this.myStream.play("liveStream1", -1, 30);

// Play a recorded stream in full after liveStream1 plays.

this.myStream.play("mp4:recordedStream1.f4v", 0, -1, false);

// Play another live stream for 30 seconds after recordedStream1 plays.

this.myStream.play("liveStream2", -1, 30, false)

}

 

再生リストを再生するには、クライアントで NetStream.play("serverplaylist") を呼び出します。再生リストをスムーズに再生するには、クライアントサイドの NetStream.bufferTime プロパティを少なくとも 1 秒に設定します(デフォルト値は 0.1 秒です

再生リストにメディアを追加するにはStream.play()を呼び出しresetパラメーターに falseを渡しますfalseを渡すと現在再生中のメディアが停止されるまで、メディアは再生を開始しません。

次のサーバーサイドコードは、2 つの記録済みメディアファイルを連続して再生し、それらをファイル「playlist.f4v」に記録します。メディアファイルはそれぞれ全部再生されます。再生リストを再生するには、クライアントでNetStream.play("mp4:playlist.f4v")    を呼び出します。

 

application.onAppStart = function(){

this.clientStream = Stream.get("mp4:playlist.f4v");

this.clientStream.record();

this.clientStream.play("mp4:british.mp4", 0, -1);

this.clientStream.play("mp4:shadows.mp4", 0, -1, false);

};

次の例は、Jens Loeffler のブログ flashstreamworks.com で提供されています。サーバーサイド再生リストを使用して、DVR 対応ライブイベント中にハイライトクリップを書き出します。再生リスト(例では、オープニングクリップに続いてライブイベントの選択部分、続いてアーカイブクリップのセクション)を構築し、.f4v ファイルとして記録します。ハイライトリールを再生するには、ストリーミングプレーヤーを書き出した .f4v ファイルにポイントします。

 

application.myStream = Stream.get("mp4.highlights.f4v");

if (application.myStream){

application.myStream.record();

application.myStream.play("mp4:titles.f4v", 0, 15);

application.myStream.play("livesmith", -1, 30, false);

application.myStream.play("mp4:smitharchive.mp4", 0, 30, false);

application.myStream.play("mp4:closing.f4v", 0, 15, false);

}

};

この例を再生するには、クライアントで  NetStream.play("mp4:highlights.f4v")  を呼び出します。サーバーサイド再生リストを再生するには、クライアントサイドの NetStream.bufferTimeプロパティを少なくとも 1秒に設定します(デフォルト値は 0.1秒です

 

 


 

 

最終更新日 2013/9/30