|
|
[TOC]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 1. 排麦模式
|
|
|
|
|
|
## 1.1 举手连麦
|
|
|
|
|
|
### 1.1.1 学生可举手申请连麦,需老师确认才可连麦
|
|
|
|
|
|
### 1.1.2 老师可以邀请学生连麦,需学生同意才可连麦
|
|
|
|
|
|
### 1.1.3 举手连麦流程图
|
|
|
|
|
|
![img](https://attachments.tower.im/tower/e3b408258baa441784d252d6142801a7?version=auto&filename=Clipboard%20Image.png)
|
|
|
|
|
|
## 1.2 自由连麦
|
|
|
|
|
|
### 1.2.1 学生可自由连麦,无需老师确认
|
|
|
|
|
|
## 1.3 自动连麦
|
|
|
|
|
|
### 1.3.1 学生进入房间后自动连麦
|
|
|
|
|
|
### 1.3.2 举手连麦和自由连麦流程图
|
|
|
|
|
|
![img](https://attachments.tower.im/tower/2eca635aa323439ab97cb7220708ae50?version=auto&filename=Clipboard%20Image.png)
|
|
|
|
|
|
# 2. 排麦事件
|
|
|
|
|
|
## 2.1 学生举手
|
|
|
|
|
|
举手由学生端发起。
|
|
|
|
|
|
应用模式:举手连麦,自由连麦,自动连麦。
|
|
|
|
|
|
```javascript
|
|
|
rtc.handsUp(object);
|
|
|
```
|
|
|
|
|
|
object 参数说明:
|
|
|
|
|
|
| 参数名称 | 参数类型 | 说明 | 是否必须 |
|
|
|
| -------- | -------- | ------------------ | -------- |
|
|
|
| success | function | 成功回调(含参数) | 可选 |
|
|
|
| fail | function | 失败回调(含参数) | 可选 |
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.handsUp({
|
|
|
success: function(str){
|
|
|
console.log('举手成功', str);
|
|
|
},
|
|
|
fail: function(data){
|
|
|
console.log('举手失败',data);
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 2.2 取消排麦
|
|
|
|
|
|
取消排麦由学生端发起。
|
|
|
|
|
|
应用模式:举手连麦,自由连麦,自动连麦。
|
|
|
|
|
|
```javascript
|
|
|
rtc.handsUpCancel(object);
|
|
|
```
|
|
|
|
|
|
object 参数说明:
|
|
|
|
|
|
| 参数名称 | 参数类型 | 说明 | 是否必须 |
|
|
|
| -------- | -------- | ------------------ | -------- |
|
|
|
| uid | string | 取消排麦用户id | 必选 |
|
|
|
| success | function | 成功回调(含参数) | 可选 |
|
|
|
| fail | function | 失败回调(含参数) | 可选 |
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.handsUpCancel({
|
|
|
uid:"23eb6474924f4b28b97ef42cb59676bc",
|
|
|
success: function(str){
|
|
|
console.log('取消排麦成功', str);
|
|
|
},
|
|
|
fail: function(data){
|
|
|
console.log('取消排麦失败',data);
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 2.3 下麦操作
|
|
|
|
|
|
老师和学生都能发起下麦,被下麦角色是学生,该方法才能生效。
|
|
|
|
|
|
应用模式:举手连麦,自由连麦,自动连麦。
|
|
|
|
|
|
```javascript
|
|
|
rtc.handsDown(object);
|
|
|
```
|
|
|
|
|
|
object 参数说明:
|
|
|
|
|
|
| 参数名称 | 参数类型 | 说明 | 是否必须 |
|
|
|
| ---------- | -------- | ------------------ | -------- |
|
|
|
| uid | string | 被下麦用户id | 必选 |
|
|
|
| teacher_id | string | 老师id | 可选 |
|
|
|
| success | function | 成功回调(含参数) | 可选 |
|
|
|
| fail | function | 失败回调(含参数) | 可选 |
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.handsDown({
|
|
|
uid:"23eb6474924f4b28b97ef42cb59676bc",
|
|
|
teacher_id:"f10f7885ab564183ad7fe47664f46973",
|
|
|
success: function(str){
|
|
|
console.log('下麦成功', str);
|
|
|
},
|
|
|
fail: function(data){
|
|
|
console.log('下麦失败',data);
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 2.4 邀请上麦
|
|
|
|
|
|
老师端发起邀请,邀请学生上麦。(举手模式)
|
|
|
|
|
|
应用模式:举手连麦。
|
|
|
|
|
|
```javascript
|
|
|
rtc.invite(object);
|
|
|
```
|
|
|
|
|
|
object 参数说明:
|
|
|
|
|
|
| 参数名称 | 参数类型 | 说明 | 是否必须 |
|
|
|
| -------- | -------- | ------------------ | -------- |
|
|
|
| uid | string | 被邀请用户id | 必选 |
|
|
|
| success | function | 成功回调(含参数) | 可选 |
|
|
|
| fail | function | 失败回调(含参数) | 可选 |
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.invite({
|
|
|
uid:"23eb6474924f4b28b97ef42cb59676bc",
|
|
|
success: function(str){
|
|
|
console.log('邀请上麦成功', str);
|
|
|
},
|
|
|
fail: function(data){
|
|
|
console.log('邀请上麦失败',data);
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 2.5 同意上麦
|
|
|
|
|
|
老师端同意学生上麦请求。
|
|
|
|
|
|
应用模式:举手连麦
|
|
|
|
|
|
```javascript
|
|
|
rtc.certain(object);
|
|
|
```
|
|
|
|
|
|
object 参数说明:
|
|
|
|
|
|
| 参数名称 | 参数类型 | 说明 | 是否必须 |
|
|
|
| -------- | -------- | ------------------ | -------- |
|
|
|
| uid | string | 同意上麦用户id | 必选 |
|
|
|
| success | function | 成功回调(含参数) | 可选 |
|
|
|
| fail | function | 失败回调(含参数) | 可选 |
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.certain({
|
|
|
uid:"23eb6474924f4b28b97ef42cb59676bc",
|
|
|
success: function(str){
|
|
|
console.log('同意上麦成功', str);
|
|
|
},
|
|
|
fail: function(data){
|
|
|
console.log('同意上麦失败',data);
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 2.6 接受邀请
|
|
|
|
|
|
学生端接受老师的上麦邀请,同意上麦。
|
|
|
|
|
|
应用模式:举手连麦
|
|
|
|
|
|
```javascript
|
|
|
rtc.inviteAccept(object);
|
|
|
```
|
|
|
|
|
|
object 参数说明:
|
|
|
|
|
|
| 参数名称 | 参数类型 | 说明 | 是否必须 |
|
|
|
| -------- | -------- | ------------------ | -------- |
|
|
|
| success | function | 成功回调(含参数) | 可选 |
|
|
|
| fail | function | 失败回调(含参数) | 可选 |
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.inviteAccept({
|
|
|
success: function(str){
|
|
|
console.log('接受邀请成功', str);
|
|
|
},
|
|
|
fail: function(data){
|
|
|
console.log('接受邀请失败',data);
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 2.7 上麦更新
|
|
|
|
|
|
上麦更新是在两种情况下执行
|
|
|
|
|
|
1.推流成功之后为更新自己上麦状态,通知其他人订阅,需调用。
|
|
|
|
|
|
2.学生不能创建本地流或者推流失败,需将其麦序让出。
|
|
|
|
|
|
应用模式:举手连麦,自由连麦,自动连麦。
|
|
|
|
|
|
```
|
|
|
rtc.updateMcResult(object);
|
|
|
```
|
|
|
|
|
|
object 参数说明:
|
|
|
|
|
|
| 参数名称 | 参数类型 | 说明 | 是否必须 |
|
|
|
| -------- | -------- | ------------------ | -------- |
|
|
|
| pid | number | 上麦结果更新status | 必选 |
|
|
|
| stid | string | streamid | 可选 |
|
|
|
| success | function | 成功回调(含参数) | 可选 |
|
|
|
| fail | function | 失败回调(含参数) | 可选 |
|
|
|
|
|
|
```javascript
|
|
|
object:包含以下属性
|
|
|
* pid(必选)上麦结果更新status
|
|
|
0 推流失败 学生不能创建本地流或者推流失败,需将其麦序让出。
|
|
|
1 推流成功 推流成功之后为更新自己上麦状态,通知其他人订阅,需调用。
|
|
|
* stid(可选)
|
|
|
推流成功传streamid
|
|
|
推流失败可不传
|
|
|
* success(可选)successed 成功回调
|
|
|
object.success = function(str){
|
|
|
// 上麦成功
|
|
|
}
|
|
|
|
|
|
* fail(可选)fail 失败回调
|
|
|
object.fail = function(data){
|
|
|
// 上麦失败
|
|
|
console.log(data);
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.updateMcResult({
|
|
|
pid:1,
|
|
|
stid:"146797406875915040",
|
|
|
success: function(str){
|
|
|
console.log('邀请上麦成功', str);
|
|
|
},
|
|
|
fail: function(data){
|
|
|
console.log('邀请上麦失败',data);
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 2.8 视频轮播
|
|
|
|
|
|
老师端确定锁定视频是否轮播。
|
|
|
|
|
|
应用模式:自动连麦
|
|
|
|
|
|
```
|
|
|
rtc.speakerRotateControl(object);
|
|
|
```
|
|
|
|
|
|
object 参数说明:
|
|
|
|
|
|
| 参数名称 | 参数类型 | 说明 | 是否必须 |
|
|
|
| -------- | -------- | ------------------ | -------- |
|
|
|
| u | string | 指定被锁定人id | 必选 |
|
|
|
| t | boolean | 是否锁定 | 必选 |
|
|
|
| success | function | 成功回调(含参数) | 可选 |
|
|
|
| fail | function | 失败回调(含参数) | 可选 |
|
|
|
|
|
|
```javascript
|
|
|
object:包含以下属性
|
|
|
* u(必选)老师端用户id
|
|
|
* t(必选)
|
|
|
true 锁定
|
|
|
false 解锁
|
|
|
* success(可选)successed 成功回调
|
|
|
object.success = function(str){
|
|
|
// 锁定视频是否轮播操作成功
|
|
|
}
|
|
|
|
|
|
* fail(可选)fail 失败回调
|
|
|
object.fail = function(data){
|
|
|
// 锁定视频是否轮播操作失败
|
|
|
console.log(data);
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.speakerRotateControl({
|
|
|
u:"f10f7885ab564183ad7fe47664f46973",
|
|
|
t:true,
|
|
|
success: function(str){
|
|
|
console.log('锁定视频是否轮播操作成功', str);
|
|
|
},
|
|
|
fail: function(data){
|
|
|
console.log('锁定视频是否轮播操作失败',data);
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 2.9 踢出房间
|
|
|
|
|
|
从房间里踢出学员。
|
|
|
|
|
|
应用模式:举手连麦,自由连麦,自动连麦。
|
|
|
|
|
|
```
|
|
|
rtc.outRoom(object);
|
|
|
```
|
|
|
|
|
|
object 参数说明:
|
|
|
|
|
|
| 参数名称 | 参数类型 | 说明 | 是否必须 |
|
|
|
| -------- | -------- | ------------------ | -------- |
|
|
|
| u | string | 指定被踢人id | 必选 |
|
|
|
| success | function | 成功回调(含参数) | 可选 |
|
|
|
| fail | function | 失败回调(含参数) | 可选 |
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.outRoom({
|
|
|
u:"f10f7885ab564183ad7fe47664f46973",
|
|
|
t:true,
|
|
|
success: function(str){
|
|
|
console.log('踢出操作成功', str);
|
|
|
},
|
|
|
fail: function(data){
|
|
|
console.log('踢出操作失败',data);
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
#
|
|
|
|
|
|
# 3. 排麦通知
|
|
|
|
|
|
## 3.1 监听有流可订阅事件
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.on('allow_sub', function(stream) {
|
|
|
// 订阅流
|
|
|
console.log('stream_added', stream);
|
|
|
if(stream instanceof Woogeen.RemoteMixedStream) {
|
|
|
console.log('是混合流,不定阅');
|
|
|
|
|
|
} else {
|
|
|
rtc.trySubscribeStream({
|
|
|
tryStream: stream,
|
|
|
success: function(stream) {
|
|
|
var streamId = stream.id(); // 获取流id
|
|
|
|
|
|
//将视频动态插入盒子中
|
|
|
var li = document.createElement('li');
|
|
|
li.setAttribute('id', streamId);
|
|
|
$('body').appendChild(li);
|
|
|
stream.show(streamId);
|
|
|
},
|
|
|
fail: function(err) {
|
|
|
console.log(err, 'error');
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 3.2 监听通知取消订阅事件
|
|
|
|
|
|
已订阅的流离开房间时,通知取消订阅的监听事件
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.on('unSub', function(stream) {
|
|
|
//停止订阅流
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 3.3 学生监听自己需要下麦事件
|
|
|
|
|
|
下麦成功后的监听事件
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.on('mcDown', function() {
|
|
|
// 关闭本地流
|
|
|
rtc.closeVideo({ //关闭本地流
|
|
|
streamName: 'main',
|
|
|
success: function() {
|
|
|
console.log('main:关闭本地流成功');
|
|
|
},
|
|
|
fail: function(str) {
|
|
|
console.log(str, 'error');
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 3.4 学生监听自己被允许上麦
|
|
|
|
|
|
自己被系统允许,需创建本地流
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.on('createLocalStream', function() {
|
|
|
// 创建本地流推流
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## 3.5 监听自己被邀请事件
|
|
|
|
|
|
学生自己被邀请的监听事件
|
|
|
|
|
|
使用例子:
|
|
|
|
|
|
```javascript
|
|
|
rtc.on('inviteUp', function(uid) {
|
|
|
console.log('被邀请的用户id为',uid)
|
|
|
});
|
|
|
```
|
|
|
|
|
|
|