本文为萤石uniapp原生APP SDK插件使用方式说明
UniEzOpenSDK基于萤石云开放平台原生APP SDK,封装为uniapp插件,帮助用户实现移动端原生能力的调用
UniEzOpenSDK包含安卓 / iOS系统的原生APP插件
1、在uniapp项目根目录创建文件夹:nativeplugins/super_ezviz
2、将插件包解压后的文件移入上述文件夹中
3、package.json中已经默认配置了SDK必须的配置项、版本、依赖等信息
4、打开项目根目录下的manifest.json文件,选择App原生插件配置->选择本地插件->勾选super_ezviz->确认
1、在任意页面的script中调用以下方法,引入原生SDK插件
const plugin = uni.requireNativePlugin('super_ezviz');
2、调用initUniOpenSDK接口,初始化SDK,并传入服务域名、当前账号的appKey、accessToken
plugin.initUniOpenSDK({
"openApiServer": 'https://open.ys7.com',
"openAuthApiServer": 'https://openauth.ys7.com',
"appKey": '',
"accessToken": ''
})
1、创建一个nvue页面(uniapp框架限制,使用原生插件必须为nvue页面)
2、在页面的template里创建一个播放器标签,标签名称为2.1节第3步package.json中配置的component的name
3、在播放器标签上添加ref属性,用于获取播放器实例
4、可以在标签上传入style,用于设置播放器样式
1、通过ref获取播放器实例
2、调用实例的createPlayer接口,创建播放器,并传入设备序列号、通道号、设备验证码
videoPlayer.createPlayer(this.deviceSerial, this.channelNo, this.validCode, (res) => {
if (res.code == '200') {
this.isInit = true;
uni.showToast({
title: '创建播放器成功',
icon: 'none'
})
}
});
1.初始化 Demo 参考 demo/pages/index/index.vue,使用前请先填入appKey、accessToken
2.配网 Demo 参考 demo/pages/configWifi/index.vue,使用前请先填入wifiSsid、wifiPwd、deviceSerial、deviceType、deviceVerifyCode
序号 | API | 名称 | 入参 | 返回结果 |
---|---|---|---|---|
initUniOpenSDK | 初始化SDK | option { openApiServer 服务地址(公有云使用https://open.ys7.com) openAuthApiServer auth地址(公有云使用https://openauth.ys7.com) appKey 萤石开放平台提供的 appkey accessToken 萤石开放平台提供的 accessToken } callback 回调 |
success code msg |
|
probeDeviceInfo | 【配网】查询设备信息 | deviceSerial 设备序列号 deviceType 设备类型 deviceVerifyCode 设备验证码 |
success code msg data 设备 HotSpot 类别 |
|
startAPConfigWifiWithSsid | 【配网】开始AP配置 | wifiSsid WiFi名称 wifiPwd WiFi密码 deviceSerial 设备序列号 deviceVerifyCode 设备验证码 deviceHotspotName 设备热点名称(HotSpot前缀_设备序列号) deviceHotspotPwd 设备热点密码(HotSpot前缀_设备验证码) autoConnectToDeviceHotSpot 自动连接热点 callback 回调 |
success code msg |
|
addDevice | 【配网】添加设备 | deviceSerial 设备序列号 deviceVerifyCode 设备验证码 callback 回调 |
success code msg |
|
stopAPConfigWifi | 【配网】停止AP配置 |
序号 | API | 名称 | 入参 | 返回结果 |
---|---|---|---|---|
1 | createPlayer | 初始化播放器 | deviceSerial 设备序列号 channelNo 通道号 verifyCode 验证码 callback 回调 |
code msg |
2 | startRealPlay | 开始预览播放 | callback 回调 | code msg |
3 | stopRealPlay | 结束预览播放 | callback 回调 | code msg |
4 | openSound | 开启声音 | ||
5 | closeSound | 关闭声音 | ||
6 | startTalk | 开启对讲 | isDeviceTalkBack 是否为ipc设备对讲 当前仅支持全双工模式对讲 |
|
7 | stopTalk | 结束对讲 | ||
8 | setVoiceTalkStatus | 半双工对讲-切换对讲模式 | flag 对讲方向,true:手机端听-设备端说,false:手机端说-设备端听 默认为手机端听-设备端说 |
|
9 | changeVideoLevel | 切换清晰度 | level 清晰度,0:流畅,1:均衡,2:高清,3:超清 | |
10 | startQueryRecordFiles | 查询录像片段 | startDate 开始时间 stopDate 结束时间 recordMode 回放模式,0:云存储,2:本地SD卡 recordType 事件类型,all:全部,CMR:告警,event:事件 spaceId:云录制空间id callback 回调 |
code msg data 回放片段列表 |
11 | playbackSeekTo | 回放跳转至指定时间 | data 目标时间点 callback 回调 |
code msg |
12 | startPlayBack | 开始回放播放 | file 回放文件(startQueryRecordFiles返回的片段列表中的单个元素) recordMode 回放模式,0:云存储,2:本地SD卡 callback 回调 |
code msg |
13 | stopPlayBack | 停止回放 | callback 回调 | code msg |
14 | fullscreen | 全屏 | ||
15 | exitFullscreen | 退出全屏 | ||
16 | capturePicture | 截图 | fileName 文件名称(默认为时间戳) savePath 文件保存路径(默认为APP所在位置的sandbox) callback 回调 download 是否保存图片至相册(不传或传true会在截图后自动保存至系统相册) |
code msg data 图片base64数据 |
17 | startRealPlayRecord | 开始录制 | callback 回调 | code msg |
18 | stopRealPlayRecord | 结束录制 | callback 回调 | code msg |
19 | ptzOption | 云台操作 | command 方向,0:左,1:右,2:上,3:下,8:物理放大,9:物理缩小 action 指令,START开始转动,STOP停止转动 |
|
20 | changePlayBackSpeed | 倍速回放 | speed 回放速度,1:1倍速,2:二倍速,3:0.5倍速,4:4倍速,8:8倍速,16:16倍速 | |
21 | getStreamFlow | 获取流量数据 | callback 回调 | code data 累计消耗流量 |
22 | release | 销毁播放器 | callback 回调 | res销毁结果 |
插件提供回调事件,在播放、对讲、操作云台时返回对应的执行结果。
在页面的适当的时机监听“onMessage”事件,插件会在执行完成后通过该全局事件回调结果。
具体使用方式可以参考demos。
若有更多回调事件需求,可以通过GitHub issues向我们反馈。
globalEvent.addEventListener('onMessage', (e) => {
console.log("onMessage=" + JSON.stringify(e));
const messageKey = Object.keys(e)[0];
switch (messageKey) {
case 'handlePlaySuccess': // 播放成功
// ...
break;
case 'handlePlayFail': // 播放失败
// ...
break;
case 'handleTalkSuccess': // 对讲成功
// ...
break;
case 'handleTalkFail': // 对讲失败
// ...
break;
case 'handleTalkStopSuccess': // 结束对讲
// ...
break;
case 'handleSetVideoModeSuccess': // 切换清晰度成功
// ...
break;
case 'handlePTZSuccess': // 云台操作成功
// ...
break;
case 'handlePTZFail': // 云台操作失败
// ...
break;
default:
break;
}
});