更新记录
1.0.0(2025-05-16)
插件发布
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 4.64,Android:4.4,iOS:不支持,HarmonyNext:不支持 |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
鸿蒙元服务 |
× |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
1.0.0(2025-05-16)
插件发布
最新海康综合安防管理平台插件uniappx 版本(长期维护,可接单)
请试用合适再购买 请试用合适再购买 请试用合适再购买
适用uniappX 版本,uvue页面使用
插件使用
1.购买插件,选择该插件绑定的项目
2.根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能
3.打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
4.开发完毕后正式云打包
<template>
<scroll-view style="flex: 1;">
<dnx-hikvision ref="dnPlayer" style="height: 300px;background-color: black;"></dnx-hikvision>
<button @tap="start()">开始预览</button>
<button @tap="rePlayStart()">开始回放</button>
<button @tap="resume()">继续播放</button>
<button @tap="pause()">暂停播放</button>
<button @tap="stop()">停止播放</button>
<button @tap="seekPlayback()">按绝对时间回放定位</button>
<button @tap="getOSDTime()">查询当前播放时间</button>
<button @tap="getPlaybackSpeed()">获取播放倍数</button>
<button @tap="setPlaybackSpeed()">设置播放倍数</button>
<button @tap="screenshot()">播放抓图</button>
<button @tap="enableAudio()">声音控制</button>
<button @tap="changeStream()">预览码流平滑切换</button>
<button @tap="startVoiceTalk()">开始语音对讲</button>
<button @tap="stopVoiceTalk()">停止语音对讲</button>
<button @tap="startRecord()">开启本地录像</button>
<button @tap="stopRecord()">停止本地录像</button>
<button @tap="openDigitalZoom()">开启电子放大</button>
<button @tap="closeDigitalZoom()">关闭电子放大</button>
<button @tap="setFishEyeEnable()">鱼眼矫正</button>
<button @tap="setFishEyeMode()">设置鱼眼矫正方式</button>
<button @tap="setOriginalFECParam()">设置初始鱼眼PTZ参数</button>
<button @tap="handleFishEyeCorrect()">处理鱼眼矫正参数</button>
</scroll-view>
</template>
<script>
export default {
data() {
return {
realPlayUrl: 'rtsp://xxxxxxxxxxxx/vCw7T3y',
playbackUrl: 'rtsp://xxxxxxxxxxx/nzXMVaw',
voiceUrl: 'rtsp://xxxxxxxx/openUrl/RIiemly'
}
},
methods: {
/**
* 开启预览
* realPlayUrl为预览短链接,需要通过调用openApi获取
*/
start() {
const params : UTSJSONObject = {
hardDecode: true,
privateData: true,
};
(this.$refs['dnPlayer'] as DnxHikvisionElement).initPlugin(params, (res : any) => {
console.log(res)
});
(this.$refs['dnPlayer'] as DnxHikvisionElement).startPlay(this.realPlayUrl)
},
/**
* playbackUrl为回放短链接,需要通过调用openApi获取
* 开启回放
* {startTime,endTime}
* 时间格式为 "yyyy-MM-dd'T'HH:mm:ss.SSSZ",例如:"2018-05-07T14:41:57.819+03:00"
*/
rePlayStart() {
var params : UTSJSONObject = {
hardDecode: true,
privateData: true
};
(this.$refs['dnPlayer'] as DnxHikvisionElement).initPlugin(params, (res : any) => {
console.log(JSON.stringify(res))
});
(this.$refs['dnPlayer'] as DnxHikvisionElement).startReplay(this.playbackUrl, {
"startTime": "2025-05-06T00:00:00.000+3:00",
"endTime": "2025-05-06T10:59:59.000+3:00"
})
},
/**
* 继续播放
*/
resume() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).resume()
},
/**
* 暂停播放
*/
pause() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).pause()
},
/**
* 停止播放
*/
stop() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).stop()
},
/**
* 在录像回放的开始时间和结束时间之间进行播放定位控制。
* 使用按绝对时间回放定位接口之前,必须先调用开始回放接口
* 定位播放时,时间格式为'yyyy-MM-dd'T'HH:mm:ss.SSSZ'
*
*/
seekPlayback() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).seekPlayback("2025-05-06T02:00:00.000+3:00")
},
/**
* 查询当前播放时间戳
* -1表示失败,大于等于0时表示当前回放的时间戳,单位:毫秒。
* 请在播放成功后调用。
*/
getOSDTime() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).getOSDTime((res : any) => {
console.log(res)
})
},
/**
* 获取当前回放倍速,默认一倍速
*/
getPlaybackSpeed() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).getPlaybackSpeed((res : any) => {
console.log(res)
})
},
/**
* 设置回放的播放速度,默认一倍速
*
*0.125 PlaybackSpeed.ONE_EIGHTH 1/8倍速
0.25 PlaybackSpeed.QUARTER 1/4倍速
0.5 PlaybackSpeed.HALF 1/2倍速
1.0 PlaybackSpeed.NORMAL 1倍速
2.0 PlaybackSpeed.DOUBLE 2倍速
4.0 PlaybackSpeed.FOUR 4倍速
8.0 PlaybackSpeed.EIGHT 8倍速
*
*/
setPlaybackSpeed() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).setPlaybackSpeed(2.0, (res : any) => {
console.log(res)
})
},
/**
* 预览回放抓图
* 返回0代表操作成功,其他为错误码
* 在视频预览或回放时,从视频中抓取一帧,并保存至指定的本地文件路径
*/
screenshot() {
var bitmapPath = UTSAndroid.convert2AbsFullPath("static/bitmapPath.png")
var thumbnailPath = UTSAndroid.convert2AbsFullPath("static/thumbnailPath.png")
console.log(bitmapPath);
console.log(thumbnailPath);
(this.$refs['dnPlayer'] as DnxHikvisionElement).screenshot(bitmapPath, thumbnailPath, (res : any) => {
console.log(res)
})
},
/**
* 声音控制
* 返回0代表操作成功,其他为错误码
*/
enableAudio() {
var isOpenAudio = true;
(this.$refs['dnPlayer'] as DnxHikvisionElement).enableAudio(isOpenAudio, (res : any) => {
console.log(res)
})
},
/**
* 预览码流平滑切换
* 返回0代表操作成功,其他为错误码
*/
changeStream() {
//0:高清 1:标清 2: 流畅
var quality = 0;
(this.$refs['dnPlayer'] as DnxHikvisionElement).changeStream(quality, (res : any) => {
console.log(res)
})
},
/**
* talkUrl为对讲短链接,需要通过调用openApi获取
* headers 其他请求参数
* 1. 如需传递token,请在headers中增加Token赋值。
*/
setVoiceDataSource() {
var header = {};
(this.$refs['dnPlayer'] as DnxHikvisionElement).setVoiceDataSource(this.voiceUrl, header)
},
/**
* 播放结果回调status 共三种状态:SUCCESS(开启对讲成功)、FAILED(开启对讲失败)、EXCEPTION(取流异常)错误码,只有 FAILED 和 EXCEPTION 才有值
*/
setVoiceStatusCallback() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).setVoiceStatusCallback((res : any) => {
console.log(JSON.stringify(res))
})
},
/**
* 先设置回调再播放
* 开启语音对讲
*/
startVoiceTalk() {
this.setVoiceDataSource();
this.setVoiceStatusCallback();
(this.$refs['dnPlayer'] as DnxHikvisionElement).startVoiceTalk()
},
/**
* 停止语音对讲
*/
stopVoiceTalk() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).stopVoiceTalk()
},
/**
* 开启本地录像
* 使用此接口保存的录像文件,只可以使用SDK进行播放
* mediaFilePath 要保存的录像文件绝对路径(含文件名),例:“/SnapShot/测试监控点.mp4”。
* 返回0代表操作成功,其他为错误码
*/
startRecord() {
//使用此接口保存的录像文件,只可以使用SDK进行播放
var mediaFilePath = UTSAndroid.convert2AbsFullPath("static/mediaFilePath.mp4")
console.log(mediaFilePath);
// var mediaFilePath = plus.io.convertLocalFileSystemURL("_doc/mediaFilePath.mp4"); //要要保存的录像文件绝对路径(含文件名)
(this.$refs['dnPlayer'] as DnxHikvisionElement).startRecord(mediaFilePath, (res : any) => {
console.log(JSON.stringify(res))
})
},
/**
* 开启本地录像
* mediaFilePath 要保存的录像文件绝对路径(含文件名),例:“/SnapShot/测试监控点.mp4”。
* 返回0代表操作成功,其他为错误码
*/
startRecordAndConvert() {
var mediaFilePath = UTSAndroid.convert2AbsFullPath("static/mediaFilePath.mp4")
console.log(mediaFilePath);
(this.$refs['dnPlayer'] as DnxHikvisionElement).startRecordAndConvert(mediaFilePath, (res : any) => {
console.log(JSON.stringify(res))
})
},
stopRecord() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).stopRecord((res : any) => {
console.log(JSON.stringify(res))
})
},
/**
* original 最初的显示区域的坐标矩形
* target 目标显示区域的坐标矩形
* 返回0代表操作成功,其他为错误码
* 电子放大支持倍率为1-10倍。
*/
openDigitalZoom() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).openDigitalZoom({
'left': 0,
'top': 0,
'right': 50,
'bottom': 50,
}, {
'left': 0,
'top': 0,
'right': 100,
'bottom': 100,
}, (res) => {
console.log(JSON.stringify(res))
})
},
/**
* 关闭电子放大
* 返回0代表操作成功,其他为错误码
*/
closeDigitalZoom() {
(this.$refs['dnPlayer'] as DnxHikvisionElement).closeDigitalZoom((res : any) => {
console.log(JSON.stringify(res))
})
},
/**
* 电子放大和鱼眼不能同时开启
* 开启预览后,设置是否开启鱼眼矫正效果;
* 返回0代表操作成功,其他为错误码
* enable boolean 开启或关闭鱼眼矫正,只作用于一路预览。
*/
setFishEyeEnable() {
var enable = true;
(this.$refs['dnPlayer'] as DnxHikvisionElement).setFishEyeEnable(enable, (res : any) => {
console.log(JSON.stringify(res))
})
},
/**
*
* 设置鱼眼矫正方式
* 返回0代表操作成功,其他为错误码
* 矫正方式,通过注解定义。
*
0 CorrectType.FEC_CORRECT_PTZ PTZ
1 CorrectType.FEC_CORRECT_180 180°矫正
2 CorrectType.FEC_CORRECT_360 360°全景矫正
3 CorrectType.FEC_CORRECT_LAT 维度展开
4 CorrectType.FEC_CORRECT_SEM 半球
5 CorrectType.FEC_CORRECT_CYC 圆柱
6 CorrectType.FEC_CORRECT_PLA 小行星
7 CorrectType.FEC_CORRECT_CYC_SPL 剪开圆柱
安装方式,通过注解定义。
0 PlaceType.FEC_NULL 无安装
1 PlaceType.FEC_PLACE_WALL 壁装
2 PlaceType.FEC_PLACE_FLOOR 底装
3 PlaceType.FEC_PLACE_CEILING 顶装
安装方式与矫正方式关系表
矫正方式 壁装 底装 顶装
FEC_CORRECT_PTZ 支持 支持 支持
FEC_CORRECT_180 支持 支持
FEC_CORRECT_360 支持 支持 支持
矫正方式 壁装 底装 顶装
FEC_CORRECT_LAT 支持
FEC_CORRECT_SEM 支持 支持
FEC_CORRECT_CYC 支持 支持
FEC_CORRECT_CYC_SPL 支持 支持
FEC_CORRECT_PLA 支持 支持
*/
setFishEyeMode() {
var correctType : Int = 0;
var placeType : Int = 0;
(this.$refs['dnPlayer'] as DnxHikvisionElement).setFishEyeMode(correctType, placeType, (res) => {
console.log(JSON.stringify(res))
})
},
/**
* 设置初始鱼眼PTZ参数
* 返回0代表操作成功,其他为错误码
* originalX float 初始X坐标值
originalY float 初始Y坐标值
surfaceWidth int 当前播放View的宽度
surfaceHeight int 当前播放View的高度
*/
setOriginalFECParam() {
var originalX = 1.0.toFloat();
var originalY = 1.0.toFloat();
var surfaceWidth : Int = 200;
var surfaceHeight : Int = 100;
(this.$refs['dnPlayer'] as DnxHikvisionElement).setOriginalFECParam(originalX, originalY, surfaceWidth, surfaceHeight)
},
/**
* 处理鱼眼矫正参数
* 打开鱼眼功能后,根据手势的不同,设置不同的矫正参数,展示对应的效果
* 返回0代表操作成功,其他为错误码
* isZoom boolean 是否缩放
zoom float 缩放系数
zoom3D float 3D缩放比例
curX float 当前X坐标值
curY float 当前Y坐标值
*/
handleFishEyeCorrect() {
var isZoom = true;
var zoom = 1.0.toFloat();
var zoom3D = 1.0.toFloat();
var curX = 0.0.toFloat();
var curY = 0.0.toFloat();
(this.$refs['dnPlayer'] as DnxHikvisionElement).handleFishEyeCorrect(isZoom, zoom, zoom3D, curX, curY)
},
}
}
</script>
<style>
</style>