1、worker.createWebRtcServer
worker創(chuàng)建成功之后,每個worker會同時創(chuàng)建一個webrtcServer,
webRtcServer是啟動的流媒體服務(wù),后面的ice連接,及流轉(zhuǎn)發(fā)都使用這個server。
請求:
msg:1:worker.createWebRtcServer::{"listenInfos":[{"protocol":"udp","ip":"192.168.0.100","port":44445},{"protocol":"tcp","ip":"192.168.0.100","port":44445}],"webRtcServerId":"001"}
返回:
{"id":1,"accepted":true}
2、worker.createRouter
創(chuàng)建房間
請求
msg:2:worker.createRouter:req-123:{"routerId":"lsk01"}
返回:
{"id":2,"accepted":true}
3、router.createAudioLevelObserver
用于創(chuàng)建一個音頻電平觀察器(AudioLevelObserver),它能夠監(jiān)控指定房間或傳輸中的音頻流的音量變化。這個功能在需要實時檢測參與者音頻音量時非常有用,比如實現(xiàn)語音激活檢測(VAD)或音量指示器。
主要作用
音量監(jiān)測:實時監(jiān)測音頻流的音量變化。
語音激活檢測:通過音量變化判斷用戶是否在說話。
音量指示器:在UI中顯示用戶的實時音量。
使用場景
語音激活檢測:判斷用戶是否在說話。
音量顯示:在UI中展示用戶的實時音量。
自動混音:根據(jù)音量自動調(diào)整混音策略。
請求:
msg:3:router.createAudioLevelObserver:lsk01:{"rtpObserverId":"DNPkNOhKVB","maxEntries":1,"threshold":-80,"interval":800}
返回:
{"id":3,"accepted":true}
4、router.createActiveSpeakerObserver
用于創(chuàng)建一個 活躍說話者觀察器(Active Speaker Observer)。它的作用是實時檢測當前房間或路由器(router)中誰正在說話(即誰的音頻音量最高),并將活躍說話者的信息通知給應(yīng)用程序。
檢測活躍說話者:
實時檢測當前誰在說話(基于音頻音量)。
適用于多人會議或語音聊天場景。
通知應(yīng)用程序:
當活躍說話者發(fā)生變化時,觸發(fā)事件通知應(yīng)用程序。
優(yōu)化用戶體驗:
可以用于 UI 顯示當前說話者,或者動態(tài)調(diào)整音頻流的優(yōu)先級。
請求:
msg:4:router.createActiveSpeakerObserver:lsk01:{"rtpObserverId":"ZtWaMvYoLl","interval":300}
返回:
{"id":4,"accepted":true}
5、router.createWebRtcTransportWithServer
請求:
msg:5:router.createWebRtcTransportWithServer:lsk01:{"transportId":"MhjAUjCtUp","listenIps":[{"ip":"192.168.0.100"}
返回:
{
"accepted": true,
"data": {
"consumerIds": [
],
"dataConsumerIds": [
],
"dataProducerIds": [
],
"direct": false,
"dtlsParameters": {
"fingerprints": [
{
"algorithm": "sha-512",
"value": "1B:E8:8F:A5:3D:C4:1F:FA:49:19:89:5F:AD:EE:98:67:1F:B1:6F:53:28:D0:2C:77:72:CB:30:E0:DC:1D:3A:10:90:DC:54:56:E4:EC:AC:B5:39:C6:8A:7D:E9:45:D4:24:14:3C:48:4C:F3:CD:0D:12:E4:40:47:FC:C7:67:61:FC"
},
{
"algorithm": "sha-224",
"value": "15:83:C7:4C:C0:86:0D:F3:E0:DE:C4:6F:E3:1D:DA:B4:46:4C:B3:7C:1E:6B:C8:15:CF:CC:71:3C"
},
{
"algorithm": "sha-256",
"value": "1A:EE:B5:B7:F9:E1:75:BC:29:33:41:ED:21:FC:FC:B0:74:6D:8A:27:92:55:EF:75:C0:7F:EF:A9:B6:F3:47:5C"
},
{
"algorithm": "sha-1",
"value": "85:28:27:51:DB:3C:6F:0C:11:64:5C:9F:F2:3D:B7:1C:AB:9D:C8:5F"
},
{
"algorithm": "sha-384",
"value": "EA:52:8E:62:C5:77:88:B2:85:DC:AD:19:55:87:FC:DE:C6:09:FA:CE:43:B5:A5:47:7E:93:2F:CA:9C:33:F8:BC:BB:C5:1C:10:F7:F1:BC:AC:EF:DF:A7:50:B0:33:CC:27"
}
],
"role": "auto"
},
"dtlsState": "new",
"iceCandidates": [
{
"foundation": "udpcandidate",
"ip": "192.168.0.100",
"port": 44445,
"priority": 1076302079,
"protocol": "udp",
"type": "host"
}
],
"iceParameters": {
"iceLite": true,
"password": "pcjdiw2gfwhahd5wa1wa35jxstub2u6p",
"usernameFragment": "bi1zomcqpqjknj7esfq8dflbu38tss8z"
},
"iceRole": "controlled",
"iceState": "new",
"id": "MhjAUjCtUp",
"mapRtxSsrcConsumerId": {
},
"mapSsrcConsumerId": {
},
"maxMessageSize": 262144,
"producerIds": [
],
"recvRtpHeaderExtensions": {
},
"rtpListener": {
"midTable": {
},
"ridTable": {
},
"ssrcTable": {
}
},
"sctpListener": {
"streamIdTable": {
}
},
"sctpParameters": {
"MIS": 1024,
"OS": 1024,
"isDataChannel": true,
"maxMessageSize": 262144,
"port": 5000,
"sctpBufferedAmount": 0,
"sendBufferSize": 262144
},
"sctpState": "new",
"traceEventTypes": ""
},
"id": 5
}
6、transport.enableTraceEvent
請求:
msg:6:transport.enableTraceEvent:MhjAUjCtUp:{"types":["bwe"]}
返回:
{"id":6,"accepted":true}
7、transport.setMaxIncomingBitrate
請求:
msg:7:transport.setMaxIncomingBitrate:MhjAUjCtUp:{"bitrate":1500000}
返回:
{"id":7,"accepted":true}
8、transport.connect
webrtcTransport
注意請求參數(shù)中的dtlsParameters是本端的sdp中的參數(shù)。
也就是在產(chǎn)生本地的sdp之后,將sdp中的fingerprints提取出來,請求該接口。

請求:
msg:8:transport.connect:MhjAUjCtUp:{"dtlsParameters":{"fingerprints": [{"algorithm":"sha-256","value":"6E:01:6A:D2:5B:71:A5:58:25:FC:41:19:A0:2E:D1:62:FF:65:7F:0F:A7:4B:A6:E3:15:7A:6E:58:5E:80:9B:78"}],"role":"auto"}}
返回:
{"accepted":true,"data":{"dtlsLocalRole":"client"},"id":8}
19、router.createWebRtcTransportWithServer
請求:
msg:19:router.createWebRtcTransportWithServer:lsk01:{"transportId":"shjoysWccg","listenIps":[{"ip":"192.168.0.100"}],"webRtcServerId":"001","enableUdp":true,"enableTcp":false,"preferUdp":false,"preferTcp":false,"initialAvailableOutgoingBitrate":1000000,"enableSctp":true,"numSctpStreams":{"OS":1024,"MIS":1024},"maxSctpMessageSize":262144,"sctpSendBufferSize":262144,"isDataChannel":true}
返回:
{
"accepted": true,
"data": {
"consumerIds": [
],
"dataConsumerIds": [
],
"dataProducerIds": [
],
"direct": false,
"dtlsParameters": {
"fingerprints": [
{
"algorithm": "sha-512",
"value": "1B:E8:8F:A5:3D:C4:1F:FA:49:19:89:5F:AD:EE:98:67:1F:B1:6F:53:28:D0:2C:77:72:CB:30:E0:DC:1D:3A:10:90:DC:54:56:E4:EC:AC:B5:39:C6:8A:7D:E9:45:D4:24:14:3C:48:4C:F3:CD:0D:12:E4:40:47:FC:C7:67:61:FC"
},
{
"algorithm": "sha-224",
"value": "15:83:C7:4C:C0:86:0D:F3:E0:DE:C4:6F:E3:1D:DA:B4:46:4C:B3:7C:1E:6B:C8:15:CF:CC:71:3C"
},
{
"algorithm": "sha-256",
"value": "1A:EE:B5:B7:F9:E1:75:BC:29:33:41:ED:21:FC:FC:B0:74:6D:8A:27:92:55:EF:75:C0:7F:EF:A9:B6:F3:47:5C"
},
{
"algorithm": "sha-1",
"value": "85:28:27:51:DB:3C:6F:0C:11:64:5C:9F:F2:3D:B7:1C:AB:9D:C8:5F"
},
{
"algorithm": "sha-384",
"value": "EA:52:8E:62:C5:77:88:B2:85:DC:AD:19:55:87:FC:DE:C6:09:FA:CE:43:B5:A5:47:7E:93:2F:CA:9C:33:F8:BC:BB:C5:1C:10:F7:F1:BC:AC:EF:DF:A7:50:B0:33:CC:27"
}
],
"role": "auto"
},
"dtlsState": "new",
"iceCandidates": [
{
"foundation": "udpcandidate",
"ip": "192.168.0.100",
"port": 44445,
"priority": 1076302079,
"protocol": "udp",
"type": "host"
}
],
"iceParameters": {
"iceLite": true,
"password": "05yhtloi90az5vt4pyz2amlvap70io6h",
"usernameFragment": "izgjzbmo3ikd7pf6r49s8cf907lmomw7"
},
"iceRole": "controlled",
"iceState": "new",
"id": "shjoysWccg",
"mapRtxSsrcConsumerId": {
},
"mapSsrcConsumerId": {
},
"maxMessageSize": 262144,
"producerIds": [
],
"recvRtpHeaderExtensions": {
},
"rtpListener": {
"midTable": {
},
"ridTable": {
},
"ssrcTable": {
}
},
"sctpListener": {
"streamIdTable": {
}
},
"sctpParameters": {
"MIS": 1024,
"OS": 1024,
"isDataChannel": true,
"maxMessageSize": 262144,
"port": 5000,
"sctpBufferedAmount": 0,
"sendBufferSize": 262144
},
"sctpState": "new",
"traceEventTypes": ""
},
"id": 19
}
20 ## 消費transport.enableTraceEvent
請求:
msg:20:transport.enableTraceEvent:shjoysWccg:{"types":["bwe"]}
返回
{"id":20,"accepted":true}
21 transport.setMaxIncomingBitrate
請求:
msg:21:transport.setMaxIncomingBitrate:shjoysWccg:{"bitrate":1500000}
返回:
{"id":21,"accepted":true}
22 transport.connect
請求:
msg:25:transport.connect:shjoysWccg:{"dtlsParameters":{"fingerprints": [{"algorithm":"sha-256","value":"40:4B:19:9D:B6:F1:0E:6B:B8:F5:C7:03:C6:25:26:9A:83:A1:C0:9D:EB:2E:5D:0A:C0:49:BB:8A:3E:F0:44:D6"}],"role":"client"}}
返回:
{"accepted":true,"data":{"dtlsLocalRole":"server"},"id":25}
26 transport.consume
請求:
msg:26:transport.consume:shjoysWccg:{"consumableRtpEncodings":[{"ssrc":2065150082}],"consumerId":"ihQMSQyBbk","ignoreDtx":false,"kind":"audio","paused":true,"producerId":"ahbUMWpfdN","rtpParameters":{"mid":"0","codecs":[{"mimeType":"audio/opus","payloadType":100,"clockRate":48000,"channels":2,"parameters":{"minptime":10,"sprop-stereo":1,"usedtx":1,"useinbandfec":1},"rtcpFeedback":[{"type":"transport-cc"},{"type":"nack"}]}],"headerExtensions":[{"uri":"urn:ietf:params:rtp-hdrext:sdes:mid","id":4,"encrypt":false,"parameters":null},{"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time","id":2,"encrypt":false,"parameters":null},{"uri":"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01","id":3,"encrypt":false,"parameters":null},{"uri":"urn:ietf:params:rtp-hdrext:ssrc-audio-level","id":1,"encrypt":false,"parameters":null}],"encodings":[{"ssrc":2065150085,"dtx":false}],"rtcp":{"cname":"audio-01","reducedSize":true,"mux":true}},"type":"simple"}
返回:
{"accepted":true,"data":{"paused":true,"producerPaused":false,"score":{"producerScore":10,"producerScores":[10],"score":10}},"id":26}
27 consumer.resume
請求:
msg:27:consumer.resume:ihQMSQyBbk:{}
返回:
{"id":27,"accepted":true}
30 transport.consume
請求:
msg:30:transport.consume:shjoysWccg:{"consumableRtpEncodings":[{"ssrc":3309578150}],"consumerId":"ADMmCCvQoF","ignoreDtx":false,"kind":"video","paused":true,"producerId":"qJkJjBiFNh","rtpParameters":{"mid":"1","codecs":[{"mimeType":"video/VP8","payloadType":101,"clockRate":90000,"rtcpFeedback":[{"type":"goog-remb"},{"type":"transport-cc"},{"type":"ccm","parameter":"fir"},{"type":"nack"},{"type":"nack","parameter":"pli"}]},{"mimeType":"video/rtx","payloadType":102,"clockRate":90000,"parameters":{"apt":101}}],"headerExtensions":[{"uri":"urn:ietf:params:rtp-hdrext:sdes:mid","id":4,"encrypt":false,"parameters":null},{"uri":"urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","id":10,"encrypt":false,"parameters":null},{"uri":"urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id","id":11,"encrypt":false,"parameters":null},{"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time","id":2,"encrypt":false,"parameters":null},{"uri":"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01","id":3,"encrypt":false,"parameters":null},{"uri":"urn:3gpp:video-orientation","id":13,"encrypt":false,"parameters":null},{"uri":"urn:ietf:params:rtp-hdrext:toffset","id":14,"encrypt":false,"parameters":null}],"encodings":[{"ssrc":3309578154,"dtx":false,"rtx":{"ssrc":553570782}}],"rtcp":{"cname":"video-01","reducedSize":true,"mux":true}},"type":"simple"}
返回:
{"accepted":true,"data":{"paused":true,"producerPaused":false,"score":{"producerScore":10,"producerScores":[10],"score":10}},"id":30}
31 consumer.resume
請求:
msg:31:consumer.resume:ADMmCCvQoF:{}
返回:
{"id":31,"accepted":true}
聯(lián)通之后

級聯(lián)信令
1:worker.createRouter:undefined:{"routerId":"room_01"}
2:router.createPipeTransport:room_01:{"transportId":"pipe-01","listenIp":{"ip":"127.0.0.1"},"enableSctp":false,"numSctpStreams":{"OS":1024,"MIS":1024},"maxSctpMessageSize":268435456,"sctpSendBufferSize":268435456,"isDataChannel":false,"enableRtx":false,"enableSrtp":false}
3:transport.connect:pipe-01:{"ip":"127.0.0.1","port":20616}
4:router.createWebRtcTransport:room_01:{"transportId":"a91bf3e6-eb62-4f79-a802-91f9b7580de2","listenIps":[{"ip":"127.0.0.1"}],"enableUdp":true,"enableTcp":true,"preferUdp":true,"preferTcp":false,"initialAvailableOutgoingBitrate":1000000,"enableSctp":false,"numSctpStreams":{"OS":1024,"MIS":1024},"maxSctpMessageSize":262144,"sctpSendBufferSize":262144,"isDataChannel":true}
5:transport.connect:a91bf3e6-eb62-4f79-a802-91f9b7580de2:{"dtlsParameters":{"role":"server","fingerprints":[{"algorithm":"sha-256","value":"18:E0:47:98:51:BD:30:82:41:9E:8B:5B:C8:91:60:58:F3:AC:AD:3F:E0:6D:31:71:2E:51:CA:A3:27:44:52:52"}]}}
6:transport.produce:a91bf3e6-eb62-4f79-a802-91f9b7580de2:{"producerId":"produce_video","kind":"video","rtpParameters":{"mid":"0","codecs":[{"mimeType":"video/VP8","clockRate":90000,"payloadType":96,"rtcpFeedback":[{"type":"goog-remb","parameter":""},{"type":"transport-cc","parameter":""},{"type":"ccm","parameter":"fir"},{"type":"nack","parameter":""},{"type":"nack","parameter":"pli"}],"parameters":{}},{"mimeType":"video/rtx","clockRate":90000,"payloadType":97,"rtcpFeedback":[],"parameters":{"apt":96}}],"headerExtensions":[{"uri":"urn:ietf:params:rtp-hdrext:sdes:mid","id":4,"encrypt":false,"parameters":{}},{"uri":"urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","id":10,"encrypt":false,"parameters":{}},{"uri":"urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id","id":11,"encrypt":false,"parameters":{}},{"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time","id":2,"encrypt":false,"parameters":{}},{"uri":"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01","id":3,"encrypt":false,"parameters":{}},{"uri":"urn:3gpp:video-orientation","id":13,"encrypt":false,"parameters":{}},{"uri":"urn:ietf:params:rtp-hdrext:toffset","id":14,"encrypt":false,"parameters":{}}],"encodings":[{"ssrc":3594988483,"rtx":{"ssrc":3492272171},"dtx":false}],"rtcp":{"cname":"eks80YQXECwcuNgX","reducedSize":true}},"rtpMapping":{"codecs":[{"payloadType":96,"mappedPayloadType":101},{"payloadType":97,"mappedPayloadType":102}],"encodings":[{"mappedSsrc":591203777,"ssrc":3594988483}]},"paused":false}
7:transport.consume:pipe-01:{"consumerId":"bf3d34db-8569-44c7-89d1-8a4b9ae5e26d","producerId":"produce_video","kind":"video","rtpParameters":{"codecs":[{"mimeType":"video/VP8","payloadType":101,"clockRate":90000,"parameters":{},"rtcpFeedback":[{"type":"nack","parameter":"pli"},{"type":"ccm","parameter":"fir"}]}],"headerExtensions":[{"uri":"http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07","id":6,"encrypt":false,"parameters":{}},{"uri":"urn:ietf:params:rtp-hdrext:framemarking","id":7,"encrypt":false,"parameters":{}},{"uri":"urn:3gpp:video-orientation","id":11,"encrypt":false,"parameters":{}},{"uri":"urn:ietf:params:rtp-hdrext:toffset","id":12,"encrypt":false,"parameters":{}},{"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time","id":13,"encrypt":false,"parameters":{}}],"encodings":[{"ssrc":376083759,"dtx":false}],"rtcp":{"cname":"eks80YQXECwcuNgX","reducedSize":true,"mux":true}},"type":"pipe","consumableRtpEncodings":[{"ssrc":591203777,"dtx":false}]}
8:transport.produce:a91bf3e6-eb62-4f79-a802-91f9b7580de2:{"producerId":"produce_audio","kind":"audio","rtpParameters":{"mid":"1","codecs":[{"mimeType":"audio/opus","clockRate":48000,"payloadType":111,"channels":2,"rtcpFeedback":[{"type":"transport-cc","parameter":""}],"parameters":{"minptime":10,"useinbandfec":1}}],"headerExtensions":[{"uri":"urn:ietf:params:rtp-hdrext:sdes:mid","id":4,"encrypt":false,"parameters":{}},{"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time","id":2,"encrypt":false,"parameters":{}},{"uri":"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01","id":3,"encrypt":false,"parameters":{}},{"uri":"urn:ietf:params:rtp-hdrext:ssrc-audio-level","id":1,"encrypt":false,"parameters":{}}],"encodings":[{"ssrc":3794159957,"dtx":false}],"rtcp":{"cname":"eks80YQXECwcuNgX","reducedSize":true}},"rtpMapping":{"codecs":[{"payloadType":111,"mappedPayloadType":100}],"encodings":[{"mappedSsrc":260573654,"ssrc":3794159957}]},"paused":false}
9:transport.consume:pipe-01:{"consumerId":"47728e42-ab7b-4721-9005-985d04ab5a2b","producerId":"produce_audio","kind":"audio","rtpParameters":{"codecs":[{"mimeType":"audio/opus","payloadType":100,"clockRate":48000,"channels":2,"parameters":{"minptime":10,"useinbandfec":1},"rtcpFeedback":[]}],"headerExtensions":[{"uri":"urn:ietf:params:rtp-hdrext:ssrc-audio-level","id":10,"encrypt":false,"parameters":{}},{"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time","id":13,"encrypt":false,"parameters":{}}],"encodings":[{"ssrc":521751636,"dtx":false}],"rtcp":{"cname":"eks80YQXECwcuNgX","reducedSize":true,"mux":true}},"type":"pipe","consumableRtpEncodings":[{"ssrc":260573654,"dtx":false}]}
1:worker.createRouter:undefined:{"routerId":"room_02"}
2:router.createPipeTransport:room_02:{"transportId":"pipe-02","listenIp":{"ip":"127.0.0.1"},"enableSctp":false,"numSctpStreams":{"OS":1024,"MIS":1024},"maxSctpMessageSize":268435456,"sctpSendBufferSize":268435456,"isDataChannel":false,"enableRtx":false,"enableSrtp":false}
3:transport.connect:pipe-02:{"ip":"127.0.0.1","port":34536}
4:transport.produce:pipe-02:{"producerId":"produce_video","kind":"video","rtpParameters":{"codecs":[{"mimeType":"video/VP8","payloadType":101,"clockRate":90000,"parameters":{},"rtcpFeedback":[{"type":"nack","parameter":"pli"},{"type":"ccm","parameter":"fir"}]}],"headerExtensions":[{"uri":"http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07","id":6,"encrypt":false,"parameters":{}},{"uri":"urn:ietf:params:rtp-hdrext:framemarking","id":7,"encrypt":false,"parameters":{}},{"uri":"urn:3gpp:video-orientation","id":11,"encrypt":false,"parameters":{}},{"uri":"urn:ietf:params:rtp-hdrext:toffset","id":12,"encrypt":false,"parameters":{}},{"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time","id":13,"encrypt":false,"parameters":{}}],"encodings":[{"ssrc":376083759,"dtx":false}],"rtcp":{"cname":"eks80YQXECwcuNgX","reducedSize":true,"mux":true}},"rtpMapping":{"codecs":[{"payloadType":101,"mappedPayloadType":101}],"encodings":[{"mappedSsrc":434375896,"ssrc":376083759}]},"paused":false}
5:transport.produce:pipe-02:{"producerId":"produce_audio","kind":"audio","rtpParameters":{"codecs":[{"mimeType":"audio/opus","payloadType":100,"clockRate":48000,"channels":2,"parameters":{"minptime":10,"useinbandfec":1},"rtcpFeedback":[]}],"headerExtensions":[{"uri":"urn:ietf:params:rtp-hdrext:ssrc-audio-level","id":10,"encrypt":false,"parameters":{}},{"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time","id":13,"encrypt":false,"parameters":{}}],"encodings":[{"ssrc":521751636,"dtx":false}],"rtcp":{"cname":"eks80YQXECwcuNgX","reducedSize":true,"mux":true}},"rtpMapping":{"codecs":[{"payloadType":100,"mappedPayloadType":100}],"encodings":[{"mappedSsrc":793331030,"ssrc":521751636}]},"paused":false}
6:router.createWebRtcTransport:room_02:{"transportId":"903889d1-fa58-47ec-98fb-ccb378d1117e","listenIps":[{"ip":"127.0.0.1"}],"enableUdp":true,"enableTcp":true,"preferUdp":true,"preferTcp":false,"initialAvailableOutgoingBitrate":1000000,"enableSctp":false,"numSctpStreams":{"OS":1024,"MIS":1024},"maxSctpMessageSize":262144,"sctpSendBufferSize":262144,"isDataChannel":true}
7:transport.consume:903889d1-fa58-47ec-98fb-ccb378d1117e:{"consumerId":"62652d98-3ee5-4c21-8fa4-34baa14b35d7","producerId":"produce_video","kind":"video","rtpParameters":{"codecs":[{"mimeType":"video/VP8","payloadType":101,"clockRate":90000,"parameters":{},"rtcpFeedback":[{"type":"transport-cc","parameter":""},{"type":"ccm","parameter":"fir"},{"type":"nack","parameter":""},{"type":"nack","parameter":"pli"}]},{"mimeType":"video/rtx","payloadType":102,"clockRate":90000,"parameters":{"apt":101},"rtcpFeedback":[]}],"headerExtensions":[{"uri":"urn:ietf:params:rtp-hdrext:sdes:mid","id":1,"encrypt":false,"parameters":{}},{"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time","id":4,"encrypt":false,"parameters":{}},{"uri":"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01","id":5,"encrypt":false,"parameters":{}},{"uri":"urn:3gpp:video-orientation","id":11,"encrypt":false,"parameters":{}},{"uri":"urn:ietf:params:rtp-hdrext:toffset","id":12,"encrypt":false,"parameters":{}}],"encodings":[{"ssrc":800779023,"rtx":{"ssrc":800779024}}],"rtcp":{"cname":"eks80YQXECwcuNgX","reducedSize":true,"mux":true},"mid":"0"},"type":"simple","consumableRtpEncodings":[{"ssrc":434375896,"dtx":false}],"paused":true,"ignoreDtx":false}
8:transport.connect:903889d1-fa58-47ec-98fb-ccb378d1117e:{"dtlsParameters":{"role":"client","fingerprints":[{"algorithm":"sha-256","value":"98:F1:DA:87:3B:59:06:CA:D8:39:C3:E6:5A:37:7A:87:C6:42:82:56:FD:3E:45:74:FC:6A:75:E5:4A:90:2F:F5"}]}}
9:consumer.resume:62652d98-3ee5-4c21-8fa4-34baa14b35d7:undefinedarameters
10:transport.consume:903889d1-fa58-47ec-98fb-ccb378d1117e:{"consumerId":"2187aa48-996f-4de8-8798-b7d00c56c227","producerId":"produce_audio","kind":"audio","rtpParameters":{"codecs":[{"mimeType":"audio/opus","payloadType":100,"clockRate":48000,"channels":2,"parameters":{"minptime":10,"useinbandfec":1},"rtcpFeedback":[]}],"headerExtensions":[{"uri":"urn:ietf:params:rtp-hdrext:sdes:mid","id":1,"encrypt":false,"parameters":{}},{"uri":"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time","id":4,"encrypt":false,"parameters":{}},{"uri":"urn:ietf:params:rtp-hdrext:ssrc-audio-level","id":10,"encrypt":false,"parameters":{}}],"encodings":[{"ssrc":592158292}],"rtcp":{"cname":"eks80YQXECwcuNgX","reducedSize":true,"mux":true},"mid":"1"},"type":"simple","consumableRtpEncodings":[{"ssrc":793331030,"dtx":false}],"paused":false,"ignoreDtx":false}
代碼
代碼中的mediasoup-worker是在mac m芯片上編譯的,其他系統(tǒng)或版本的需要去官網(wǎng)下載3.12.16版本編譯,僅供學(xué)習(xí),https://github.com/lsk-gith/mediasoup-go.git