NginxによるRTMPサーバ構築メモ

  • 32
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

NginxRTMPサーバを構築してみたので備忘的な意味でメモしておきます。 (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ディレクティブのコメントを外して手動で設定します。

/usr/local/nginx/conf/nginx.conf
user  nginx nginx;

試しに起動してみる。

$ sudo /usr/local/nginx/sbin/nginx

http://{サーバのアドレス}にアクセスできればOK。

RTMPサーバとして起動する

本題のRTMPサーバです。
まず設定ファイルにRTMPサーバの設定を追記します。

/usr/local/nginx/conf/nginx.conf
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

まず配信側はこんな感じで。

local
$ 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

次に受信側。
1. VLCを起動
2. 「ファイル」 > 「ネットワークを開く」
3. 「URL」欄にrtmp://{RTMPサーバのアドレス}/live/1を入力して「開く」

これで無事Live配信できました。

所感

遅延が10secほどあったのがちょっと気になりました。
(マシンスペックやネットワーク環境にも影響するところなのでまだ詳しく見れていないです汗)

とはいえ、割と簡単にLive配信できたし、設定も簡単で全体的に良い感じでした。
NginxではRTMPだけじゃなくて、HLSに変換しながら配信したりもできるみたいなので今度やってみたいと思います。

参考