2012年10月24日水曜日

nginxのrtmpModuleに寄り道してみる。

会社でちょっと検証してみた、nginxのrtmpModule・・・
いろいろと突っ込みどころあるので、修正してみようかなと軽い気持ちで考えています。

というわけで、ちょっとC言語に手をだそうとおもいます。
実行したのは、iMac(mountain lion)での話

とりあえずやったこと。
・Eclipse上で編集だけやりたいので、CDTをinstallしました。
・nginxを入手しました。
・nginx-rtmp-moduleをgithubでfolkしました。
・nginx-rtmp-moduleを自分のPCのworkspaceにいれました。
・nginxのコンパイルを実行しました。
・nginxのconfを書き換えてnginxを実行しました。
・red5のpublisherのツールで放送を実行してみて、動作できました。
ということをさくっとやりました。


・Eclipse上で編集だけやりたいので、CDTをinstallしました。
→helpのメニューからinstall new software...の項目を選択してcdtをインストールしました。
基本なんで、簡単におわります。

・nginxを入手しました。
nginx.comからDownloadのページに移動してnginx-1.3.7を入手しました。
あとで必要なくなったらさくっと消したかったので~/nginxというディレクトリをつくってその中にアーカイブをいれ、解凍しました。
~/nginx/nginx-1.3.7/にデータがはいっている状態になりました。

・nginx-rtmp-moduleをgithubでfolkしました。
単にfolkしただけ

・nginx-rtmp-moduleを自分のPCのworkspaceにいれました。
eclipseのworkspace内でnginx-rtmp-moduleというプロジェクトを作りました。
コンソールでそのディレクトリに移動して
$ git init
$ git remote add origin (git-hubのfolkしたプロジェクト)
$ git pull origin master
で、データを入手しました。
・nginxのコンパイルを実行しました。
~/nginx/nginx-1.3.7/に移動して
$ cd ~/nginx/nginx-1.3.7/
configureを実行
$ ./configure --add-module=/Users/xxxx/workspace/nginx-rtmp-module --without-http_rewrite_module --with-debug --prefix=/Users/xxxx/nginx/test/
としました。
add-moduleはrtmpModuleを有効にする。
http_rewrite_moduleをoffにしたのは単にパッケージがないと動作しないとconfigureで警告がでたので、いれました。(必要ないし)
with-debugはnginx-rtmp-moduleにログ出力させるため。
prefixはインストール先をユーザーディレクトリ内に固めることでいらなくなったらすぐに削除できるようにするためです。
$ make
$ make install (ユーザーディレクトリ内なので、sudoいらない)

・nginxのconfを書き換えてnginxを実行しました。
prefixの効果でnginxは~/nginx/testにインストールされます。
というわけでとりあえずconfいじります。
$ cd ~/nginx/test/conf/
$ vi nginx.conf
変更箇所は次のとおり。
冒頭にerror_logのコメントアウトされているところがあるので
error_log logs/error.log debug;
を追加する。(動作のデバッグログを吐かせるため。)
events {
    worker_connections 256;
}
256に変更する。(ulimitの設定値が低いので押さえておく。)
httpのポート監視を80から8080に変更しておく。(インストール済みのapacheと競合するため)
最終行にrtmpの動作用の定義を追加する。

rtmp{
        server {
                listen 1935;
                chunk_size 4000;
                application live {
                        live on;
                }
        }
}
liveというアプリケーションをつくっておきました。
あとは~/nginx/test/sbin/nginxを実行する
$ cd ~/nginx/test/sbin/
$ ./nginx
これでサーバーが起動します。
停止するときは、ps -ef | grep nginxでnginxのプロセスをみつけてkillすればOKみたいです。


・red5のpublisherのツールで放送を実行してみて、動作できました。
→うまく放送視聴できました。

これで目標の動作はとりあえず完成です。

0 件のコメント:

コメントを投稿