流媒体技术_Janus二次开发(施工)
最近更新:2024-11-14
|
字数总计:701
|
阅读估时:2分钟
|
阅读量:次
- Janus框架分析
- WebRTC三种类型(Mesh、MCU、SFU)
- Mesh
- MCU
- SFU(最常用)
- Janus服务器框架
- Janus信令分析
- Janus源码
- 模块结构
Janus框架分析
WebRTC三种类型(Mesh、MCU、SFU)
Mesh
- 多个客户端两两相连,同时还分别与STUN/TURN服务器连接,此时的STUN/TURN不能进行数据中转,这样就形成了一个网络拓扑结构
- 优点:可以支持p2p,节省带宽
- 缺点:
- p2p连通率不高(国内<50%)
- 设备上传带宽压力很大,假如有10个人进行通话,那么每个人就要有9路上行数据,所以多人通话要求高;同时下行带宽也很大,有几个人通话,每个设备就需要拉取N-1路数据。
- 无法保存通话内容,因为数据不走服务器
- 适合:1v1的场景
MCU
- 多个客户端都仅与服务器相连,服务器对多路数据进行mix后再发给客户端。举例:四方通话,B1推一路到服务器,B1拉流结果是服务端对B2+B3+B4进行混合(解码+mix+编码)后的码流。其他的端都是一样的。
1 2
| B1 <-> MCU <-> B2 B3 <-> <-> B4
|
- 优点:对于客户端和服务端都省带宽
- 缺点:对于服务端硬件设备要求非常高,机器成本高,单台50w很正常
SFU(最常用)
- 多个客户端,都会共享一路给SFU,SFU将这些流转发给该客户端以外的客户端。
1 2 3 4 5 6 7
| // 上行 B1 -> SFU <- B2 B3 -> <- B4 // B1下行 SFU -(B2)-> B1 -(B3)-> B1 -(B4)-> B1
|
- 优势:对于每一个客户端,推流只需要推一路;拉流还是要拉多路的。
- 发布订阅模式:每个推流端,服务器都会创建一个主题,供其他客户端去订阅
- Simulcast模式
- 是指视频的共享者可以同时向SFU发送多路不同视频分辨率的视频流,而sfu可以将接收到的三路流根据各终端的情况而选择其中某一路发送出去。Simulcast模式对移动端的终端类型非常有用,它可以灵活而又智能地适应不同的网络环境。

- SVC模式
- SVC模式是可伸缩的视频编码模式,它在编码时将视频分为多层——核心层、中间层和扩展层。上层依赖底层,而且越上层越清晰,越底层越模糊。在带宽不好的时候只传输底层,即核心层,在带宽充足的情况下,可以将三层都传输过去。

Janus服务器框架
- 插件式开发

- WebRTC这一块要符合webRTC标准
- transport模块负责信令传输、房间管理、sdp交互、candidate交互
- 信令通道:http、websocket、mqtt、socket tcp都可以做
Janus信令分析
Janus源码
模块结构
- 核心
- 插件
- 传输
- 事件处理
- 实用工具
2024-11-13
该篇文章被 Cleofwine
归为分类:
流媒体