#微信小程序播放SDK开发指南
版本:1.0.0 日期:2018年8月23日
1.概述
云直播微信小程序播放 SDK 是适用于微信小程序平台的云直播播放SDK,使用此SDK可以与CC视频云直播进行对接,在微信小程序中使用云直播观看端的功能。
1.1 功能特性
功能 | 描述 |
---|---|
视频 | 支持直播视频播放 |
文档 | 文档及画笔展示,暂不支持ppt动画 |
聊天 | 支持公聊和私聊模式 |
问答 | 支持公开问答和私密问答 |
公告 | 支持获取公告信息 |
线路切换 | 支持选择直播流线路 |
音频模式 | 直播时支持选择观看纯音频模式 |
获取在线人数 | 支持获取直播间在线人数 |
1.2 阅读对象
本文档为技术文档,需要阅读者:
- 具备基本的微信小程序发能力
- 准备接入CC视频的直播SDK观看功能
- 对CC云直播产品使用方法有基础的了解,使用帮助地址。
2.开发准备
2.1 开发环境
- 微信开发者工具: 微信小程序开发IDE
- 微信公众平台小程序开发者账号: 开发账号
- 微信公众平台:https://mp.weixin.qq.com/
- 微信公众平台小程序开发文档:https://developers.weixin.qq.com/miniprogram/dev/quickstart/basic/getting-started.html
2.2 开发配置
云直播微信小程序播放SDK中使用了live-player组件,需要开启小程序的“实时播放音视频流”、“实时录制音视频流”功能,登陆微信公众平台小程序开发平台 - 设置 - 接口设置 - 开启实时播放音视频流、实时录制音视频流。
2.3 配置服务器域名
登陆微信公众平台小程序开发平台 - 设置 - 开发者设置 - 服务器域名 - 配置服务器信息
request合法域名
https://view.csslcloud.net
https://zeus.csslcloud.net
https://eva.csslcloud.net
socket合法域名
wss://io-cc1.csslcloud.net
wss://io-cc2.csslcloud.net
wss://sio-1.csslcloud.net
wss://sio-2.csslcloud.net
wss://sio-3.csslcloud.net
wss://sio-4.csslcloud.net
wss://io.csslcloud.net
downloadFile合法域名
https://image.csslcloud.net
3.快速集成
云直播微信小程序播放SDK以小程序插件的形式提供接口服务,无需下载安装。 微信小程序插件使用参考:https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/using.html
3.1 添加插件
登陆微信公众平台小程序开发平台 - 设置 - 第三方服务 - 插件管理 - 添加插件 - 搜索:(插件名称:WXCCLive)或(appid:wxf7200395f7f6b071) - 添加
3.2 引入插件代码包
app.json文件中加入plugins字段
{
"pages": [
"pages/live/live",
"pages/publisher/publisher"
],
"window": {
},
"plugins": {
"ccsdk": {
"version": "1.0.0",
"provider": "wxf7200395f7f6b071"
}
}
}
version:由于文档更新局限性,插件版本请使用最新版本,登陆微信公众平台小程序开发平台 - 设置 - 第三方服务 - 插件管理 - WXCCLive - 详情 - 基本信息 - 更新记录,查询插件最新版本。
(微信小程序2018.05.15 更新日志:新增 小程序使用的插件有更新时,在控制台提示插件更新)
3.3 使用插件的 js 接口
在js文件中引入ccsdk模块,ccsdk观看直播的方法和事件在live对象中,使用ccsdk.live.init方法初始化观看直播。
var ccsdk = requirePlugin('ccsdk');
ccsdk.live.init({
userId: userId,
roomId: roomId,
userName: userName,
password: password,
wx: wx,
success: function (res) {
console.log('登录成功回掉', res);
},
fail: function (res) {
console.log('登录失败回掉', res);
}
});
参数说明:
参数 | 说明 |
---|---|
userId | 用户 id |
roomId | 直播间id |
userName | 用户名称 |
password | 需要密码验证方式时,可选 |
wx | 微信全局对象 |
forcibly | 强制登录,可选 |
success | 初始化成功回掉函数,可选 |
fail | 初始化失败回掉函数,可选 |
3.4 配置视频模块
在wxml中创建live-player组件,id为player,src绑定playerUrl的值。
<live-player id="player" src="{{playerUrl}}" mode="live" autoplay/>
在js文件data对象中添加PlayerUrl属性,在onLoad中调用configLivePlayer(this, wx)方法配置live-player组件
var ccsdk = requirePlugin('ccsdk');
Page({
data: {
//live-player直播观看地址
playerUrl: ''
},
onLoad: function () {
//返回live-player实例
this.ctx = ccsdk.live.configLivePlayer(this, wx);
},
})
当用户调用ccsdk.live.init初始化完成,ccsdk会将观看直播链接赋值给playerUrl,并根据id="player"返回live-player实例。
3.5 文档画板模块
ccsdk插件提供了文档画板自定义组件<drawingBoard></drawingBoard>
,使用文档画板功能是需要引入ccsdk插件及其提供的自定义组件,在wxml中使用即可。
在需要使用drawingBoard组件的Page页面的json文件中引入组件
{
"navigationBarTitleText": "观看直播",
"usingComponents": {
"drawingBoard":"plugin://ccsdk/drawingBoard"
}
}
在wxml文件中使用 drawingBoard 组件
<drawingBoard width="100%" height="423rpx"></drawingBoard>
drawingBoard 文档画板组件属性方法说明
属性名 | 类型 | 默认值 | 说明 | 最低版本 |
---|---|---|---|---|
width | String | 700rpx | 组件宽度 | 2.0.9 |
height | String | 450rpx | 组件高度 | 2.0.9 |
Tip
-
drawingBoard 文档画板自定义组件基于canvas组件,层级属性与canvas一致,是最高的,不能通过 z-index 控制层级。
-
drawingBoard 文档画板自定义组件基于canvas组件,如果需要在文档画板上添加元素,只能在drawingBoard组件中使用cover-view和cover-image
<drawingBoard>
<cover-view><cover-view/>
<cover-image><cover-image/>
</drawingBoard>
3.6 快速集成说明
完成上面的步骤后,基本上我们就能够观看到直播间的视频画面和文档画面了,也就基本完成了CC直播的核心功能的集成,即观看视频和观看文档的功能。后续在第4节会对CC直播SDK提供的其他的功能特性的使用做详细的说明。
4.功能使用
功能使用时相关的核心类:ccsdk.live(观看直播核心对象),ccsdk.live.on(观看直播事件方法)。
4.1 聊天功能
聊天功能分为公共聊天和私聊,聊天时主动调用的方法在ccsdk.live对象上,相关方法如下:
API | 说明 |
---|---|
sendPublicChatMsg(msg) | 发送公聊,msg:消息内容,聊天信息必须是字符串并小于300字且不能为空。 |
sendPrivateChatMsg(touserid,tousername,msg) | 发送私聊, touserid:接收者的viewerid,tousername:接收者的viewername,msg:消息内容 |
聊天功能的核心回调事件,相关的回调方法如下:
收到公聊和自己发送的公聊
cc.live.on("chat_message",function(data){
// console.log(data);
//{
// "userid": "4ccd73b2fb1a4b63be1043b6c4c225dc", // 发送者id
// "username": "name", // 发送者名字
// "userrole": "student", // 发送者身份
// "useravatar": "img", // 发送者头像
// "msg": "rrr", // 消息内容
// "time": "16:45:08", // 发送时间
// "usercustommark": "" // 聊天自定义参数
// }
})
收到自己发送的私聊,如果用户被禁言可以通过此方法接收自己发送的聊天信息
cc.live.on("private_chat_self",function(data){
// console.log(data);
//{
// "fromuserid": "7a4715874d504b8db78cb5b77d66b8c8", // 发送者id
// "fromusername": "name", // 发送者名字
// "touserid": "33ed40d2d7b746919219789733b5bdd4", // 接收者id
// "tousername": "第三方士大夫", // 接收者名字
// "msg": "发反反复复", // 消息内容
// "time": "17:22:15" // 发送时间
//}
}
收到私聊回复
cc.live.on("private_chat",function(data){
// console.log(data);
//{
// "fromuserid": "33ed40d2d7b746919219789733b5bdd4", // 发送者id
// "fromusername": "第三方士夫", // 发送者名字
// "fromuserrole": "student", // 发送者身份
// "touserid": "7a4715874d504b8db78cb5b77d66b8c8", // 接收者id
// "tousername": "name", // 接收者名字
// "msg": "阿斯蒂芬", // 消息内容
// "time": "17:26:24" // 发送时间
// }
}
4.2 问答功能
提问时主动调用的方法在ccsdk.live对象中,相关方法如下:
API | 说明 |
---|---|
sendQuestionMsg(content) | 发送问题,content:消息内容 |
问答功能的核心回调事件,相关的回调方法如下:
自己发送的问题和别人发送的问题都会从此接口回调回来。
cc.live.on("question",function(data){
// console.log(data);
// {
// "action":"question", // 提问
// "value": {
// "userId":"C783F0F7CB77E1F3", // 提问者id
// "userName":"name", // 提问者名字
// "content":"123145", // 提问内容
// "userAvatar":"img", // 提问者头像
// "id":"1B5BBA4826FFE337" // 问题id
// }
// }
}
收到回答
cc.live.on("answer",function(data){
// console.log(data);
//{
// "action":"answer", // 回答
// "value": {
// "content":"ghghjgug", // 回答内容
// "isPrivate":0, // 是否仅提问者可见
// "questionId":"1B5BBA4826FFE337", // 问题id
// "questionUserId":"C783F0F7CB77E1F3", // 提问者id
// "userId":"ebadb3d414c3471786d095c93bab8cb5", // 回答者id
// "userName":"www", // 回答者名字
// "userAvatar":"img", // 回答者头像
// "userRole":"publisher" // 回答者身份
// }
//}
}
客户端发布问题回掉事件
cc.live.on("publish_question",function(data){
// console.log(data);
//{
// "action": "publish_question",
// "value": {
// "questionId": "4F80FC9C1CB96F5D"//问题id
// }
//}
}
4.3 公告功能
此功能为方法回调功能,相关对象ccsdk.live,相关方法如下:
开始直播后显示公告
cc.live.on("announcement_info",function(data){
// console.log(data);
}
发布和修改公告
cc.live.on("announcement",function(data){
// console.log(data);
//{
// action: "release",
// announcement: "sdfads1啊"//公告
//}
}
删除公告
cc.live.on("announcement",function(data){
// console.log(data);
}
4.4 音频模式
此功能为主动调用功能,调用的方法在ccsdk.live对象中,相关方法如下:
API | 说明 |
---|---|
streamMode(mode) | video切换到视频模式,audio只听音频 |
4.5 获取在线人数
此功能为方法回调功能,相关对象ccsdk.live,相关方法如下:
cc.live.on("room_user_count",function(data){
// console.log(data);
}
5.更多相关API查询
详见 api/index.html
6.Q&A
6.1 版本兼容
- 微信开发工具:建议使用 1.02.1808100 及以上版本
- 调试基础库:建议使用 2.2.2 及以上版本
- 微信:建议使用 6.7.0 及以上版本
6.2 自定义组件使用说明
- 自定义组件封装在ccsdk_demo/components文件下,用户可以直接复制并使用,components/img有所有的UI资源。
- 需要注意自定义组件均使用了ccsdk插件,需要用户配置插件路径。ccsdk_demo直接在小程序app.js中引用了插件,并且赋值给globalData。
- 尽量避免修改自定义组件中的内容,可以适当增加,避免减少。因为WXCCLive插件需要自定义组件提供部分数据支持。
- 如果用户需要的功能自定义组件已经封装,推荐使用封装好的自定义组件,否则可能会导致某些功能异常。
6.3 方法、事件使用说明
- 除init外,其他方法需要在登录以后才能成功调用,返回true。
- 通过on方法监听事件必须是唯一的,多个监听只会有一个回掉函数返回事件参数。
- 事件生命周期可以根据后缀判断:
事件 | 说明 |
---|---|
'event_log' | 返回历史信息,只有在登录成功返回,跨界面使用此数据建议用户做一下存储转化,传递给其他界面 |
'event_info' | 返回登录成功系列信息,只有在登录成功的时候返回。 |
'event' | 通过用户行为方法触发或定时器实时返回相应事件参数 |