NginxでRTMPサーバを構築してみたので備忘的な意味でメモしておきます。 (2015/7/14)
環境
- OS: CentOS 6.4
- Nginx: v1.8.0
事前準備
必要なものがちらほらあるので入ってなければインストールしておきます。
GCCのインストール
Cなどのコンパイラ
$ yum install gcc
PCREのインストール
Perl5互換の正規表現ライブラリ
$ yum install pcre-devel
zlibのインストール
gzipの圧縮/解凍ライブラリ
$ yum install zlib zlib-devel
OpenSSLのインストール
SSLライブラリ
$ yum install openssl openssl-devel
既にOpenSSLが入っていて、バージョンが古い場合はUPDATEが必要です。
(v1.0.1以上必須っぽい)
Nginxのインストール(RTMPモジュール組み込み)
準備が整ったらNginxをインストールします。
今回はRTMPモジュールを組み込んでビルドする必要があるのでyum
は使えません。
以下、手順。
Nginx用のユーザ作成
インストール前にNginx用のユーザを手動で作成しておきます。
$ useradd --shell /sbin/nologin nginx
NginxとRTMPモジュールをダウンロード
公式のダウンロードページからNginxの最新の安定版を任意の場所にwget
して解凍します。
$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
$ tar -zxvf nginx-1.8.0.tar.gz
続いてRTMPモジュールのソースも任意の場所にwget
して解凍します。
$ wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
$ unzip master
Nginxをmakeインストール
configureを定義します。
--add-module
パラメータにはRTMPモジュールのパスを指定します。
$ cd nginx-1.8.0
$ ./configure --user=www-data --group=www-data --with-http_ssl_module --with-http_realip_module --add-module=../nginx-rtmp-module-master
とりあえず最低限の設定+RTMPモジュールを組み込んでいます。
他にも入り用なら追記して下さい。
makeインストールします。
$ make
$ sudo make install
このままだとプロセスが起動しないので設定ファイルを変更します。
1行目あたりにあるuserディレクティブのコメントを外して手動で設定します。
user nginx nginx;
試しに起動してみる。
$ sudo /usr/local/nginx/sbin/nginx
http://{サーバのアドレス}
にアクセスできればOK。
RTMPサーバとして起動する
本題のRTMPサーバです。
まず設定ファイルにRTMPサーバの設定を追記します。
rtmp {
server {
listen 1935;
application live {
live on;
record off;
}
}
}
Nginxを再起動。
$ /usr/local/nginx/sbin/nginx -s stop
$ /usr/local/nginx/sbin/nginx
これでRTMPサーバとして起動しています。
Live配信してみる
やり方は何でもいいんですが、ここではローカルマシン(MacBook)からffmpegを使って搭載カメラで撮影した動画をRTMPサーバ経由で配信して、VLCで動作確認してみました。
※ffmpegのインストールやコマンドの説明は長くなるので割愛しますm(_ _)m
まず配信側はこんな感じで。
$ ffmpeg -f avfoundation -pixel_format uyvy422 -i "0:0" -crf 23.0 -c:v libx264 -c:a aac -strict experimental -s 640x360 -b:v 128k -f flv rtmp://{RTMPサーバのアドレス}/live/1
次に受信側。
- VLCを起動
- 「ファイル」 > 「ネットワークを開く」
- 「URL」欄に
rtmp://{RTMPサーバのアドレス}/live/1
を入力して「開く」
これで無事Live配信できました。
所感
遅延が10secほどあったのがちょっと気になりました。
(マシンスペックやネットワーク環境にも影響するところなのでまだ詳しく見れていないです汗)
とはいえ、割と簡単にLive配信できたし、設定も簡単で全体的に良い感じでした。
NginxではRTMPだけじゃなくて、HLSに変換しながら配信したりもできるみたいなので今度やってみたいと思います。
参考
- http://qiita.com/nenokido2000/items/3cbb76dac2b9940f339e(Nginxのインストール部分はほぼこちらを参考にさせて頂きました。感謝。)
- https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/