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 Player、AIR アプリケーションまたは 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