Files
taoyao/taoyao-client-media/README.md
2023-05-18 13:55:01 +08:00

85 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 媒体终端
只要负责媒体处理,不要添加任何业务逻辑,所有业务逻辑都由[taoyao-signal-server](../taoyao-signal-server)处理。
## 媒体
* [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)
## 使用
```
sudo npm install
```
## Mediasoup
```
# 编译:默认不用手动编译
make
make -C worker
```
## 录像功能
录像直接将媒体流转发给`ffmpeg`实现录制,没有直接修改`mediasoup`代码,代码侵入较低更加方便升级。
## 节点配置
需要保证`src/Config.js`中的`clientId``ecosystem.config.json`中的`name`保持一致,否者重启和关闭信令无效。
## 动态调节码率
```
参考配置`mediaCodecs`
```
## WebRTC协议栈
```
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HTTPS / WSS | | SCTP | SRTP / SRTCP |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ICE / SDP +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TLS | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ DTLS +-+-+-+-+-+-+-+-+-+
| HTTP / WS | NAT / STUN / TURN | | RTP / RTCP |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TCP | UDP |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 / IPv6 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
```
### 协议简介
* 会话通道ICE/SDP
* 媒体通道RTP/RTCP/SRTP/SRTCP
* SDP会话描述协议只是信息格式描述标准不是传输协议
* ICE交互式连接建立使用标准SDP描述
* RTP实时传输协议
* RTCPRTP控制协议监控数据传输质量提供反馈
* SCTP流控制传输协议
* RTSP实时流传输协议依赖RTP协议实时性好适合视频聊天视频监控
* RTMP实时消息传输协议
## 其他常见WebRTC媒体服务
* [Jitsi](https://github.com/jitsi)
* [Janus](https://github.com/meetecho/janus-gateway/)
* [Licode](https://github.com/lynckia/licode)
* [Kurento](https://github.com/Kurento/kurento-media-server)
* [Medooze](https://github.com/medooze/media-server)
* [Mediasoup](https://github.com/versatica/mediasoup)
## RTP裸流
媒体服务主要使用`WebRTC`协议,同时支持接入`RTP`裸流,可以参考[RtpTest.java](../taoyao-signal-server/taoyao-server/src/test/java/com/acgist/taoyao/rtp/RtpTest.java)配合`ffmpeg`使用`RTP`推拉流,具体代码需要自行实现。
## 协议
* https://www.ortc.org
* https://www.webrtc.org