当前位置:网站首页>Mediasoup 杂谈(待完善)
Mediasoup 杂谈(待完善)
2022-08-02 14:16:00 【freeabc】
1. Mediasoup 基本组件框图

2. Mediasoup 的初始化基本流程
1. 客户端访问 https://192.168.2.84:3000/?info=true , 返回初始化页面 html
2. 这是一个新发起的请求 websocket
wss://192.168.2.84:4443/?roomId=7xexh3xi&peerId=za4svz6e
客户端一个请求过来,首先根据 url 里的 roomId 查找 Room,如果不存在 Room,则轮询挑选一个 worker ,产生一个协议层面的 Room 以及通过 worker 产生一个 router ,
通过 router 产生一个与底层交互的 DirectTransport ,这个用来 js 与底层 worker 的信令或数据交互,然后创建一个上层的 Room 对象,包含这些新产生的对象
3. 客户端首先获取 getRouterRtpCapabilites
4. 客户端产生一个 createWebRtcTransport 生产者 和一个 createWebRtcTransport 消费者
5. 客户端然后执行加入 Room 的指令 join
6. 客户端执行 connectWebRtcTransport 进行 ice 的相关动作,两次一个生产者一个消费者
7. 客户端执行产生 produce ,并为 Room 的每个用户创建相应的 consume ,后续通过 produce 上传音视频数据
3. Producer 的简单说明
每个 producer 分为三个种类 : all, audio & video ,根据产生 produce 的 json 字段 kind 指定,
同时也支持三种类型 type 的输出,分别为 none, simple, simulcast, svc, pipe,根据产生 producer 的 json 字段 encodings 进行判断
当 encodings 列表个数为 1 时,判断 if (encoding.spatialLayers > 1 || encoding.temporalLayers > 1) 则为 SVC,否则就为 SIMPLE, 当
encodings 列表个数大于 1 时, 则 type 为 SIMULCAST,如果 encodings 为 0 时,则为 NONE
4. 数据接收及转发流程
UdpSocket ---> WebRtcTransport --- 根据 ssrc 获取 producer ---> Producer ---> WebRtcTransport ---> Router --- 根据 producer 获取 consumer ---> consumer (抖动缓冲) ---> WebRtcTransport
5. 题外话
新用户加入到 Room 会为当前 Room 内已经存在的每一个 producer 产生一个 consumer ,consumer 产生成功,把此 consumer 的信息通过上述通道,发送指令 newConsumer 到新用户的客户端上,这样就建立了客户端与服务器端的 consumer 的通道,而新用户的每次创建一个 producer 就会为当前 Room 的已经存在的用户产生一个 consumer ,然后把此信息发送到已经存在的用户客户端上,这样就为已经存在的用户建立 了consumer 的通道。
边栏推荐
猜你喜欢
随机推荐
【无标题】
Oauth2.0 authentication server adds verification code login method
【软件测试】自动化测试selenium3
EastWave应用:光场与石墨烯和特异介质相互作用的研究
【线程网络】了解线程属性(fork/interview question)
代码细节带来的极致体验,ShardingSphere 5.1.0 性能提升密钥
Vmware workstation16 安装 ESXi 6.7 详细步骤
mongodb连接本地服务失败的问题
基类和派生类的关系【继承】/多态和虚函数/【继承和多态】抽象类和简单工厂
【软件测试】用例篇
转行软件测试,从零收入到月薪过万,人生迎来新转折
Doubly linked list (normal iterators and const iterators)
Class template/assignment operations and add operations
hybrid 实现同网段但不同vlan之间通讯
CDH(computational Diffie-Hellman)问题以及与离散对数、DDH问题的区别
OpenPose 命令行说明
Template Series - Dichotomous
smart_rtmpd 轻松突破 C100K 测试
MySQL协议长什么样子
你的站点可能还没有准备好用于Site KitSite Kit 无法访问 WordPress REST API。请确保其已在您的站点上启用。









