更新记录

1.3(2022-10-20)

增加Android和iOS保存相册的接口。

1.2(2022-10-08)

修复插件和萤石云插件一起打包冲突问题。

1.1(2022-05-06)

新增decryptPic接口,优化部分代码

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 14.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 适用版本区间:9 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


乐橙云开放平台SDK原生插件使用文档

一、插件对象和标签

//乐橙SDK插件对象
var SDK = uni.requireNativePlugin('LeChange-SDK');

//语音对讲插件对象
var Talk = uni.requireNativePlugin('LeChange-Talk');

//视频实时预览和回放标签,注:当前页面必需nvue页面
<lechange_play_view ref="playView" style="width:100%;height: 200px;"
    @onViewCreated="onViewCreated"
    @onWindowListener="onWindowListener">
</lechange_play_view>

二、SDK插件接口

1. 初始化SDK

//初始化
SDK.initOpenApi({
    token:"At_000035787a4612a64f8f8d5defb6de7e"//[必传]授权 token,需开发者从平台自行获取
}, function(res){
    console.log(res);
});

2. 检测麦克风权限

//检测麦克风权限
SDK.checkPermission(function(res){
    console.log(res);
    if (res.result == true) {
        //授权成功
    } else {
        //权限被拒绝
    }
});

三、语音对讲插件接口

1. 设置语音对讲事件回调

//语音对讲事件回调
Talk.setListener(function(res){
    console.log(res);
});

2. 语音对讲开始 ,对讲前请设置监听

//语音对讲开始 ,对讲前请设置监听
Talk.playTalk({
    accessToken:"At_000035787a4612a64f8f8d5defb6de7e",//[必传]管理员 token
    deviceID:"7K017E1PCG47DC4",//[必传] 设备序列号(S/N)
    channelId:0,//[必传] 通道号
    psk:"7K017E1PCG47DC4",//[必传]解密秘钥(未加密输入设备序列号(S/N),加密视 频需要传入设置的密码)
    //playToken:"",//[可选] 播放码(不传或传错走旧的拉流协议,正确传 入走取流优化协议)
    isOpt:true,//[必传] 对讲是否使用长连接 true 是| false 否,注:4窗口以上同时播放 isOpt 建议选择 false,4窗口以下 isOpt 建议选择 true。
    talkType:"talk"//[必传] “talk” 普通对讲 |“call”设备 call 对讲,如门 铃        
});

3. 语音对讲停止

//语音对讲停止
Talk.stopTalk();

4. 开启声音

//开启声音
Talk.playSound();

5. 关闭声音

//关闭声音
Talk.stopSound();

四、视频实时预览和回放标签

1. 获取播放器标签对象,建议在mounted里面获取,不能在onLoad里面获取

mounted() {
    //获取播放器标签对象
    playView = this.$refs.playView;

    //注意:这里不能调用playView的任何接口,等onViewCreated回调之后才能调用标签对象的接口。
}

2. 在lechange_play_view标签@onViewCreated="onViewCreated"的回调之后才能调用标签对象的接口。

methods: {
    onViewCreated() {
        //初始化窗口
        playView.initPlayWindow({
            index:0
        });

        //开启手势监听
        playView.openTouchListener();
    }
}

3. 在lechange_play_view标签的@onWindowListener="onWindowListener"播放器回调事件。

methods: {
    onWindowListener(e) {
        //窗口监听事件
        var res = e.detail;
        console.log(res);
        var type = res.type;
        if (type == "onPlayerResult") {//播放事件回调
            var index = res.data.index;//窗口 ID 唯一标识
            var code = res.data.code;//错误码
            var type = res.data.type;//业务类型, 0 RTSP,1 HLS, 5 DHHTTP ,99 OPENAPI
        } else if (type == "onResolutionChanged") {//分辨率改变事件
            var index = res.data.index;//窗口 ID 唯一标识
            var width = res.data.width;//宽
            var height = res.data.height;//高
        } else if (type == "onPlayBegan") {//播放开始回调,首帧解码回调,可用于去除播放前的加载动画
            var index = res.data.index;//窗口 ID 唯一标识
        } else if (type == "onPlayFinished") {//播放结束事件
            var index = res.data.index;//窗口 ID 唯一标识
        } else {
            //更多事件参考原生文档,回调类 LCOpenSDK_EventListener
        }
    }
}

4. 初始化播放窗口

//初始化窗口
playView.initPlayWindow({
    index:0//[必传]窗口唯一 Id,上层传入
});

5. 开启手势监听

//开启手势监听
playView.openTouchListener();

6. 实时播放函数(异步)

//实时预览,备注:
//1、4 窗口以上同时播放 isOpt 建议选择 false,4 窗口以下 isOpt 建议选 择 true.
//2、imageSize 从设备详细信息中获取,设备支持的情况下可传多种分辨 率,目前支持 4k 设备有用到,其他设备默认传-1
playView.playRtspReal({
    accessToken:"St_00005f962f7e3c024eb38594a3628fa5",//[必传] 管理员 token
    deviceID:"7K017E1PCG47DC4",//[必传] 设备序列号(S/N)
    channelId:0,//[必传] 通道号
    psk:"7K017E1PCG47DC4",//[必传] 解密秘钥(未加密输入设备序列号(S/N),加密视 频需要传入设置的密码)
    //playToken:"",//[可选] 播放码(不传或传错走旧的拉流协议,正确传 入走取流优化协议)
    bateMode:0,//[必传] 高清:0 | 标清:1   
    //imageSize:-1,//[可选]码流分辨率,根据设备的能力集来确定,默认android:-1,ios:0
    isOpt:true//[必传] 是否使用长连接:true 使用 | false 不使用
});

7. 停止实时播放(异步)

//停止实时预览
var isKeepLastFrame = true;//停止是否保留最后一帧:true 保留 | false 不保留
playView.stopRtspReal(isKeepLastFrame);

8. 接收设备声音

//接收设备声音
playView.playAudio();

9. 停止接收设备声音

//停止接收设备声音
playView.stopAudio();

10. 设备本地录像播放

//设备本地录像播放,备注:
//1、4 窗口以上同时播放 isOpt 建议选择 false,4 窗口以下 isOpt 建议选 择 true.
playView.playRtspPlayback({
    accessToken:"St_00005f962f7e3c024eb38594a3628fa5",//[必传] 管理员 token
    deviceID:"7K017E1PCG47DC4",//[必传] 设备序列号(S/N)
    channelId:0,//[必传] 通道号
    psk:"7K017E1PCG47DC4",//[必传] 解密秘钥(未加密输入设备序列号(S/N),加密视 频需要传入设置的密码)
    //playToken:"",//[可选] 播放码(不传或传错走旧的拉流协议,正确传 入走取流优化协议)
    fileId:"",//[必传] 文件标识符,平台 queryLocalRecords 协议返回的 recordId 字段
    startTime:1647831608,//[必传] 起始时间(Unix 时间戳,单位为秒,设备时区)
    endTime:1647832448,//[必传] 终止时间(Unix 时间戳,单位为秒,设备时区)
    offsetTime:1647831608,//[必传] 录像偏移时间(单位为秒,相对于开始时间的偏 移)
    definitionMode:0,//[必传] 主辅码流:0 主码流|1 辅码流    
    isOpt:true//[必传] 是否使用长连接:true 使用 | false 不使用
});

11. 停止录像播放(异步)

//停止实时预览
var isKeepLastFrame = true;//停止是否保留最后一帧:true 保留 | false 不保留
playView.stopRtspPlayback(isKeepLastFrame);

12. 云播放

//云播放(默认查询报警云录像类型的 url)
playView.playCloud({
    accessToken:"St_00005f962f7e3c024eb38594a3628fa5",//[必传] 管理员 token
    deviceID:"7K017E1PCG47DC4",//[必传] 设备序列号(S/N)
    channelId:0,//[必传] 通道号
    psk:"7K017E1PCG47DC4",//[必传] 解密秘钥(未加密输入设备序列号(S/N),加密视 频需要传入设置的密码)
    //playToken:"",//[可选] 播放码(不传或传错走旧的拉流协议,正确传 入走取流优化协议)
    recordRegionId:"",//[必传](云录像 id,通过查询云录像接口 queryCloudRecords 获得)
    recordType:1000,//[必传] 云录像类型(1000 报警云录像,2000 连续云录 像)
    offsetTime:50,//[必传] 偏移时间(单位为秒)
    timeout:100,//[必传] 云录像拉流超时时间(单位为秒)
});

13. 停止云录像

//停止云录像
var isKeepLastFrame = true;//停止是否保留最后一帧:true 保留 | false 不保留
playView.stopCloud(isKeepLastFrame);

14. 播放暂停

//播放暂停
playView.pause();

15. 重置播放

//重置播放
playView.resume();

16. 抓图

//抓图,注:
//播放过程中可调用该接口将一帧视频保存到本地 JPG 图片
var filePath = plus.io.convertLocalFileSystemURL("_doc/img.png");//本地保存路径
playView.snapShot(filePath, function(res){
    console.log(res);//0 表示成功 其他 表示调用失败
});

17. 开始录像

//开始录像
var filePath = plus.io.convertLocalFileSystemURL("_doc/video.mp4");//[必传] 文件路径
var recordType = 1;//[必传] 录像类型[mp4 = 1 | dav = 0]
playView.startRecord(filePath, recordType, function(res){
    console.log(res);//0 表示成功 其他 表示调用失败
});

18. 停止录像

//停止录像
playView.stopRecord(function(res){
    console.log(res);//0 表示成功 其他 表示调用失败
});

隐私、权限声明

1. 本插件需要申请的系统权限列表:

麦克风权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件自身不采集任何数据,插件使用的萤石云开放平台 SDK采集数据请参考其官方说明:https://open.imou.com

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问