在CentOS 7上設定Nginx-RTMP
阿新 • • 發佈:2018-12-12
** 這個寫的都是從原始碼安裝 **
安裝Nginx和Nginx-RTMP
- 安裝從原始碼編譯Nginx和Nginx-RTMP所需的工具。
sudo yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel -y
- 建立一個臨時目錄用來下載原始碼壓縮包
mkdir ~/temp
cd ~/temp
- 下載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
- 安裝 unzip 包
sudo yum install unzip
- 提取原始碼。
tar -xvf nginx-1.9.9.tar.gz
unzip master.zip
- 切換到Nginx目錄。
cd nginx-1.9.9
- 新增模組以編譯成Nginx。新增Nginx-RTMP。
這裡./configure
檢測你的安裝平臺的目標特徵 可以使用 ./configure --help
檢視幫助
./configure --add-module=../nginx-rtmp-module-master/
- 編譯和安裝Nginx。
make sudo make install
- 建立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
儲存並退出
- 啟動nginx服務
sudo systemctl start nginx.service
輸入以下讓系統在啟動時就自動啟動nginx
systemctl enable nginx.service
現在就可以在瀏覽器中輸入http://*******
,******
是你伺服器的IP地址
看到了一個頁面就證明你的nginx服務已經啟動了
安裝FFMPEG
- 更新系統
sudo yum install epel-release -y
sudo yum update -y
sudo shutdown -r now
- 安裝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
- 安裝ffmpeg 和它的開發庫
sudo yum install ffmpeg ffmpeg-devel -y
配置nginx
- 開啟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,送至另外一個直播服務流,可以自定義視訊位元率,音訊位元率和解析度等設定。
- 重啟 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