2013年1月25日金曜日

p2pの動作をいろいろと更新しました。

前回、p2pの動作が暴走する原因がわかったので、修正したわけですが
またいろいろと更新しました。

できあがったプレーヤーは次のようなもの。
コード:https://github.com/taktod/TakStreaming2/tree/flashCode3
デモ1:http://49.212.39.17/betaplayer/http.html
デモ2:http://49.212.39.17/betaplayer/master.html
デモ3:http://49.212.39.17/betaplayer/slave.html

デモ1はHttp Segmentで動作するストリーミング、やっていることはiOSのhttpLiveStreamingやAdobeが出しているhttpDynamicStreamingと同じですが、メディアデータ等は独自実装です。

デモ2はデモ1と同じHttp経由の動作ですが、p2pで接続している相手がいる場合にp2p経由でデータの伝搬を行います。

デモ3はp2pで接続してデモ2からデータをうけとり再生する動作です。

実行した修正内容の主なものは次のような感じです。

1:rtmfpのネットワークを利用する場合、登録するだけで、自動的にnetGroupにログインするようにした。
これにより、Flashのアクセス確認ダイアログが、視聴開始する前に発生するようになりました。
(ユーザビリティ向上)

2:ネットストリームの情報が乗っている部分で、データソースがp2pかhttpかわかるようにしました。
これは単なる確認用。p2pネットワークの調子がわるいと、p2pとhttpをいったりきたりします。

(開発用)


3:p2pSourceStreamでping通信用につかっていた、netStreamの生成動作を始めにつくったそれようのnetStreamを使い回す形にした。
ActionScriptでオブジェクトを無駄に作成→削除を繰り返すとGCが走るまで大量にオブジェクトが生成されるみたいで、CPUを食うようになるみたいです。
https://github.com/taktod/TakStreaming2/commit/678d8f2a5c71e06e0c70e0a6452a9c5f9481efc9
(PC負荷低減)

4:放送側で放送再開したり、とまったりした場合の動作不良の改善。
flfファイルのindexがリセットされたときの計算方法がまちがっていたみたいです。
おかげで余計なDLが混入したりする懸念があった模様。
(動作安定性向上 & PC負荷軽減)

5:1つのプレーヤーのみでtree構造のp2pノードクラスタができあがるようにした。
1桁のnodeでしかつかっていないので、実際にはうまくいかないことがあるかもしれませんが、ノード構成ができるようにしてみました。

(サーバー帯域節約)


と、これだけ作業してみました。


デモ3ができたことでとりあえずやりたかったことはほぼできたことになります。
やりたかったことというのは
1:ちいさなセグメントの集合でライブ再生すること
2:セグメントが一致するなら、別のネットワークから取得しても同じデータになること。
3:そして、ネットワークがかわったりしても、映像が切れずにシームレスにつながること。

とりあえず満たせたかな・・・と。

あとは、はやいところ、誰でもrtmpの配信ツールつかって放送テストできるデモ公開したいですね。

ではでは

0 件のコメント:

コメントを投稿