天天看點

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

一、背景

本篇文章是繼上一篇文章《Ubuntu中使用Nginx+rtmp子產品搭建流媒體視訊點播服務》文章而寫,在上一篇文章中我們搭建了一個點播伺服器,在此基礎上我們再搭建一個直播伺服器,

二、配置rtmp直播服務

我們需要在nginx配置檔案中增加直播的配置,這裡我們依然使用vim指令打開配置檔案,執行指令如下

vim  /usr/local/nginx/conf/nginx.conf
           

vim指令執行之後,我們将直播配置添加到rtmp項配置下面,其中的含義已經在配置中注明,配置如下所示

application live{
            live on;        #直播

            #回看功能 視訊切片變成ts檔案
            hls on;                                 #這個參數把直播伺服器改造成實時回放伺服器。
            wait_key on;                           #對視訊切片進行保護,這樣就不會産生馬賽克了。
            hls_path /opt/video/rtmp/hls;       #切片視訊檔案存放位置。
            hls_fragment 10s;                       #每個視訊切片的時長。
            hls_playlist_length 60s;                #總共可以回看的事件,這裡設定的是1分鐘。
            hls_continuous on;                      #連續模式。
            hls_cleanup on;                         #對多餘的切片進行删除。
            hls_nested on;                          #嵌套模式。

        }
           

添加後,如下圖所示

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中藍色字型亂碼,這個可以暫時忽略它,或者直接删除它。

接着我們再将另外一項配置增加到HTTP服務中,這個是用來監控我們的推流狀态的,如果不配置我們就不友善監控推流的狀态;我們容器映射到外面的http端口為8081,是以這裡我們也把NGINX裡面的HTTP端口也改為

8081

,這樣我們才可以通路到,配置項如下

location /stat {    #第二處添加的location字段。
            rtmp_stat all;
        rtmp_stat_stylesheet stat.xsl;
    }

    location /stat.xsl { #第二處添加的location字段。
       root /etc/rtmpServer/nginx-rtmp-module/;
   }
           

增加配置之後,如下圖所示

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中可以看到,上面有一個配置路徑是

/etc/rtmpServer/nginx-rtmp-module/

這是我們開始下載下傳源碼解壓的位置,如果你解壓的位置不是這個,就需要将這裡改成你解壓的位置。

設定好nginx配置之後,我們儲存并退出,然後你重新開機nginx伺服器,讓剛才的配置生效,重新開機的指令如下

/usr/local/nginx/sbin/nginx -s reload
           

指令執行之後,傳回的資訊如下圖所示

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中可以看到重新開機沒有報錯,說明我們的配置沒有出現文法錯誤,并且重新開機已經成功了。

三、OBS推流

在上面nginx配置完成之後,其實直播服務已經搭建完成了,但是我們還需要驗證一下,最簡單的方式就是推流然後去拉流播放,推流我們一般使用obs進行推流,官網位址如下所示

https://obsproject.com/
           

在官網首頁有下載下傳位址,如下圖所示

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中可以看到支援Windows和Linux以及Mac系統的版本,這裡我下載下傳的是Mac版本,把OBS下載下傳并安裝好之後,打開界面如下圖所示

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中可以看到我添加了一個媒體源,媒體源這裡可以選擇錄制螢幕,也可以選擇一個視訊檔案等各種方式

接着點選右側的設定按鈕,會彈出一個設定框,找到裡面的推流項,然後設定推流位址,如下圖所示

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中可以看到我填寫的伺服器位址為

rtmp://127.0.0.1/live

,串流密碼為:

test

,設定好之後點選下方的确定,然後回到主視窗中點選開始推流按鈕,就會開始推流,如下圖所示

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中可以下方的狀态欄可以看到已經在開始推流了,其中的LIVE後面的為當期推流持續時間,CPU後面的百分比代表推流占用了多少CUP資源,在用戶端顯示推流成功之後,我們可以通過浏覽器通路推流監控頁面,位址如下所示

http://127.0.0.1:8081/stat
           

浏覽器打開監控頁面,傳回的資訊如下圖所示

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中可以看到

test

頻道有已經一路流推送了上來,說明服務端已經接收到資料流

四、使用vlc拉流

推流上來之後,我們就可以進行拉流測試,這裡我們依然以VLC播放器來測試,打開菜單欄中的選項

File

->

Open Network

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中可以看到有一個輸入框,在裡面填入播放位址

rtmp://127.0.0.1/live/test

,然後點選下方的

open

按鈕,然後就可以播放了,如果沒有意外情況,播放效果如下圖所示

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中可以看到已經開始播放我剛才推送上去的視訊了

直播轉錄播

如果我們需要将推流的視訊存保留下來将來用作回放,并不需要特意配置,因為nginx-rtmp-moudle子產品已經幫我們儲存了,儲存的位置是在nginx配置中

hls_path

項設定的位置,我們通過CD指令檢視一下,執行指令如下所示

cd /opt/video/rtmp/hls/test && ls
           

指令執行之後,傳回的檔案清單資訊如下圖所示

nginx rtmp直播無延遲_Ubuntu中使用Nginx+rtmp搭建流媒體直播服務

在上圖中可以看到TS片,到此我們通過nginx+rtmp搭建直播服務已經完成了,下一篇我們将通過SRS搭建流媒體伺服器。

作者:湯青松

微信:songboy8888

日期:2019-12-04