Raspberry Pi 4で自由に使えるNginx RTMPサーバの構築方法を紹介-360°VRライブ配信等で自由に使えるRTMP/HLSサーバとして便利
さまざまな検証用にローカル(社内ネットワーク等)で、気兼ねなく使えるRTMPサーバーの構築方法を紹介します。もちろんポートフォワードやDNS等の設定を行えば外部に公開できるRTMPサーバーにもなります。使用するサーバーはNginxです。NginxはWebサーバとしてApacheを超えシェアNo.1になっているほど急速に普及しています。
このNginxにRTMPモジュールを追加することで、RTMPサーバーとして使用できます。RTMPサーバーとして使用できるので、例えば複数台の360°VRライブ配信カメラ映像をNginx にRTMPで送り、再びNginxからRTMPを受信することで、映像の中継サーバ的に扱うことができます。VR360度カメラのVRライブ配信でスイッチングをしてみたいときに簡単に使用できます。
複数台の360°VRライブ配信カメラ映像をスイッチング(映像切替)してみたいときに、気兼ねなく長時間利用することができます。同じネットワーク内にカメラが複数台あるのならば、カメラ切替のためのRTMPはローカルのサーバでも十分です。あわせて複数台の360°VRライブ配信カメラをスイッチング(映像切替)する方法を検証の記事もご参考ください。
複数台の360°VRライブ配信カメラをスイッチング(映像切替)する方法を検証
https://digitalhobby360.jp/2021/vr360-fukusuu-obs-switching/
では早速構築してみましょう。
今回準備した機材
・Raspberry Pi 4(Raspberry Pi 3でも可)が起動する一式
・Windowsパソコン(適宜)
・MicroSD / カードリーダー等(適宜)
まずRaspberry Pi 4用にRaspberry Pi OSをインストールします。最初はWindows10で作業します。まず起動ディスクを作成します。MicroSDとカードリーダー等を準備してください。Raspberry Pi ImagerをダウンロードしてPCにインストールします。
・Raspberry Pi Imager
https://www.raspberrypi.org/software/
Raspberry Pi Imagerを起動したら、RASPBERRY PI OS(32-BIT)を選び、対象のMicroSDを選択してWRITEします。書き込みが終わるまでしばらく待ちます。
※書き込みが終わるとフォーマットして利用ください等の表示がありますが、キャンセルしてMicroSDを取り出してください。フォーマットするともう一度同じ設定をすることになります。
MicroSDをRaspberry Pi 4にさして起動します。そのままセットアップを進めます。適宜パスワード等を設定します。RTMPの中継サーバとして使用することを考えると有線LAN接続が望ましいです。
Raspberry Pi 4の各種初期設定については、さまざまな情報がありますので、それらを参考にしてください。本記事では必要最小限の説明とします。
アップデート等をまっている間に、ネットワーク設定をしてしまいましょう。画面の右上を↑↓を右クリックして、Wired Network Sttingsを開きます。固定IPに変更します。
有線がどこのポートに来ているかを確認するためにターミナルを開きます。画面左上にターミナルがあります。ipの情報を表示します。
1 | ip sddress show |
eth0に繋がっていることが分かります。eth0を固定IPで設定します。IPの設定は適宜おこなってください。
今回は、192.168.100.99に設定しましたルーターは、ルーターのIPを入力は、192.168.100.1ですから、そのように設定します。ご使用の環境のIPを入力してください。DNSはとりあえずルータのIPでも入れておきます。
ipが固定に変わり回線の正常であることを確認しましょう。
続いてターミナルで作業を続けます。以下にコマンドを掲載しておきます。適宜正しく設定されているか確認ください。
1 | sudo su |
管理者になるスデゥーしてパスワードなど省略します。インストール前にアップデートします。
1 | apt -y update && apt -y upgrade |
あとでローカル内の別のパソコンからssh接続できるようにsshサーバも入れておきます。ufwのファイヤーフォールと、必要なポートを開けます。ssh用の22とRTMP用の1935とhls用に80を開けておきます。
1 | apt -y install ibus-mozc && apt -y install openssh-server && systemctl start ssh && apt -y install ufw && ufw enable && ufw allow 22 && ufw allow 1935 && ufw allow 80 |
準備できたらnginxをインストールします。デフォルトのリポジトリからインストールがもっとも簡単です。
1 | apt -y install nginx |
rtmpもインストールします。
1 | apt -y install libnginx-mod-rtmp |
文字化けしていても影響はありません。
これでnginxのインストールが完了です。
sshを常時起動にしておきます。
1 | systemctl enable ssh |
nginxが起動しているかチェックしてみます。
1 | systemctl status -l nginx |
無事起動しています。Cttl+Cで、画面から抜けます。文字化けがうっとしいので再起動します。たぶんフォント関係がなおるはずです。
再起動で文字化けがなおりました。
次に設定ファイルを変更します。
1 | nano /etc/nginx/nginx.conf |
下の方の空いているところ、以下の設定テキストを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 | rtmp { server { listen 1935; chunk_size 4096; application app { live on; hls on; hls_path /var/www/html; hls_fragment 2s; hls_type live; } } } |
簡単に補足です。application appは、アプリケーション名です。配信するときに指定するフォルダー名みたいなものです。appが嫌な人は、他の言葉に変更できます。hlsに変換もされます。hls_fragment 2sです。もっと刻みたい人は1s、長めに安定させたい人は5sなどにしましょう。
vimなど使える人は、それぞれ好きなものを使ってください。初心者は、nanoのほうが使いやすいでしょう。
矢印キーでカーソルを移動。貼り付けはメニューにある編集タブから行ってください。ショートカットキーはウィンドウズ等と異なるので、意図しない動作をします。
貼り付けができたら、Ctrl+oで保存です。
Enterで上書きください。
Ctrl+xで画面を出ます。
画面を出たら設定ファイルを読み込みます。
1 | systemctl reload nginx |
以上で設定完了です。お疲れ様でした。
設定が完了してしまえば、Raspberry Pi 4に電源を入れるだけでnginxが起動します。ログインする必要もありません。
rtmpのアドレスの補足をします。ipアドレスは、自分で設定したアドレスに変更ください。appは先ほどの設定ファイルで指定したファイル名です。設定ファイルを変更することで任意に変更できます。
stream1部分は、ストリームキーになるので、自由に変更できます。複数のストリームを流す場合は適宜増やして使うなど使用できます。
例:
rtmp://192.168.100.99/app/stream1
rtmp://192.168.100.99/app/stream2
実際にQooCam 8K Enterpriseで4K(3840×2160@30fps)をRTMPで流してみます。2台のカメラにそれぞれ設定します。
RTMPの送信は開始します。
vMixでRTMPを受信します。
問題なくRTMPで中継ができました。vMixで試したところ安定したスイッチングも確認できました。
スイッチグした映像を外部のRTMPへ流してみます。Youtubeで無事に配信できました。
4Kを複数扱う場合には、配信マシン側はSPECが必要になります。Raspberry Pi 4には負荷がほとんどかかっていません。回線の速度さえ問題なければ、もっと扱えるでしょう。
以上Raspberry Pi 4で自由に使えるNginx RTMPサーバの構築方法を紹介でした。
本記事の検証で利用したカメラはQooCam 8K Enterpriseです。複数台のレンタルもしています。
https://digitalhobby360.jp/rental/vr360live-rental-qoocam-8k-enterprise/