GNU/Linux >> Linux の 問題 >  >> Linux

ストリーミング用に NGINX RTMP サーバーをセットアップする方法

ライブ ストリームが毎回クラッシュしていませんか?その場合、ストリームをホストする信頼できる方法を見つける必要があります。しかし、高価なオプションを購入する余裕がない場合でも、心配はいりません。 NGINX RTMP はその日を節約します。 NGINX RTMP は信頼性の高いオープンソース モジュールなので、その意味を理解できます — 無料です!

このチュートリアルでは、ウェブサイトで信頼性の高いライブ ストリームを設定できるように、NGINX RTMP サーバーを設定する方法を学びます。

準備?読み進めて、ライブ ストリームの設定を始めましょう!

前提条件

このチュートリアルは実践的なデモンストレーションです。フォローしたい場合は、次のものが揃っていることを確認してください:

  • Linux サーバー – このデモでは Ubuntu 20.04 LTS を使用していますが、NGINX では他の Linux ディストリビューションを使用できます。
  • Linux サーバーにインストールされた NGINX。
  • sudo 権限を持つ root 以外のユーザー
  • ライブ ストリーム サーバーを実行するために最低限必要なリソース – 2G RAM、2 CPU コア、および 20 GB HDD。

これらの値は提案のみです。正確な値は、実際のトラフィックのニーズによって異なります。トラフィックが多ければ多いほど、ライブビデオをホストしてストリーミングするために必要な強力なサーバーが増えます.開発環境では、2 つの CPU と 2 GB の RAM を備えた NGINX RTMP サーバーで十分にテストできます。

RTMP サーバーの構成

前提条件が整ったので、RTMP サーバーのインストールと構成に進むことができます。最初に NGINX モジュールをインストールして NGINX サーバーを RTMP サーバーに変換し、次に NGINX 構成ファイルを構成してユーザーのライブ ストリームを有効にします。

1. 端末を開いて apt update を実行します すべてのパッケージを更新するコマンド。このコマンドは、パッケージ データベースを Ubuntu の最新のデータベースと同期します。

sudo apt update -y

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

libnginx-mod-rtmp module は、NGINX サーバーを RTMP サーバーに変換する NGINX モジュールです。このモジュールは、NGINX が Adob​​e Flash Player と通信できるようにして、ライブ ビデオやオーディオをストリーミングできるようにし、開発チームによって公式にサポートされています。

sudo apt install libnginx-mod-rtmp -y

3. /etc/nginx/nginx.conf を開きます RTMP ライブ プログラムを構成するために、お気に入りのエディターでファイルを編集します。 nginx.conf ファイルは、NGINX サービスの動作を定義するためのいくつかのディレクティブまたはブロックを含む NGINX 構成ファイルです。

4. 最後に、nginx.conf に入力します 次のコードを含むファイルに変更を保存し、エディターを終了します。

以下のコードは、RTMP サーバーとして機能するように NGINX に指示し、ユーザーのライブ ストリームを有効にします。

# This block of code tells NGINX to act as an RTMP server. 
rtmp {
		server {
		# Sets the port the server will listen on.
    listen 1935;
				# The size of each chunk of data that will be sent.
				# Flash Player will freeze if the chunk is too small, 
				# which can cause a buffer-underflow condition.
        chunk_size 4096;
				# The IP addresses are allowed to publish content to the server.
				# Allow only the localhost to publish content on NGINX RTMP.
				allow publish 127.0.0.1;
				# Deny publishing for everyone else.
				deny publish all;
				# Defines a named application called "live"
        application live {
				# Tells NGINX to enable live streams for your users.
						live on;
				# This line tells NGINX to disable recording. If this line is not included, 
				# NGINX will keep recording and save your stream forever to your disk.
						record off;
				}
		}
}

ファイアウォールを設定してネットワークを保護する

すでに NGINX RTMP サーバーを構成していますが、ネットワークを保護し、トラフィック フローを制御する必要があります。どのように? Ubuntu のデフォルトのファイアウォールである Uncomplicated Firewall (UFW) というファイアウォールを設定します。

NGINX RTMP サーバーをファイアウォールの背後に配置する場合は、NGINX RTMP サーバー ポートを開く必要があります。ポート 1935 でリッスンするように NGINX RTMP サーバーを構成したので、 、このポートがファイアウォールを通過できるようにします。

1. 次のコマンドを実行して、ポート 1935 を開くファイアウォール ルールを追加します。 ファイアウォールで。このファイアウォール ルールは、NGINX RTMP サーバー ポート 1935 を許可します すべての着信および発信要求にアクセスできるようにします。

sudo ufw allow 1935/tcp

2. 次に、次のコマンドを実行して、ファイアウォールを無効にしてから再度有効にします。このコマンドは基本的に、ファイアウォールの変更を有効にするためにファイアウォールを再起動します。

sudo ufw disable && sudo ufw enable

3. 最後に、以下のコマンドを実行してファイアウォールのステータスを確認し、ポート 1935 が すべての IP アドレスからアクセス可能 (どこでも )。

sudo ufw status

FFmpeg を使用したビデオのストリーミング

NFINX 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 ライブラリは、インターネットを介したオーディオ ファイルとビデオ ファイルの転送を高速化する圧縮および解凍ライブラリです。
sudo apt install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev

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

 sudo apt install ffmpeg -y 

3. 最後に、ffmpeg を実行します。 コマンドを実行して、次を実行し、新しいライブ ストリームを作成します:

  • 入力を読み取る (re ) ソースファイルから (i ) 元のフレームレートで。 video.mp4 を必ず置き換えてください 動画のパスとファイル名を付けてください。
  • ビデオ形式をそのままコピーします (c:v copy )、オーディオ n AAC コーデック (c:a aac) をエンコードします。 ).
  • オーディオ サンプル レートを 44100 Hz (ar 44100) に設定します。 )。動画のサンプル レートがこの値 (44100 Hz) より小さい場合、FFmpeg は補間を実行してサンプル レートを上げます。
  • 音声チャンネルを 1 つのチャンネル (モノラル) に設定 (ac 1 )、および FFmpeg がストリーミングするビデオ形式 (-f flv) ).
  • RTMP ライブ プログラムを設定します (rtmp://localhost/live/streamname.flv ) は、「RTMP サーバーの構成」セクション (ステップ 4) で構成したものです。 streamname.flv を変更できます お好きな名前に。
ffmpeg -re -i "video.mp4" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://139.180.203.6:1935/live/streamname.flv 

以下に示すように、ffmpeg コマンドはフレームを出力します 検出した 1 秒あたりのビットレート 、および fps 新しく作成された RTMP ライブ ストリームの。

結論

このチュートリアルでは、NGINX RTMP サーバーをセットアップし、NGINX 構成ファイルを変更してサーバーでライブ ストリームを有効にする方法を学習しました。また、NGINX RTMP サーバーを介して FFmpeg ツールを使用してビデオ ライブ ストリームを設定する方法についても触れました。

ライブ ストリームを設定するのにすべての費用がかかるわけではないことに気付きました。この時点で、HTML5


Linux
  1. LinuxでJellyfinを使用してストリーミングメディアサーバーを設定する方法

  2. Ubuntu18.04LTSでNginxサーバーブロックを設定する方法

  3. CentOSでNTPサーバーをセットアップする方法は?

  1. Node.jsのフロントエンドプロキシとしてApacheを設定する方法

  2. FreeBSDでストリーミングサーバーを作成する方法

  3. CentOS8でNginxのロードバランサーとしてHAProxyを設定する方法

  1. CentOS7でNginxのロードバランサーとしてHAProxyを設定する方法

  2. Ubuntu14.04にNginxをインストールする方法

  3. Debian7にNginxをインストールする方法