[+] Mediasoup

This commit is contained in:
acgist
2023-02-02 17:03:01 +08:00
parent 03f34ca888
commit de7e15f6e5
233 changed files with 1860 additions and 985 deletions

View File

@@ -1,68 +1,45 @@
# 桃夭
桃夭是套`WebRTC`信令服务,综合`Mesh``MCU``SFU`三种媒体通信架构,支持直播会议两种场景。
桃夭是套`WebRTC`信令服务,使用`Mediasoup`提供媒体服务,支持直播会议两种场景。
## 模块
|模块|名称|描述|
|:--|:--|:--|
|taoyao|桃夭|桃之夭夭灼灼其华|
|taoyao-boot|基础|基础模块|
|taoyao-node|集群|集群模块|
|taoyao-live|直播|直播、连麦、本地视频同看|
|taoyao-media|媒体|录制<br />音频(降噪、混音、变声)<br />视频水印、美颜、AI识别|
|taoyao-media|媒体|媒体服务|
|taoyao-signal|信令|信令服务|
|taoyao-server|服务|启动服务|
|taoyao-meeting|会议|会议模式、广播模式、单人对讲|
|taoyao-webrtc|WebRTC|WebRTC模块|
|taoyao-webrtc-mesh|Mesh架构|Mesh架构|
|taoyao-webrtc-moon|Moon架构|Moon架构|
|taoyao-webrtc-kurento|kurento框架|WebRTC协议簇kurento实现|
|taoyao-client|终端|终端示例|
## 模块关系
### 流程
```
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| taoyao-server |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| taoyao-live | taoyao-meeting |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| taoyao-media |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| taoyao-webrtc-moon | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ taoyao-webrtc-mesh +
| taoyao-webrtc-kurento | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| taoyao-signal |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| taoyao-boot |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
```
终端首先连接信令得到媒体服务配置,然后推送媒体流到媒体服务,最后通过信令操作各个终端媒体如何转发。
> 综合比较`jitsi`|`kurento`两个框架最后选择`kurento`框架作为基础框架
> 终端不能直接连接媒体服务操作其他终端媒体
## 架构比较
## 媒体
### Mesh
* [mediasoup官网](https://mediasoup.org/)
* [mediasoup源码](https://github.com/versatica/mediasoup)
* [mediasoup文档](https://mediasoup.org/documentation/v3/mediasoup)
* [mediasoup接口](https://mediasoup.org/documentation/v3/mediasoup/api)
流媒体点对点连接,不经过服务端。
### 常见WebRTC媒体服务
#### 功能简介
* Janus
* Jitsi
* Licode
* Kurento
* Medooze
* Mediasoup
* ~~直播~~
* ~~媒体:降噪、变声、美颜录制、等等~~
* 可能需要自己搭建`coturn`服务实现`STUN`/`TURN`功能
* 终端和终端之间各自建立一个独立媒体连接
## 终端
### Moon
* [mediasoup-client源码](https://github.com/versatica/mediasoup-client)
* [mediasoup-client文档](https://mediasoup.org/documentation/v3/mediasoup-client)
* [mediasoup-client接口](https://mediasoup.org/documentation/v3/mediasoup-client/api)
综合`MCU`/`SFU`两种架构,终端推流到服务端,由服务端处理后分流。
## TODO
> 为什么叫`Moon`:因为这是古诗词中最美丽的意象
#### 功能简介
* 需要安装[KMS服务](./docs/Deploy.md#kmskurento-media-server)
* 提供混音、变声、美颜、录制等等媒体功能
* 终端推送给服务端最高质量媒体,再由服务端根据订阅终端按配置分流。
* 终端和服务器之间建立两个媒体连接,一个本地媒体,一个远程媒体。
* 录制
* 音频:降噪、混音、变声
* 视频水印、美颜、AI识别