Commit 8b62d40c by giaogiao

修改rtc文档

parent 84190ade
# wecloud-RTC音视频客户端信令对接文档
# wecloud-RTC音视频客户端信令对接文档
## 文档描述
此文档为单人RTC音视频通讯技术对接文档
由于RTC基于wecloud-im即时通讯服务,**对接RTC前,需要先对接wecloud-im服务**
## 核心概念说明
### 频道与会话
频道与会话的概念不一样
```
1. 引入"频道RtcChannel"概念, 可以不基于会话发起音视频通话
2. 目前频道只支持两个client,进行通话的两端必须先加入到同一个"频道",所有的指令都在频道内进行转发
3. 允许不在同个会话中的两个client加入到同个频道进行通话 (可配置是否两个client必须在同一个会话才能发起音视频通话)
4. 一个频道可以由通话发起者绑定到会话ID,"挂断","未接听"等状态会同步到会话, 未绑定将不同步到会话(可选)
5. 连接websocket时带上client类型, 如web,安卓,ios
client需要监听频道内 状态更新(房间断开,挂断)、用户状态更新(用户加入, 用户退出)、流状态更新(切换音频 切换视频)
```
## 流程图
### 不绑定到会话 示例一
![双人WebRTC流程图-不绑定会话](https://tva1.sinaimg.cn/large/008i3skNly1gvftfayr8ij60u016wtcx02.jpg)
## 指令码说明
#### **subCmd**子类型指令码
##### 客户端**请求**指令列表:
**create**:创建频道
**join**: 加入频道
**SDP**:SDP数据转发
**reject**:拒绝加入频道
**leave**:主动挂断(离开频道)
##### 服务端**响应**指令列表:
**rtcCall**:接收到RTC邀请
**clientEvent** : 用户状态更新事件(用户加入,用户退出,用户拒接邀请)
**typeEvent**:流状态更新(切换音频 切换视频)
**statusEvent**:状态更新(网络断开,挂断)
**SDP**:SDP数据转发
**busy**:忙线
## 创建频道 发起RTC音视频通话 (http)
见http接口文档
## 接收方收到RTC音视频通话邀请(ws)
服务端向client接收方下发数据:
```json
{
"cmd":4,
"data":{
"subCmd":"rtcCall",
"subData":{
"type":"video",
"toConversation":null,
"channelId":1234263457652,
"sender":"client_1010"
},
"diyParam自定义字段":"aaaa自已定义字段的值",
"attrs":{
"a":"示例: 用户自定义的一些键值对",
"b":"存储用户自定义的一些键值对"
}
}
}
```
**参数描述**
| 字段名 | 字段类型 | 是否可空 | 说明 |
| ---- | -------- | -- | ------ |
| cmd | String | 否 | 指令码 |
| attrs | Object | 是 | 自定义拓展字段 |
| toConversation | Long | 否 | 绑定的会话id |
| diyParam自定义字段 | Object | 是 | 自定义拓展字段 |
| subCmd | String | 否 | 子类型指令 |
| sender | String | 否 | 发起通话的客户端ID |
| channelId | Long | 否 | 由服务端创建的频道id |
| type | String | 否 | 类型: "video" 或 "voice" |
## 同意加入频道(http)
见http接口文档
## 有client加入频道(ws下发)
服务端向频道内其他client响应数据:
```json
{
"cmd":4,
"data":{
"subCmd":"clientEvent",
"subData":{
"channelId":1234263457652,
"type":"join",
"clientId":7657567,
}
}
}
```
## 拒绝加入频道 http
client接收方向服务端请求数据:
```json
{
"reqId":"123",
"cmd":3,
"data":{
"subCmd":"reject",
"diyParam自定义字段":"aaaa自已定义字段的值",
"channelId":1234263457652,
"attrs":{}
}
}
```
**说明:**
**参数描述**
| 字段名 | 字段类型 | 是否可空 | 说明 |
| ---- | -------- | -- | ------ |
| cmd | String | 否 | 指令码 |
| attrs | Object | 是 | 自定义拓展字段 |
| toConversation | Long | 否 | 会话id |
| diyParam自定义字段 | Object | 是 | 自定义拓展字段 |
| subCmd | String | 否 | 子类型 |
## 有Client拒绝加入频道(ws下发)
服务端向频道内其他client响应数据:
```json
{
"cmd":4,
"data":{
"subCmd":"clientEvent",
"subData":{
"channelId":1234263457652,
"type":"reject",
"clientId":7657567,
}
}
}
```
## 流媒体描述信息SDP转发
(服务端仅负责转发)(candidate,anser,offer)
### client上传SDP (http接口)
见http接口文档
### client接收SDP (ws下发)
```json
{
"cmd":4,
"data":{
"subCmd":"sdp",
"subData":{
"channelId":1234263457652,
"clientId":7657567,
"sdpData":"xxxxxxxxxxxxxxxx",
"diyParam自定义字段":"aaaa自已定义字段的值",
"attrs":{}
}
}
}
```
## 主动挂断(离开频道) http
client主动离开频道
见http接口文档
## 有client离开频道(ws下发)
服务端向频道内其他client响应数据:
```json
{
"cmd":4,
"data":{
"subCmd":"clientEvent",
"subData":{
"channelId":1234263457652,
"type":"leave",
"clientId":7657567,
}
}
}
```
## 查询忙线状态(对方正在通话中) http
服务端响应给发起方
```json
{
"reqId":"555111-ad-afd12",
"cmd":5,
"data":{
"subCmd":"busy",
"subData":{
"channelId":1234263457652,
"clientId":7657567
}
}
}
```
## 断线重连
重新join进频道即可重连
## 对方是否还挂起
## 查询频道信息及在线人员 http
## 视频/音频切换
## 查询对方是否离开
......@@ -123,8 +123,17 @@ client需要监听频道内 状态更新(房间断开 .挂断)、用户状态更
* 响应参数 :
生成的唯一频道id
## 维护判断信息
rci
rtc_channel_info:10001
=
{
"owner" = "123123123",
"createTimestamp","123123"
}
### 维护所有用户当前在线的频道ID
### 维护用户当前在线的频道ID
new Map<String,Long> map
map.put("clientA",10001)
map.put("clientB",10001)
......@@ -133,10 +142,10 @@ map.put("clientD",10003)
redis Key:
user_join_channel = ujc
rcu:clientA:10001
rcu:clientB:10001
rcu:clientC:10002
rcu:clientD:10003
rcu:clientA = 10001
rcu:clientB = 10001
rcu:clientC = 10002
rcu:clientD = 10003
### 维护频道中存在的用户
......@@ -148,9 +157,103 @@ list.add("clientB")
map.put(10001,list)
redis Key:
redis Key (set 集合):
rtc_channel_users = rcu
key = rcu:10001:clientA
key = rcu:10001:clientB
key = rcu:10002:clientC
key = rcu:10003:clientD
\ No newline at end of file
rcu:10001 = clientA , clientB
rcu:10002 = clientC
rcu:10003 = clientD
rtc官网demo
# 发起人
## http 获取ice地址
https://appr.tc/v1alpha/iceconfig?key=
返回{"iceServers": [{"urls": ["stun:turn2.l.google.com"]}]}
## http 加入房间
https://appr.tc/join/790192954
返回:
is_initiator: "true"
ice_server_transports: ""
ice_server_url: "https://appr.tc/v1alpha/iceconfig?key="
client_id: "12876268"
## http上传offer SDP
https://appr.tc/message/790192954/12876268
请求
{
"sdp": "v=0\r\no=- 6939265646429638945 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS 135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:O094\r\na=ice-pwd:R+IHhU9wwCuIDR8pd/hnmMco\r\na=ice-options:trickle\r\na=fingerprint:sha-256 82:CF:2C:D2:7C:8D:A2:96:29:B7:C1:87:CE:39:16:FD:ED:12:99:AF:3B:73:B6:3D:5E:03:DD:1E:99:0F:3C:B1\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendrecv\r\na=msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 52c233e3-d82f-4ad4-baaa-014d7bfb0deb\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:109924000 cname:VEO/rU2hhPHuuPu0\r\na=ssrc:109924000 msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 52c233e3-d82f-4ad4-baaa-014d7bfb0deb\r\na=ssrc:109924000 mslabel:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz\r\na=ssrc:109924000 label:52c233e3-d82f-4ad4-baaa-014d7bfb0deb\r\nm=video 9 UDP/TLS/RTP/SAVPF 98 100 96 97 99 101 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:O094\r\na=ice-pwd:R+IHhU9wwCuIDR8pd/hnmMco\r\na=ice-options:trickle\r\na=fingerprint:sha-256 82:CF:2C:D2:7C:8D:A2:96:29:B7:C1:87:CE:39:16:FD:ED:12:99:AF:3B:73:B6:3D:5E:03:DD:1E:99:0F:3C:B1\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendrecv\r\na=msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 745e25c1-11b3-4a11-8bcc-0a3f8d80a60a\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 profile-id=0\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 VP9/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 profile-id=2\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 H264/90000\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 transport-cc\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:121 rtx/90000\r\na=fmtp:121 apt=102\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\na=rtpmap:120 rtx/90000\r\na=fmtp:120 apt=127\r\na=rtpmap:125 H264/90000\r\na=rtcp-fb:125 goog-remb\r\na=rtcp-fb:125 transport-cc\r\na=rtcp-fb:125 ccm fir\r\na=rtcp-fb:125 nack\r\na=rtcp-fb:125 nack pli\r\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=125\r\na=rtpmap:108 H264/90000\r\na=rtcp-fb:108 goog-remb\r\na=rtcp-fb:108 transport-cc\r\na=rtcp-fb:108 ccm fir\r\na=rtcp-fb:108 nack\r\na=rtcp-fb:108 nack pli\r\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:35 AV1X/90000\r\na=rtcp-fb:35 goog-remb\r\na=rtcp-fb:35 transport-cc\r\na=rtcp-fb:35 ccm fir\r\na=rtcp-fb:35 nack\r\na=rtcp-fb:35 nack pli\r\na=rtpmap:36 rtx/90000\r\na=fmtp:36 apt=35\r\na=rtpmap:124 H264/90000\r\na=rtcp-fb:124 goog-remb\r\na=rtcp-fb:124 transport-cc\r\na=rtcp-fb:124 ccm fir\r\na=rtcp-fb:124 nack\r\na=rtcp-fb:124 nack pli\r\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032\r\na=rtpmap:119 rtx/90000\r\na=fmtp:119 apt=124\r\na=rtpmap:123 H264/90000\r\na=rtcp-fb:123 goog-remb\r\na=rtcp-fb:123 transport-cc\r\na=rtcp-fb:123 ccm fir\r\na=rtcp-fb:123 nack\r\na=rtcp-fb:123 nack pli\r\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032\r\na=rtpmap:118 rtx/90000\r\na=fmtp:118 apt=123\r\na=rtpmap:114 red/90000\r\na=rtpmap:115 rtx/90000\r\na=fmtp:115 apt=114\r\na=rtpmap:116 ulpfec/90000\r\na=ssrc-group:FID 1330070973 2207934575\r\na=ssrc:1330070973 cname:VEO/rU2hhPHuuPu0\r\na=ssrc:1330070973 msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 745e25c1-11b3-4a11-8bcc-0a3f8d80a60a\r\na=ssrc:1330070973 mslabel:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz\r\na=ssrc:1330070973 label:745e25c1-11b3-4a11-8bcc-0a3f8d80a60a\r\na=ssrc:2207934575 cname:VEO/rU2hhPHuuPu0\r\na=ssrc:2207934575 msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 745e25c1-11b3-4a11-8bcc-0a3f8d80a60a\r\na=ssrc:2207934575 mslabel:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz\r\na=ssrc:2207934575 label:745e25c1-11b3-4a11-8bcc-0a3f8d80a60a\r\n",
"type": "offer"
}
## http上传candidate
https://appr.tc/message/790192954/12876268
请求
{
"type": "candidate",
"label": 0,
"id": "0",
"candidate": "candidate:2199032595 1 udp 2122260223 192.168.1.89 50421 typ host generation 0 ufrag O094 network-id 1 network-cost 10"
}
上行 先加入到ws频道
{"cmd":"register","roomid":"065395880","clientid":"12440330"}
下行 另一端SDP应答
{"msg":"{\"sdp\":\"v=0\\r\\no=- 4129310300810400747 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0 1\\r\\na=extmap-allow-mixed\\r\\na=msid-semantic: WMS BVdxzDjOlGOX5CJe8d6QD5STXJMRLx4YYlPx\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 110 112 113 126\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:npgH\\r\\na=ice-pwd:Xg7PFj5k3skAzKRQszRTFZNS\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 30:89:F0:F6:C7:4E:40:AD:CD:8F:8C:B5:96:64:D9:91:99:5E:92:C7:82:F3:7D:E4:43:B4:C1:C1:E8:C6:9B:09\\r\\na=setup:active\\r\\na=mid:0\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\r\\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\r\\na=sendrecv\\r\\na=msid:BVdxzDjOlGOX5CJe8d6QD5STXJMRLx4YYlPx 18e6bcf6-4d4b-4279-843b-cf015b1b836a\\r\\na=rtcp-mux\\r\\na=rtpmap:111 opus/48000/2\\r\\na=rtcp-fb:111 transport-cc\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:103 ISAC/16000\\r\\na=rtpmap:104 ISAC/32000\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:110 telephone-event/48000\\r\\na=rtpmap:112 telephone-event/32000\\r\\na=rtpmap:113 telephone-event/16000\\r\\na=rtpmap:126 telephone-event/8000\\r\\na=ssrc:1526334845 cname:QDAIpojrEkvKVrx7\\r\\nm=video 9 UDP/TLS/RTP/SAVPF 98 100 96 97 99 101 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:npgH\\r\\na=ice-pwd:Xg7PFj5k3skAzKRQszRTFZNS\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 30:89:F0:F6:C7:4E:40:AD:CD:8F:8C:B5:96:64:D9:91:99:5E:92:C7:82:F3:7D:E4:43:B4:C1:C1:E8:C6:9B:09\\r\\na=setup:active\\r\\na=mid:1\\r\\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:13 urn:3gpp:video-orientation\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\\r\\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\\r\\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\\r\\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\r\\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\r\\na=sendrecv\\r\\na=msid:BVdxzDjOlGOX5CJe8d6QD5STXJMRLx4YYlPx ddd008ed-cb04-49c5-a838-d3777061c416\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:98 VP9/90000\\r\\na=rtcp-fb:98 goog-remb\\r\\na=rtcp-fb:98 transport-cc\\r\\na=rtcp-fb:98 ccm fir\\r\\na=rtcp-fb:98 nack\\r\\na=rtcp-fb:98 nack pli\\r\\na=fmtp:98 profile-id=0\\r\\na=rtpmap:100 VP9/90000\\r\\na=rtcp-fb:100 goog-remb\\r\\na=rtcp-fb:100 transport-cc\\r\\na=rtcp-fb:100 ccm fir\\r\\na=rtcp-fb:100 nack\\r\\na=rtcp-fb:100 nack pli\\r\\na=fmtp:100 profile-id=2\\r\\na=rtpmap:96 VP8/90000\\r\\na=rtcp-fb:96 goog-remb\\r\\na=rtcp-fb:96 transport-cc\\r\\na=rtcp-fb:96 ccm fir\\r\\na=rtcp-fb:96 nack\\r\\na=rtcp-fb:96 nack pli\\r\\na=rtpmap:97 rtx/90000\\r\\na=fmtp:97 apt=96\\r\\na=rtpmap:99 rtx/90000\\r\\na=fmtp:99 apt=98\\r\\na=rtpmap:101 rtx/90000\\r\\na=fmtp:101 apt=100\\r\\na=rtpmap:102 H264/90000\\r\\na=rtcp-fb:102 goog-remb\\r\\na=rtcp-fb:102 transport-cc\\r\\na=rtcp-fb:102 ccm fir\\r\\na=rtcp-fb:102 nack\\r\\na=rtcp-fb:102 nack pli\\r\\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\\r\\na=rtpmap:121 rtx/90000\\r\\na=fmtp:121 apt=102\\r\\na=rtpmap:127 H264/90000\\r\\na=rtcp-fb:127 goog-remb\\r\\na=rtcp-fb:127 transport-cc\\r\\na=rtcp-fb:127 ccm fir\\r\\na=rtcp-fb:127 nack\\r\\na=rtcp-fb:127 nack pli\\r\\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\\r\\na=rtpmap:120 rtx/90000\\r\\na=fmtp:120 apt=127\\r\\na=rtpmap:125 H264/90000\\r\\na=rtcp-fb:125 goog-remb\\r\\na=rtcp-fb:125 transport-cc\\r\\na=rtcp-fb:125 ccm fir\\r\\na=rtcp-fb:125 nack\\r\\na=rtcp-fb:125 nack pli\\r\\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\\r\\na=rtpmap:107 rtx/90000\\r\\na=fmtp:107 apt=125\\r\\na=rtpmap:108 H264/90000\\r\\na=rtcp-fb:108 goog-remb\\r\\na=rtcp-fb:108 transport-cc\\r\\na=rtcp-fb:108 ccm fir\\r\\na=rtcp-fb:108 nack\\r\\na=rtcp-fb:108 nack pli\\r\\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\\r\\na=rtpmap:109 rtx/90000\\r\\na=fmtp:109 apt=108\\r\\na=rtpmap:35 AV1X/90000\\r\\na=rtcp-fb:35 goog-remb\\r\\na=rtcp-fb:35 transport-cc\\r\\na=rtcp-fb:35 ccm fir\\r\\na=rtcp-fb:35 nack\\r\\na=rtcp-fb:35 nack pli\\r\\na=rtpmap:36 rtx/90000\\r\\na=fmtp:36 apt=35\\r\\na=rtpmap:124 H264/90000\\r\\na=rtcp-fb:124 goog-remb\\r\\na=rtcp-fb:124 transport-cc\\r\\na=rtcp-fb:124 ccm fir\\r\\na=rtcp-fb:124 nack\\r\\na=rtcp-fb:124 nack pli\\r\\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f\\r\\na=rtpmap:119 rtx/90000\\r\\na=fmtp:119 apt=124\\r\\na=rtpmap:123 H264/90000\\r\\na=rtcp-fb:123 goog-remb\\r\\na=rtcp-fb:123 transport-cc\\r\\na=rtcp-fb:123 ccm fir\\r\\na=rtcp-fb:123 nack\\r\\na=rtcp-fb:123 nack pli\\r\\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f\\r\\na=rtpmap:118 rtx/90000\\r\\na=fmtp:118 apt=123\\r\\na=rtpmap:114 red/90000\\r\\na=rtpmap:115 rtx/90000\\r\\na=fmtp:115 apt=114\\r\\na=rtpmap:116 ulpfec/90000\\r\\na=ssrc-group:FID 2674131219 2077425702\\r\\na=ssrc:2674131219 cname:QDAIpojrEkvKVrx7\\r\\na=ssrc:2077425702 cname:QDAIpojrEkvKVrx7\\r\\n\",\"type\":\"answer\"}","error":""}
下行 另一端candidate信息
{"msg":"{\"type\":\"candidate\",\"label\":0,\"id\":\"0\",\"candidate\":\"candidate:4258379142 1 udp 2122260223 192.168.1.250 55712 typ host generation 0 ufrag npgH network-id 1\"}","error":""}
接收方
http 加入房间
https://appr.tc/join/790192954
响应已加入到房间的client的sdp与candidate
{
"params": {
"is_initiator": "false",
"room_link": "https://appr.tc/r/790192954",
"version_info": "{\"gitHash\": \"06b18b54af995bab9e16c2648ddb7edbbe553541\", \"branch\": \"master\", \"time\": \"Mon Sep 14 17:52:24 2020 +0200\"}",
"messages": [
"{\"sdp\":\"v=0\\r\\no=- 6939265646429638945 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0 1\\r\\na=extmap-allow-mixed\\r\\na=msid-semantic: WMS 135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 110 112 113 126\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:O094\\r\\na=ice-pwd:R+IHhU9wwCuIDR8pd/hnmMco\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 82:CF:2C:D2:7C:8D:A2:96:29:B7:C1:87:CE:39:16:FD:ED:12:99:AF:3B:73:B6:3D:5E:03:DD:1E:99:0F:3C:B1\\r\\na=setup:actpass\\r\\na=mid:0\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\r\\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\r\\na=sendrecv\\r\\na=msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 52c233e3-d82f-4ad4-baaa-014d7bfb0deb\\r\\na=rtcp-mux\\r\\na=rtpmap:111 opus/48000/2\\r\\na=rtcp-fb:111 transport-cc\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:103 ISAC/16000\\r\\na=rtpmap:104 ISAC/32000\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:110 telephone-event/48000\\r\\na=rtpmap:112 telephone-event/32000\\r\\na=rtpmap:113 telephone-event/16000\\r\\na=rtpmap:126 telephone-event/8000\\r\\na=ssrc:109924000 cname:VEO/rU2hhPHuuPu0\\r\\na=ssrc:109924000 msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 52c233e3-d82f-4ad4-baaa-014d7bfb0deb\\r\\na=ssrc:109924000 mslabel:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz\\r\\na=ssrc:109924000 label:52c233e3-d82f-4ad4-baaa-014d7bfb0deb\\r\\nm=video 9 UDP/TLS/RTP/SAVPF 98 100 96 97 99 101 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:O094\\r\\na=ice-pwd:R+IHhU9wwCuIDR8pd/hnmMco\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 82:CF:2C:D2:7C:8D:A2:96:29:B7:C1:87:CE:39:16:FD:ED:12:99:AF:3B:73:B6:3D:5E:03:DD:1E:99:0F:3C:B1\\r\\na=setup:actpass\\r\\na=mid:1\\r\\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:13 urn:3gpp:video-orientation\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\\r\\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\\r\\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\\r\\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\r\\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\r\\na=sendrecv\\r\\na=msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 745e25c1-11b3-4a11-8bcc-0a3f8d80a60a\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:96 VP8/90000\\r\\na=rtcp-fb:96 goog-remb\\r\\na=rtcp-fb:96 transport-cc\\r\\na=rtcp-fb:96 ccm fir\\r\\na=rtcp-fb:96 nack\\r\\na=rtcp-fb:96 nack pli\\r\\na=rtpmap:97 rtx/90000\\r\\na=fmtp:97 apt=96\\r\\na=rtpmap:98 VP9/90000\\r\\na=rtcp-fb:98 goog-remb\\r\\na=rtcp-fb:98 transport-cc\\r\\na=rtcp-fb:98 ccm fir\\r\\na=rtcp-fb:98 nack\\r\\na=rtcp-fb:98 nack pli\\r\\na=fmtp:98 profile-id=0\\r\\na=rtpmap:99 rtx/90000\\r\\na=fmtp:99 apt=98\\r\\na=rtpmap:100 VP9/90000\\r\\na=rtcp-fb:100 goog-remb\\r\\na=rtcp-fb:100 transport-cc\\r\\na=rtcp-fb:100 ccm fir\\r\\na=rtcp-fb:100 nack\\r\\na=rtcp-fb:100 nack pli\\r\\na=fmtp:100 profile-id=2\\r\\na=rtpmap:101 rtx/90000\\r\\na=fmtp:101 apt=100\\r\\na=rtpmap:102 H264/90000\\r\\na=rtcp-fb:102 goog-remb\\r\\na=rtcp-fb:102 transport-cc\\r\\na=rtcp-fb:102 ccm fir\\r\\na=rtcp-fb:102 nack\\r\\na=rtcp-fb:102 nack pli\\r\\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\\r\\na=rtpmap:121 rtx/90000\\r\\na=fmtp:121 apt=102\\r\\na=rtpmap:127 H264/90000\\r\\na=rtcp-fb:127 goog-remb\\r\\na=rtcp-fb:127 transport-cc\\r\\na=rtcp-fb:127 ccm fir\\r\\na=rtcp-fb:127 nack\\r\\na=rtcp-fb:127 nack pli\\r\\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\\r\\na=rtpmap:120 rtx/90000\\r\\na=fmtp:120 apt=127\\r\\na=rtpmap:125 H264/90000\\r\\na=rtcp-fb:125 goog-remb\\r\\na=rtcp-fb:125 transport-cc\\r\\na=rtcp-fb:125 ccm fir\\r\\na=rtcp-fb:125 nack\\r\\na=rtcp-fb:125 nack pli\\r\\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\\r\\na=rtpmap:107 rtx/90000\\r\\na=fmtp:107 apt=125\\r\\na=rtpmap:108 H264/90000\\r\\na=rtcp-fb:108 goog-remb\\r\\na=rtcp-fb:108 transport-cc\\r\\na=rtcp-fb:108 ccm fir\\r\\na=rtcp-fb:108 nack\\r\\na=rtcp-fb:108 nack pli\\r\\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\\r\\na=rtpmap:109 rtx/90000\\r\\na=fmtp:109 apt=108\\r\\na=rtpmap:35 AV1X/90000\\r\\na=rtcp-fb:35 goog-remb\\r\\na=rtcp-fb:35 transport-cc\\r\\na=rtcp-fb:35 ccm fir\\r\\na=rtcp-fb:35 nack\\r\\na=rtcp-fb:35 nack pli\\r\\na=rtpmap:36 rtx/90000\\r\\na=fmtp:36 apt=35\\r\\na=rtpmap:124 H264/90000\\r\\na=rtcp-fb:124 goog-remb\\r\\na=rtcp-fb:124 transport-cc\\r\\na=rtcp-fb:124 ccm fir\\r\\na=rtcp-fb:124 nack\\r\\na=rtcp-fb:124 nack pli\\r\\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032\\r\\na=rtpmap:119 rtx/90000\\r\\na=fmtp:119 apt=124\\r\\na=rtpmap:123 H264/90000\\r\\na=rtcp-fb:123 goog-remb\\r\\na=rtcp-fb:123 transport-cc\\r\\na=rtcp-fb:123 ccm fir\\r\\na=rtcp-fb:123 nack\\r\\na=rtcp-fb:123 nack pli\\r\\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032\\r\\na=rtpmap:118 rtx/90000\\r\\na=fmtp:118 apt=123\\r\\na=rtpmap:114 red/90000\\r\\na=rtpmap:115 rtx/90000\\r\\na=fmtp:115 apt=114\\r\\na=rtpmap:116 ulpfec/90000\\r\\na=ssrc-group:FID 1330070973 2207934575\\r\\na=ssrc:1330070973 cname:VEO/rU2hhPHuuPu0\\r\\na=ssrc:1330070973 msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 745e25c1-11b3-4a11-8bcc-0a3f8d80a60a\\r\\na=ssrc:1330070973 mslabel:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz\\r\\na=ssrc:1330070973 label:745e25c1-11b3-4a11-8bcc-0a3f8d80a60a\\r\\na=ssrc:2207934575 cname:VEO/rU2hhPHuuPu0\\r\\na=ssrc:2207934575 msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 745e25c1-11b3-4a11-8bcc-0a3f8d80a60a\\r\\na=ssrc:2207934575 mslabel:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz\\r\\na=ssrc:2207934575 label:745e25c1-11b3-4a11-8bcc-0a3f8d80a60a\\r\\n\",\"type\":\"offer\"}",
"{\"type\":\"candidate\",\"label\":0,\"id\":\"0\",\"candidate\":\"candidate:2199032595 1 udp 2122260223 192.168.1.89 50421 typ host generation 0 ufrag O094 network-id 1 network-cost 10\"}"
],
"error_messages": [],
"client_id": "89012080",
"ice_server_transports": "",
"bypass_join_confirmation": "false",
"wss_url": "wss://apprtc-ws.webrtc.org:443/ws",
"media_constraints": "{\"audio\": true, \"video\": {\"optional\": [{\"minWidth\": \"1280\"}, {\"minHeight\": \"720\"}], \"mandatory\": {}}}",
"include_loopback_js": "",
"header_message": "This is a demo of AppRTC and not an official product like Duo or Meet.",
"is_loopback": "false",
"offer_options": "{}",
"pc_constraints": "{\"optional\": []}",
"pc_config": "{\"rtcpMuxPolicy\": \"require\", \"bundlePolicy\": \"max-bundle\", \"iceServers\": []}",
"wss_post_url": "https://apprtc-ws.webrtc.org:443",
"ice_server_url": "https://appr.tc/v1alpha/iceconfig?key=",
"warning_messages": [],
"room_id": "790192954"
},
"result": "SUCCESS"
}
ws
加入ws
{"cmd":"register","roomid":"790192954","clientid":"89012080"}
上传SDP : "type\":\"answer\"
{"cmd":"send","msg":"{\"sdp\":\"v=0\\r\\no=- 5124761144050338825 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0 1\\r\\na=extmap-allow-mixed\\r\\na=msid-semantic: WMS PvyHNDA1KG9m7mwiXxuZw0t6jS5gK1slEVtL\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 110 112 113 126\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:VoGg\\r\\na=ice-pwd:3BDNnB1TRubalgrp84I8qug8\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 89:A4:F5:30:EA:A6:B1:A4:9D:6A:8A:85:8D:B7:FD:C3:B0:A4:05:6B:31:97:F3:19:0E:4C:BD:63:4D:56:3C:AB\\r\\na=setup:active\\r\\na=mid:0\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\r\\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\r\\na=sendrecv\\r\\na=msid:PvyHNDA1KG9m7mwiXxuZw0t6jS5gK1slEVtL ac72faad-b426-4501-baa0-d1f45e262c3d\\r\\na=rtcp-mux\\r\\na=rtpmap:111 opus/48000/2\\r\\na=rtcp-fb:111 transport-cc\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:103 ISAC/16000\\r\\na=rtpmap:104 ISAC/32000\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:110 telephone-event/48000\\r\\na=rtpmap:112 telephone-event/32000\\r\\na=rtpmap:113 telephone-event/16000\\r\\na=rtpmap:126 telephone-event/8000\\r\\na=ssrc:4262391127 cname:SbDl2+NlSKabussO\\r\\nm=video 9 UDP/TLS/RTP/SAVPF 98 100 96 97 99 101 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:VoGg\\r\\na=ice-pwd:3BDNnB1TRubalgrp84I8qug8\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 89:A4:F5:30:EA:A6:B1:A4:9D:6A:8A:85:8D:B7:FD:C3:B0:A4:05:6B:31:97:F3:19:0E:4C:BD:63:4D:56:3C:AB\\r\\na=setup:active\\r\\na=mid:1\\r\\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:13 urn:3gpp:video-orientation\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\\r\\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\\r\\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\\r\\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\r\\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\r\\na=sendrecv\\r\\na=msid:PvyHNDA1KG9m7mwiXxuZw0t6jS5gK1slEVtL 56012d93-126e-451f-8e18-6c3a60f7a445\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:98 VP9/90000\\r\\na=rtcp-fb:98 goog-remb\\r\\na=rtcp-fb:98 transport-cc\\r\\na=rtcp-fb:98 ccm fir\\r\\na=rtcp-fb:98 nack\\r\\na=rtcp-fb:98 nack pli\\r\\na=fmtp:98 profile-id=0\\r\\na=rtpmap:100 VP9/90000\\r\\na=rtcp-fb:100 goog-remb\\r\\na=rtcp-fb:100 transport-cc\\r\\na=rtcp-fb:100 ccm fir\\r\\na=rtcp-fb:100 nack\\r\\na=rtcp-fb:100 nack pli\\r\\na=fmtp:100 profile-id=2\\r\\na=rtpmap:96 VP8/90000\\r\\na=rtcp-fb:96 goog-remb\\r\\na=rtcp-fb:96 transport-cc\\r\\na=rtcp-fb:96 ccm fir\\r\\na=rtcp-fb:96 nack\\r\\na=rtcp-fb:96 nack pli\\r\\na=rtpmap:97 rtx/90000\\r\\na=fmtp:97 apt=96\\r\\na=rtpmap:99 rtx/90000\\r\\na=fmtp:99 apt=98\\r\\na=rtpmap:101 rtx/90000\\r\\na=fmtp:101 apt=100\\r\\na=rtpmap:102 H264/90000\\r\\na=rtcp-fb:102 goog-remb\\r\\na=rtcp-fb:102 transport-cc\\r\\na=rtcp-fb:102 ccm fir\\r\\na=rtcp-fb:102 nack\\r\\na=rtcp-fb:102 nack pli\\r\\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\\r\\na=rtpmap:121 rtx/90000\\r\\na=fmtp:121 apt=102\\r\\na=rtpmap:127 H264/90000\\r\\na=rtcp-fb:127 goog-remb\\r\\na=rtcp-fb:127 transport-cc\\r\\na=rtcp-fb:127 ccm fir\\r\\na=rtcp-fb:127 nack\\r\\na=rtcp-fb:127 nack pli\\r\\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\\r\\na=rtpmap:120 rtx/90000\\r\\na=fmtp:120 apt=127\\r\\na=rtpmap:125 H264/90000\\r\\na=rtcp-fb:125 goog-remb\\r\\na=rtcp-fb:125 transport-cc\\r\\na=rtcp-fb:125 ccm fir\\r\\na=rtcp-fb:125 nack\\r\\na=rtcp-fb:125 nack pli\\r\\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\\r\\na=rtpmap:107 rtx/90000\\r\\na=fmtp:107 apt=125\\r\\na=rtpmap:108 H264/90000\\r\\na=rtcp-fb:108 goog-remb\\r\\na=rtcp-fb:108 transport-cc\\r\\na=rtcp-fb:108 ccm fir\\r\\na=rtcp-fb:108 nack\\r\\na=rtcp-fb:108 nack pli\\r\\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\\r\\na=rtpmap:109 rtx/90000\\r\\na=fmtp:109 apt=108\\r\\na=rtpmap:35 AV1X/90000\\r\\na=rtcp-fb:35 goog-remb\\r\\na=rtcp-fb:35 transport-cc\\r\\na=rtcp-fb:35 ccm fir\\r\\na=rtcp-fb:35 nack\\r\\na=rtcp-fb:35 nack pli\\r\\na=rtpmap:36 rtx/90000\\r\\na=fmtp:36 apt=35\\r\\na=rtpmap:124 H264/90000\\r\\na=rtcp-fb:124 goog-remb\\r\\na=rtcp-fb:124 transport-cc\\r\\na=rtcp-fb:124 ccm fir\\r\\na=rtcp-fb:124 nack\\r\\na=rtcp-fb:124 nack pli\\r\\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f\\r\\na=rtpmap:119 rtx/90000\\r\\na=fmtp:119 apt=124\\r\\na=rtpmap:123 H264/90000\\r\\na=rtcp-fb:123 goog-remb\\r\\na=rtcp-fb:123 transport-cc\\r\\na=rtcp-fb:123 ccm fir\\r\\na=rtcp-fb:123 nack\\r\\na=rtcp-fb:123 nack pli\\r\\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f\\r\\na=rtpmap:118 rtx/90000\\r\\na=fmtp:118 apt=123\\r\\na=rtpmap:114 red/90000\\r\\na=rtpmap:115 rtx/90000\\r\\na=fmtp:115 apt=114\\r\\na=rtpmap:116 ulpfec/90000\\r\\na=ssrc-group:FID 4287818524 659493843\\r\\na=ssrc:4287818524 cname:SbDl2+NlSKabussO\\r\\na=ssrc:659493843 cname:SbDl2+NlSKabussO\\r\\n\",\"type\":\"answer\"}"}
上传candidate
{"cmd":"send","msg":"{\"type\":\"candidate\",\"label\":0,\"id\":\"0\",\"candidate\":\"candidate:2199032595 1 udp 2122260223 192.168.1.89 33313 typ host generation 0 ufrag VoGg network-id 1 network-cost 10\"}"}
# 发起方断线重连
若房间内只剩一个人 ,下发只剩一个人的通知 并要求仅剩的客户端上传offer的SDP 与candidate, 使原发起方成为"房主"来等待接收方来应答"answer"
原发起方来重连时, 调用join接口,则返回另一端的offer的SDP,同时上传自己的answer SDP
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment