云直播微信小程序推流SDK开发指南
版本:1.0.0 日期:2018年8月23日
1.概述
云直播微信小程序推流 SDK 是适用于微信小程序平台的云直播直播SDK,使用此SDK可以与CC视频云直播进行对接,在微信小程序中使用云直播推流端的功能。
1.1 功能特性
功能 | 描述 |
---|---|
视频推流 | 支持视频推流 |
聊天 | 支持在直播中进行聊天 |
美颜 | 支持美颜功能 |
自定义清晰度 | 支持设置标清和高清直播 |
横竖屏 | 支持手机横屏或竖屏模式直播 |
前后摄像头切换 | 支持手机前后摄像头切换直播 |
获取在线人数 | 支持获取直播间在线人数 |
1.2 阅读对象
本文档为技术文档,需要阅读者:
- 具备基本的微信小程序发能力
- 准备接入CC视频云直播推流SDK功能
- 对CC云直播产品使用方法有基础的了解,使用帮助地址。
- 微信公众平台:https://mp.weixin.qq.com/
- 微信公众平台小程序开发文档:https://developers.weixin.qq.com/miniprogram/dev/quickstart/basic/getting-started.html
2.开发准备
2.1 开发环境
- 微信开发者工具: 微信小程序开发IDE
- 微信公众平台小程序开发者账号: 开发账号
2.2 开发配置
微信小程序直播推流SDK中使用了live-pusher组件,需要开启小程序的“实时播放音视频流”、“实时录制音视频流”功能,登陆微信公众平台小程序开发平台 - 设置 - 接口设置 - 开启实时播放音视频流、实时录制音视频流。
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直播推流的方法和事件在publisher对象中,使用ccsdk.publisher.init方法初始化直播推流。
var ccsdk = requirePlugin('ccsdk');
cc.publisher.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 | 微信全局对象 |
success | 初始化成功回掉函数,可选 |
fail | 初始化失败回掉函数,可选 |
3.4 配置直播模块
在wxml中创建live-pusher组件,id为publisher,src的值绑定为publisherUrl。
<live-pusher id="publisher" src="{{publisherUrl}}" mode="HD"/>
在js文件data对象中添加publisherUrl属性,在onLoad中调用cc.publisher.configLivePublisher(this, wx)方法配置live-pusher组件
var ccsdk = requirePlugin('ccsdk');
Page({
data: {
//live-pusher直播推流地址
publisherUrl: ''
},
onLoad: function () {
//返回live-pusher实例
this.ctx = cc.publisher.configLivePublisher(this, wx);
},
})
当用户调用ccsdk.publisher.init初始化完成,ccsdk会将观看直播链接赋值给publisherUrl,并根据id="publisher"返回live-pusher实例。 live-pusher组件的原生属性,事件,方法等功能均可正常使用,参考微信小程序文档:https://developers.weixin.qq.com/miniprogram/dev/component/live-pusher.html (如原生方法与ccsdk方法重复,推荐使用ccsdk封装的方法,避免兼容问题)
3.5 开始推流
调用cc.publisher.liveStart方法开始推流。
cc.publisher.liveStart({
success: function (res) {
console.log('开始直播成功回掉', res);
},
fail: function (res) {
console.log('开始直播失败回掉', res);
}
});
3.6 cclive-publisher组件
- 为了简化用户开发,ccsdk-demo中将live-pusher组件封装成自定义组件,推荐用户使用cclive-publisher进行直播推流开发。
- 自定义组件使用方法:
- 将components文件内容拷贝到小程序项目根目录
- 在json文件中引入自定义组件
{
"usingComponents": {
"cclive-publisher": "../../../components/publisher/cclive-publisher/cclive-publisher"
}
}
- 在wxml文件中创建cclive-publisher组件
<cclive-publisher ccwidth="640rpx" ccheight="600rpx" />
- 在components/publisher/cclive-publisher/cclive-publisher.js文件中引入ccsdk
var cc = require('plugin/ccsdk');
- 至此就可以调用ccsdk.publisher.init方法初始化直播,调用ccsdk.publisher.liveStart方法开始推流
cclive-publisher自定义组件属性
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
muted | Boolean | false | 是否静音 |
orientation | String | vertical | vertical,horizontal |
beauty | Number | 0 | 美颜 |
whiteness | Number | 0 | 美白 |
aspect | String | 9:16 | 宽高比,可选值有 3:4, 9:16 |
waitingImage | String | 进入后台时推流的等待画面 | |
ccwidth | String | 100% | 组件宽度 |
ccheight | String | 100% | 组件高度 |
ccpostion | String | absolute | 定位 |
header | String | visible | 是否显示主播昵称、在线人数,可选值 visible,hidden |
chat | String | visible | 是否显示聊天 |
control | String | visible | 是否显示控制按钮组 |
cclive-publisher自定义组件事件
事件 | 参数类型 | 说明 |
---|---|---|
bindstatechange | EventHandle | 状态变化事件,detail = {code} |
bindnetstatus | EventHandle | 网络状态通知,detail = {info} |
binderror | EventHandle | 渲染错误事件,detail = {errMsg, errCode} |
bindSetCamera | EventHandle | 点击自定义组件切换摄像头时触发此事件 |
bindSetSound | EventHandle | 点击自定义组件静音按钮时触发此事件 |
bindSetBeauty | EventHandle | 点击自定义组件美颜按钮时触发此事件 |
bindClose | EventHandle | 点击自定义组件关闭按钮时触发此事件 |
3.7 快速集成说明
完成上面的步骤后,基本上我们就能够使用CC的SDK进行推流了,也就基本完成了CC直播的核心功能的集成。后续在第4节会对CC直播推流SDK提供的其他的功能特性的使用做详细的说明。
4. 功能使用
大部分功能基于ccsdk自定义的cclive-publisher组件,如用户未使用cclive-publisher组件,请查阅微信小程序开发文档中的属性、事件、方法进行开发。
4.1 切换摄像头
ccsdk.publisher.setSwitchCamera();
4.2 静音
// b为boolean类型,true为静音,false为非静音
ccsdk.publisher.setMuted(b);
4.3 美颜
// n为number类型,取值范围0-10
ccsdk.publisher.setBeauty(n);
4.4 美白
// n为number类型,取值范围0-10
ccsdk.publisher.setWhiteness(n);
4.5 开始直播
ccsdk.publisher.liveStart({
success: function (res) {
console.log('开始直播成功回掉', res);
},
fail: function (res) {
console.log('开始直播失败回掉', res);
}
});
4.6 停止直播
ccsdk.publisher.liveStop({
success: function (res) {
console.log('停止直播成功回掉', res);
},
fail: function (res) {
console.log('停止直播失败回掉', res);
}
});
4.7 发送公聊
// msg为string类型,消息内容
ccsdk.publisher.sendPublicChatMsg(msg);
4.8 发送私聊
//发送私聊, touserid:接收者的viewerid,tousername:接收者的viewername,msg:消息内容
ccsdk.publisher.sendPrivateChatMsg(touserid, tousername, msg);
4.9 获取直播间人数
ccsdk.publisher.on('room_user_count', function (data) {
console.log('room_user_count', data);
});
4.10 设置宽高比
// 可选值:'3:4','9:16'
ccsdk.publisher.setAspect('3:4');
4.11 设置宽高比
// 可选值:'SD','HD'
ccsdk.publisher. setResolution('SD');
4.12 设置宽高比
// 'vertical','horizontal'
ccsdk.publisher. setOrientation('vertical');
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插件需要自定义组件提供部分数据支持。
- 如果用户需要的功能自定义组件已经封装,推荐使用封装好的自定义组件,否则可能会导致某些功能异常。