ustream hacks #3 publish movie from your own swf!

次、配信のほう。こいつはすこしやっかいだった。

まず接続は

nc.connect("rtmp://209.85.64.39/ustvVideo/{chid}", { id: "{userid}", sessionid: "{sessionid}", mode: "broadcast", channel: "{chid}", version: "v2.131b" });

とかいう感じ。

chid, sessionidはどちらも配信ページのswfソース部分にある。useridは配信ページを開いたときに http://www.ustream.tv/service.php とかにPOSTしててその結果に入ってる。

そんで、

ns.publish("live_channel_{chid}", "live");

すれば配信される。はずなのだけど、されない。FMSへの配信自体はうまくいっていて、#2でやった自前再生swfでは再生されるのだけど、ustreamのchannelページではoff airのままだ。

FMSのほうに配信開始用の関数がある模様。それもパケット見てたら見つけることができた。

publish後、

nc.call("channelStatus", new Responder(function ():void { }), "{chid}", "live");

とかいれたら、channelページでも見えるようになった。これでいいのかしらないけど。

ただこれだと、一定時間で接続が切られてしまう。まだなにかあるっぽい。

どうもFMS側からcallBackという名前の関数をよんできていて、それをうけてpongというFMS関数をよぶようになっているようだ。これをしないときられちゃうわけだなきっと。

ので、

nc.client = this;

とかして、thisのクラス内に

public function callBack():void {
    nc.call("pong", new Responder(function ():void {}));
}

とかしたら大丈夫になった。OKOK。

これでとりあえず配信もできるようになった。

あと他に callBack() とおなじように viewersNum(num:Number) とか定義しておくと、接続人数がかわるたびに呼んでくれるようだ。これで今何人とか取れると。

by typester / at 2007-07-22T21:05:00 / as3 / Comments(0)