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 で記述されています)。
1 NetConnection オブジェクトを作成し、サーバーに接続して、netStatus イベントハンドラーを追加します。
2 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);
5 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)。
例えば、再生リストがストリーム A、B、Cをこの順序で再生するように設定されているとします。
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を配信していない場合、サーバーはコンテンツをスワップします。結果的に、streamA、streamBおよび streamZが再生されます。
サーバーが異なるコンテンツのストリームにスワップする場合、クライアントアプリケーションはバッファーをリセットします。サーバーは新しいストリームの先頭からスワップします。このとき、操作が中断されることはありません。
サーバーサイド再生リストは、サーバーサイド ActionScriptの Streamオブジェクト上の順番で再生されるメディアのリストです。再生リストには、ライブメディアと記録済みメディアの両方を含めることができます。
サーバーサイド再生リストはライブストリーム(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