2011年11月5日土曜日

Flexの配列について

Flexの配列について、調査してみた。

連想配列
var obj:Object = new Object();
obj["hoge"] = "データ";
obj.hoge = "データ";

連想配列を削除する方法
delete obj["hoge"];

キーでまわす。
for(var key:String in obj) {
}
データでまわす。
for each(var data:* in obj) {
}

通常の配列
var ary:Array = new Array();
ary[0] = "a";

popについて
var ary:Array = new Array();
ary[3] = "a";
ary.toString; // [,,a]
ary.pop(); // aがでてくる。[0,1,2]の要素は影響しない・・・
ary[0]; // undefined

以上メモ

非同期でFLVのパケットデータが送られてくるので、排他処理が欲しいところ・・・orz

rtmfpで高画質配信をやってみたい。その4

実際にrtmfpで接続して配信できるところまできました。
場所やソースは前回と同じところにあります。


Red5用のアプリのソース:https://github.com/taktod/packetTest
Flexのアプリのソース:https://github.com/taktod/packetTestSwf
仮においてみたRed5サーバー:rtmp://49.212.39.17/test/hoge
Flash:http://poepoemix.appspot.com/hqtest/HighQualityMovieTest.swf

やり方は
1:rtmp://49.212.39.17/test/(なにか)にむけて適当な名前で放送を実行する。
2:HighQualityMovieTest.swfを起動してrtmpサーバーの指定を1に合わせてconnectする。
3:rtmfpサーバーに接続し、GroupNameを適当にいれておく。(Cumulusでつくった僕のサーバーがデフォルトで入っています。)

4:別のクライアントで2のプレーヤーを起動する。
5:4で起動したクライアント上でrtmfpサーバーに接続してグループに参加
6:4で起動したクライアントの一番したのButtonをクリックするとグループの他のメンバーにP2P接続を実行し動画の再生を開始する。

というもの。

今後変更しないとだめな部分は・・・
Java側:
・パケットを作成する部分、開始パケットにまだ抜けがある様子。
Flex側:
・再生停止したあとや、グループに再接続した場合等に問題がある。
きちんと初期化されていなかったり、前の命令がのこっていたりする部分がありそう。
・単一ソースからダウンロードを実行しているので、途中の橋渡しをしているユーザーが落ちたら、それ以下のユーザーが全員影響をうけてしまう。
複ソースで動作するように変更したいところ。
・回線の太さによってぶら下がるユーザーの数を上下できるようにしたい。

こんなところか・・・