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

2010年2月1日 加藤 雄亮 このエントリーをはてなブックマークに追加 Clip to Evernote

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サーバへアップロードして完了です。