theme: vuepress
由于要接入直播功能,需要搭建一个flv直播服务,写一下笔记。
准备工作
- 带有nginx-http-flv-module的nginx
- 一台Windows服务器
- obs软件(测试推流)
- 浏览器(测试拉流)
配置文件
- 把conf下的nginx.conf里面的路径改正确。
- 如果是服务,对应的xml配置文件内的信息修改正确。
开启nginx
在cmd内输入命令:
nginx.exe
就可以开启nginx。
关闭nginx
关闭cmd窗口就可以了,但是可能存在关闭不成功的情况,需要手动打开任务管理器进行关闭。
obs推流
打开obs,设置推流地址:
rtmp://ip:1935/myapp/mystream
请注意查看端口是否可用,Windows自带防火墙以及云服务器的安全策略都可能导致端口被拦截。
flv拉流
拉流有很多方式:
- ffplay
- vlc
- flvjs
因为要使用网页播放,所以使用flvjs进行在线播放。
GitHub:https://github.com/bilibili/flv.js
在线测试demo:http://bilibili.github.io/flv.js/demo/
播放地址:http://ip:8080/live?port=1935&app=myapp&stream=mystream
测试播放,可以播放。
生产代理
由于实际生产环境使用https协议,所以需要进行一定程度的反向代理。
原因:Windows服务器,iis必然占用了80端口,那么留给nginx的只有443端口可以用了,由于生产环境中已经有了其他线上业务,并且已经有一个nginx在运行了,已经运行的nginx使用的就是443端口,而这边我需要新开一个带有直播插件的nginx,所以情况就成这样了:
stateDiagram-v2
[*] --> rtmp推流
rtmp推流 --> Rtmp_Nginx
Rtmp_Nginx --> ip访问(https网站不支持)
Rtmp_Nginx --> 线上Nginx
线上Nginx --> 反向代理8080端口即Rtmp_Nginx
反向代理8080端口即Rtmp_Nginx --> 使用https访问
配置文件:
location /live/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
}