RTMP直播服務(1/3) : 安裝建置 NGINX RTMP 直播服務
安裝環境:
l OS: Ubuntu 14.04 LTS (on Azure VM [A2_v2] )
PS: 不要使用 16.04 LTS 版本,因為安裝 program ‘cc’ 安裝不上去(我尚不知道原因是什麼,需要查一下!)
l NGINX: Nginx-1.11.12.tar.gz
l NGINX RTMP Module: Nginx-rtmp-module.git
Azure VM:
VM Firewall setup 範例參考:
Reference:
Microsoft Azure Marketplace 也提供了一些 RTMP streaming 的 package 可以選擇使用。
安裝 NGINX & nginx-rtmp module:
本節介紹如何在 Ubuntu server 上面安裝 NGINX,從工具的安裝,軟體下載,Build,install,test,連同nginx-rtmp-module 一併安裝完成。
1.
確定安裝 NGINX 所需要的工具
$ sudo apt-get install
build-essential libpcre3 libpcre3-dev libssl-dev
2.
下載 NGINX 1.11.12 版本 source code
$ wget
http://nginx.org/download/nginx-1.11.12.tar.gz
3.
下載 nginx-rtmp-module source code
$ wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
4.
解壓縮兩個 source code
$ tar -zxvf
nginx-1.11.12.tar.gz
$ unzip master.zip
(PS:如果你無法 unzip,請先安裝 $ sudo apt install zip )
5.
開始 build nginx
$ cd nginx-1.11.12
$ ./configure
--with-http_ssl_module --add-module=../nginx-rtmp-module-master
$ make
$ sudo make install
安裝完成,default 安裝目錄為
/usr/local/nginx
6.
啟動 NGINX
$ sudo /usr/local/nginx/sbin/nginx
測試連接:使用瀏覽器連接 http://<your server ip/host>/
正常出現如下畫面:
PS:請先開啟你伺服器的防火牆 inbound and outbound : Port
80/443 (for HTTP/HTTPS),如果防火牆沒有開通,可能會出現如下的畫面:
設定 NGINX for RTMP streaming:
NGINX 安裝完成之後,我們必須要修改 conf 檔案,加入 rtmp 所需要的設定值,然後讓伺服器重新啟用新的設定,這樣就可以開始測試 rtmp push
& pull。(後面我們也會介紹如何使用工具來測試 rtmp push & pull)
使用 rtmp push & pull,我們就可以做直播串流,簡單的直播串流範例就完成了。
修改 CONF for RTMP push & pull
1.
首先在 /usr/local/nginx/conf/ 目錄中,修改 nginx.conf 檔案,在檔案的最後面加入下面這一段設定值:
rtmp {
server {
listen 1935;
chunk_size 4096;
application demo {
live on;
record off;
}
}
}
2.
重新載入 nginx.conf 設定檔,或是關掉重開 NGINX
l 重新載入 conf 檔案
$ sudo
/usr/local/nginx/sbin/nginx –s reload
l 或是關掉重開 NGINX
$ sudo
/usr/local/nginx/sbin/nginx -s stop
$ sudo
/usr/local/nginx/sbin/nginx
PS:可參考 nginx 參數說明如下:
blake@BlakeUnbuntu:/usr/local/nginx/sbin$ ./nginx -?
nginx version: nginx/1.11.12
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p
prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure
options then exit
-t : test configuration and exit
-T : test configuration, dump it and
exit
-q : suppress non-error messages
during configuration testing
-s signal : send signal to a master process: stop,
quit, reopen, reload
-p prefix : set prefix path (default:
/usr/local/nginx/)
-c filename : set configuration file (default:
conf/nginx.conf)
-g directives : set
global directives out of configuration file
3.
修改設定,重新執行完成,接下來就可以開始測試 RTMP 直播服務了。
測試 NGINX RTMP push & pull
使用 OBS 來做 RTMP 影片推流 (https://obsproject.com/download)
使用 VLC 來播放 RTMP 直播影片 (http://www.videolan.org/vlc/index.zh-TW.html)
PS:請先確定你的伺服器防火牆有開啟
inbound & outbound 的 rtmp port : 1935
1.
設定直播影片推流 (OBS)
先開啟 OBS 軟體,設定你所要直播的來源(可自行參考 OBS 軟體使用方法或手冊,網路上很多資料可供參考!)
然後點選 [設置],進入設定畫面
點選 [串流],輸入你的 RTMP URL 以及流密碼,這兩個將會組合成日後所要觀看直播的 RTMP URL,然後點選 [確定]。
播放的 RTMP URL 將會是:你剛剛設定的 URL + 流密碼
例如:我設定的流密碼是 live,那我在播放的時候,開啟的 RTMP URL 將會是 rtmp://<your server ip>/demo/live
demo 是我們剛剛在設定 nginx.conf 所設定的 Live Channel 名稱,live 是我輸入的流密碼
接下來就可以做 [開始串流],點選開始串流之後,如果正常的話,你的直播來源影片已經成功推流到 NGINX 上了。(可以在伺服器上檢查網路狀態查看)
$ sudo netstat –p | grep
nginx
2.
使用 VLC 觀看 RTMP 直播影片
開啟 VLC 軟體,點選 Open Network 來開啟 RTMP URL
輸入你的直播 RTMP URL,然後點選 [Open]
然後在 VLC 的 playlist 列表中,點選你要播放的連結,接著點選
play 按鈕,VLC 會開啟 player 開始播放你的直播串流影片。
成功播放的畫面如下:
PS:實際測試結果,影片直播的 Latency
大約 8 秒。
另外使用 Azure VM (DS11 v2 : 2 Cores, 14 GB RAM, SSD) 測試,Latency 為 4~5 秒左右。(所以機器等級上有差別會造成
Latency 的差異。)
設定 NGINX for HLS streaming:
接下來要設定 NGINX HLS streaming,這必須要修改 conf 的設定,把 HLS streaming 所需要的設定加入 nginx.conf 檔案,然後再重新啟用設定值。
NGINX 的 HLS streaming 環境設定完成之後,我們會接著介紹如何把 NGINX HLS streaming 串接到 CDN (這裡選擇使用 Azure CDN 來做介紹),讓使用者可以直接從 CDN 連接 HLS 直播串流。
4 comments:
請問多組rtmp直播要怎麼設?
可以在 /usr/local/nginx/conf 裡面找到 nginx.conf
修改 nginx.conf ,加入多組 rtmp live channel,同時輸出也要定義多組 m3u8 存放位置
然後使用 /usr/local/nginx/sbin/nginx -s reload
重新啟用新的 configuration 這樣就可以多組 Live Channel 同時運作了。
我多組成功運作了
例外想問我OBS推流後在其他手機繪卡頓,伺服器有需要額外的設定嗎?
另外想問怎樣限制推流的人,現在好像只要有網址任何人都可以推流
安全性設定的自訂網址連結我也用好了
只是發生一種情況
rtmp加了驗證資訊後,我手機的解碼就失效了
電腦依然可以播放
Post a Comment