WebRTC 服务器要干些什么

概述

WebRTC 的服务器大体分为信令服务器和媒体服务器

WebRTC 信令服务器是主要功能是为 WebRTC 通讯搭建一个了解彼此能力的通道, 交换信息, 同步改动.

而媒体服务器就是用来交换媒体,包括对媒体数据的加解密,编解码,带宽和速率控制等功能

不同的 RTP Toplogies 对服务器有不同的要求

WebRTC 或者说多媒体通信一般有如下的几种拓扑结构:

  1. Point to Point 点对点
  2. Point to Multipoint Using Multicast 单点到多点(使用多播)
  3. Point to Multipoint Using the RFC 3550 Translator 单点到多点(使用RFC3550 的 Translator)
  4. Point to Multipoint Using the RFC 3550 Mixer Model 单点到多点(使用RFC3550 的Mixer)
  5. Point to Multipoint Using Video Switching MCUs 单点到多点(使用视频切换)
  6. Point to Multipoint Using RTCP-Terminating MCU 单点到多点(使用RTCP 终结方式)
  7. Non-Symmetric Mixer/Translators 非对称的 mixer/translator
  8. Combining Topologies 混合拓扑

服务器的主要功能

P2P

如果是两个人之间的端到端 (P2P) 的通信, 信令服务器的功能很简单

  1. 交换媒体通信和处理能力,主要是以 SDP 来描述
  2. 交换连接地址, 比如 ICE Candidate

而由于是点对点的通信,媒体服务器也就不需要了。

P2P

SFU

如果是 SFU(Selective Forward Unit), 那么它的信令服务器除了上述的 SDP 媒体参数协商, ICE 连接地址交换,还有参加 RTP 会话的参加者信息的同步。

SFU

多个人之间的会议系统, 信令控制会麻烦很多,除了上述两个基本功能之外, 还要有

  • 会议管理
  • 成员管理
  • 设备管理
  • 会话管理
  • 连接管理
  • 媒体管理
  • 管理会议中的实体

在 RFC4575 中有这样的定义

conference-info
     |
     |-- conference-description
     |
     |-- host-info
     |
     |-- conference-state
     |
     |-- users
     |    |-- user
     |    |    |-- endpoint
     |    |    |    |-- media
     |    |    |    |-- media
     |    |    |    |-- call-info
     |    |    |
     |    |    |-- endpoint
     |    |         |-- media
     |    |-- user
     |         |-- endpoint
     |              |-- media
     |

     |-- sidebars-by-ref
     |    |-- entry
     |    |-- entry
     |
     |-- sidebars-by-val
          |-- entry
          |    |-- users
          |         |-- user
          |         |-- user
          |-- entry
               |-- users
                    |-- user
                    |-- user
                    |-- user

MCU

Multiple Control Unit 多点控制单元相比 SFU, 它有着对于媒体流的 Mix 和 translate 功能,可以很好地适配传统的通信设备,在实际应用中,一般我们会以 SFU 为主, MCU 为辅,共同形成一个服务器集群。

MCU

服务器中需要维护领域对象

在 WebRTC 服务器上,我们一般会维护如下的领域对象

  • Conference
  • Session
  • Participate
  • Device
  • Connection
  • MediaSession
  • MediaSessionDescription
  • MediaStream
  • MediaStreamTrack
  • 等等

领域对象的具体内容从略,一般有如下的 Command 或 Event

应用层的事件大约可以分为 5 类

  • Request: 包括 command
  • Response
  • Subscribe
  • Notify
  • Message 就是一个消息,不要求响应, 例如 Presence 出席信息

具体的有

  • Start
  • End
  • Join
  • Leave
  • Offer
  • Answer
  • Mute
  • Unmute
  • Expel
  • RaiseHand
  • 等等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值