1. 程式人生 > >搭建直播伺服器,使用nginx與nginx-rtmp-module搭建流媒體伺服器;

搭建直播伺服器,使用nginx與nginx-rtmp-module搭建流媒體伺服器;

現在,一起學習一下如何自己搭建一個流媒體伺服器吧!

本次搭建流媒體使用的環境是centos 7.0+nginx;

讓我們一起開始奇妙的流媒體之旅吧!

1、下載nginx-rtmp-module:

使用命令:

  1. git clone https://github.com/arut/nginx-rtmp-module.git

將nginx-rtmp-module下載到linux中。

2、安裝nginx:

  1. wget http://nginx.org/download/nginx-1.8.1.tar.gz
  2. tar -zxvf nginx-1.8.1.tar.gz  
  3. cd nginx-1.8.1  
  4. ./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module    
  5. make && make install  
本次預設安裝目錄為:/root, add-module為下載的nginx-rtmp-module檔案路徑。

安裝時候可能會報錯沒有安裝openssl,需要執行命令:

  1. yum -y install openssl openssl-devel    

3、修改nginx配置檔案:
  1. vi /usr/local/nginx/conf/nginx.conf  
加入以下內容:
  1. rtmp {    
  2.     server {    
  3.         listen 1935;  #監聽的埠  
  4.         chunk_size 4000;    
  5.         application hls {  #rtmp推流請求路徑  
  6.             live on;    
  7.             hls on;    
  8.             hls_path /usr/share/nginx/html/hls;    
  9.             hls_fragment 5s;    
  10.         }    
  11.     }    
  12. }  
hls_path需要可讀可寫的許可權。

修改http中的server模組:
  1. server {  
  2.     listen       81;  
  3.     server_name  localhost;  
  4.     #charset koi8-r;  
  5.     #access_log  logs/host.access.log  main;  
  6.     location / {  
  7.         root   /usr/share/nginx/html;  
  8.         index  index.html index.htm;  
  9.     }  
  10.     #error_page  404              /404.html;  
  11.     # redirect server error pages to the static page /50x.html  
  12.     #  
  13.     error_page   500 502 503 504  /50x.html;  
  14.     location = /50x.html {  
  15.         root   html;  
  16.     }  
當然了,root可以跟據自己的需求來改的。
然後啟動nginx:
  1. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf    

4、開始推流

做好以上的配置後,就可以開始推流了,我們可以使用obs來推流。

在設定->串流 中填寫資訊:URL為 rtmp://xxx:1935/hls,xxx為你的伺服器的IP地址,hls是用來存放流媒體的。

祕鑰可以隨便填寫一個,用來播放的時候識別播放哪個流媒體的,例如填寫test等。

填寫完畢後,點選開始串流,就說明我們的流媒體伺服器搭建成功了。

5、觀看直播(拉流)

觀看直播就比較簡單了,可以簡單的使用h5的vedio標籤就可以觀看了。

可以訪問http://xxx:81/hls/mystream.m3u8來觀看直播,其中xxx為你的伺服器IP地址,

或者使用

  1. <video>    
  2.     <source src="http://xxx:81/hls/test.m3u8"/>    
  3.     <p class="warning">Your browser does not support HTML5 video.</p>    
  4. </video>  

同上, xxx寫的是你伺服器IP地址。

然後使用手機訪問這個網站就能夠觀看直播了。延遲大概在20S左右。

(在iOS的safari瀏覽器中可以正常觀看)

寫在最後

為什麼延遲 那麼高呢?這是因為伺服器將視訊流切斷成一個個小的以.ts結尾的檔案。

(hls資料夾內容。即推流到該檔案夾了)

而我們訪問的是.m3u8檔案,這個檔案內容是將一個個ts檔案串聯起來的,這就達到了一個播放的效果,所以看起來會有很大的延遲。

(m3u8檔案內容)

如果降低延遲也不是沒有方法,可以設定切片生成的大小以及訪問的速度,但是這樣大大增加了伺服器的壓力。

當然,我們也可以用rtmp拉流工具(VLC等)來看該直播,延遲大概在2-5S左右,拉流地址與推流地址一致。