8000 完美流媒体系统搭建 · Tinywan/lua-nginx-redis@72dbf89 · GitHub
[go: up one dir, main page]

Skip to content

Commit 72dbf89

Browse files
committed
完美流媒体系统搭建
1 parent 0aa5d90 commit 72dbf89

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

Protect/StreamSystemreadme.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,65 @@
1+
![Markdown](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/CDN_proxy_LiveNode_URLStream.png) 思路图
12
## 流媒体系统搭建
23

34
* 一、推流设备必须提前填写进后台数据库中
45

5-
* 概述:device_domain,也就是设备的负载均衡的地址
6+
> 概述:device_domain,也就是设备的负载均衡的地址
67

78
* 二、OBS推流
89

9-
* 流程:
10-
> OBS=========>>>>>推流=========>>>>>Device_SLB
10+
> 流程:
11+
>> OBS=========>>>>>推流=========>>>>>Device_SLB
1112

12-
* 概述:OBS推流到设备负载均衡服务
13+
> 概述:OBS推流到设备负载均衡服务
1314

1415
* 三、Device_SLB 设备负载均衡
1516

16-
* 流程:
17-
> Device_SLB=========>>>>>负载分发到=========>>>>>DeviceServerRtmp
17+
> 流程:
18+
>> Device_SLB=========>>>>>负载分发到=========>>>>>DeviceServerRtmp
1819

1920
> 概述:设备负载均衡服务器根据转发策略分发到后端多台 ECS 设备流媒体服务器
2021

2122

2223
* 四、具体设备流媒体服务器用FFmpeg拉流到 URL_Stream 负载均衡服务器
2324

24-
* 流程:
25-
> DeviceRtmp=========>>>>>FFmpeg拉流=========>>>>>URL_Stream 负载均衡
25+
> 流程:
26+
>> DeviceRtmp=========>>>>>FFmpeg拉流=========>>>>>URL_Stream 负载均衡
2627

2728
> 概述:设备流媒体服务器将根据RTMP执行一个shell脚本在Redis获取该设备号对应的 URL_Stream 推流负载均衡(116.62.182.199),通过FFmpeg把本地的流copy到该负载均衡去。URL_Stream负载均衡服务器根据转发策略分发到后端多台
2829
设备负载均衡上去( 我自己配置的Nginx负载均衡)
2930

3031
* 五、URL_Stream 负载均衡分发到具体的URL_Stream后端服务器
3132

32-
* 流程:
33-
> URL_Stream负载均衡服务器=========>>>>>负载分发到=========>>>>>URL_Stream后端服务器
33+
> 流程:
34+
>> URL_Stream负载均衡服务器=========>>>>>负载分发到=========>>>>>URL_Stream后端服务器
3435

35-
* 概述:URL_Stream负载均衡服务器根据转发策略分发到后端多台 ECS URL_Stream流媒体服务器
36+
> 概述:URL_Stream负载均衡服务器根据转发策略分发到后端多台 ECS URL_Stream流媒体服务器
3637

3738
* 六、URL_Stream后端服务器分发到LiveNodeSLB负载均衡
3839

39-
* 流程:
40-
> URL_Stream后端服务器========>>>>>具体分发到=========>>>>>LiveNodeSLB节点负载均衡
40+
> 流程:
41+
>> URL_Stream后端服务器========>>>>>具体分发到=========>>>>>LiveNodeSLB节点负载均衡
4142

4243
> 概述:注意:在这里的URL_Stream后端服务器分发分发的是一个数组有"|"分割的多个IP地址(该地址也就是LiveNodeSLB节点负载均衡)
4344

4445
* 七、LiveNodeSLB节点负载均衡分发到具体的LiveNode
4546

46-
* 流程:
47-
> LiveNodeSLB=========>>>>>负载分发=========>>>>>LiveNode
47+
> 流程:
48+
>> LiveNodeSLB=========>>>>>负载分发=========>>>>>LiveNode
4849

4950
> 推流概述:节点负载均衡服务器LiveNodeSLB根据转发策略分发到后端多台 ECS 节点流媒体服务器,至此,流的推流、转发、分发到此结束!
5051

5152
* 八、CDN_proxy节点代理服务器
5253

53-
* 流程:
54-
> 客户端请求M3U8播放=========>>>>>CDN_proxy节点代理=========>>>>>具体直播节点LiveNode
54+
> 流程:
55+
>> 客户端请求M3U8播放=========>>>>>CDN_proxy节点代理=========>>>>>具体直播节点LiveNode
5556

5657
> 推流概述:客户端请求播放一个M3U8文件,如:http://CDN_proxy_host/hls/tinwyan123.m3u8 , 其中“tinwyan123” 表示推流名称,CDN_proxy通过虚拟服务地址执行一个LUA脚本,在该Lua脚本中
5758
执行一个Redis查询,查询条件的就是方才提到的“tinwyan123”(重要),根据流名称获取该流名称的直播节点LiveNode 的内网地址,返回给Nginx的Location 然后Nginx执行一个proxy_pass反向代理该具体的
5859
LiveNode直播节点,返回该流的播放地址
5960

6061
* 九、总结
6162

62-
* 该流路径只有推流(OBS推流地址)和播流地址是外网(CDN_proxy),其余的一律使用内网走(据说不消耗流量)
63+
> 该流路径只有推流(OBS推流地址)和播流地址是外网(CDN_proxy),其余的一律使用内网走(据说不消耗流量)
6364

6465

0 commit comments

Comments
 (0)
0