1. 程式人生 > >RTMP server 搭建的一種方法

RTMP server 搭建的一種方法

  RTMP SERVER   ubuntu    16.04 LTS   nginx-rtmp-module
  CPU:雙核  記憶體:4G    頻寬:5Mb/s
 
  http://blog.csdn.net/kingroc/article/details/50839994    參考連結  is OK
 
  http://summervast.blog.51cto.com/690507/386374   nginx  vhost
 
  安裝nginx 依賴包
1.  apt-get install update
2.  apt-get  install  gcc  g++
3 sudo apt-get install libpcre3 libpcre3-dev
4.sudo apt-get install openssl libssl-dev

配置並編譯nginx
 先建一個目錄,下載 nginx-rtmp-module-master 安裝包 和nginx-1.8.1.tar.gz 包解壓
 進入 解壓包  nginx-1.8.1 目錄  
 ./configure --add-module=../nginx-rtmp-module-master
 make
 make install
 
 執行測試nginx
 cd /usr/local/nginx     
 ./sbin/nginx
 
 注意:以後所有的命令都在/usr/local/nginx目錄執行,也nginx配置檔案的相對目錄。
 
 點播視訊伺服器的配置

通過上一步nginx伺服器已經搭建完成,然後我們就可以開啟一個視訊點播的服務了。開啟配置檔案nginx.conf,新增RTMP的配置。

worker_processes  1;

events {
    worker_connections  1024;
}
rtmp {                #RTMP服務
    server {
        listen 1935;  #//服務埠
    chunk_size 4096;   #//資料傳輸塊的大小

    application vod {
        play /opt/vide/vod; #//視訊檔案存放位置。
    }
    }
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

配置目錄/opt/video/vod為存放視訊檔案的位置了,那我們就往裡面放一個檔案吧。我放了一個qq.mp4檔案。
檔案放好之後,那就讓我們重新啟動一下nginx
sudo ./sbin/nginx -s reload
開啟視訊播放軟體選用的是VLC media-> open network stream….
如圖填寫我們要點播的節目地址rtmp://localhost/vod/qq.mp4 如圖

問題:
[email protected]
:/usr/local/nginx# ./sbin/nginx -s reload
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
答案:
  /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf


使用nginx -c的引數指定nginx.conf檔案的位置

點選play就可以播放了。
當然點播不使用RTMP外掛nginx自身也是可以實現點播服務的。那就是配置location部分,由於下面我們要配置直播和回看功能所以選用了RTMP服務。

直播視訊伺服器的配置
接著我們就在點播伺服器配置檔案的基礎之上新增直播伺服器的配置。一共2個位置,第一處就是給RTMP服務新增一個application這個名字可以任意起,也可以起多個名字,由於是直播我就叫做它live吧,如果打算弄多個頻道的直播就可以live_cctv1、live_cctv2名字任意。第二處就是新增兩個location欄位,欄位的內容請直接看檔案吧。

worker_processes  1;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;
    chunk_size 4096;

    application vod {
        play /opt/video/vod;
    }

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

}

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/local/nginx/nginx-rtmp-module/;
    }

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

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

新增完這兩處之後,重新啟動nginx開啟瀏覽器看看,是否有如下圖顯示:

有沒有看到紅框框的live字樣呢?如果可以顯示出來,證明你的配置生效了。
還等什麼讓我們推送一個節目看看(其實專業詞叫錄製,後面將會使用錄製這個詞。)吧。
這次推送我使用的是OBS(Open Broadcaster Software)有關它的安裝請參考先前我寫的Ubuntu安裝OBS(Open Broadcaster Software)後面的部落格裡我會給大家介紹如何使用手機採集視訊並且推送到伺服器上。

配置OBS如圖:

點選紅圈新增“Media Source”,會彈出一個框框,裡面的內容就按照圖片顯示配置就可以了。點選“OK”就能在你的螢幕上播放了。
配置節目的輸出流如圖所示
首先點選紅圈“setting”進入設定介面。記得要正確填寫要錄製的伺服器路徑啊。配置好就可以點選OK了。退出後點擊藍圈,就開始錄製節目了。
檢視我們的了錄製的節目,伺服器有沒有接收到呢?開啟我的伺服器地址“http://localhost/stat”檢視一下 ,你的顯示是否和我的相同呢?如果相同證明伺服器已經接收到了錄製的節目,客戶端可以進行播放了

播放的地址就是“rtmp://localhost/live/test”,如果您本地有支援rtmp協議的播放器就可以試試了。最後奉上一張觀看直播的螢幕截圖

實時回看視訊伺服器的配置

我們想一想如果直播服務能夠把節目錄制在本地,我們不就可以直接進行回看先前的節目了嗎?回看一分鐘、一小時甚至一天的。想想就興奮不用寫程式碼有現成的可以使用。怎麼用呢?繼續看nginx的配置吧。