昨日の話の流れですが、今日はちょうど(?)会社のPCへのCS3のインストールがひたすらうまくいかなかった関係で仕事がほぼ丸一日できず、インストール中にFlash Media Serverの技術資料を読むことができました(笑)
予め断っておきますが、
▼リソース
http://help.adobe.com/ja_JP/flashmediaserver/3.0/flashmediaserver_tech_overview.pdf
http://help.adobe.com/ja_JP/flashmediaserver/3.0/flashmediaserver_dev_guide.pdf
予め断っておきますが、
- サーバの知識は初級の上
- FMSの経験はなし
- プログラミングはPerlの基本くらい
- ネットワークの知識はインターネットの基本くらい
- ASの知識はリファレンス見ながらなんとか。。。
▼リソース
http://help.adobe.com/ja_JP/flashmediaserver/3.0/flashmediaserver_tech_overview.pdf
http://help.adobe.com/ja_JP/flashmediaserver/3.0/flashmediaserver_dev_guide.pdf
まずは概要の方から簡単にまとめます。ちなみに私、動画のストリーミングよりもソーシャルメディアアプリケーション寄りのものを作りたくて調べたので、ストリーミングを中心に知りたい方はPDFを素直にお読みになった方がよろしいかと思います。
【基礎】
セキュリティ面の話しにあまりついていけなかったですが、ひとまず概要はこんなところです。
本当は開発者ガイドの方もまとめたかったのですが、ドキュメント量が2倍ということを考えると3時を迎えそうなので今日はここまでってことで。
今回は前回のブログでも紹介したひとつのSWF内にいる他ユーザの情報を表示させることをどうやったら表現できるかってのが元で勉強しているのですが、今日出てきたところで言えば、共有オブジェクトがその解決策になりそうなのは周知の通り。ただし、2000人くらいが同時にアクセスした場合、ひとつのリモート共有オブジェクトでその管理がまかなえるんでしょうか???もしかしてその辺がXMLSocketを使ったほうがよいという結論になる所為だったりするのでしょうか?
たとえばバルビレッジみたいにエリアがはっきりと分かれているMapであれば各エリアに対して共有オブジェクトを作成しておけば効率的に管理できそうだけど、Red Interactive Agencyみたいなインターフェースではひとつの共有オブジェクトでユーザの位置を管理する必要があるんだろうか???
共有オブジェクトは便利だけど、その設計ってよく考えて行う必要がありそうだな。
はやくDevelopment Serverをインストールして遊びたいなぁ。
【基礎】
- FMSにはFlash Media Streamiing ServerとFlash Media Interactive ServerとFlash Media Development Serverの3つがある
- Flash Media Interactive ServerはFlash Media Streaming Serverのアップグレードで、Flash Media Development ServerはFlash Media Interactive Serverの機能と同じながら同時接続数が10に制限されたバージョン
⇒Development Serverを親にして10機のInteractive Serverにパブリッシュして負荷分散するなどが考えられる...、といったことが書いているような気がする(笑)
⇒Flash Media Streaming Serverは単純なビデオのストリームのみと考えた方がよいです - FMSとのやり取りはRTMP:Rial-Time Messaging Protocol(デフォルトポート:1935)により行われる
- RTMPには、SSLを介したRTMPS(デフォルトポート:443)、SSLよりも高速なRTMPE(デフォルトポート:1935)などセキュアな通信もある
⇒ストリーミングでセキュアな通信って必要か?オンライン会議とかか?RTMPEで言えばRTMPよりも15%ほどの高負荷らしい。
- H.264とHE-AACをサポート(要FlashPlayer9UPDATE3またはAIRクライアント)
- FMS自体はエンコードやデコードを行わず、すでにエンコードされているメディアをストリームするだけ
- ライブ中継などの動画、音声についてはFlash Media Encoder2によりエンコードする
⇒エンコードはクライアントのFlashPlayerのバージョンに合わせてコーデックを選別できるのかな?
- クライアント間で共有するデータは共有オブジェクト:SharedObjectにより行う
⇒SharedObjectはリモートとクライアントのローカルでそれぞれ定義することが可能で、クライアント間での共有はリモート共有オブジェクトで行う
⇒ローカル共有オブジェクトって普通のFlashで使用しても便利じゃね?? - FMS⇔クライアント間の接続はNetConnectionにより行う
- クライアントサイドスクリプトではNetConnection.call()メソッドでサーバサイドのClientオブジェクトで定義されているメソッドを呼び出し、サーバサイドスクリプトではClient.call()メソッドを呼び出してクライアントサイドのNetConnectionオブジェクトで定義されているメソッドを呼び出すことができる
- サーバサイドスクリプトで管理されるClientオブジェクトはクライアントからの接続が発生するたびにインスタンスが生成される
- エッジサーバをデプロイメントすることでオリジンサーバへの負荷を軽減できる
⇒デプロイメントってのは設置するとか確立するとかそんな意味合いでOK?(笑)
⇒サーバサイドスクリプト自体はオリジンサーバで実行されるらしいけど、イコールClientの管理もオリジンサーバで行われるってことでOKですかね?
⇒エッジサーバのキャッシュのメモリ容量はサーバ管理者で設定できる - FMSはプログレッシブダウンロードに代表されるようなクライアントのハードに保存される配信ではなく、真のストリーミングと言える
⇒ちょっと笑える表現だな - 著作権管理の面でよりセキュア
- Clientオブジェクトのreferrerプロパティを使用してSWFのリファラーをチェックすることができる
- サーバに対して検証される一意の鍵を生成するかアプリケーションサーバとの間で暗号化されたトークンの要求と受信を行える
⇒意味不明(笑)RTMPSのことかな? - クライアントサイドスクリプトからNetConnection.connect()メソッドでユーザ名やパスワードを渡すことでDBやLDAPサーバまたはその他のアクセス許可サービスなどの外部リソースに基づいて視覚情報を検証することができる
⇒やばい、連続で意味不明(笑)
セキュリティ面の話しにあまりついていけなかったですが、ひとまず概要はこんなところです。
本当は開発者ガイドの方もまとめたかったのですが、ドキュメント量が2倍ということを考えると3時を迎えそうなので今日はここまでってことで。
今回は前回のブログでも紹介したひとつのSWF内にいる他ユーザの情報を表示させることをどうやったら表現できるかってのが元で勉強しているのですが、今日出てきたところで言えば、共有オブジェクトがその解決策になりそうなのは周知の通り。ただし、2000人くらいが同時にアクセスした場合、ひとつのリモート共有オブジェクトでその管理がまかなえるんでしょうか???もしかしてその辺がXMLSocketを使ったほうがよいという結論になる所為だったりするのでしょうか?
たとえばバルビレッジみたいにエリアがはっきりと分かれているMapであれば各エリアに対して共有オブジェクトを作成しておけば効率的に管理できそうだけど、Red Interactive Agencyみたいなインターフェースではひとつの共有オブジェクトでユーザの位置を管理する必要があるんだろうか???
共有オブジェクトは便利だけど、その設計ってよく考えて行う必要がありそうだな。
はやくDevelopment Serverをインストールして遊びたいなぁ。

コメントする