直接接続していないクライアント同士でNetStreamを利用したメディアデータのやりとりを実施します。
動画と音声です。
やり方は、groupSpecifierにmulticastEnabledを追加して、有効にしてやる。
NetGroupのかわりにNetStreamを作成し、データをpublishする。
という手順を踏みます。
接続する。
var groupSpec:GroupSpecifier = new GroupSpecifier("akasatana");
groupSpec.serverChannelEnabled = true;
groupSpec.multicastEnabled = true;
_ns = new NetStream(_nc, groupSpec.groupspecWithAuthorizations());
_ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
放送開始
var v:Video = new Video();
var cam:Camera = Camera.getCamera();
cam.setQuality(0, 91);
_ns.attachCamera(cam);
v.attachCamera(cam);
MainModel.data.mxml.meDisplay.addChild(v);
_ns.publish("hogehoge");
視聴開始
var v:Video = new Video();
v.attachNetStream(_ns);
_ns.play("hogehoge");
MainModel.data.mxml.netDisplay.addChild(v);
この手順を踏んで、無事にグループ内で映像データのやりとりをすることができました。
直接接続のできない2つのプレーヤー間で放送と視聴ができたので、真ん中のプレーヤーはデータを又投げしてることになります。
3:直接接続していないクライアントFlash同士のメディアデータのやりとり(Videoとか)ができればうれしい。
これも無事に満たすことができました。
なお、multicastEnabledをしていない状態で実行すると、publishは成功しますが、playがエラーとなります。
また、上記のプログラムの通り、又投げ動作は隠蔽されているので、
4:FlashMedisLiveEncoder等高画質なデータのやりとりをP2Pでやりとりできればうれしい。
の様な外部エンコーダーをつかったデータの通信はやりにくそうです。
最終更新:2011年02月06日 16:19