RTMP(Real Time Messaging Protocol)は、フラッシュベースのプラットフォームテクノロジ間でインターネットを介してデータ、オーディオ、およびビデオを送信するための高性能プロトコルです。元々はMacromediaによって開発され、現在はAdobeによって所有されています。
Nginx RTMPは、RTMP、HLS、およびMPEG-DASHライブストリーミングを備えたnginxベースのメディアストリーマーです。 Nginx RTMPモジュールには、H264 / AACサポート、HTTPコールバックサポート、オーディオ/ビデオを記録するためのHTTP制御モジュールなどの多くの機能があります。
このチュートリアルでは、RTMPモジュールを使用してNginxWebサーバーをインストールおよび構成する方法を示します。最新のCentOS7サーバーを使用します。このガイドには、nginxおよびrtmpモジュールの構成と、RTMPライブストリームおよびビデオオンデマンドの作成が含まれます。
- CentOS7サーバー
- root権限
何をしますか?
- 依存関係のインストール
- 追加パッケージとRTMPモジュールを含むNginxをダウンロード
- Nginxをコンパイルしてソースからインストールする
- Nginxをサービスとして構成する
- NginxRTMPモジュールを構成する
- 最初のRTMPライブストリームを設定する
- テスト
このチュートリアルでは、ソースからNginxWebサーバーを構築します。開発ツール、EPELリポジトリ、その他のパッケージなど、必要なすべてのパッケージの依存関係をインストールする必要があります。
CentOSの「開発ツール」をインストールします。
sudo yum -y groupinstall 'Development Tools'
EPELリポジトリを追加します。
sudo yum -y install epel-release
Nginxの依存関係をインストールします。
sudo yum install -y wget git unzip perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel pcre-devel GeoIP GeoIP-devel
すべてのパッケージがインストールされるのを待ちます。
このステップでは、pcre、zlib、OpenSSLなどの追加の依存関係を含むnginxソースコードをダウンロードします。
'/ usr / local/src'ディレクトリに移動します。
cd /usr/local/src
Nginx1.14.0をダウンロードして解凍します。
wget https://nginx.org/download/nginx-1.14.0.tar.gz
tar -xzvf nginx-1.14.0.tar.gz
pcreパッケージをダウンロードして解凍します。
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.zip
unzip pcre-8.42.zip
zlibパッケージをダウンロードして解凍します。
wget https://www.zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz
OpenSSLパッケージをダウンロードして解凍します。
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -xzvf openssl-1.1.0h.tar.gz
次に、gitコマンドを使用してNginxRTMPモジュールのソースコードのクローンを作成します。
git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git
そして、圧縮されたtar.gzファイルと.zipファイルをすべて削除します。
rm -f *.tar.gz *.zip
以下は、ディレクトリの詳細です。
ls -lah
これで、コンパイルしてインストールする準備が整いました。
'nginx-1.14.0'ディレクトリに移動します。
cd nginx-1.14.0/
以下のパラメーターを使用してnginx1.14.0を構成します。
./configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=nginx \
--group=nginx \
--build=CentOS \
--builddir=nginx-1.14.0 \
--with-select_module \
--with-poll_module \
--with-threads \
--with-file-aio \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module=dynamic \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--with-mail=dynamic \
--with-mail_ssl_module \
--with-stream=dynamic \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_geoip_module=dynamic \
--with-stream_ssl_preread_module \
--with-compat \
--with-pcre=../pcre-8.42 \
--with-pcre-jit \
--with-zlib=../zlib-1.2.11 \
--with-openssl=../openssl-1.1.0h \
--with-openssl-opt=no-nextprotoneg \
--add-module=../nginx-rtmp-module \
--with-debug
次のコマンドを実行して、RTMPモジュールを使用してNginxをコンパイルおよびインストールします。
sudo make
sudo make install
インストールが完了したら、新しいシンボリックリンクモジュールディレクトリを作成し、新しいnginxユーザーとグループを作成し、新しいnginxキャッシュディレクトリを作成する必要があります。
nginxシンボリックリンクモジュールを「/etc/nginx」構成ディレクトリに作成します。
sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules
新しい「nginx」システムユーザーとグループを作成します。
sudo useradd -r -d /var/cache/nginx/ -s /sbin/nologin -U nginx
次に、新しいNginxキャッシュディレクトリ'/ var / cache / nginx'を作成し、ディレクトリの所有者を'nginx'ユーザーとグループに変更します。
mkdir -p /var/cache/nginx/
chown -R nginx:nginx /var/cache/nginx/
nginxの構成とインストールされているnginxのバージョンをテストします。
nginx -t
nginx -V
そして、以下が結果です。
Nginx Webサーバーは、RTMPモジュールが有効になっているCentOS7にインストールされています。
このチュートリアルでは、nginxをサービスとして実行し、systemdサービスディレクトリに新しいnginxサービスファイルを作成する必要があります。
'/ lib / systemd / system'ディレクトリに移動し、vimを使用して新しい'nginx.service'ファイルを作成します。
cd /lib/systemd/system/
vim nginx.service
以下の構成を貼り付けてください。
[Unit] Description=nginx - high performance web server Documentation=https://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target
保存して終了します。
次に、systemdシステムをリロードします。
systemctl daemon-reload
nginxサービスを開始し、システムの起動時に毎回起動できるようにします。
systemctl start nginx
systemctl enable nginx
Nginx Webサーバーは、CentOS7システム上でサービスとして稼働しています。
このステップでは、RTMPモジュール用の新しいカスタムNginx構成を作成します。
'/ etc / nginx'構成ディレクトリに移動し、元の'nginx.conf'ファイルをバックアップします。
cd /etc/nginx/
mv nginx.conf nginx.conf.asli
次に、カスタム構成「nginx.conf」を作成します。
vim nginx.conf
以下にNginxRTMP構成を貼り付けます。
worker_processes auto; events { worker_connections 1024; } # RTMP configuration rtmp { server { listen 1935; # Listen on standard RTMP port chunk_size 4000; # Define the Application application show { live on; # Turn on HLS hls on; hls_path /mnt/hls/; hls_fragment 3; hls_playlist_length 60; # disable consuming the stream from nginx as rtmp deny play all; } } } http { sendfile off; tcp_nopush on; aio on; directio 512; default_type application/octet-stream; server { listen 8080; location / { # Disable cache add_header 'Cache-Control' 'no-cache'; # CORS setup add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Expose-Headers' 'Content-Length'; # allow CORS preflight requests if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain charset=UTF-8'; add_header 'Content-Length' 0; return 204; } types { application/dash+xml mpd; application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /mnt/; } } }
保存して終了します。
次に、HLS構成用の新しいディレクトリを作成する必要があり、Webルートディレクトリが「/mnt」ディレクトリにあることを定義しました。
'/mnt'ディレクトリの下に'hls'ディレクトリを作成し、ディレクトリの所有者をnginxユーザーとグループに変更します。
mkdir -p /mnt/hls
chown -R nginx:nginx /mnt/hls
構成をテストし、nginxサービスを再起動します。
nginx -t
systemctl restart nginx
このチュートリアルでは、サーバー上のmp4ビデオを使用してオンデマンドで新しいRTMPストリームビデオを作成し、OBSソフトウェアを使用してローカルコンピューターからブロードキャストされる新しいライブRTMPストリームを作成します。
'/ etc / nginx'構成ディレクトリに移動し、'nginx.conf'ファイルを編集します。
cd /etc/nginx/
vim nginx.conf
以下の構成を「rtmp{...}」ブラケットに貼り付けます。
# RTMP video on demand for mp4 files application vod { play /mnt/mp4s; } # RTMP stream using OBS application stream { live on; }
保存して終了します。
次に、すべてのVODビデオを保存するための新しいディレクトリ「mp4s」を作成し、所有者をnginxユーザーグループに変更します。
mkdir -p /mnt/mp4s
chown -R nginx:nginx /mnt/mp4s
nginx構成をテストし、エラーがないことを確認してから、nginxサービスを再起動します。
nginx -t
systemctl restart nginx
RTMPライブストリームとVODストリームのNginx構成が完了しました。
VLCプレーヤーを使用してRTMPライブストリームとVODストリームをテストします。
コンピューターでVLCアプリを開きます。
[ファイル]メニューをクリックして、[ネットワークを開く]オプションを選択します。
次に、VODストリームのRTMPURLを入力します。
rtmp://192.168.1.10:1935 / vod / file.mp4
[開く]ボタンをクリックします。
そして、以下はビデオストリームの結果です。
OBS(Open Broadcaster Software)を使用したライブストリーム
このチュートリアルでは、obsソフトウェアとvlcプレーヤーを使用してRTMPライブストリームをテストします。
オープンブロードキャスターソフトウェアを使用してターミナルウィンドウのみをストリーミングし、VLCプレーヤーを使用してRTMPライブストリームを視聴しようとします。
以下は、obsソフトウェアの構成です。
コンピューターでVLCアプリを開きます。
[ファイル]メニューをクリックし、[ネットワークを開く]オプションを選択します。
次に、ライブストリームのRTMPURLを入力します。
rtmp ://192.168.1.10:1935 / stream /
[開く]ボタンをクリックします。
以下は、nginxrtmpモジュールを介してオープンブロードキャスターを使用したライブストリームの結果です。
CentOS7へのRTMPモジュールを備えたNginxWebサーバーのインストールが正常に完了しました。