1. 程式人生 > >nginx+rtmp+livePush實現視訊轉流推流

nginx+rtmp+livePush實現視訊轉流推流

需要的工具:

一臺電腦。

一個美美的心情。

centos環境

nginx(linux下部署)

rtmp模組(linux下部署)

livePush.war包(windows下部署)

OBS(測試轉流工具)

VLC(測試拉流工具)

-----------------------我的分割線--------------------

先安裝nginx+rtmp模組( nginx-rtmp-module-maste),沒什麼好說的。

1、wget http://nginx.org/download/nginx-1.8.0.tar.gz(如果連線沒有或者更換的,移步 nginx下載 )選擇你喜歡的版本

2、tar -zxvf nginx-1.8.0.tar.gz

3、 cd nginx-1.8.0 

4、./configure --prefix=/usr/local/src/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module   ./configure --prefix=/usr/local/src/nginx  --add-module=../nginx-rtmp-module-maste  --with-http_ssl_module   

5、make && make install 

中間如果少什麼模組,就去裝。

然後啟動nginx。瀏覽器中能開啟就好。

可能回有這樣的一個問題   nginx: [emerg] unknown directive "rtmp"


網上說法很多,都是說沒有安裝rtmp模組,但是我之前是安裝好了的。後來rtmp有多種。一定要選擇原始碼類的哦。(nginx-rtmp-module-maste

直接上nginx配置檔案。

##################RTMP服務#################
rtmp {

    server {

        listen 1935;

        chunk_size 4096;

        application video {
           play /usr/local/data/video;
        }

                application live{ #第一處新增的直播欄位
                        live on;#直播模式

                        hls on; #這個引數把直播伺服器改造成實時回放伺服器。

                        wait_key on; #對視訊切片進行保護,這樣就不會產生馬賽克了。

                        hls_path /tmp/hls; #切片視訊檔案存放位置。

                        hls_fragment 10s;     #每個視訊切片的時長。

                        hls_playlist_length 60s;  #總共可以回看的事件,這裡設定的是1分鐘。

                        hls_continuous on; #連續模式。

                        hls_cleanup on;    #對多餘的切片進行刪除。

                        hls_nested on;     #巢狀模式。
                }
    }

}
####啟動瀏覽器檢視http://localhost:80/stat
http {
    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

        listen       80;

        server_name  localhost;

                location /stat {
                                #第二處新增的location欄位。
                                rtmp_stat all;
                                rtmp_stat_stylesheet stat.xsl;
                }

                location /stat.xsl {
                        #第二處新增的location欄位。
                        root /usr/nginx/nginx-rtmp-module-master/;
                }

                location /live {  #這裡也是需要新增的欄位。

                        types {

                                application/vnd.apple.mpegurl m3u8;
                                video/mp2t ts;
                        }
                        alias /opt/video/hls;
                        expires -1;
                        add_header Cache-Control no-cache;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

這個配置檔案直接用就ok了。

然後建立資料夾   /tmp/hls/

給hls賦許可權。chmod 777 /tmp/hls

我這裡設定的是最高許可權哦。

至此到這裡,nginx+rtmp就已經搞定了。

現在啟動nginx

1、cd /usr/local/nginx/sbin/

2、./nginx -c /usr/nginx/nginx-1.8.1/conf/nginx.conf

再瀏覽器中開啟就ip,看看nginx是否成功啟動成功


開啟OBS軟體,設定一下


可以再/tmp/hls下看到有一個名叫app的資料夾。我們看一下內容。


這裡有資料就ok了。

然後下一步。

使用VLC拉流。能成功的獲取到視訊才算是成功的嘛。


可以看到,這裡已經能成功的拉起到剛才推送的視訊了。到此為止,已經滿足一部分的看官了。

但是呢。我們需要繼續往下走哦。

使用livePush來代替OBS,畢竟實際專案使用,沒辦法使用OBS。他只能推一個哦。

拿到livePush的war包,再tomcat下啟動,訪問網址就出現下面的頁面


這個應用名就是你推的流的名。

視訊源是從網上隨便找了個。釋出地址應該指向到nginx上。然後點擊發布。生成一個播放地址,拿這個播放地址去剛才的VLC中去拉流就ok了。


到此為止,已經結束咯。哦。對了,war包。傳送門在此  失效請聯絡我。

送上自己的公眾號.