4.2 KiB
4.2 KiB
媒体
只要负责媒体处理,不要添加任何业务逻辑,所有业务逻辑都由taoyao-signal-server处理。
使用
sudo npm install
Mediasoup
# 编译:默认不用手动编译
make
make -C worker
事件
mediasoup.observer.on("newworker", fn(worker));
worker.on("died", fn(error));
worker.observer.on("close", fn());
worker.observer.on("newrouter", fn(router));
worker.observer.on("newwebrtcserver", fn(router));
router.on(“workerclose”, fn());
router.observer.on(“close”, fn());
router.observer.on(“newtransport”, fn(transport));
router.observer.on(“newrtpobserver”, fn(rtpObserver));
transport.on("trace", fn(trace));
transport.on(“routerclose”, fn());
transport.on(“listenserverclose”, fn());
transport.on(“trace”, fn(trace));
webRtcTransport.on(“icestatechange”, fn(iceState))
webRtcTransport.on(“iceselectedtuplechange”, fn(iceSelectedTuple))
webRtcTransport.on(“dtlsstatechange”, fn(dtlsState))
webRtcTransport.on(“sctpstatechange”, fn(sctpState))
plainTransport.on(“tuple”, fn(tuple))
plainTransport.on(“rtcptuple”, fn(rtcpTuple))
plainTransport.on(“sctpstatechange”, fn(sctpState))
pipeTransport.on(“sctpstatechange”, fn(sctpState))
directTransport.on(“rtcp”, fn(rtcpPacket))
transport.observer.on(“close”, fn())
transport.observer.on(“newproducer”, fn(producer))
transport.observer.on(“newconsumer”, fn(consumer))
transport.observer.on(“newdataproducer”, fn(dataProducer))
transport.observer.on(“newdataconsumer”, fn(dataConsumer))
transport.observer.on(“trace”, fn(trace))
webRtcTransport.observer.on(“icestatechange”, fn(iceState))
webRtcTransport.observer.on(“iceselectedtuplechange”, fn(iceSelectedTuple))
webRtcTransport.observer.on(“dtlsstatechange”, fn(dtlsState))
webRtcTransport.observer.on(“sctpstatechange”, fn(sctpState))
plainTransport.observer.on(“tuple”, fn(tuple))
plainTransport.observer.on(“rtcptuple”, fn(rtcpTuple))
plainTransport.observer.on(“sctpstatechange”, fn(sctpState))
pipeTransport.observer.on(“sctpstatechange”, fn(sctpState))
安全
默认媒体服务只要暴露媒体UDP端口,信令接口不用暴露,所以使用简单鉴权。
动态调节码率
参考配置`mediaCodecs`
WebRTC协议栈
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HTTPS / WSS | | SCTP | SRTP / SRTCP |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ICE / SDP / SIP +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TLS | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ DTLS +-+-+-+-+-+-+-+-+-+
| HTTP / WS | NAT / STUN / TURN | | RTP / RTCP |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TCP | UDP |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 / IPv6 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
协议简介
- 会话通道:ICE/SIP/SDP
- 媒体通道:RTP/RTCP/SRTP/SRTCP
- RTP:实时传输协议(音频视频)
- RTCP:RTP传输控制协议(监控数据传输质量并给予数据发送方反馈)
- SCTP:流控制传输协议(自定义的应用数据传输)
- RTMP:实时消息传送协议
- RTSP:可以控制媒体(点播)
ICE/SDP/SIP
ICE信息的描述格式通常采用标准的SDP,其全称为Session Description Protocol,即会话描述协议。
SDP只是一种信息格式的描述标准,不属于传输协议,但是可以被其他传输协议用来交换必要的信息,例如:SIP、RTSP等等。