2012年6月15日金曜日

FlashMediaServerのメモ

SakuraのvpsにFlashMediaServerをいれました。
いれたといってもDevelop版ですけどね。

今回いろいろなsegmentをつくるプログラムを書いてるわけですが、元になるサーバーをFlashMediaServerにしたいと思います。

理由はこんな感じ
1:小規模solutionに展開していいらしい。
え?小規模ソリューションの展開にご使用していいの?

2:Flazr経由でのFlashMediaServerのデータのダウンロードができる件。
Red5のRtmpClientでは無理だったんですが、Flazrなら接続もデータのダウンロードも可能です。もちろんxuggleのffmpegのつなぐことも可能でした。まぁ、ちょっと謎解きが必要ですけど。なお、H.263のDisposable InnerFrameの件もRed5じゃなければ問題なく扱えるみたいです。

3:堂々とFlashMediaLiveEncoderが使える件。
Adobeが提供している無料で高画質配信できるアレです。
ライセンスにたしか、FlashMediaServerにしか流しちゃだめよというのがあったかと思います。
これですね。Flash Media Serverには流してよし、このソフトをつかってサーバーや実行ファイルをつくったり、他のプログラム(ストリームをやりとりする系)に流すのはだめって書いてあります。

まぁ、FlashMediaServerのライセンスにFlash以外の3rdパーティーのクライアントでつないじゃダメといった条項はなさそうだし、今回やりたいことはオッケーであろうと判断しました。

まぁ、単なる言い訳ですね。


さて、サーバーに導入するにあたってRed5のときと同じく、特定のアプリだけにしかアクセスできなくしたいと思います。

[fms]/applicationsの中にある邪魔なプログラムをすべて撤去します。(liveとかvodとか)
で、アプリ用のディレクトリを作ります。
今回はtestというディレクトリにしました。(あとで多分変更する。)
[fms]/applications/test/
これだけでアプリケーションとして有効になるので
rtmp://[ドメイン]/test
でアクセスできるようになるわけですが、これだけだと、任意のRoomアクセスできるし、ストリームも流し放題になります。

そこで次のようにやりました。
[fms]/applications/test/main.ascを準備して以下のコードを書きました。

application.onPublish = function(client, stream) {
        if(stream.name != "test") {
                this.disconnect(client);
        }
}
if(application.name != "test/_definst_") {
        application.shutdown();
}

test/_definst_以外のアプリケーションは生成させない。(room)を禁止する。
testという名前以外で放送開始したら、クライアントを切断させる。

ついでに[fms]/applications/test/streams/のディレクトリの所有者をrootに変えました。
これでrecordで放送されてもファイルはできません。

以上で特定のアプリのみRoom禁止、放送もできるけど放送可能なストリーム名は固定され、かつ録画もできない

という状況をつくりました。

0 件のコメント:

コメントを投稿