iOSライブストリーミングに挑戦する(nginx-rtmp-module)

配信プロトコルの検討

RTMP (Real Time Messaging Protocol)

Adobe が開発しているストリーミングプロトコル。

RTSP (Real Time Streaming Protocol)

RealNetworks社、Netscape Communications社、Columbia大学で策定したもの。

HLS (HTTP Live Streaming)

Appleの提唱するストリーミングプロトコル。

M3U

マルチメディアプレイリストのファイルフォーマット
HTTP Live Streamingはこのファイルフォーマットを用いる。

Adobe Media Server@awsを使おうとしたんだけどね、、、
テスト段階でこれは高すぎる。
https://aws.amazon.com/marketplace/pp/B00IGJMIOI

ということで、まずは
nginx-rtmp-module
で配信サーバーを立ててみました。

nginx-rtmp-moduleのインストール

nginxをyumでインストールすると、nginx-rtmp-moduleは入らないようです。

1.rootにログイン

$ su -

2.まずはGCCのインストール

$ yum install gcc

3.PCREのインストール

$ yum install pcre-devel

4.zlibのインストール

$ yum install gcc

5.まずはGCCのインストール

$ yum install zlib zlib-devel

6.OpenSSLのインストール

$ yum install openssl openssl-devel

7.NGINXユーザ、グループを作成

$ groupadd nginx
$ useradd -g nginx nginx
$ usermod -s /bin/false nginx  (※nginx 用のユーザをログイン禁止に設定)

8.Nginxをダウンロード→解凍します

$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
$ tar -zxvf nginx-1.8.0.tar.gz

9.RTMPモジュールもダウンロード→解凍します

$ wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
$ unzip master

10.configure

$ 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

11.makeインストール

$ make
$ make install

12.設定ファイルで実行ユーザーをnginx:nginxにします。

$ vi /usr/local/nginx/conf/nginx.conf

--------------------------------------
user  nginx nginx;
--------------------------------------

NGINX起動

/usr/local/nginx/sbin/nginx

インストールはうまくいきました。
RMTPサーバーとして機能するようにします。

$ vi /usr/local/nginx/conf/nginx.conf

--------------------------------------
rtmp_auto_push on;
rtmp {
   server {
      listen 1935;
      chunk_size 4096;

      access_log logs/rtmp_access.log;

      ping 30s;
      ping_timeout 10s;

        application src {
            live on;
            push rtmp://localhost/hls;
        }
        application hls {
            live on;
            hls on;
            hls_path /usr/local/nginx/html/hls;
            hls_fragment 3s;
        }
   }
}

--------------------------------------

これで再起動すると以下のURLでストリームが可能になります。
(もちろん配信するクライアントが必要ですが、、、次回にOBSでの動作確認方法をまとめます。)

RTMP:
http://example.com/src/<任意のkey>

HLS:
http://example.com/hls/<任意のkey>