[TOC]

日期: 2019-08-27

创盛视联数码科技(北京)有限公司

0. 房间级监听事件

0.1 登录监听

登录监听主要是对初始化sdk的参数进行验,并与服务端建立连接 事件监听,建议在初始化sdk后做监听

0.1.1 登录成功

rtc.on('login_success', function (data) {
    // 登录成功
    console.log(data,'login_success');
});

返回 data 部分数据格式如下

{

     result:"OK",
     data:{

            "desc": "9DC1A878A164F696",   //房间描述

            "talker_bitrate": 200,      //学生推流码率

            "publisher_bitrate": 200,    //老师推流码率

           "live": {
                  "id": 1231,   // 直播id
                  "status": 0,   // 1为开始
                  "last": "2000" // 如果status为1,则last为直播持续时长,单位毫秒
                "startTime":"1503908480000"  //直播开始时间戳
            }

            "max_streams": 6,   //允许最大视频流数

            "name": "ha",      //用户昵称

            "result": "OK",

            "user": {

                 "id": "6e373a456cd04b45b00f7b97986a45fc",   //用户唯一id

                 "name": "123123123",   //用户name

                 "role": "talker",    //'talker'学生   'presenter'老师

                 "roomid": "EC05E15A770D84AC9C33DC5901307461", // 房间id

            },

            "video_mode": 1,   // 视频模式1为音视频模式  , 2为仅音频模式

            "is_follow": '',  // 默认为空,如果是跟随模式,则为流id

            "max_users": 1, // 最大支持连麦人数

            "allow_chat": true  // 是否允许发言,默认为True, 房间级配置

            "allow_audio": true   // 是否允许麦克风 默认为True, 房间级配置

            "allow_speak": true  // 是否允许上麦,默认为True 房间级配置

            "rtspurl": "" //第三方推流地址
        }
    }

0.1.2 登录失败

初始化sdk验证失败

 rtc.on('login_failed', function (err) {
     // 登录失败
     console.error('登录失败',err);
 });


 err会返回失败原因

0.2 加入流房间监听

加入流房间是准备视频流环境,满足用户推拉流需要

0.2.1 加入房间成功

加入房间成功,标志着视频流服务已准备完成

rtc.on('conference_join', function (streams) {
    // 返回值为房间内已存在的流,sdk中已通知应用层订阅
    console.log('conference_join', streams);
});

0.2.2 加入房间失败

加入房间失败,视频流服务准备出错

rtc.on('conference_join_failed', function (err) {
    // 加入房间失败  err为错误原因
    console.log('加入房间失败',err);
});

0.2.3 流服务断开回调和重连方法

连接中可能由于网络原因或造成服务异常断开

rtc.on('server_disconnected', function () {
       // 服务断开
    console.log('流服务器已断开,请尝试重连');
});

// 可通过重连恢复服务(建议通过页面提示,并尝试手动点击dom事件,调用重连,避免因网络不可用自动重连陷入循环)

rtc.streamServerConnect({
    success:function(){

        console.log('流服务重连成功');
        // 重连成功后,可以把需要推的流再次推送出去
        rtc.publish({
            streamName: 'main'
        });
    },
    fail: function(){
        // 重连失败,可能是网络原因,可以继续标示不可用状态,可再次调用重连方法
    }
});

0.3 sdk初始化

// 初始化sdk
var rtc = new Rtc({
    userid: 'xxxxxx',    // 账号id
    sessionid : 'xxxxxxx',   // sessionid
    roomid : 'xxxxxx',   // roomid
    isUpdateRtmpLayout: true    // 回放中仅录学生音频
});

1. 流相关方法

1.1 本地流相关方法

1.1.1 创建本地流

rtc.createLocalStream(object);

参数说明:

参数名称 参数类型 说明 是否必须
streamName String 创建本地流名称 必选
showVoice function 音量值回调 可选
createData object 创建本地流自定义参数 可选
success function 创建本地流成功回调(含参数) 必选
fail function 创建本地流失败回调(含参数) 可选
object:为创建本地流参数对象,包含以下属性
* (必选)streamName 创建本地流名称,数据类型(String),可选参数值为 'main''assist''picture'
    此参数为区分多条本地流操作,如果本地只创建一条流,就使用'main''assist'(需开通权限)、'picture'(需开通权限)

* (可选)showVoice 音量值回调
object.showVoice = function(value){
    // value值范围(0-100)
}

* (可选) createData 选用特定音视频设备创建本地流,数据类型(object),不选该参数,系统自动识别设备
object.createData = {
        video:{
            device: 'camera',         //固定配置,使用摄像头
            resolution: 'vga',     //分辨率  'sif' :320*240   'vga':640*480 '720P':1280*720 '1080P':1920*1080
            deviceId: 'xxxxxxxxxx',
            frameRate: 15,  //可选参数(number),默认15,最大36
        }, //如果video:false ,则表示不开启视频
        audio: {
             deviceId: 'xxxxxxxxxx'
        }     //是否创建音频,可直接传入对象,参数为设备ID,也可以直接传入布尔值true/false 表示是否创建音频
    }

* (必选)success 成功回调
object.success = function(stream){
    // 返回值为创建的本地流对象
    stream.show(id);  // 将本地流显示在元素id值为id的盒子中
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.createLocalStream({
    streamName: 'main',
    showVoice: function(value){
        // value值范围(0-100)

    },
    success: function(stream){
        stream.show('id');  // 将本地流显示在元素id值为id的盒子中
    },
    fail: function(str){
        console.log(str);
    }
});

1.1.2 关闭本地流声音

rtc.pauseAudio(object);

参数说明:

参数名称 参数类型 说明 是否必须
streamName String 本地流名称 必选
success function 成功回调 可选
fail function 失败回调 可选
object:为对象,包含以下属性
* (必选)streamName 本地流名称,数据类型(String),可选参数值为 'main''assist''picture'
    此参数为区分多条本地流操作,如果本地只创建一条流,就使用'main'

* (可选)success 成功回调
object.success = function(){

}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.pauseAudio({
    streamName: 'main',
    success: function(){

    },
    fail: function(str){
        console.log(str);
    }
});

1.1.3 开启本地流声音

rtc.playAudio(object);

参数说明:

参数名称 参数类型 说明 是否必须
streamName String 本地流名称 必选
success function 成功回调 可选
fail function 失败回调 可选
object:为对象,包含以下属性
* (必选)streamName 本地流名称,数据类型(String),可选参数值为 'main''assist''picture'
    此参数为区分多条本地流操作,如果本地只创建一条流,就使用'main'

* (可选)success 成功回调
object.success = function(){

}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.playAudio({
    streamName: 'main',
    success: function(){

    },
    fail: function(str){
        console.log(str);
    }
});

1.1.4 关闭本地流视频画面

rtc.pauseVideo(object);

参数说明:

参数名称 参数类型 说明 是否必须
streamName String 本地流名称 必选
success function 成功回调 可选
fail function 失败回调 可选
object:为对象,包含以下属性
* (必选)streamName 本地流名称,数据类型(String),可选参数值为 'main''assist''picture'
    此参数为区分多条本地流操作,如果本地只创建一条流,就使用'main'

* (可选)success 成功回调
object.success = function(){

}


* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.pauseVideo({
    streamName: 'main',
    success: function(){

    },
    fail: function(str){
        console.log(str);
    }
});

1.1.5 开启本地流视频画面

rtc.playVideo(object);

参数说明:

参数名称 参数类型 说明 是否必须
streamName String 本地流名称 必选
success function 成功回调 可选
fail function 失败回调 可选
object:为对象,包含以下属性
* (必选)streamName 本地流名称,数据类型(String),可选参数值为 'main''assist''picture'
    此参数为区分多条本地流操作,如果本地只创建一条流,就使用'main'

* (可选)success 成功回调
object.success = function(){

}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.playVideo({
    streamName: 'main',
    success: function(){

    },
    fail: function(str){
        console.log(str);
    }
});

1.1.6 结束本地流

rtc.closeVideo(object);

参数说明:

参数名称 参数类型 说明 是否必须
streamName String 本地流名称 必选
success function 成功回调 可选
fail function 失败回调 可选
object:为对象,包含以下属性
* (必选)streamName 本地流名称,数据类型(String),可选参数值为 'main''assist''picture'
    此参数为区分多条本地流操作,如果本地只创建一条流,就使用'main'

* (可选)success 成功回调
object.success = function(){

}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.closeVideo({
    streamName: 'main',
    success: function(){

    },
    fail: function(str){
        console.log(str);
    }
});

1.1.7 推送本地流

rtc.publish(object);

参数说明:

参数名称 参数类型 说明 是否必须
streamName String 本地流名称 必选
mix boolean 是否进行合流 可选
audioRate Number 音频推送码率 可选
videoRate Number 视频推送码率 可选
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object:包含以下属性
* (必选)streamName 本地流名称,数据类型(String),可选参数值为 'main''assist''picture'
    此参数为区分多条本地流操作,如果本地只创建一条流,就使用'main'
* (可选)mix 是否进行合流( true 进行合流,false 不进行合流),默认false 不进行合流
* (可选)audioRate 音频码率(50 - 200)数据类型(Number),默认50
* (可选)videoRate 音频码率(50 - 2000)数据类型(Number),默认200
* (可选)successed 成功回调
object.success = function(stream){
    // 返回值为流对象
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.publish({
    streamName: 'main',
    mix: true,
    videoRate: 300,
    audioRate: 50,
    success: function(stream){
        console.log('本地流推送成功', stream.id());
    },
    fail: function(str){
        console.log(str);
    }
});

1.1.8 取消推送本地流

rtc.unPublish(object);

参数说明:

参数名称 参数类型 说明 是否必须
streamName String 本地流名称 必选
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object 包含以下属性
* (必选)streamName 本地流名称,数据类型(String),可选参数值为 'main''assist''picture'
    此参数为区分多条本地流操作,如果本地只创建一条流,就使用'main'
* (可选)success 成功回调
object.success = function(id){
    // 返回值为流对象id
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.unPublish({
    streamName: 'main',

    success: function(id){
        console.log('取消本地流推送成功',id);
    },
    fail: function(str){
        console.log(str);
    }
});

1.1.8 推送桌面共享

rtc.publishShareStream(object);
使用说明:1.该功能需要https环境  2.需要使用含有域名的插件 3.chrome72以上支持无插件推流

参数说明:

参数名称 参数类型 说明 是否必须
mix boolean 是否进行合流 可选
audioRate Number 音频推送码率 可选
videoRate Number 视频推送码率 可选
videoRate Number 视频推送码率 可选
plugin 布尔值 是否使用插件 可选,默认不使用
fail function 失败回调(含参数) 可选
object:包含以下属性
* (可选)mix 是否进行合流( true 进行合流,false 不进行合流),默认false 不进行合流
* (可选)audioRate 音频码率(50 - 200)数据类型(Number),默认50
* (可选)videoRate 音频码率(50 - 2000)数据类型(Number),默认200
* (可选)success 成功回调
object.success = function(stream){
    // 返回值为流对象
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.publishShareStream({
    videoRate: 300,
    audioRate: 50,
    mix: true,
    success: function(stream){
        console.log('推送桌面共享成功', stream.id());
    },
    fail: function(str){
        console.log(str);
    }
});

1.1.9 关闭桌面共享

rtc.unPubShareStream();

使用说明:此方法用于关闭已开启的桌面共享( 需使用最新桌面共享插件)

关闭桌面共享目前提供两种方法:

  1. 直接关闭浏览器桌面共享控制条
  2. 调用关闭桌面api实现关闭

使用例子:

rtc.unPubShareStream();

1.2 远程流方法

1.2.1 订阅远程流

rtc.trySubscribeStream(object);

参数说明:

参数名称 参数类型 说明 是否必须
tryStream object 要订阅的流对象 必选
tryData Number 选择音视频订阅项(默认音视频都订阅) 可选
showVoice function 音量值回调(含参数) 可选
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object:为对象,包含以下属性
*  (必选)tryStream 要订阅的流对象
*  (可选)tryData 要订阅的流参数
object.tryData = {
    video: false,    //是否订阅视频     true  、 false
    audio: true     //是否适用音频     true  、 false  
}
* (可选)success 成功回调
object.success = function(stream){
    // 返回值为已订阅流对象
}

* (可选)showVoice 音量值回调
object.showVoice = function(value){
    // value值范围(0-100)
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.trySubscribeStream({
    tryStream: stream,
    success: function(stream){
        console.log('订阅流成功', stream.id());
    },
    showVoice: function(value){
        // value值范围(0-100)
    },
    fail: function(str){
        console.log(str);
    }
});

1.2.2 取消订阅远程流

rtc.unSubscribeStream(object);

参数说明:

参数名称 参数类型 说明 是否必须
unSubStream object 要取消订阅的流对象 必选
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object:对象,包含以下属性
*  (必选)unSubStream 要取消订阅的流对象
* (可选)success 成功回调
object.success = function(stream){
    // 返回值为已取消订阅流对象
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.unSubscribeStream({
    unSubStream: stream,
    success: function(stream){
        console.log('取消订阅流成功', stream.id());
    },

    fail: function(str){
        console.log(str);
    }
});

1.2.3 结束远程流

rtc.closeRemoteStreams();

使用说明:此方法用于关闭已订阅远程流和已发布的本地流通道,建议在卸载页面的时候使用

使用例子:

rtc.closeRemoteStreams();

1.2.4 暂停订阅视频

rtc.unSubVideo(object);

参数说明:

参数名称 参数类型 说明 是否必须
stream obj 已订阅远程流 必选
success function 成功回调 可选
fail function 失败回调 可选
object:为对象,包含以下属性
* (必选)stream 已订阅远程流

* (可选)success 成功回调
object.success = function(){

}


* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.unSubVideo({
    stream: stream,
    success: function(){

    },
    fail: function(str){
        console.log(str);
    }
});

1.2.5 恢复订阅视频

rtc.reSubVideo(object);

参数说明:

参数名称 参数类型 说明 是否必须
stream obj 已订阅远程流 必选
success function 成功回调 可选
fail function 失败回调 可选
object:为对象,包含以下属性
* (必选)stream 已订阅远程流

* (可选)success 成功回调
object.success = function(){

}


* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.reSubVideo({
    stream: stream,
    success: function(){

    },
    fail: function(str){
        console.log(str);
    }
});

1.2.6 暂停订阅音频

rtc.unSubAudio(object);

参数说明:

参数名称 参数类型 说明 是否必须
stream obj 已订阅远程流 必选
success function 成功回调 可选
fail function 失败回调 可选
object:为对象,包含以下属性
* (必选)stream 已订阅远程流

* (可选)success 成功回调
object.success = function(){

}


* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.unSubAudio({
    stream: stream,
    success: function(){

    },
    fail: function(str){
        console.log(str);
    }
});

1.2.7恢复订阅音频

rtc.reSubAudio(object);

参数说明:

参数名称 参数类型 说明 是否必须
stream obj 已订阅远程流 必选
success function 成功回调 可选
fail function 失败回调 可选
object:为对象,包含以下属性
* (必选)stream 已订阅远程流

* (可选)success 成功回调
object.success = function(){

}


* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.reSubAudio({
    stream: stream,
    success: function(){

    },
    fail: function(str){
        console.log(str);
    }
});

1.3 监听流相关事件

事件监听,建议在初始化sdk后做监听

1.3.1 监听有流可订阅事件

将房间内推出的流订阅到本地显示

rtc.on('allow_sub', function (stream) {
    // 订阅流
    if(stream.isMixed(){
        console.log('是混合流,不定阅');
    }else{
        // 订阅流
        rtc.trySubscribeStream({
            tryStream: stream,
            success:function(stream){
                // 订阅流成功
                var streamId = stream.id(); // 获取流id
                console.log('订阅流成功', streamId);
                //将视频动态插入盒子中
                stream.show(streamId); // 将流显示到id为streamId的盒子中
            },
            fail: function(err){
                console.log(err);
            }
        });
    }
});

1.3.2 监听需要取消订阅流事件

取消订阅已经移除房间的流

rtc.on('unSub', function(stream){
    rtc.unSubscribeStream({
        unSubStream: stream,
        success:function(id){
            console.log('取消订阅成功', id);
        },
        fail: function(err){
            console.log('取消订阅失败', err);
        }
    });
});

1.3.3 监听通知移除流事件

房间内有流移除会收到此通知

rtc.on('stream_removed', function (stream) {
    // 删除显示该流用的界面dom
    $('#'+ stream.id()).remove();
});

1.4 部分高级功能

1.4.1获取单条流状态

此方法用于获取已经订阅到或已经推出去的流对象的音视频状态

rtc.getConnectionStats(object);

参数说明:

参数名称 参数类型 说明 是否必须
stream Object 已经订阅到或已经推出去的流对象 必选
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object:包含以下属性
* (必选)regionObj  设置混流参数
object.stream = stream;

* (可选)success 成功回调
object.success = function(data){
    // data 包含音视频详细参数
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.getConnectionStats({
    stream: stream,
    success: function(data){
        console.log(data);
    },
    fail: function(str){
        console.log(str);
    }
});

2. 直播间操作api

2.1 主动调用事件

2.1.1 开启直播

直播开启接口由老师角色去控制

rtc.startLive(object);

参数说明:

参数名称 参数类型 说明 是否必须
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object:包含以下属性
* (可选)success 成功回调
object.success = function(data){
    // 返回值对象,包含直播id
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.startLive({
    success: function(data){
        console.log('开启直播成功', data);
    },
    fail: function(str){
        console.log(str);
    }
});

2.1.2 关闭直播

直播关闭接口由老师角色去控制

rtc.stopLive(object);

参数说明:

参数名称 参数类型 说明 是否必须
success function 成功回调 可选
fail function 失败回调(含参数) 可选
object:包含以下属性
* (可选)success 成功回调
object.success = function(){

}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为失败原因,字符串类型
    console.log(str);
}

使用例子:

rtc.stopLive({
    success: function(){
        console.log('关闭直播成功');
    },
    fail: function(str){
        console.log(str);
    }
});

2.1.3 查询直播是否开启

rtc.getLiveStat(object);

参数说明:

参数名称 参数类型 说明 是否必须
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object:包含以下属性
* (可选)success 成功回调
object.success = function(data){
    // data包含直播id
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为字符串类型
    console.log(str);
}

使用例子:

rtc.getLiveStat({
    success: function(data){
        console.log('直播开启状态');
    },
    fail: function(str){
        console.log('直播关闭状态或查询直播失败', str);
    }
});

2.1.4 获取设备列表

用于获取当前浏览器可用音视频设备

rtc.getDevice(object);

参数说明:

参数名称 参数类型 说明 是否必须
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object:包含以下属性
* (可选)success 成功回调
object.success = function(data){
    // 返回可用设备列表
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为字符串类型
    console.log(str);
}

使用例子:

rtc.getDevice({
    success: function(data){
        console.log('获取成功', data);
    },
    fail: function(str){
        console.log('直播关闭状态或查询直播失败', str);
    }
});

2.1.5 获取历史记录

用于获取当前直播中房间的文档翻页,画笔,聊天的历史记录

rtc.getHistory(object);

参数说明:

参数名称 参数类型 说明 是否必须
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object:包含以下属性
* (可选)success 成功回调
object.success = function(data){
    // 返回数据
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为字符串类型
    console.log(str);
}

使用例子:

rtc.getHistory({
    success: function(data){
        console.log('获取成功', data);
    },
    fail: function(str){
        console.log(str);
    }
});

2.1.6 网络节点选择

2.1.6.1 查询节点

rtc.getNetPoint(object);

参数说明:

参数名称 参数类型 说明 是否必须
timeOut number 回调事件设置(默认3s) 可选
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object:包含以下属性
* (可选)success 成功回调
object.success = function(data){
    // 返回可用节点
}

// data数据如下:
 [{
       area_code:"DNYX",  //  地区码缩写
    is_abroad:1,  // 是否属于国外
    loc:"新加坡",    // 地区名
    delay: 63    // 延时,(设置回调时间过短可能没有此字段)

 }
 ...
 ]

* (可选)fail 失败回调
object.fail = function(data){
    // 返回错误数据
    console.log(data);
}

使用例子:

rtc.getNetPoint({
    success: function(data){
        console.log('获取成功', data);
    }
});

2.1.6.2 推拉流使用节点

初始化sdk时传入地区码

new Rtc({
    userid: 'xxxxxxxx',
    sessionid: 'xxxxxxxx',
    areaCode: 'HB'  // 使用节点
});

2.1.7 开启、结束、暂停、恢复录制接口

用于控制直播过程中开启、关闭、暂停、恢复录制

rtc.liveRecord(object);

参数说明:

参数名称 参数类型 说明 是否必须
status str 'start' 开启, 'end' 结束, 'pause' 暂停, 'resume' 恢复 必选
success function 成功回调(含参数) 可选
fail function 失败回调(含参数) 可选
object:包含以下属性
* (必须) status 表示执行动作

* (可选)success 成功回调
object.success = function(data){
    // 返回数据
}

* (可选)fail 失败回调
object.fail = function(str){
    // 返回值为字符串类型
    console.log(str);
}

使用例子:

rtc.liveRecord({
    status:'start',
    success: function(data){
        console.log('成功', data);
    },
    fail: function(str){
        console.log(str);
    }
});

2.1.8 人员列表自定义字段更新

此方法用于在用户列表中更新用户自定义字段 参数说明:

参数名称 参数类型 说明 是否必须
status number 0--999 必选

rtc.updateCustomStatus({
    status: 10
});

被动监听人员有自定义状态变化

rtc.on('custom_status_updated', function(data){
    console.log('状态已经修改', data);
});

//data数据如下

{userid: custormId,custom: status}

2.2 被动监听事件

事件监听,建议在初始化sdk后做监听

2.2.1 监听通知开启直播事件

当老师角色调用开启直播接口后,房间内所有人都会监听到该事件

rtc.on('publish_stream' function(str){
    console.log('直播已开启');
});

2.2.2 监听通知结束直播事件

当老师角色调用关闭直播接口后,房间内所有人都会监听到该事件

rtc.on('end_stream' function(str){
    console.log('直播已关闭');
});

2.2.3 监听通人员列表变更事件

当有人员上下麦或人员进出房间时会收到该事件

rtc.on('online_users' function(data){
    console.log(data);
});

2.2.4 用户加入房间通知其他人员

rtc.on("join_room_user", function(data){
    console.log(data);
});


// data 数据格式如下
{id:  'xxxxxx',name: 'xxxxx'}

2.2.5 用户退出房间通知其他人员

rtc.on("exit_room_user", function(data){
    console.log(data);
});


// data 数据格式如下
{id:  'xxxxxx',name: 'xxxxx'}

2.2.6 自定义消息发送、接收

// 发送自定义消息,data 可自定义
rtc.sendPublishMessage(data);

// 接收自定义消息
rtc.on('publish_message', function(data){
    console.log(data);
});

// 此方法发送的数据如需保存记录,需联系我们,告知需要记录的数据格式

2.2.7 监听单条流状态通知

推流或订阅流每条流每2s会向外抛一条数据

rtc.on('streamStatus' function(data){

    console.log(data);
    {
        stream:stream, //流对象
        type: 1  ,  // 推流0 订阅流1
        status: 1001,  // 1001正常  1002(检测到疑似黑流状态)  /1003异常(流状态异常发送或接收端可能是黑流)
        delay: 30, // 延时     推流端延时为0,订阅流能获取到延时状态
           bandWidth: 300, //带宽
        action: 'streamStatus' ,
        streamException: 2  // 此参数只会在订阅流1003的时候存在,1 标示推流故障引起的异常,订阅端可以不处理,2 标示 订阅端订阅异常需要做重试
    }
});
使用说明:
1.当首次收到订阅到某条流的流状态为1003,可以先判断订阅异常是推流造成的还是订阅异常,如果订阅异常可以尝试取消订阅后,重新订阅
2.当首次收到推送的流状态为1003,可能是本地收集流异常,关闭本地流后,重新创建流推送

2.2.8 监听网络整体状态

//如果有推流或者订阅流行为,netStatus事件每 2s会被监听到,此数据是根据订阅流和推流数据,评估出来的

rtc.on('netStatus' function(data){
  // 包含流对象、丢包、延时、带宽
    console.log(data);
    {
      delay: 30, // 延时   如果仅有推流,数据为0
      packetLost: 0.01, // 丢包比率
      netStatus: 180,  // 网络状态参数 (估计值)
      action: 'netStatus'
    }
});
使用说明: 可以根据 netStatus 判断整体网络情况
目前评估网络参考值:
0 - 200   较好
200- 500500- 1000  一般
> 1000

2.2.9 监听推流异常断开

由于网络波动,可能会造成推流异常中断,通过此事件可以捕获到流异常断开提醒

rtc.on('publishStreamErr', function(data){
    console.log('推流意外终止:'+ data.streamName);
    // 直播开启状态下,尝试重推这条流
});

data数据如下streamName 为本地流名称'main'、'assist'、'picture'
{
    streamName: obj.streamName
}

2.2.10 通信服务状态监听

标示通信服务连接状态(可依据次状态在页面做网络可用性提醒)


 // 连接成功
 rtc.on('connect_user',function(){
     console.log('通信服务连接成功');
 });
 //断开连接
 rtc.on('disconnect_user',function(){
     console.log('通信服务 断开连接');
 });
 //正在重连
 rtc.on('reconnecting_user',function(){
     console.log('通信服务 重连中。。。。');
 });
 //重连成功
 rtc.on('reconnect_user',function(){
     console.log('重连成功');
 });

2.2.11 流服务状态监听

// 桌面共享流状态回调,只需要桌面共享发起端监听
rtc.on('screenConnectionStatus', function(data){
    console.log(data);
});
// data格式如下{status: 1, type:'screenConnectionStatus'}
status: 1 在开启桌面共享后或异常断开后重连成功后收到
status: 0 连接异常断开后回调

// 流服务状态回调,所有连接端都可监听
rtc.on('connectionStatus', function(data){
    console.log(data);
});
// data格式如下{status: 1, type:'connectionStatus'}
status: 1 在开启直播后连接成功或异常断开重连成功后回调
status: 0 连接异常断开后回调

2.2.12 流渲染自动播放失败回调

当有视频不能自动播放时会收到以下回调
rtc.on('playError', function(data){
    console.log(data);
});
// data格式如下:
{videoDom: ‘XXX’}
处理建议:
1.将收到的回调中videoDom依次加入数组
2.通过dom交互后,遍历数组中每一项,使用videoDom.play()的方法播放每一个video

3版本发布说明

3.1 websdk_4.0.js本版本与websdk_3.0.js流服务是兼容的

websdk_4.0.js本版本与websdk3.0.js流服务是兼容的 线上使用地址

 <script src="https://class.csslcloud.net/static/dist/js/websdk_4.0.js" type="text/javascript">

3.2 取消了部分高级功能客户端功能由服务端支持

本版本废除了以下功能,由服务端处理

  // 推流至cdn平台
  rtc.addExternalOutput(object);

  //取消推流至cdn平台
  rtc.removeExternal(object);

  //更新推流平台地址
  rtc.updateExternalOutput(object);

  //mix 流
  rtc.mix(object);

  //unMix 流
  rtc.unMix(object);

  //设置混流位置
  rtc.setRegion(object);

  //获取混流位置
  rtc.getRegion(object);

  //开启服务端视频录制
  rtc.startRecorder(object);

  //关闭服务端视频录制
  rtc.stopRecorder(object);

3.3部分接口返回数据有改动

3.3.1获取单条流状态

  rtc.getConnectionStats(object);
  // object数据有变化

3.3.2判断流类型

  // 是否是混合流 返回值 true/false
  stream.isMixed()

        注意:该方法代替了websdk_3.0.js以下判断混流的方法
        if(stream instanceof Woogeen.RemoteMixedStream){
            console.log(stream.id(), 'mixed流不订阅');
        }


  // 是否是桌面共享流 返回值 true/false
  stream.isScreen()

  // 是否是普通流 返回值 true/false
  stream.isCamera()

  // 是否有视频 返回值 true/false
  stream.hasVideo()

  // 是否有音频 返回值 true/false
  stream.hasAudio()

3.3.3 创建本地流变动

分辨率只支持640 480 和320 240两种 客户如果指定deviceId,需确保所传deviceId一定存在,如果不存在,创建流会失败

3.3.4 桌面共享插件

本版本需更新最新版桌面共享插件才能支持调用桌面共享功能,同时桌面共享功能需要https协议支持,确保你所使用的域名在已经被我们加入插件白名单

3.3.4 合流处理

推送本地流和桌面共享流时,新增 mix 参数,标示是否把当前流合进合流, 默认 false 不合, true 合入合流

更新日志

更新日期 功能
2019/3/23 音视频sdk升级至4.0版本
2019/4/28 新增网络异常情况处理( 0.2.3 流服务断开回调和重连方法 2.2.9 监听推流异常断开 2.2.10 通信服务状态监听。 )
2019/5/17 新增人员列表自定义参数(2.1.8 ) 修复人员连麦状态异常丢失 修复ppt加载完成回调缺失 修复刷新导致流通知消息无法对应人员列表
2019/7/2 新增订阅流异常区分(推流端问题 or 订阅端问题)( 2.2.7 )
2019/8/1 本地流及推流默认仅支持’main‘(如需多路本地推流,可以通过客服开通)创建流支持高分辨率(1.1.1) chrome72以上可以支持无插件推送桌面流(1.1.8)
2019/8/14 新增控制合流是否显示学生图像( 0.3 )
2019/8/26 新增流服务状态监听(2.2.11)流渲染自动播放失败监听(2.2.12)
2019/9/25 调整1080P分辨率,新增frameRate参数(1.1.1), 修复创建流失败bug, chrome72以上浏览器支持不使用插件使用桌面共享

results matching ""

    No results matching ""