1. 程式人生 > >在自己的電腦下搭建nginx+rtmp的流媒體伺服器及用java對推流許可權驗證

在自己的電腦下搭建nginx+rtmp的流媒體伺服器及用java對推流許可權驗證

因為公司任務需要讓做一個直播的系統,經過一段時間的研究,和方便以後撿起來所以把這個寫了下來

下載windows版本的nginx

http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip

解壓到c盤,最好把目錄名改成nginx方便後面的cmd啟動

下載nginx-rtmp-modle

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

解壓到nginx的目錄下

在nignx的conf目錄中修改nginx-win.conf檔案

新增


rtmp {
    server {
        listen 1935;    

        chunk_size 4000;
        application live {
            live on;
  on_publish http://localhost:8090/xxx/user/auth;  
        }

  application hls {
            live on;
 hls on;  
            hls_path C:/nginx-1.7.11.3-Gryphon/html/hls;
            hls_fragment 5s;  
 on_publish http://localhost:8090/fuliwd/user/auth;  
        }
    }
}

監聽的埠號為 1935

on_publish為許可權驗證的地址

hls_path這個路徑用來存放m3u8檔案的

live是rtmp推流延遲最小因為只需要完成一次握手,hls是hls推流主要hls是支援apple的方式,但是hls延遲太高20s左右

這個搭建完成之後在cmd中進入到你的nginx目錄下

使用命令 start nignx.exe -c nginx-win.conf啟動nginx

啟動的時候回一閃而過,然後到工作管理員中查詢是否開啟,如果失敗了就進入到nginx的logs目錄下的error.log檔案中檢視錯誤資訊

使用obs推流測試是否成功。


url填寫你的推流地址rtmp://地址:埠號/live

串流地址就是可以支援多房間直播的不用再nginx中配置可以隨便寫如果為test那麼地址就是

rtmp://地址:埠號/live/test

因為加了許可權驗證,所以推流的時候就需要驗證了,我用的是java的方法進行驗證的。

因為有驗證所以地址要改成

rtmp://地址:埠號/live/test?passWord=123456(目前在網上沒有找到java的驗證方法,有也是別人自己封裝的類copy來的程式碼沒用,所以經過一系列的查詢之後需要用到註解@ResponseBody,和返回json格式


程式碼為:

@RequestMapping("/auth")
public @ResponseBody String auth(String passWord,HttpServletRequest request,HttpServletResponse response){
try {
if(passWord.equals("123456")){
return "{\"code\":\"200\",\"detail\":\"SUCCESS\"}"; 
}else{
response.setStatus(500);
return "{\"code\":\"500\",\"detail\":\"auth error\"}"; 
}
} catch (Exception e) {
response.setStatus(500);
return "{\"code\":\"500\",\"detail\":\"sys error\"}"; 
}
}

方便複製

這樣你推流的時候就會先進入驗證的方法如果不成功就回返回500斷開連線,成功則返回200可以繼續直播,如果不想驗證的話就把on_publish去掉就可以了