Files
Smart-Farm/uniapp/uni-app/node_modules/ezuikit-js/README.md
2025-12-22 17:13:05 +08:00

430 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# [EZUIKit-JavaScript-npm][ezuikit-js]
>轻应用npm版本降低接入难度适配自定义UI适配主流框架
> 低延时预览云存储回放SD卡回放
> 功能API丰富播放控制音频控制视频截图实时获取视频OSDTime视频录制设备对讲电子放大全屏等
### 获取ezuikit-js
```
$ npm install ezuikit-js
```
### 引入ezuikit-js
```
import EZUIKit from 'ezuikit-js';
```
#### 如果你使用原生方法,可以通过标签引用
```
<script src="./ezuikit.js"></script>
```
### 开始使用 - 初始化
>基本使用
创建DOM
```
<div id="video-container"></div>
```
## 播放器初始化
### 直播
```
var player = new EZUIKit.EZUIKitPlayer({
id: 'video-container', // 视频容器ID
accessToken: 'at.3bvmj4ycamlgdwgw1ig1jruma0wpohl6-48zifyb39c-13t5am6-yukyi86mz',
url: 'ezopen://open.ys7.com/G39444019/1.live',
width: 600,
height: 400,
})
```
### 回放
```
var player = new EZUIKit.EZUIKitPlayer({
id: 'video-container', // 视频容器ID
width: 600,
height: 400,
accessToken: 'at.3bvmj4ycamlgdwgw1ig1jruma0wpohl6-48zifyb39c-13t5am6-yukyi86mz',
url: 'ezopen://open.ys7.com/G39444019/1.rec'
})
```
#### tips
为方便开发者快速接入
我们提供了测试accessToken,测试播放地址并提供了几种常用场景使用示例。你可以通过使用示例使用测试播放地址测试accessToken在你的应用快速接入。
<b>测试播放地址:</b> ezopen://open.ys7.com/G39444019/1.live
你可以通过以下地址获取到测试accessToken <a href="https://open.ys7.com/jssdk/ezopen/demo/token" target="_blank">获取测试accessToken</a> 用来播放上述测试播放地址。
### 使用示例
<b>基本使用:</b> <a href="https://github.com/Ezviz-OpenBiz/EZUIKit-JavaScript-npm/blob/master/demos/base-demo/base.html" target="_blank">基本使用示例</a>
<b>自定义主题:</b> <a href="https://github.com/Ezviz-OpenBiz/EZUIKit-JavaScript-npm/blob/master/demos/base-demo/template.html" target="_blank">自定义主题示例</a>
<b>本地主题配置:</b> <a href="https://github.com/Ezviz-OpenBiz/EZUIKit-JavaScript-npm/blob/master/demos/base-demo/themeData.html" target="_blank">本地主题配置示例</a>
<b>PC端预览-固定主题:</b>
<a href="https://github.com/Ezviz-OpenBiz/EZUIKit-JavaScript-npm/blob/master/demos/base-demo/pcLive.html" target="_blank">PC端预览-固定主题示例</a>
<b>PC端回放-固定主题:</b>
<a href="https://github.com/Ezviz-OpenBiz/EZUIKit-JavaScript-npm/blob/master/demos/base-demo/pcRec.html" target="_blank">PC端回放-固定主题示例</a>
<b>移动端预览-固定主题:</b>
<a href="https://github.com/Ezviz-OpenBiz/EZUIKit-JavaScript-npm/blob/master/demos/base-demo/mobileLive.html" target="_blank">移动端预览-固定主题示例</a>
<b>移动端回放-固定主题:</b>
<a href="https://github.com/Ezviz-OpenBiz/EZUIKit-JavaScript-npm/blob/master/demos/base-demo/mobileRec.html" target="_blank">移动端回放-固定主题示例</a>
<b>单页面多实例(视频多窗口)</b>
<a href="https://github.com/Ezviz-OpenBiz/EZUIKit-JavaScript-npm/blob/master/demos/base-demo/multi.html" target="_blank">单页面多实例(视频多窗口)示例</a>
#### 附录: 初始化参数说明
<table>
<tr><th>参数名</th><th>类型</th><th>描述</th><th>是否必选</th></tr>
<tr><td>id</td><td>String</td><td>播放器容器DOM的id</td><td>Y</td></tr>
<tr><td>accessToken</td><td>String</td><td>授权过程获取的access_token</td><td>Y</td></tr>
<tr><td>url</td><td>String</td><td>
#### 直播
##### 标清
ezopen://open.ys7.com/${设备序列号}/{通道号}.live<br/>
##### 高清
ezopen://open.ys7.com/${设备序列号}/{通道号}.hd.live<br/>
#### 回放
##### sd卡回放
初始化参数 url值为<br/>
ezopen://open.ys7.com/${设备序列号}/{通道号}.rec?begin=yyyyMMddhhmmss
##### 云存储回放
初始化参数 url值为<br/>
ezopen://open.ys7.com/${设备序列号}/{通道号}.cloud.rec?begin=yyyyMMddhhmmss
视频ezopen协议播放地址 详见:<a href="http://open.ys7.com/doc/zh/readme/ezopen.html" target="_blank">ezopen协议</a> </td><td>Y</td></tr>
<tr><td>audio</td><td>int</td><td>是否默认开启声音 1打开默认 0关闭 </td><td>N</td></tr>
<tr><td>width</td><td>int</td><td>视频宽度默认值为容器容器DOM宽度 </td><td>Y</td></tr>
<tr><td>height</td><td>int</td><td>视频高度默认值为容器容器DOM高度</td><td>Y</td></tr>
<tr><td>template</td><td>String</td><td>
<table style="display:inline-block;width:700px">
<tr><th>模板值</th><th>描述</th></tr>
<tr><td>simple</td><td>极简版 *固定模板 仅包含视频播放窗口,创建实例后通过方法集控制视频播<br />放相关功能</td></tr>
<tr><td>standard</td><td>标准版; *固定模板 包含视频窗口,叠加了停止,录制,全屏控件(通过<br />控件快捷调用方法集合控制视频播放相关功能,但你仍然可以通过方法集直接控制视频播放相关功<br />能。下同)</td></tr>
<tr><td>security</td><td>安防版(预览回放); *固定模板 包含视频窗口,叠加了录制,全屏控件,<br />标清/高清切换,预览录制切换控件*</td></tr>
<tr><td>voice</td><td>语音版; *固定模板 包含视频窗口,叠加了录制,全屏控件,语音播报,语音<br />对讲控件*</td></tr>
<tr><td>pcLive</td><td> *固定模板 按钮列表颜色底部头部背景色固定可用于pc端预览如需<br />修改按钮配置,头部底部背景色,可参考 {{自定义themeId}},或者使用<br />themeData本地配置*</td></tr>
<tr><td>pcRec</td><td> *固定模板 按钮列表,颜色,底部头部背景色固定, 可用于pc端回放如需<br />修改按钮配置,头部底部背景色,可参考 {{自定义themeId}}或者使用themeData<br />本地配置*</td></tr>
<tr><td>mobileLive</td><td> *固定模板 按钮列表,颜色,底部头部背景色固定,可用于移动端预<br />览,如需修改按钮配置,头部底部背景色,可参考 {{自定义themeId}}或者使用themeData<br />本地配置*</td></tr>
<tr><td>mobileRec</td><td>*固定模板 按钮列表,颜色,底部头部背景色固定, 可用于移动端回放,<br />如需修改按钮配置,头部底部背景色,可参考 {{自定义themeId}}或者使用themeData<br />本地配置*</td></tr>
<tr><td>{{自定义themeId}}</td><td>(建议使用)开放平台提供了查询账号下主题列表,增加主题<br />,修改主题,删除主题接口。<br />你可以通过调用开放平台提供的接口自定义创建多个主题根据主题Id动<br />态渲染头部,底部样式,按钮隐藏显示,排布及按钮样式<br />
<a href="https://resource.eziot.com/group2/M00/00/79/CtwQFmI8d_mAC8-eAAA1PBGvsds71.json" target="_blank">接口示例下载请导入postman查看示例</a>
</td></tr>
<tr><td>theme</td><td>自定义主题,<a href="https://open.ys7.com/console/ezopenIframe.html" target="_blank">开放平台控制台配置</a><br />v0.3.0版本及以上支持,建议使用 自定义themeId或者使用themeData本地<br />配置);</td></tr>
</table>
</td></tr>
<tr><td>themeData</td><td>Object</td><td>
themeData将主题数据本地化设置本地数据需要删除template参数 <br />
你可以通过themeData修改按钮位置颜色头部底部颜色等配置。
配置示例:
<pre><code>
{
"header": {
"color": "#1890ff",
"activeColor": "#FFFFFF",
"backgroundColor": "#000000",
"btnList": [
{
"iconId": "deviceID",
"part": "left",
"defaultActive": 0,
"memo": "顶部设备名称",
"isrender": 1
},
{
"iconId": "deviceName",
"part": "left",
"defaultActive": 0,
"memo": "顶部设备ID",
"isrender": 1
},
{
"iconId": "cloudRec",
"part": "right",
"defaultActive": 0,
"memo": "顶部设备ID",
"isrender": 0
},
{
"iconId": "rec",
"part": "right",
"defaultActive": 0,
"memo": "顶部设备ID",
"isrender": 0
}
]
},
"footer": {
"color": "#FFFFFF",
"activeColor": "#1890FF",
"backgroundColor": "#00000021",
"btnList": [
{
"iconId": "play",
"part": "left",
"defaultActive": 1,
"memo": "播放",
"isrender": 1
},
{
"iconId": "capturePicture",
"part": "left",
"defaultActive": 0,
"memo": "截屏按钮",
"isrender": 1
},
{
"iconId": "sound",
"part": "left",
"defaultActive": 0,
"memo": "声音按钮",
"isrender": 1
},
{
"iconId": "pantile",
"part": "left",
"defaultActive": 0,
"memo": "云台控制按钮",
"isrender": 1
},
{
"iconId": "recordvideo",
"part": "left",
"defaultActive": 0,
"memo": "录制按钮",
"isrender": 1
},
{
"iconId": "talk",
"part": "left",
"defaultActive": 0,
"memo": "对讲按钮",
"isrender": 1
},
{
"iconId": "hd",
"part": "right",
"defaultActive": 0,
"memo": "清晰度切换按钮",
"isrender": 1
},
{
"iconId": "webExpend",
"part": "right",
"defaultActive": 0,
"memo": "网页全屏按钮",
"isrender": 1
},
{
"iconId": "expend",
"part": "right",
"defaultActive": 0,
"memo": "全局全屏按钮",
"isrender": 1
}
]
}
}
</code></pre>
</td><td>N</td></tr>
<tr><td>plugin</td><td>String</td><td>按需加载插件,可选值: talk对讲示例plugin:["talk"] </td><td>N</td></tr>
<tr><td>handleSuccess</td><td>function</td><td>自动播放成功回调</td><td>N</td></tr>
<tr><td>poster</td><td>String</td><td>视频默认封面 版本号> v0.4.6 </td><td>N</td></tr>
</table>
### 方法调用
> 同步方法方式1
> 方法支持通过promise回调可通过回调方式执行下一步动作方式2
#### 开始播放
```
// 方式1
player.play();
// 方式2
player.play()
.then(()=>{
console.log("执行播放成功后其他动作");
});
```
#### 停止播放
```
// 方式1
player.stop();
// 方式2
player.stop()
.then(()=>{
console.log("执行停止成功后其他动作");
});
```
#### 开启声音
```
// 方式1
player.openSound();
// 方式2
player.openSound()
.then(()=>{
console.log("执行开启声音成功后其他动作");
});
```
#### 开始录制
```
// 方式1
player.startSave("唯一文件名");
// 方式2
player.startSave("唯一文件名")
.then(()=>{
console.log("执行开始录制成功后其他动作");
});
```
#### 停止录制并下载文件
```
// 方式1
player.stopSave();
// 方式2
player.stopSave()
.then(()=>{
console.log("执行停止录制成功后其他动作");
});
```
#### 抓图
```
// 方式1 - 下载到本地
player.capturePicture("文件名");
// 方式2 - 返回base64格式
const capCallback = (data) => {
console.log("data",data)
}
player.capturePicture('default',capCallback)
```
#### 开始对讲
```
player.startTalk();
```
#### 结束对讲
```
player.stopTalk();
```
#### 全屏
```
player.fullScreen();
```
#### 取消全屏
```
player.cancelFullScreen();
```
#### 获取OSD时间
```
player.getOSDTime()
.then((time)=>{
console.log("获取到的当前播放时间", time);
});
```
#### 切换地址播放
> 可用于在播放中切换设备,切换播放参数,以及直播切换回放等
```
player.changePlayUrl(options)
.then(()=>{
console.log("切换成功")
});
```
options参数说明
|参数名|类型|描述|是否必选|
|:--|:--|:--|:--|
|type| String| 播放地址类型,"live":预览,"rec"回放“cloud.rec”云存储回放| Y|
|accessToken| String| 授权过程获取的access_token| Y|
|deviceSerial | String | 设备序列号,存在英文字母的设备序列号,字母需为大写 | Y |
|channelNo | int | 通道号 | Y |
|hd | boolean | 是否为高清 true-主码流(高清) false-子码流(标清) | Y |
|validCode |String| 设备验证码(加密设备播放需要输入验证码) |Y|
|begin| String | type类型为回放有效开始时间 格式为“YYYYMMDDHHmmss” |N|
|end| String | type类型为回放有效结束时间 格式为 “YYYYMMDDHHmmss” |N|
#### 设置封面
>你可以在初始化时通过参数poster设置默认封面
>实例初始化后可以调用设置封面方法再次更改封面
```
player.setPoster(pictureUrl)
.then(()=>{
console.log("更改封面成功");
});
```
#### 开启电子放大
```
// 方式1
player.enableZoom();
// 方式2
player.enableZoom()
.then(()=>{
console.log("开启电子放大成功");
});
```
#### 关闭电子放大
```
// 方式1
player.closeZoom();
// 方式2
player.closeZoom()
.then(()=>{
console.log("关闭电子放大成功");
});
```
#### 重置画面宽高
```
player.reSize(width, height);
```
### 使用示例
> 如果使用原生js可参考demos => base-demo
> 如果使用react可参考demos => react-demo
> 如果使用vue可参考demos => vue-demo