在自己的電腦下搭建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去掉就可以了