Mediasoup逻辑流程解惑:Consume阶段Consumer创建规则咨询
Mediasoup Consume环节逻辑结论
不存在可自动响应所有新Producer的全局单Consumer,必须为每一个需要接收的Producer单独创建对应的专属Consumer。
- Consumer和Producer是严格1:1绑定的关系:每个Consumer实例创建时就必须明确指定要关联的目标
producerId、接收端RTP能力、绑定的传输通道,创建完成后只会固定转发对应那一路Producer的音视频流,不会自动感知、处理其他新生成的Producer。 - 大家容易混淆的复用对象是传输通道(Transport),不是Consumer:客户端和Mediasoup服务端之间只需要为接收方向维持一个WebRTC Transport即可,同一个Transport可以挂载多个不同的Consumer实例,承载多路来自不同Producer的流,不需要每创建一个Consumer就重新建连。
- 标准业务流程逻辑:服务端监测到房间内有新Producer创建时,会向房间内其他有权限接收的客户端推送新Producer通知;客户端收到通知后,根据自身订阅需求、当前带宽情况判断是否要拉取该路流,如果需要就调用服务端接口为这个新Producer单独创建Consumer,完成流的订阅和播放。
不要尝试跨Producer复用Consumer实例:Mediasoup底层的流转发、带宽估计、关键帧请求、Simulcast/SVC层级选择逻辑全部和单个Consumer强绑定,跨Producer复用会直接导致流转发异常。
内容的提问来源于stack exchange,提问作者Oliver Dixon
相关产品推荐
相关产品推荐

