Adobe Stratusを使用したFlash P2P通信について

2010年2月1日 加藤 雄亮 この記事をはてなブックマーク この記事をクリップ! twitter Twitterに投稿

Adobe LabsにRTMFPプロトコルを扱う「Adobe Stratus」があります。現在はベータ版ですが、そろそろリリースが近いのではないかと思います。

RTMFP(Real-Time Media Flow Protocol)は、簡単に言うとRTMPの機能限定版です。リアルタイムの映像と音声配信に特化したプロトコルと言えます。Flash Player 10.1とStratus 2.0を使用するとアプリケーションレベルでマルチキャストを使用出来きるそうです。サーバを介す必要がないため、負荷を軽減出来るメリットがあります。



サンプルアプリケーション:
オンラインで公開されているサンプルアプリケーションもありますが、ローカルで動作させてみたい場合は、ソースコードが公開されているのでダウンロードして自由に試す事が出来ます。

Stratusオンラインサンプル
ソースコードダウンロード



ソースコードを実行する場合は以下の手順が必要です。
※要Flex Builder 3.0.2, Flash Player 10

1. Flex Builderで「新規Flexプロジェクト」で「VideoPhoneLabs」プロジェクトを作成します。

2. 以下のソースコードを「VideoPhoneLabs/src/」下にコピーします。
 VideoPhoneLabs.mxml
 AbstractIdManager.as
 HttpIdManager.as
 IdManagerError.as
 IdManagerEvent.as

3.「VideoPhoneLabs」プロジェクトのプロパティを変更
 「Flexコンパイラ」の「Flex SDK バージョン」を「Flex 3.2」へ変更
 「Flexコンパイラ」の「必要な Flash Player バージョン」を「10.0.0」へ変更

4. Stratusベータ版のDeveloper keyを取得します。
 Stratus developer key

5. Developer keyを「VideoPhoneLabs.mxml」に記述します。

// developer key, please insert your developer key here
private const DeveloperKey:String = "取得したDeveloper key";

6. 同梱のPythonスクリプト「reg.cgi」が利用するSQLite3のデータベースを作成し、以下のSQLを実行します。
CREATE TABLE registrations (
    m_username VARCHAR COLLATE NOCASE,
    m_identity VARCHAR,
    m_updatetime DATETIME,
    PRIMARY KEY (m_username)
);
CREATE INDEX registrations_updatetime ON registrations (m_updatetime ASC);

[user@www ~]$ sqlite3 registrations.db # データベース作成
SQLite version 3.3.6
Enter ".help" for instructions

# テーブル作成
sqlite> CREATE TABLE registrations (
   ...>     m_username VARCHAR COLLATE NOCASE,
   ...>     m_identity VARCHAR,
   ...>     m_updatetime DATETIME,
   ...>     PRIMARY KEY (m_username)
   ...> );
sqlite> CREATE INDEX registrations_updatetime ON registrations (m_updatetime ASC);

# 終了
sqlite> .quit

7.「reg.cgi」のデータベースファイルの場所を任意で変更します。
 ※「reg.cgi」と「registrations.db」を同階層に設置する場合は以下
# CHANGE THIS
dbFile = './registrations.db'

8.「reg.cgi」を任意の場所にアップロードし、URLを「VideoPhoneLabs.mxml」に記述します。
// please insert your webservice URL here for exchanging
private const WebServiceUrl:String = "http://設置URL/reg.cgi";

9.「VideoPhoneLabs」プロジェクトをコンパイルします。

10.「bin-release」ディレクトリに生成されたHTMLをWebサーバへアップロードして完了です。

コメント / トラックバック6件

  1. Mac より:

    Mac OS X 10.5.8 (Player: MAC 10,0,42,34) で、Stratusオンラインサンプルを試してみたのですが、P2Pでのユーザ間接続ができませんでした。Windowsでは接続できたのですが・・・この機能はMacには対応していないのでしょうか?

  2. 加藤 雄亮 より:

    Mac – Win間で接続を試しましたが、Stratusオンラインサンプルで動作することを確認しました。
    Macでも接続出来るみたいですが、たぶんMac同士でも問題無いと思われます。
    接続にあたり、特に設定などはしていません。

    環境はご連絡頂いたものと同じです。Mac OS X 10.5.8 (Player: MAC 10,0,42,34)

  3. Mac より:

    ご返答いただきまして、ありがとうございます。それでは私の環境に原因があるようですね。ルータはWindows機と共通なので、Mac OSの方の設定などをよく調べてみようと思います。

  4. 松浪栄輔 より:

    とても理解しやすい解説をしていただき、ありがとうございます
    windowsXPプラットフォームでローカル内で動作確認できましたのですが
    外部からは セキュリティサンドボックス侵害やcgiのエラーが出てしまいました
    crossdomain.xmlをいじってみたりもしましたがうまくいかないです
    公開する場合の設定変更部分等あるのですか?

  5. 加藤 雄亮 より:

    ご連絡頂いたURLで試してみましたら、ログに以下のメッセージが表示されました。
    =============
    Error #2048: セキュリティサンドボックス侵害 : http://matsunamieisuke.webhop.net/VideoPhoneLabs.swfhttp://192.168.0.7/cgi-bin/reg.cgi?identity=0&username=test からデータを読み込めません。
    =============

    http://matsunamieisuke.webhop.net/ から http://192.168.0.7/ を参照しようとする時にセキュリティ侵害が発生しているようです。
    reg.cgiへのPATHが問題ですので、PATHを修正すれば解決すると思われます。

  6. 松浪栄輔 より:

    お返事ありがとうございます
    動作確認をPROXYからできました
    reg.cgiへのPATHをローカルIPにしてはいけなかったのですね
    ありがとうございました!

コメントをどうぞ