前書き
RTMPストリーミングメディアプロトコルは、Adobeによって開発されたオーディオおよびビデオのリアルタイム送信プロトコルのセットです。nginx-rtmpは、nginx、オープンソース、無料に基づくRTMPサービスモジュールです。
https://github.com/arut/nginx-rtmp-module
**nginxとnginx-rtmp **をインストールします
sudo yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel -y
mkdir ~/working
cd ~/working
wget http://nginx.org/download/nginx-1.9.7.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
解凍パッケージをインストールします。
sudo yum install unzip
tar -xvf nginx-1.9.7.tar.gz
unzip v1.2.1.zip
cd nginx-1.9.7
. /configure --add-module=../nginx-rtmp-module-1.2.1/
make
sudo make install
sudo nano /usr/lib/systemd/system/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
sudo systemctl start nginx.service
起動時にNginxサービスを自動的に開始するようにSystemDに指示します。
systemctl enable nginx.service
epel-release
をインストールし、システムを更新します。
sudo yum install epel-release -y
sudo yum update -y
sudo shutdown -r now
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
sudo yum install ffmpeg ffmpeg-devel -y
Nginx構成ファイルを開きます。
sudo nano /usr/local/nginx/conf/nginx.conf
以下を構成に追加します。
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
exec ffmpeg -i rtmp://localhost/live/$name -threads 1-c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1-strict -2-b:a 56k rtmp://localhost/live360p/$name;}
application live360p {
live on;
record off;}}}
この構成テキストを追加した後、ビデオビットレート、オーディオビットレート、解像度などの設定をカスタマイズできます。これらの変更は、低品質のストリームにのみ適用されます。品質を高めるには、exec FFmpeg行をコピーして貼り付け、設定を変更します。また、新しいアプリケーションを作成する必要があります。これを行うには、すでに含まれているlive360の例をコピーして貼り付けます。 execFFmpeg行を新しいアプリケーションのアドレスで更新することを忘れないでください。これを行うには、execFFmpeg行の最終RTMPアドレスを変更します。
注:後で*値 -b:v
を変更すると、ビデオのビットレートが変更されます。キロビット/秒。後で値 -b:a
を変更すると、オーディオのビットレートが変更されます。キロビット/秒。後で値 -s
を変更すると、解像度が変更されます。 *
CTRL +を押してファイルXを保存します。
Nginxを再起動します。
sudo service nginx restart
**注:***最高のパフォーマンスを得るには、変換する各ストリームに独自のCPUコアが必要です。たとえば、720Pストリームから2つの高品質の360Pと480Pを作成する場合は、少なくとも2つのCPUコアを備えたVultrインスタンスを使用する必要があります。 *
ファイアウォールを使用している場合は、 TCP1935
が許可されていることを確認する必要があります。
現在の構成では、誰でもサーバーにストリーミングできます。この問題は、特定のIPアドレス公開権限のみを付与することで解決できます。 Nginx構成を開きます。
sudo nano /usr/local/nginx/conf/nginx.conf
次の行を見つけます。
live on;
record off;
上記の行に以下を追加します。 0.0.0.0
を実際のIPアドレスに変更します。
allow publish 127.0.0.1;
allow publish 0.0.0.0;
deny publish all;
これで、構成は次のようになります。
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
allow publish 127.0.0.1;
allow publish 0.0.0.0;
deny publish all;
exec ffmpeg -i rtmp://localhost/live/$name -threads 1-c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1-strict -2-b:a 56k rtmp://localhost/live360p/$name;}
application live360p {
live on;
record off;
allow publish 127.0.0.1;
allow publish 0.0.0.0;
deny publish all;}}}
CTRL +を押してファイルXを保存します。
Nginxを再起動します。
sudo service nginx restart
ストリーミングアプリケーションには通常、情報を接続するための2つのフィールドがあります。通常、最初のフィールドはサーバー情報に使用され、2番目のフィールドはストリーム名またはキーに使用されます。各フィールドに入力する必要のある情報を一覧表示します。ストリーム名またはキーは任意に設定できます。
Field 1: rtmp://your.vultr.ip/live/
Field 2: stream-key-you-set
ストリームを表示するには、RTMPをサポートするプレーヤーで次のリンクを開いてください。
rtmp://your.vultr.ip/live/stream-key-you-set
rtmp://your.vultr.ip/live360p/stream-key-you-set
https://www.vultr.com/docs/setup-nginx-rtmp-on-centos-7
Recommended Posts