RTMFPを使用したビデオチャットの実験


ちょっと興味があったけどまだ手をつけきれていなかったFlashPlayer10.1の新機能「RTMFPマルチキャスト」を勉強ついでにやってみました。
今回デモで制作したのは「ローカルネットワーク上で動作するサーバレスのビデオチャット」です。

RTMFPビデオチャット(RTMFP Video Chat Example) – wonderfl build flash online

■ 使い方
1. 同じLAN上にある2台のWebカメラ付きPCでこのページを開きます。
2. Start ConnectをクリックするとFlashPlayerの設定パネルが開きますので「許可」をクリックします。上部のテキストエリアに”NetConnection.Connect.Success”が表示されれば接続成功です。
3. どちらか片方のPCでページ上部のBroadCastボタンを押し、カメラの使用を許可します。
4. うまくいけばもう片方のPCにBroadCastしたPCのカメラ映像が表示されます。
5. 先ほど受信した側のPCのBroadCastボタンを押すと双方向で映像と音声のやりとりが出来ます。
6. Massageのテキスト入力エリアにテキストを入力してSend Messageボタンを押すと相手にテキストを送信できます。

※ 1台のPCでもブラウザのウィンドウを2つ開けばとりあえず挙動の確認はできます。但し音声がダブって変なエコーがかかったようになりますが・・・

接続のためのコード(主要部分)は以下に。

Net Connectionを接続します

private function doConnect():void {
	_nc = new NetConnection();
	_nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
	_nc.connect("rtmfp:");
}

NetConnection.Connect.Successが呼ばれたらNetGroupインスタンスを作ります

private function addNetGroup():void{
	// GroupSpecifier
	_gs = new GroupSpecifier(グループ識別子);
	_gs.postingEnabled = true;
	_gs.ipMulticastMemberUpdatesEnabled = true;
	_gs.multicastEnabled = true;
	_gs.addIPMulticastAddress(マルチキャストに使用するアドレス);
	// NetGroup
	_ng = new NetGroup(_nc, _gs.groupspecWithAuthorizations());
	_ng.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
} 

NetGroup.Connect.Successが呼ばれたら送信用NetStreamを確立してカメラインスタンスを割り当てます。

private function broadCast(e:MouseEvent):void {
	// NetStream
	_ns = new NetStream(_nc, _gs.groupspecWithAuthorizations());
	_ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
	setUpCamera()
	_ns.attachCamera(_cam);
	_ns.publish(_streamName);
}

あとは、受信用のNetStreamを作りVideoインスタンスにストリームを割り当てると表示できます。
またチャット部分は今回は NetGroup.post(Object); を送受信しています。


RTMFPを使用したビデオチャットの実験” に対して1件のコメントがあります。

コメントは受け付けていません。