ADOBE®   MEDIA SERVER 5.0.3

デベロッパーズガイド


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

 

注意

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

 

サーバー間のマルチポイントパブリッシュ

 

マルチポイントパブリッシュについて

マルチポイントパブリッシュを利用することによって、クライアントからサーバーへの 1 つの接続のみで、クライアントから複数のサーバーにパブリッシュすることができます。この機能によって、サーバーや受信者が地理的に離れた場所にしていたとしても、大規模なライブブロードキャスト用のアプリケーションを構築することができます。

 
 

マルチポイントパブリッシュを使用した、地理的な境界を超えたサーバーからサーバーへのコンテンツのパブリッシュ

A.  ライブビデオ  B.  サーバー 1(ニューヨークC.  サーバー 2(シカゴ)とサーバー 3(ロサンゼルスD.  ユーザー

 

この図で示されているアプリケーションの流れは次のようになります。

 

1    クライアントは、ニューヨークにあるサーバー1 のアプリケーションに接続しNetStream.publish() を呼び出してライブストリームをパブリッシュします。このクライアントはカスタムの Flash PlayerAIR アプリケーションまたは Flash Media Live Encoderなどです。

2   サーバー 1 のサーバーサイドスクリプトは、パブリッシュされたストリームの名前で application.onPublish() イベントを受信します。

3     application.onPublish()ハンドラーは NetStreamオブジェクトを作成しNetStream.publish()を呼び出してライブストリームをサーバー 2(シカゴ)とサーバー 3(ロサンゼルス)に再パブリッシュします。

4   サーバー 2 とサーバー 3に接続している受信者は、同一のライブストリームを受信します。

5   クライアントがパブリッシュを停止すると、アプリケーションは application.onUnpublish() イベントを受信します。

 

例:マルチポイントパブリッシュ

この例では、クライアントはストリームをキャプチャおよびエンコードして、サーバーにパブリッシュします。Flash Media Live Encoder を同じ目的で使用することもできます。

注意このコードをテストするには、サーバーに RootInstall/applications/livestreams フォルダーを作成します。Administration Console を開いてライブストリームアプリケーションのインスタンスを作成しますLive Logs をクリックして、アプリケーションの実行時にサーバーサイド trace() ステートメントを参照します。RootInstall/documentation/samples/livestreams/LiveStreams.swf  ファイルを開いてアプリケーションに接続します。

 

1   クライアントサイドスクリプトではNetStream.publish() メソッドを呼び出してライブストリームをパブリッシュします。

 

ns.publish("localnews", "live");

注意Flash Media Live Encoderをパブリッシュクライアントとして使用するには、FMS URL rtmp://localhost/livestreams Stream localnews を入力してください。

 

2   サーバーサイド main.asc ファイルでapplication.onPublish() イベントハンドラーを定義します。このハンドラーは、クライアントからパブリッシュされたストリーム名の受諾、リモートサーバーへの接続およびストリームのリモートサーバーへの再パブリッシュを行いま(この例ではリムートサーバーは同じアプリケーションのもう 1 つのインスタンスです

 

// Called when the client publishes

application.onPublish = function(client, myStream) {

trace(myStream.name + " is publishing into application " + application.name);

// This is an example of using the multi-point publish feature to republish

// streams to another application instance on the local server.

if (application.name == "livestreams/_definst_"){

trace("Republishing the stream into livestreams/anotherinstance");

nc = new NetConnection();

nc.connect("rtmp://localhost/livestreams/anotherinstance");

ns = new NetStream(nc);

// called when the server NetStream object has a status

ns.onStatus = function(info) {

trace("Stream Status: " + info.code)

if (info.code == "NetStream.Publish.Start") {

trace("The stream is now publishing");

}

}

ns.setBufferTime(2);

ns.attach(myStream);

ns.publish(myStream.name, "live");

}

}

 

NetStream.publish()を呼び出すことによって、自分のサーバーからリモートサーバーにストリームをパブリッシュします。

3    main.asc ファイルでは、自分のサーバーからリモートサーバーにパブリッシュするために使用しているNetStream オブジェクトで発生したイベントを処理します。

 

ns.onStatus = function(info) {

trace("Stream Status: " + info.code)

if (info.code == "NetStream.Publish.Start") {

trace("The stream is now publishing");

}

}

サーバーサイド NetStream.publish()メソッドはNetStatusイベントを NetStream.Publish.Startコードでトリガーします。これは、クライアントサイドNetStream.publish()メソッドと同様の動作です。

4   クライアントがパブリッシュを停止したときの処理を定義します。

 

application.onUnpublish = function( client, myStream ) {

trace(myStream.name + " is unpublishing");

}

 

 

最終更新日 2013/9/30