1. 程式人生 > >在CentOS 7上設定Nginx-RTMP

在CentOS 7上設定Nginx-RTMP

** 這個寫的都是從原始碼安裝 **

安裝Nginx和Nginx-RTMP

  1. 安裝從原始碼編譯Nginx和Nginx-RTMP所需的工具。
sudo yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel -y
  1. 建立一個臨時目錄用來下載原始碼壓縮包
mkdir ~/temp
cd ~/temp
  1. 下載Nginx和Nginx-RTMP原始碼。
wget http://nginx.org/download/nginx-1.9.9.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
  1. 安裝 unzip 包
sudo yum install unzip
  1. 提取原始碼。
tar -xvf nginx-1.9.9.tar.gz
unzip master.zip
  1. 切換到Nginx目錄。
cd nginx-1.9.9
  1. 新增模組以編譯成Nginx。新增Nginx-RTMP。

這裡./configure 檢測你的安裝平臺的目標特徵 可以使用 ./configure --help 檢視幫助

./configure --add-module=../nginx-rtmp-module-master/
  1. 編譯和安裝Nginx。
make
sudo make install
  1. 建立SystemD單元檔案
sudo vim /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

ESC輸入:wq儲存並退出

  1. 啟動nginx服務
sudo systemctl start nginx.service

輸入以下讓系統在啟動時就自動啟動nginx

systemctl enable nginx.service

現在就可以在瀏覽器中輸入http://*************是你伺服器的IP地址 看到了一個頁面就證明你的nginx服務已經啟動了

安裝FFMPEG

  1. 更新系統
sudo yum install epel-release -y
sudo yum update -y
sudo shutdown -r now
  1. 安裝Nux 庫
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
  1. 安裝ffmpeg 和它的開發庫
sudo yum install ffmpeg ffmpeg-devel -y

配置nginx

  1. 開啟Nginx配置檔案
sudo vim /usr/local/nginx/conf/nginx.conf

在檔案最後新增如下:

    rtmp {
        server {
            listen 1935;
            chunk_size 4096;

            application live {
                    live on;
                    record off;
                    allow publish 127.0.0.1;
					allow publish *.*.*.*;
					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 *.*.*.*;
				    deny publish all;
        }
    }
}

這裡說明一下 其中的 *.*.*.*改為你實際的ip地址,不然誰都能往你的伺服器推流。中間的ffmpeg命令將其中一個直播流,視訊改用h264壓縮,音訊改用aac,送至另外一個直播服務流,可以自定義視訊位元率,音訊位元率和解析度等設定。

  1. 重啟 nginx
sudo service nginx restart

一切都搭建完成,你可以在本地使用ffmpeg 推流至伺服器,然後使用vlc拉流進行觀看了

推流:使用ffmpeg

ffmpeg -i local.mp4 -c:a aac -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream

拉流:直接在vlc中開啟串流輸入如下

rtmp://45.32.128.138:1935/live360p/h264Stream