利用nginx與nginx-rtmp-module搭建流媒體服務器實現直播

使用環境是centos 7.0+nginx;能夠實現簡單的流媒體服務。html

先下載nginx-rtmp-module拓展:linux

nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-modulenginx

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

先將nginx-rtmp-module下載到linux服務器中,若是沒有git需先安裝git,參考linux安裝gitgit

 

接下來安裝nginxgithub

nginx的官方網站爲:http://nginx.org/en/download.htmlcentos

wget http://nginx.org/download/nginx-1.8.1.tar.gz  
tar -zxvf nginx-1.8.1.tar.gz  
cd nginx-1.8.1  
./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module    
make && make install 

默認安裝目錄爲:/root, add-module爲下載的nginx-rtmp-module文件路徑。若是沒有wget要先安裝wget組件跨域

 

安裝時候可能會報錯沒有安裝openssl,須要先安裝openssl:瀏覽器

yum -y install openssl openssl-devel

 

安裝好nginx後修改nginx配置文件bash

vi /usr/local/nginx/conf/nginx.conf

 

在配置文件中加入RTMP部分服務器

rtmp {    
    
    server {    
    
        listen 1935;  #監聽的端口  
    
        chunk_size 4000;    
          
           
        application hls {  #rtmp推流請求路徑  
            live on;    
            hls on;    
            hls_path /usr/share/nginx/html/hls;    
            hls_fragment 5s;    
        }    
    }    
}  

其中hls_path文件夾必需要有寫入的權限

 

再修改http中的server模塊:

server {  
    listen       81;    #拉流請求的端口號
    server_name  localhost;  
  
    #charset koi8-r;  
  
    #access_log  logs/host.access.log  main;  
  
    location / {  
        root   /usr/share/nginx/html;   #跟目錄文件夾
        index  index.html index.htm;  
    }  
  
    #error_page  404              /404.html;  
  
    # redirect server error pages to the static page /50x.html  
    #  
    error_page   500 502 503 504  /50x.html;  
    location = /50x.html {  
        root   html;  
    } 

root能夠跟據本身的需求來改的。

而後啓動nginx:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  

 

關於更多rtmp的參數能夠參考官方文檔

 

配置好服務器後就能夠開始推流了,這裏暫時用開源的obs軟件進行簡單推流

 

在設置->串流 中填寫信息:URL爲 rtmp://xxx:1935/hls,xxx爲你的服務器的IP地址,hls是在流媒體服務器中用來存放流媒體的文件夾。

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

填寫完畢後,點擊開始串流,就說明咱們的流媒體服務器搭建成功,這裏推流會把流媒體文件推送到服務器文件夾內,生成一個test.m3u8流媒體文件。

 

推流成功後開始拉流(觀看直播)

Html5自帶的video標籤就能夠觀看

<video>    
    <source src="http://xxx:81/hls/test.m3u8"/> 
</video>  

在IOS下的safar瀏覽器直接能夠觀看,安卓和winows系統下可能須要藉助播放器觀看。

不過直播的延遲比較高,這是由於服務器將視頻流切斷成一個個小的以.ts結尾的文件,咱們訪問的是.m3u8文件,這個文件內容是將一個個ts文件串聯起來的,這就達到了一個播放的效果,因此看起來會有很大的延遲。

若是下降延遲也不是沒有方法,能夠設置切片生成的大小以及訪問的速度,可是這樣大大增長了服務器的壓力。

固然,咱們也能夠用rtmp拉流工具(VLC等)來看該直播,拉流地址與推流地址一致,這樣能減小延遲。

要考慮具體狀況要保持延遲和服務器壓力間的均衡。

 

最後要注意的是,拉流時,若是在其餘服務器使用播放器請求流媒體服務器的文件,會涉及到跨域。

這時候要在流媒體服務器root目錄下加入 crossdomain.xml 文件,文件內容爲

<?xml version="1.0" encoding="utf-8"?>
<cross-domain-policy> 
	<allow-access-from domain="*"/>   這裏可設置容許請求的域名
</cross-domain-policy> 

 

以上就能夠完成一個簡單的流媒體服務,進行直播。

相關文章
相關標籤/搜索