こないだのてら子では中継に初めてニコ生を使ってみたんだけど、初めてすぎて途中でいろいろめんどくなっちゃって Ustream に切り替えちゃった。お金もかかるしねー。まーでもあのコメントがだーって流れるのはそれはそれでおもしろい。で、前にもそんあことを思ったことがあって、Ustream のチャットをニコニコ風にオーバーレイして流すニコニコ Ustream ってのを作ったことがありました。(わー、2 年も前だわw。超絶おもしろかったなあ)そんときは、Ustream のプレイヤー swf から FMS とのやりとりをこっそり拝見させていただきまして、ストリームをぶっこぬいてたのですが、まー、そんな手がいつまでも使えるわけもなく、まったく動作しなくなっておりました。んで、最近 @hoehoe 氏のブログで Ustream Flash Client API とかいうのがあるのを知りまして、じゃー、また作れるやん?ってことでちょっと試したっていう話。実はてら子中に作っていた。前置き長い。

結論から言うと、すげー簡単にできた。大変だったのは API の使い方がわからんというところだ。API ドキュメントがあるんだけど無いに等しい内容でこれだったら FDT とかで SWC 見る方が早い、ってか実はそっちのが正しいみたいな。まー、↓みたいにすれば IRC つながりますので、@hoehoe 氏のやりかたで映像ひっぱってきてのっければニコニコ Ustream 完成ですなー。

package {
    import tv.ustream.irc.Channel;
    import tv.ustream.irc.Chat;
    import tv.ustream.irc.Irc;
    import tv.ustream.tools.DynamicEvent;

import flash.display.Sprite;
import flash.events.Event;

public class IrcTest extends Sprite {

private var _irc:Irc;
private var _channel:Channel;
private var _chat:Chat;

public function IrcTest() {
_irc = new Irc('username', 'password');
_irc.addEventListener('connect', _t);
_irc.addEventListener('connected', _t);
_irc.addEventListener('ready', _t);
_irc.addEventListener('motd', _onMotd);
_irc.addEventListener('createChat', _t);
_irc.addEventListener('createChannel', _onCreateChannel);
_irc.addEventListener('disconnected', _t);
_irc.addEventListener('ioError', _t);
_irc.addEventListener('securityError', _t);
}

private function _t(...args):void {
trace('******', args);
}

private function _onMotd(e:Event):void {
_t(e);
_irc.join('HogeChannel');
}

private function _onCreateChannel(e:DynamicEvent):void {
_t(e);
_channel = e.channel;
_channel.addEventListener('message', _onMessage);
_chat = new Chat('#HogeChannel', _irc);
_chat.send('Uryaaaaaa!!!');
}

private function _onMessage(e:DynamicEvent):void {
_t(e.from + ': ' + e.message);
}
}
}

この IRC クラス、Ustream だけに使えるとか制限あるわけじゃないので freenode とか別の IRC サーバーにも普通につながる。IRC クラスのコンストラクタの第 3 引数にサーバー名渡すだけ。ライセンスは確認してないけど。