[TOC]
1.概述
websdk 是一个适用于chrome浏览器平台的直播SDK,使用此SDK可以与CC视频云服务进行对接,在chrome浏览器使用CC视频的小班课音视频服务。
1.1 功能特性
websdk目前包含音视频sdk、配置更新聊天插件、排麦插件
1.1.1 音视频sdk功能
功能 | 描述 |
---|---|
音视频 | 支持音视频互动 |
桌面共享 | 支持屏幕共享至互动者 |
广播 | 支持获取广播通知消息 |
视频连麦 | 支持与讲师进行视频连麦 |
音频连麦 | 支持与讲师进行音频连麦 |
获取在线人数 | 支持获取直播间在线人数 |
多清晰度 | 支持不同码率推流 |
1.1.2 配置修改、图文聊天插件包含功能
功能 | 描述 |
---|---|
房间级配置修改 | 支持修改房间级配置 |
个人配置修改 | 支持个人配置状态管理 |
广播 | 支持获取广播通知消息 |
图文聊天 | 支持传递图文消息 |
1.1.3 排麦插件包含功能
功能 | 描述 |
---|---|
多中连麦模式支持 | 自定义多种连麦场景(自由、举手、自动) |
1.2 阅读对象
本文档为技术文档,需要阅读者:
- 具备基本的JavaScript开发能力
- 准备接入CC视频的云课堂音视频SDK相关功能
2.开发准备
2.1 开发环境
- 浏览器 : chrome浏览器
- 网络协议 : https 或 localhost本机环境
- 账号权限:已经开通cc开发者账号
3.快速集成
注:快速集成主要提供的音视频推拉流(核心功能)。
3.1 在线引用sdk及插件
3.1.1 在线引用sdk
<script src="https://class.csslcloud.net/static/dist/js/websdk_3.0.js"></script>
3.1.2 在线引用配置更新、聊天插件
需使用聊天功能、修改房间级配置、修改个人配置,可在线引用配置更新、聊天插件
<script src="https://class.csslcloud.net/static/dist/js/classUpdateChat.js"></script>
3.1.3 在线引用排麦插件
需使用特定场景连麦模式,可在线引用排麦插件
<script src="https://class.csslcloud.net/static/dist/js/classMode.js"></script>
3.2 获取sessionid
3.3 初始化sdk
var rtc = new Rtc({
userid: userid, // 用户ID
sessionid: sessionid // 通过api获取
});
3.4 重要事件监听
rtc.on('login_success', function (data) {
// 账号登录成功
console.log(data,'login_success');
});
rtc.on('login_failed', function (err) {
// 账号登录失败
console.error('登录失败',err);
});
rtc.on('conference_join', function (streams) {
// 加入房间成功
console.log('conference_join', streams);
});
rtc.on('conference_join_failed', function (err) {
// 加入房间失败
console.log('加入房间失败',err);
});
rtc.on('allow_sub', function (stream) {
// 订阅进入房间的流
if(stream instanceof Woogeen.RemoteMixedStream){
console.log('是混合流,不定阅');
}else{
rtc.trySubscribeStream({
tryStream: stream,
success:function(stream){
// 订阅流成功
var streamId = stream.id(); // 获取流id
console.log('订阅流成功', streamId);
//将视频动态插入盒子id为domid的盒子中,
// domid最好与流id有关联方便移除
stream.show(domid);
},
fail: function(err){
console.log(err);
}
});
}
});
rtc.on('unSub', function(stream){
// 监听取消订阅流
rtc.unSubscribeStream({
unSubStream: stream,
success:function(id){
console.log('取消订阅成功', id);
},
fail: function(err){
console.log('取消订阅失败', err);
}
});
});
rtc.on('stream_removed', function (id) {
// 房间内有流退出或中断,移除相应dom
console.log('stream_removed', id);
//将本地放该流的dom移除掉
});
3.5 主动调用方法
*用户进入房间后,查询直播是否开启,若已开启,可直接创建本地流推流,若没开始直播,则需要调开始直播接口后方可推流
// 查询直播状态
rtc.getLiveStat({
success: function(){
// 创建本地流推流
CreateStreamPublish();
},
fail: function(){
// 开启直播
rtc.startLive({
success: function(){
// 创建本地流推流
CreateStreamPublish();
}
});
}
});
// 创建并推送本地流
function CreateStreamPublish(){
rtc.createLocalStream({
streamName: 'main',
success: function(stream){
// 将本地流显示在id 为 'my'的盒子里
v.show('my');
// 推送本地流
rtc.publish({
streamName: 'main',
success: function(stream){
console.log('本地流推送成功', value.id());
}
});
},
fail: function(err){
console.log(err);
}
});
}
4.功能使用
详细功能列表见api文档 和 应用demo
5.API查询
音视频sdk api文档 配置更新、聊天插件api文档 排麦插件api文档
6.Q&A
6.1 创建本地流失败
建议:
1.检查音视频设备是否正常
2.检查浏览器版本是否满足要求,推荐chrome57以上版本浏览器
3.检查网络开发环境是不是https或者localhost本机环境
6.2 桌面共享无法使用
说明:
1.使用桌面共享需要在https网络环境使用
2.使用桌面共享需要配置包含当前网络域名的插件,此插件需联系cc技术人员提供
6.3 sessionid使用说明
1.获取到的sessionid 默认有效期是24小时,同一设备,登陆同一个房间的同一个角色('presenter','talker'), 可以重复使用,不用每次初始化sdk都去获取新的sessionid
2.同一个sessionid初始化的用户,在用户列表代表同一个用户