直接接続していないクライアント間でのメディアデータのやりとり

直接接続していないクライアント同士で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でやりとりできればうれしい。

の様な外部エンコーダーをつかったデータの通信はやりにくそうです。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2011年02月06日 16:19
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。