Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wecloud_im_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hewei
wecloud_im_server
Commits
8b62d40c
Commit
8b62d40c
authored
Oct 18, 2021
by
giaogiao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改rtc文档
parent
84190ade
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
369 additions
and
12 deletions
+369
-12
docs/md/wecloud-RTC对接文档的.md
+254
-0
开发记录.md
+115
-12
No files found.
docs/md/wecloud-RTC对接文档的.md
0 → 100644
View file @
8b62d40c
# 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需要监听频道内 状态更新(房间断开,挂断)、用户状态更新(用户加入, 用户退出)、流状态更新(切换音频 切换视频)
```
## 流程图
### 不绑定到会话 示例一

## 指令码说明
#### **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
## 视频/音频切换
## 查询对方是否离开
开发记录.md
View file @
8b62d40c
...
...
@@ -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\n
o=- 6939265646429638945 2 IN IP4 127.0.0.1
\r\n
s=-
\r\n
t=0 0
\r\n
a=group:BUNDLE 0 1
\r\n
a=extmap-allow-mixed
\r\n
a=msid-semantic: WMS 135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz
\r\n
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 110 112 113 126
\r\n
c=IN IP4 0.0.0.0
\r\n
a=rtcp:9 IN IP4 0.0.0.0
\r\n
a=ice-ufrag:O094
\r\n
a=ice-pwd:R+IHhU9wwCuIDR8pd/hnmMco
\r\n
a=ice-options:trickle
\r\n
a=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\n
a=setup:actpass
\r\n
a=mid:0
\r\n
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
\r\n
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
\r\n
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
\r\n
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
\r\n
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
\r\n
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
\r\n
a=sendrecv
\r\n
a=msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 52c233e3-d82f-4ad4-baaa-014d7bfb0deb
\r\n
a=rtcp-mux
\r\n
a=rtpmap:111 opus/48000/2
\r\n
a=rtcp-fb:111 transport-cc
\r\n
a=fmtp:111 minptime=10;useinbandfec=1
\r\n
a=rtpmap:103 ISAC/16000
\r\n
a=rtpmap:104 ISAC/32000
\r\n
a=rtpmap:9 G722/8000
\r\n
a=rtpmap:0 PCMU/8000
\r\n
a=rtpmap:8 PCMA/8000
\r\n
a=rtpmap:110 telephone-event/48000
\r\n
a=rtpmap:112 telephone-event/32000
\r\n
a=rtpmap:113 telephone-event/16000
\r\n
a=rtpmap:126 telephone-event/8000
\r\n
a=ssrc:109924000 cname:VEO/rU2hhPHuuPu0
\r\n
a=ssrc:109924000 msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 52c233e3-d82f-4ad4-baaa-014d7bfb0deb
\r\n
a=ssrc:109924000 mslabel:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz
\r\n
a=ssrc:109924000 label:52c233e3-d82f-4ad4-baaa-014d7bfb0deb
\r\n
m=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\n
c=IN IP4 0.0.0.0
\r\n
a=rtcp:9 IN IP4 0.0.0.0
\r\n
a=ice-ufrag:O094
\r\n
a=ice-pwd:R+IHhU9wwCuIDR8pd/hnmMco
\r\n
a=ice-options:trickle
\r\n
a=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\n
a=setup:actpass
\r\n
a=mid:1
\r\n
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
\r\n
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
\r\n
a=extmap:13 urn:3gpp:video-orientation
\r\n
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
\r\n
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
\r\n
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
\r\n
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
\r\n
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
\r\n
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
\r\n
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
\r\n
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
\r\n
a=sendrecv
\r\n
a=msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 745e25c1-11b3-4a11-8bcc-0a3f8d80a60a
\r\n
a=rtcp-mux
\r\n
a=rtcp-rsize
\r\n
a=rtpmap:96 VP8/90000
\r\n
a=rtcp-fb:96 goog-remb
\r\n
a=rtcp-fb:96 transport-cc
\r\n
a=rtcp-fb:96 ccm fir
\r\n
a=rtcp-fb:96 nack
\r\n
a=rtcp-fb:96 nack pli
\r\n
a=rtpmap:97 rtx/90000
\r\n
a=fmtp:97 apt=96
\r\n
a=rtpmap:98 VP9/90000
\r\n
a=rtcp-fb:98 goog-remb
\r\n
a=rtcp-fb:98 transport-cc
\r\n
a=rtcp-fb:98 ccm fir
\r\n
a=rtcp-fb:98 nack
\r\n
a=rtcp-fb:98 nack pli
\r\n
a=fmtp:98 profile-id=0
\r\n
a=rtpmap:99 rtx/90000
\r\n
a=fmtp:99 apt=98
\r\n
a=rtpmap:100 VP9/90000
\r\n
a=rtcp-fb:100 goog-remb
\r\n
a=rtcp-fb:100 transport-cc
\r\n
a=rtcp-fb:100 ccm fir
\r\n
a=rtcp-fb:100 nack
\r\n
a=rtcp-fb:100 nack pli
\r\n
a=fmtp:100 profile-id=2
\r\n
a=rtpmap:101 rtx/90000
\r\n
a=fmtp:101 apt=100
\r\n
a=rtpmap:102 H264/90000
\r\n
a=rtcp-fb:102 goog-remb
\r\n
a=rtcp-fb:102 transport-cc
\r\n
a=rtcp-fb:102 ccm fir
\r\n
a=rtcp-fb:102 nack
\r\n
a=rtcp-fb:102 nack pli
\r\n
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
\r\n
a=rtpmap:121 rtx/90000
\r\n
a=fmtp:121 apt=102
\r\n
a=rtpmap:127 H264/90000
\r\n
a=rtcp-fb:127 goog-remb
\r\n
a=rtcp-fb:127 transport-cc
\r\n
a=rtcp-fb:127 ccm fir
\r\n
a=rtcp-fb:127 nack
\r\n
a=rtcp-fb:127 nack pli
\r\n
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
\r\n
a=rtpmap:120 rtx/90000
\r\n
a=fmtp:120 apt=127
\r\n
a=rtpmap:125 H264/90000
\r\n
a=rtcp-fb:125 goog-remb
\r\n
a=rtcp-fb:125 transport-cc
\r\n
a=rtcp-fb:125 ccm fir
\r\n
a=rtcp-fb:125 nack
\r\n
a=rtcp-fb:125 nack pli
\r\n
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
\r\n
a=rtpmap:107 rtx/90000
\r\n
a=fmtp:107 apt=125
\r\n
a=rtpmap:108 H264/90000
\r\n
a=rtcp-fb:108 goog-remb
\r\n
a=rtcp-fb:108 transport-cc
\r\n
a=rtcp-fb:108 ccm fir
\r\n
a=rtcp-fb:108 nack
\r\n
a=rtcp-fb:108 nack pli
\r\n
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
\r\n
a=rtpmap:109 rtx/90000
\r\n
a=fmtp:109 apt=108
\r\n
a=rtpmap:35 AV1X/90000
\r\n
a=rtcp-fb:35 goog-remb
\r\n
a=rtcp-fb:35 transport-cc
\r\n
a=rtcp-fb:35 ccm fir
\r\n
a=rtcp-fb:35 nack
\r\n
a=rtcp-fb:35 nack pli
\r\n
a=rtpmap:36 rtx/90000
\r\n
a=fmtp:36 apt=35
\r\n
a=rtpmap:124 H264/90000
\r\n
a=rtcp-fb:124 goog-remb
\r\n
a=rtcp-fb:124 transport-cc
\r\n
a=rtcp-fb:124 ccm fir
\r\n
a=rtcp-fb:124 nack
\r\n
a=rtcp-fb:124 nack pli
\r\n
a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032
\r\n
a=rtpmap:119 rtx/90000
\r\n
a=fmtp:119 apt=124
\r\n
a=rtpmap:123 H264/90000
\r\n
a=rtcp-fb:123 goog-remb
\r\n
a=rtcp-fb:123 transport-cc
\r\n
a=rtcp-fb:123 ccm fir
\r\n
a=rtcp-fb:123 nack
\r\n
a=rtcp-fb:123 nack pli
\r\n
a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032
\r\n
a=rtpmap:118 rtx/90000
\r\n
a=fmtp:118 apt=123
\r\n
a=rtpmap:114 red/90000
\r\n
a=rtpmap:115 rtx/90000
\r\n
a=fmtp:115 apt=114
\r\n
a=rtpmap:116 ulpfec/90000
\r\n
a=ssrc-group:FID 1330070973 2207934575
\r\n
a=ssrc:1330070973 cname:VEO/rU2hhPHuuPu0
\r\n
a=ssrc:1330070973 msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 745e25c1-11b3-4a11-8bcc-0a3f8d80a60a
\r\n
a=ssrc:1330070973 mslabel:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz
\r\n
a=ssrc:1330070973 label:745e25c1-11b3-4a11-8bcc-0a3f8d80a60a
\r\n
a=ssrc:2207934575 cname:VEO/rU2hhPHuuPu0
\r\n
a=ssrc:2207934575 msid:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz 745e25c1-11b3-4a11-8bcc-0a3f8d80a60a
\r\n
a=ssrc:2207934575 mslabel:135gqeiEqFDCSBQvkrFA7ZIXRnW4YyXCWJDz
\r\n
a=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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment