はじめよう!Red5プログラミング
Red5プログラミングをはじめよう
前回(http://www.thinkit.co.jp/article/152/2/)は、Red5をインストールして同梱(どうこん)されているデモアプリを見ていくことでRed5を使ったアプリケーションのイメージをつかんでいただきました。今回は、実際にプログラミングしていきます。Red5を使った一歩進んだFlashの世界へふみだしてみましょう。
まずは必要なものをそろえます。Red5はJavaで書かれたサーバーですので、サーバー側の実装はJavaになります。クライアント側はFlashですので、言語としてはActionScriptで書くことになります。
具体的に必要になるのは、クライアント側はおなじみのFlash CS3などのFlash IDEかFlex SDK、または、Flex Builderで行います。最低限のセットとしては無料で手に入るFlex SDKがあればなんとかなります。Flex SDKはAdobeのページ(http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK)からダウンロードしてください。
また、ActionScriptの開発時にはデバッグ版のFlash Playerも必須と言えます。デバッグ版のFlash Playerを使うことによってtraceログを残すことができるようになります。こちらもAdobeのページ(http://www.adobe.com/support/flashplayer/downloads.html)からダウンロードしてください。サーバー側でJavaを書く際には、Eclipseを利用するのが一般的となっています。
クライアントプログラミング
まずは、クライアント側のプログラミングから見ていきます。サンプルコードはこちらからダウンロード(http://www.thinkit.co.jp/images/article/152/3/15231.zip)できます(15231.zip/2.18 KB)。
サーバー側はRed5のデフォルトのアプリケーションを使いまわすことでかなりのことが可能になります。ここではデモでも使われていた「rtmp://localhost/oflaDemo」に接続するイメージでクラアント側の解説をしていきます。
サーバーと連携するActionScriptを書く際に一番重要になるのは、flash.net.NetConnectionクラスです。まずそれをインポートします。
import flash.net.NetConnection;
NetConnectionに接続するコードは典型的には、次のようになります。
private var nc:NetConnection = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
nc.connect("rtmp://localhost/oflaDemo");
上記コードでは、まずNetConnectionクラスのオブジェクトを生成し、ステータスが変わった時のハンドラとなるメソッド、およびエラーの時のハンドラとなるメソッドを割り当ててRed5サーバーに接続しています。rtmp~ではじまるURLが前回(http://www.thinkit.co.jp/article/152/2/)試した各種デモ使われていたサーバーサイドアプリケーションになります。コネクションのイベントハンドラでは一番シンプルな形は次のようになります。
private function onNetStatus(evt:NetStatusEvent):void {
if(evt.info.code == "NetConnection.Connect.Success"){
//... 接続に成功した時の処理
受け取るイベントオブジェクトのinfo.codeプロパティからステータスを確認し、成功状態であったならば、サーバーサイドと連携した処理を開始します。
次は、共有オブジェクトを使った例と、ウェブカムからの動画を扱った例とを見ていきます。