入行直播项目也有很久了(2年算个坎吗?),从业务需求变成底层音视频需求测试,过程中遇到很多盲点和知识误区。
所以更加注重底层服务的交互,分细节整理完流程图和测试手段,感觉了却一桩大事。
注:观众上麦变嘉宾(即推流又拉流):
1、推流
2、拉主播流和房间内其他嘉宾的流
核心点总结:
-
客户端SDK
- ip探测:发生在每次中心启动/开播时,有egde变化则会自动更新可用edge,保证服务正常。
- 降级策略:多路用户进房间拉流超时,则会自动降级为合流,播放。
- 混流功能:支持go mixer pro混音设备,将音乐与话筒采集的数据进行混音。
-
流媒体服务+信令(mp+signal):线上一共36台egde,QA环境目前可用8台。
- edge等同于mp,所有流的来源都是mp提供的。
- 断网重连:房间内的用户网络断开,根据房间ID去实时更新流个数。
- 级联:一个edge上的服务不可用,则会自动探测可用edge支持服务,级联业务担保。
- signal直连:同一台edge上拉流。
-
center中心
- 与客户端:(http)
- 鉴权auth:center提供给前端可用的edge,保证服务的可用性。
- 刷新edgeList:在APP内,每2个小时数自动刷新一次,更新edgeList。
- 与signal:(rpc)
- edge注册:心跳、保活、ping、mp管理
- peer Add/peer Remove:
- 用户分配角色:Participant PeerList、Viewer PeerList、ViewerCdn PeerList
级联:跨edge:切换用户edge - 连麦
- pk
- room host/quit -> edge close room
- 限流/负载警报
- 与客户端:(http)
-
计算中心+信令(cc+signal)
- 流程:业务 -> 客户端 -> signal -> center -> cc - cdn
- mix Stream(混流):start/stop
- signal Stream(单流)