毎回ライブストリームがクラッシュしている場合は、信頼性のあるストリーミングホスト方法を見つける必要があります。しかし、高価なオプションを負担することができない場合でも心配ありません!NGINX RTMPが救世主となります。NGINX RTMPは信頼性のあるオープンソースモジュールですので、無料で利用できます。
このチュートリアルでは、NGINX RTMPサーバーのセットアップ方法を学び、ウェブサイトで信頼性のあるライブストリームを行うことができます。
準備はできましたか?それでは読み進めてライブストリームのセットアップを始めましょう!
前提条件
このチュートリアルは実演形式です。一緒に進める場合は、以下のものが必要です。
- A Linux server – This demo uses Ubuntu 20.04 LTS, but you can use any other Linux distribution with NGINX.
- LinuxサーバーにインストールされたNGINX。
- A non-root user with sudo privileges.
- ライブストリームサーバーを実行するために必要な最小リソース – 2G RAM、2 CPUコア、20 GB HDD。
これらの値はあくまで目安です。実際のトラフィックのニーズによって異なります。トラフィックが多いほど、ライブビデオをホストおよびストリーミングするためにより強力なサーバーが必要になります。開発環境では、2つのCPUと2GBのRAMを備えたNGINX RTMPサーバーは、テストに十分です。
RTMPサーバーの設定
前提条件が整ったので、RTMPサーバーのインストールと設定に移ることができます。まず、NGINXサーバーをRTMPサーバーに変換するためのNGINXモジュールをインストールし、次にNGINXの設定ファイルを設定してユーザーにライブストリームを有効にします。
1. ターミナルを開き、apt update
コマンドを実行してすべてのパッケージをアップデートします。このコマンドはパッケージデータベースを最新のUbuntuのデータベースと同期させます。

2. 次に、以下のコマンドを実行してLinuxサーバーにRTMPサーバーをインストールします。
libnginx-mod-rtmp
モジュールはNGINXサーバーをRTMPサーバーに変換するNGINXモジュールです。このモジュールはNGINXがAdobe Flashプレーヤーと通信し、ライブビデオやオーディオをストリーミングすることを可能にし、開発チームによって公式にサポートされています。

3. お気に入りのエディタで/etc/nginx/nginx.confファイルを開き、RTMPライブプログラムを設定します。nginx.confファイルはNGINXの設定ファイルであり、NGINXサービスの動作を定義するためのいくつかのディレクティブやブロックが含まれています。
4. 最後に、以下のコードをnginx.confファイルに追加し、変更を保存してエディタを終了します。
以下のコードはNGINXにRTMPサーバーとして動作するよう指示し、ユーザーに対してライブストリームを有効にします。
ファイアウォールの設定によるネットワークの保護
すでにNGINX RTMPサーバーを設定していますが、ネットワークを保護し、トラフィックの流れを制御する必要があります。どのようにすればいいのでしょうか?UbuntuのデフォルトファイアウォールであるUncomplicated Firewall(UFW)を設定することで、ネットワークを保護できます。
NGINX RTMPサーバーをファイアウォールの背後に配置する場合、NGINX RTMPサーバーポートを開放する必要があります。NGINX RTMPサーバーをポート1935
でリスンするように設定した場合、このポートをファイアウォールを通じて許可する必要があります。
1. 次のコマンドを実行して、ファイアウォールにポート1935
を開くファイアウォールルールを追加します。このファイアウォールルールにより、NGINX RTMPサーバーポート1935
がすべての受信および送信リクエストに対してアクセス可能になります。

2. 次に、次のコマンドを実行してファイアウォールを無効にし、再度有効にします。このコマンドは、ファイアウォールの変更が反映されるようにファイアウォールを再起動します。
3. 最後に、次のコマンドを実行してファイアウォールのステータスを確認し、ポート1935
がすべてのIPアドレス(Anywhere)からアクセス可能かどうかを確認します。

FFmpegを使用したビデオストリーミング
NGINX RTMPサーバーが起動したので、FFmpegを使用して例のビデオを作成し、NGINX RTMPサーバーを介してストリーミングします。FFmpegは、VLC、OMXPlayer、VobSubなど、さまざまなアプリケーションで音声とビデオの録画、変換、ストリーミングを行うための完全なソリューションです。
サーバーでビデオストリーミングをテストし、ストリーミングに適した小さいサイズのビデオを使用できます。
1. 以下のapt install
コマンドを実行して、FFmpegの正常な動作に必要な依存関係をインストールします。
以下のコマンドは以下のものをインストールします:
libpcre3
– FFmpegツールキットが正規表現を解析およびコンパイルするために使用する正規表現ライブラリです。libpcre3-dev
– このパッケージには、libpcre3パッケージの開発ヘッダが含まれています。libssl-dev
– RTMPサーバーでSSL/TLS接続を作成するために使用されるOpenSSL暗号ライブラリです。zlib1g-dev
: zlibライブラリはインターネット上でのオーディオおよびビデオファイルの転送を高速化する圧縮および解凍ライブラリです。

2. 次に、以下のコマンドを実行してサーバーにffmpeg
をインストールします。

3. 最後に、ffmpeg
コマンドを実行して、以下の作業を行い新しいライブストリームを作成します:
- ソースファイル(
i
)から入力(re
)を読み取ります。ビデオのパスとファイル名にはvideo.mp4
を使用してください。 - ビデオフォーマットをそのままコピー(
c:v copy
)し、音声をAACコーデックでエンコード(c:a aac
)します。 - 音声サンプルレートを44100 Hz(
ar 44100
)に設定します。もしビデオのサンプルレートがこの値(44100 Hz)未満の場合、FFmpegはサンプルレートを増やすために補間処理を行います。 - オーディオチャンネルを1チャンネル(モノラル)に設定します(
ac 1
) 、そしてFFmpegがストリームするビデオフォーマットを設定します(-f flv
)。 - 「RTMPサーバーの設定」セクション(ステップ4)で設定したRTMPライブプログラム(
rtmp://localhost/live/streamname.flv
)を設定します。streamname.flv
を任意の名前に変更できます。
以下のように、ffmpeg
コマンドは、新しく作成されたRTMPライブストリームのフレームごとの秒数、ビットレート、およびfpsを表示します。

結論
このチュートリアルでは、NGINX RTMPサーバーをセットアップし、NGINXの設定ファイルを変更してサーバー上でライブストリームを有効にする方法を学びました。また、NGINX RTMPサーバーを介してFFmpegツールを使用してビデオライブストリームをセットアップする方法にも触れました。
ライブストリームを設定するのにお金をかける必要はないことに気付きました。この時点で、なぜ HTML5の <video>要素を使用してストリームをウェブページに統合しないのでしょうか。または RTMPストリームのためにOBS Studioをセットアップすることはいかがでしょうか?