トランソニックソフトウェア

ブログ
BLOG

2020.10.15

[CentOS7.6][nginx][HLS]ライブストリーミングサーバ構築

CentOSを利用してストリーミングサーバを構築しました。

プロトコルはHLSとなります。

最終的にはFFMPEGと連携させてマルチビットレート環境としたいのですが、ここではRTMPでソースデータを受け取ったら、そのままHLSとしてストリーミングするようにしてみます。

使用する各ミドルウェアのバージョンは以下の通りです。

 

  • CentOS7.6
  • nginx 1.19.2
  • nginx-rtmp-module 1.2.1

 

1.NginxのRTMP、HLSモジュール導入

導入するモジュールはこちらになります。

https://github.com/arut/nginx-rtmp-module

以下のようにsrcディレクトリに移動して、wgetでtar.gzファイルをダウンロード。そしてファイルを解凍します。

とりあえず、解凍した状態で次に進みます。

 

2.nginxの実行ユーザを作成する

nginxというユーザを作成しておきます。

 

3.nginxソースからインストール

公式サイト、https://nginx.org/en/を確認します。

下記の手順によりソースファイルを取得して解凍します。

そしてソースディレクトリに移動。

以下のコマンドを実行してmakeまで実行します。

–add-module で、上記一番最初で解凍した RTMPモジュールを指定します。

正常に実行が行われると、以下のコマンドでバージョンが表示されます。

 

4.nginx起動スクリプト作成

起動スクリプトを書きます。

https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/ を参考にします。

ファイルの中身は以下のようにします。

また、以下のようにして起動スクリプトに実行権限を付与しておきましょう。

インストールディレクトリは以下のようになったはずです。

今後、サービスを起動する場合は以下のようなコマンドを実行します。

 

5.nginx自動起動スクリプト作成

また、OSが再起動するたびに自動起動させるには、viで以下のファイルを編集します

自動起動のコマンドは以下のようにします。

 

6.NGINXの設定変更(nginx.conf)

nginx.confは、/usr/local/nginx/confの中にあります。

以下のような設定になります。 なお、ディレクティブの説明は以下のURLを参照。

https://nginx.org/en/docs/http/ngx_http_core_module.html

以下の設定により、live1にRTMPでストリームを流すと、hlsに m3u8ファイルが作成されます。

上記の設定では、hlsディレクトリに m3u8ファイルが作成されますので、hlsディレクトリを作成しておきます。

文法チェックは以下のように行います。

文法が問題無ければ以下のように successfulと表示されます。

 

まずは通常のhtmlが表示されるのか動作確認を行います。

Webブラウザからnginxをインストールしたサーバにアクセスできるか確認してください。

以下のように表示されれば、正常動作しています。

 

また、以下のコマンドを実行してrtmpポート(1935)がnginxにより使用されているか確認します。

正常に使用されていれば以下のようになるはずです。

 

7.ストリーミングのテスト

ストリーミングソフトとして有名なフリーソフトOBSをインストールします。

https://obsproject.com/ja

ダウンロードからセットアップファイルを入手しPCにインストールします。

 

設定ボタンを押して設定画面を表示します。

 

配信タブより、nginxを導入したサーバに対してサービスをカスタムに変更。

その後、サーバの下の【live1】部分は nginx.confのrtmpディレクティブの application で指定した値と同じにします。

ストリームキーはなんでも適当で大丈夫です。このストリームキーの値でサーバ側にディレクトリが作成されます。

  • サーバー: rtmp://(ip address)/live1
  • ストリームキー: sample1

 

その後、「配信開始」ボタンをクリックします。

これで実際にストリーミングがサーバに送られます。

 

以下のコマンドでhtml内のhlsディレクトリに移動します。

lsコマンドを実行するとストリームキーでディレクトリが作成されているはずです。

さらに、sample1に移動してlsコマンドを実行すると、複数のtsファイルとindex.m3u8ファイルが確認できるはずです。

この index.m3u8ファイルを<video>タグに指定すればストリーミング再生ができます。

具体的なvideoタグの書き方ですが、以下のようなHTMLを作成します。

/usr/local/nginx/html ディレクトリに設置して、ブラウザでこのHTMLを開きます。