Ubuntu 22.04 で Nginx-RTMP を使用してビデオ ストリーミング サーバーをセットアップする方法


このページでは

  1. 要件
  2. Nginx Web サーバーをインストールする
  3. Nginx-RTMP のインストールと構成
  4. 動画を RTMP サーバーに送信
  5. ビデオを VLC プレーヤーにストリーミング
  6. モニタリング用の RTMP 統計を構成する
  7. RTMP Stat ページへのアクセス
  8. 結論

RTMP は「リアルタイム メッセージング プロトコル」とも呼ばれ、ライブのオンライン ビデオ ストリーミングをサポートするデータ転送技術です。エンコーダからオンライン ビデオ ホスティング プラットフォームにビデオ ファイルを送信するために使用されます。 RTMP は TCP を使用して移動し、データを転送するときにスリーウェイ ハンドシェイクを使用します。 RTMP は、テレビの生放送、ストリーミング ビデオ、インターネット電話サービスなど、さまざまな種類のメディアで使用されます。

特徴

  • バッファリングなしで高品質のライブ動画を制作
  • インストールと構成が簡単。
  • ほとんどのライブ ストリーミング ソフトウェアおよびビデオ サービスと互換性があります。

このチュートリアルでは、Ubuntu 22.04 サーバーで Nginx-RTMP を使用してビデオ ストリーミング サーバーをセットアップする方法を示します。

要件

  • Ubuntu 22.04 を実行しているサーバー。
  • サーバーの root パスワードが設定されています。

Nginx ウェブサーバーをインストールする

開始する前に、Nginx Web サーバーをサーバーにインストールする必要があります。インストールされていない場合は、次のコマンドでインストールできます。

apt install nginx -y

Nginx パッケージをインストールした後、Nginx サービスを開始し、システムの再起動時に開始できるようにします。

systemctl start nginx
systemctl enable nginx

次のコマンドを使用して、Nginx サービスのステータスを確認できます。

systemctl status nginx

次の出力が得られます。

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-01-09 14:54:55 UTC; 28s ago
       Docs: man:nginx(8)
    Process: 43294 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
   Main PID: 43005 (nginx)
      Tasks: 3 (limit: 4575)
     Memory: 8.5M
        CPU: 35ms
     CGroup: /system.slice/nginx.service
             ??43005 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??43295 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??43296 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Jan 09 14:54:55 vultr systemd[1]: Starting A high performance web server and a reverse proxy server...
Jan 09 14:54:55 vultr systemd[1]: Started A high performance web server and a reverse proxy server.
Jan 09 14:55:04 vultr systemd[1]: Reloading A high performance web server and a reverse proxy server...
Jan 09 14:55:04 vultr systemd[1]: Reloaded A high performance web server and a reverse proxy server.

Nginx-RTMP のインストールと構成

デフォルトでは、Nginx-RTMP パッケージは Ubuntu デフォルト リポジトリに含まれています。次のコマンドでインストールできます。

apt install libnginx-mod-rtmp -y

Nginx-RTMP パッケージをインストールしたら、Nginx のメイン構成ファイルを編集し、ストリームを定義します。

nano /etc/nginx/nginx.conf

ファイルの最後に次の行を追加します。

rtmp {
        server {
                listen 1935;
                chunk_size 4096;
                allow publish all;               

                application live {
                        live on;
                        record off;
                }
        }
}

ファイルを保存して閉じ、次のコマンドを使用して構成エラーがないか Nginx を確認します。

nginx -t

次の出力が表示されます。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最後に、Nginx サービスを再起動して変更を適用します。

systemctl restart nginx

この時点で、Nginx-RTMP がインストールされ、ポート 1935 でリッスンします。次のコマンドで確認できます。

ss -antpl | grep 1935

次の出力が表示されます。

LISTEN 0      511          0.0.0.0:1935      0.0.0.0:*    users:(("nginx",pid=43388,fd=8),("nginx",pid=43387,fd=8),("nginx",pid=43386,fd=8))

ビデオを RTMP サーバーに送信する

次に、サンプル ビデオを YouTube からダウンロードし、FFmpeg を使用して RTMP サーバーに送信する必要があります。

まず、次のコマンドで youtube-dl ad FFmpeg パッケージをインストールします。

apt install python3-pip ffmpeg -y
pip install youtube-dl

次に、youtube-dl コマンド ライン ツールを使用して、YouTube から任意のビデオをダウンロードします。

youtube-dl https://www.youtube.com/watch?v=oNEwEQ0uU1Y

ビデオがシステムにダウンロードされたら、ダウンロードしたビデオを FFmpeg コマンドを使用して RTMP サーバーに送信できます。

ffmpeg -re -i "How to Install Ubuntu 22.04 LTS-oNEwEQ0uU1Y.mp4" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://your-server-ip/live/stream &

この時点で、ダウンロードしたビデオは rtmp://your-server-ip/live/stream に送信されます

ビデオを VLC プレーヤーにストリーミング

このセクションでは、VLC プレーヤー ソフトウェアで RTMP サーバーから動画をストリーミングする方法を紹介します。

まず、デスクトップ システムにログインし、VLC プレーヤーを開きます。次に、[メディア] => [ネットワーク ストリームを開く] をクリックします。次の画面が表示されます。

RTMP サーバーの URL を定義し、[再生] ボタンをクリックします。すべてがうまくいけば、次の画面にビデオが表示されます。

モニタリング用の RTMP 統計の設定

この時点で、RTMP サーバーがインストールされ、機能しています。ここで、ストリーミングを監視するために RTMP 統計ページを構成する必要があります。

まず、次のコマンドを使用して、RTMP stat ファイルを保存するディレクトリを作成します。

mkdir /var/www/html/rtmp

次に、作成したディレクトリに RTMP stat ファイルをコピーします。

cp /usr/share/doc/libnginx-mod-rtmp/examples/stat.xsl /var/www/html/rtmp/stat.xsl

次に、Nginx のデフォルトの仮想ホスト構成ファイルを編集します。

nano /etc/nginx/sites-available/default

デフォルトの行をすべて削除し、次の行を追加します。

server {
    listen 8080;
    server_name  _;

    # rtmp stat
    location /stat {
        rtmp_stat all;
        rtmp_stat_stylesheet stat.xsl;
    }
    location /stat.xsl {
        root /var/www/html/rtmp;
    }

    # rtmp control
    location /control {
        rtmp_control all;
    }
}

完了したら、ファイルを保存して閉じます。次に、Nginx サービスを再起動して変更を適用します。

systemctl restart nginx

RTMP 統計ページへのアクセス

ここで、Web ブラウザーを開き、URL http://your-server-ip:8080/stat を使用して RTMP 統計ページにアクセスします。次の画面に RTMP 統計が表示されます。

ビデオをストリーミングしてストリーミング統計が変化するのを見るたびに、ページを更新する必要があります。

結論

この投稿では、Ubuntu 22.04 で Nginx-RTMP を使用してビデオ ストリーミング サーバーをセットアップする方法について説明しました。また、VLC プレーヤーを介して RTMP サーバーをテストします。任意のビデオを RTMP サーバーにストリーミングし、サポートされている任意のメディア プレーヤーからアクセスできるようになりました。ご不明な点がございましたら、お気軽にお問い合わせください。