FC2ブログ

スポンサーサイト

-------- --:--:-- --

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【Java】【RED5】RED5サーバの導入と開発環境構築【Flex】

2011-04-21 04:35:10 Thu

導入


ストリーミング動画の配信をできるアプリ・インフラを構築する必要があり、そのための手段を全く知りませんでした。
クライアントはFlashなのかSilverlightなのか、サーバ側はどうなっているのか、そこから調査しました。

動画配信サイトの仕組み概要


クライアント側は、FlashかSilverlight、HTML5などを使用しているようです。

サーバ側は、FlashMediaServer(Adobe製品群の総称で個別の製品名ではありません)が多いようです。

こうなってくるとクライアント側はFlash、サーバ側はFlashMediaServer(サーバサイドActionScript)でやるのが妥当かと思います。

しかし、FlashMediaServer(以下FMS)はAdobeの製品であり、個人では手の届きにくいライセンス料です。
※法人ならFMS推奨です。サポート、インフラ面、ドキュメント、実績など。
※※クライアントをSilverlightにしている動画配信サイトはサーバサイドに何を使っているのだろう?FMS?Microsoftにも類似製品あるのかな。
そこで、FMSの代替にRED5という選択肢が見えてきました。
なお、このRED5で実装したクライアントのFlash(ActionScript)は、サーバをRED5からFMSに置き換えてもあまりコードを変更しなくても動作するようです。
つまり、RED5はFMSに対して互換性があるようです。

RED5を選択することで、実行環境、開発環境は下記の通りとします。


私の環境


はじめに私の試した環境を記述しておきます。

■実行環境
OS:WindowsXP Professional
RED5:red5-1.0.0-RC1
Java:java version "1.6.0_24"
FlashPlayer:10.2.159.1

■開発環境
上記の実行環境で下記で開発します。
FlashBuilder:Adobe Flash Builder4
Eclipse:3.4.0

開発環境に関してはこちらの方の説明がより詳しいです。
私は今回はEclipseプラグインは導入せず、サーバはバッチファイルから直接起動しています。

RED5について


RED5の公式サイト

RED5はJavaで書かれたFlashサーバ、だそうだ。
これはApache Tomcatが元となっている気がします。
RED5単体でWEBサーバとしても機能しています。
JavaサーブレットやJSPもきっと動くと思います。
webappsディレクトリ以下はJavaサーブレットそのままの構成のため、サーバサイドJavaを理解しているとすんなり馴染めるはずです。


RED5の実行環境作成



JavaのインストールやFlashPlayerのインストールは省略します。

RED5の導入を行います。

私の環境だけかもしれませんが、Windows用のEXEからインストールするとうまく動作してくれませんでした。
なので、EXEがダメな場合、ZIPでインストールすることをお勧めします。
ZIPはDLして好きな場所に展開するだけです。
私は「C:\Program Files\red5-1.0.0-RC1\」としました。

下記の公式サイトのtracでWindows用EXEでのインストール時バグのチケットが切られていました。
http://trac.red5.org/ticket/1036


RED5サーバ起動


RED5サーバを起動してアクセスしてみよう。

■RED5鯖起動
/red5-1.0.0-RC1/red5.bat

下記のように特にExceptionやErrorなどなければ起動成功です。

WS000029_20110421043917.jpg

■ZIP版アクセスURL
http://localhost:5080/

デフォルトでは上記でアクセスできます。自マシンのIPアドレスではアクセスできないと思います。
アクセスできれば下記の画面が表示されます。

WS000030_20110421044010.jpg

■デモを動作させる
デモをははじめにインストールし、その後で動作させて下さい。
デモのインストールは下記手順です。

WS000025.jpg

Installをクリック。

struts2導入フォルダ構成

グリッドからアプリを選択してInstallボタンをクリック。
これでデモが動作します。
デモは実際に触ってみてください。

デモソース


こちらは現段階では行わなくても良いのですが、デモソースについてメモしておきます。

■Flashのデモソース
The source code for the Flash parts of these demos is available at http://red5.googlecode.com/svn/flash/trunk/.

■Javaのデモソース
The source code for the Java parts of these demos is available at http://red5.googlecode.com/svn/java/example/trunk/.

デモソースはTortoiseSVNやsubversionで取得します。
下記はTortoiseSVNのRepositoryBrowserでoflaDemoにアクセスし、ソースをExportしようとしているところです。
WS000024.jpg

ここまでで分かったこと


RED5はスタンドアローンでも動く。
TOMCATで動いてるっぽい?
TOMCATならばAPACHEと連携できる?

で、まだ試すことは出来ていませんが、確実にApacheとRED5は連携できると思います。
http://oshiete.goo.ne.jp/qa/4587287.html


クライアントアプリの実装


個人的なスキルの問題ですが、私はAdobe® Flash® Professional CS5.5などを扱えないのでFlex(FlashBuilder4)でFlashファイルを作成します。


FlashBuilder4(Flex)のソースは少ないようですが、下記のコードが参考になりました。
http://d.hatena.ne.jp/haru-komugi/searchdiary?word=%2A%5BRed5%5D
今回、このソースを流用してクライアントアプリを作成します。
このアプリでは、WEBカメラで動画を録画して、それをあとで再生することができるアプリです。

また、基本的にはFMSとActionScriptとかで検索すればクライアント側のコード実装はいけそうです。
FlashかFlexかはGUIの問題だけかもしれません。
下記のコードも参考になります。
http://coelacanth.heteml.jp/site/flash_red5/index

クライアントアプリを作ってとりあえず動かしたいなら、FlashBuilder4でFlashをコンパイルしてbin-debugフォルダからすべてのファイルとフォルダを
C:\Program Files\red5-1.0.0-RC1\webapps\root
に放りこむと動作します。
C:\Program Files\red5-1.0.0-RC1\webapps\root\hoge\hoge.htmlであれば、
http://hogehoge/hage/hogehage.html
みたいな感じでアクセスできます。
tomcat プラグイン


RED5の設定を変更する


RED5が今までlocalhostで動作していましたが、これでは他のマシンからアクセスした際に動作してくれません。
他マシンからのアクセスについてはこちらを参考。

■変更箇所
C:\Program Files\red5-1.0.0-RC1\conf\red5.properties
このファイルを変更すればIPアドレス周りを変更できます。

# HTTP
http.host=192.168.0.9
http.port=5080
https.port=8443
このへんをさわるといいかも。

うまくHTTPはつながったがどうにもNetConnectionのRTMPがうまくなくて、
クライアントのFlashアプリで NetStream が開けないみたいです。
なので
C:\Program Files\red5-1.0.0-RC1\conf\red5.properties
をまた触ります。

# RTMP
rtmp.host=192.168.0.9
rtmp.port=1935

他のプロトコルにかんしてもすべて変更しておいてもいいかもしれません。

また、Flexソース内のNETコネクション作成しているところも触ります。


// Netコネクション作成
private function nsConnect():void{
NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
nc = new FMSConnection();
nc.addEventListener( "success", connectionSuccessHandler );
nc.connect( "rtmp://192.168.0.9/oflaDemo" );
// nc.connect( "rtmp://localhost/oflaDemo" );
}


これでクライアントアプリを作成して動作させるまでは何とかできました。
次回、サーバサイドを見ていきたいと思います。

■参考サイト
http://d.hatena.ne.jp/eggtoothcroc/20091016/p1
http://dev.convexstyle.net/2008/03/h264_flash_media_server_3_stre.html
http://www.sonicjam.co.jp/soniclabs/?p=44
http://thinkit.co.jp/article/152/3?page=0,0
スポンサーサイト

⇒comment

Secret

名言集
全記事(数)表示
全タイトルを表示
ブログ内検索
Loading
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。