因为公司任务需要让做一个直播的系统,经过一段时间的研究,和方便以后捡起来所以把这个写了下来

 

下载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文件----新增:

监听的端口号为 1935

on_publish为权限验证的地址

hls_path这个路径用来存放m3u8文件的

rtmp {
    server {
        listen 1935;   
		chunk_size 4000;
		application live {
			live off;
            //这里我用的是用java进行权限验证访问的java接口
			on_publish http://localhost:8090/fuliwd/user/auth;  
		}
        application hls {
            live off;
			hls off;  
            hls_path C:/nginx-1.7.11.3-Gryphon/html/hls;
            hls_fragment 5s;  
            //这里我用的是用java进行权限验证访问的java接口
			on_publish http://localhost:8090/fuliwd/user/auth;  
        }
    }
}

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

 

启动nginx:

这个搭建完成之后在cmd中进入到你的nginx目录下

使用命令 start nignx.exe -c nginx-win.conf启动nginx

(有人提问说:start nignx.exe -c nginx-win.conf 然后 nginx.exe和nginx-win.config不在同一个目录下面怎么启动得来)-c是指定启动的文件,我这边做的是可以启动的

启动的时候回一闪而过,然后到任务管理器中查找是否打开,如果失败了就进入到nginx的logs目录下的error.log文件中查看错误信息

使用obs推流测试是否成功。

url填写你的推流地址rtmp://地址:端口号/live

串流地址就是可以支持多房间直播的不用再nginx中配置可以随便写如果为test那么地址就是

rtmp://地址:端口号/live/test

 

推流权限验证--java方式:

因为加了权限验证,所以推流的时候就需要验证了,我用的是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去掉就可以了

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐