【音视频】自研直播推流-流程概览

入行直播项目也有很久了(2年算个坎吗?),从业务需求变成底层音视频需求测试,过程中遇到很多盲点和知识误区。

所以更加注重底层服务的交互,分细节整理完流程图和测试手段,感觉了却一桩大事。

 

注:观众上麦变嘉宾(即推流又拉流):

1、推流

2、拉主播流和房间内其他嘉宾的流


核心点总结:

  1. 客户端SDK

    1. ip探测:发生在每次中心启动/开播时,有egde变化则会自动更新可用edge,保证服务正常。
    2. 降级策略:多路用户进房间拉流超时,则会自动降级为合流,播放。
    3. 混流功能:支持go mixer pro混音设备,将音乐与话筒采集的数据进行混音。
  2. 流媒体服务+信令(mp+signal):线上一共36台egde,QA环境目前可用8台。

    1. edge等同于mp,所有流的来源都是mp提供的。
    2. 断网重连:房间内的用户网络断开,根据房间ID去实时更新流个数。
    3. 级联:一个edge上的服务不可用,则会自动探测可用edge支持服务,级联业务担保。
    4. signal直连:同一台edge上拉流。
  3. center中心

    1. 与客户端:(http)
      1. 鉴权auth:center提供给前端可用的edge,保证服务的可用性。
      2. 刷新edgeList:在APP内,每2个小时数自动刷新一次,更新edgeList。
    2. 与signal:(rpc)
      1. edge注册:心跳、保活、ping、mp管理
      2. peer Add/peer Remove:
      3. 用户分配角色:Participant PeerList、Viewer PeerList、ViewerCdn PeerList
    3. 级联:跨edge:切换用户edge
      1. 连麦
      2. pk
    4. room host/quit -> edge close room
    5. 限流/负载警报
  4. 计算中心+信令(cc+signal)

    1. 流程:业务 -> 客户端 -> signal -> center -> cc - cdn
    2. mix Stream(混流):start/stop
    3. signal Stream(单流)

原文地址:https://www.cnblogs.com/darlingmz/p/12098567.html