-
Notifications
You must be signed in to change notification settings - Fork 0
/
video-plugin.ts
283 lines (276 loc) · 7.54 KB
/
video-plugin.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
/**海康视频插件1.4.0
*/
type iStartServiceSzType = "window";
type iStartServiceOptions = { dllPath: ".\/VideoPluginConnect.dll" };
interface anyObj {
[k: string]: any
}
interface iPromiseRes {
success: { (): void };
fail: { (): void }
}
type emptyFun = {
(): void
}
/**布局模式 */
type iLayout = "1x1" | "2x2" | "3x3" | "4x4" | "5x5" | "1x2" | "1+2" | "1+5" | "1+7" | "1+8" | "1+9" | "1+12" | "1+16" | "4+9" | "1+1+12" | "3+4" | "1x4" | "4x6";
/**0关,1开 */
type openClose = 0 | 1;
type iRequestFuncName = "getRSAPubKey" | "init" | "uninit" | "startPreview" | "startPlayback" | "stopAllPreview" | "stopAllPlayback" | "getLayout" | "setLayout" | "snapShot" | "drawOSD"
type iPlayer = {
/**传输协议
* 0-UDP 1-TCP
* default 1
* */
transMode?: 1 | 0;
/** 是否启用 GPU 硬解
* 0-不启用 1-启用
* default:0
*/
gpuMode?: 0 | 1;
/**播放窗口序号
* -1 或未指定-空闲窗口预览,自动下一个空闲窗口
* 0 选中窗口预览
* >0 预览wndId指定的窗口
*/
wndId?: number;
/** 是否直连萤石预览
* 0 或未指定 非直连
* 其他 直连
*/
ezvizDirect?: 0 | 1
}
/** 获取公钥的argument*/
type iRA_getPubKey = {
keyLength: number;
};
/** 初始化的argument*/
type iRA_init = {
/** API 网关提供的 appkey */
appkey: string;
/** API 网关提供的 secret*/
secret: string;
/** API 网关 IP 地址*/
ip: string;
/** 是否启用 HTTPS 协议与平台交互
* 0:http
* 1:https
*/
enableHTTPS?: 0 | 1;
port: number;
/** 播放模式(决定显示预览还是回放界面),
* 0-预览
* 1-录像播放
* */
playMode?: 0 | 1;
/**填充哪些是加密了的字段,多个间以
“,”分割,当前支持对 appkey、secret、
ip、snapDir、layout、videoDir 中的一
个或多个加密
注意:加密使用同一个公钥分别对各个字段的值加密
*/
encryptedFields?: string;
/**抓图存储路径 */
snapDir?: string;
/** 布局 */
layout?: iLayout;
/**紧急录像或录像剪辑存储路径 */
videoDir?: string;
/**是否显示工具栏 0否,1是,默认是 */
showToolbar?: openClose;
showSmart?: openClose;
showIntelligent?: openClose;
/**
* 工具条按钮字符串,多个之间以“,”分割
* 0:监 控 点 名 称 按 钮
* 16:关闭按钮
* 256:预 览 回 放 声 音
* 257:预 览 回 放 抓 图
* 258:预 览 回 放 电 子 放 大
* 259:预览回放显示监控点信息
* 260:小鹰眼
* 512:预览云台控制
* 513:-预览 3D 放大
* 514:预 览 语 音 对 讲
* 515:预 览 主 子 码 流 切 换
* 516:预 览 紧 急 录 像
* 517:预 览 即 时 回 放
* 768:回 放 录 像 剪 辑
* 769:回放录像下载
* 下工具条按指定按钮字符串中按钮 ID顺序来显示
* */
buttonIDs?: string;
/** 重连次数
* 默认值为 0-无限重连
* 0-无限重连
* >0-重连次数
* <0-不重连
*/
reconnectTimes?: number;
/** 重连间隔时间
* 默认5
*/
reconnectDuration?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
}
/** 预览的argument*/
type iRA_preview = {
/**监控点编号 */
cameraIndexCode: string;
/** 主子码流标识
* 0-主码流 1-子码流,默认0
*/
streamMode?: 0 | 1;
} & iPlayer
/**回放的argument */
type iRA_play = {
/**监控点 UUID(监控点编号) */
cameraIndexCode: string;
/** 回放开始时间戳
* 单位:秒,开始播放时间
*/
startTimeStamp: string;
/** 回放结束时间戳 单位秒*/
endTimeStamp: string;
/**录像存储位置
* 0-中心存储 1-设备存储,
* 使用默认值 0
*/
recordLocation?: 0 | 1;
} & iPlayer
type iRA_setLayout = {
layout: iLayout;
}
/**画面字符叠加 */
type iRA_writeText =
{
/**待叠加字符
* 支持“\n”换行,不超过 512 个字符
*/
text: string;
/**相对播放窗口左上角的横坐标起点 */
x: number;
/**相对播放窗口左上角的纵坐标起点 */
y: number;
/**字体颜色
* 默认白色
*/
color?: number;
/**窗口 id */
wndId?: number;
}
/**播放截图 */
type iRA_playShot =
{
/**图片绝对路径名称,如“D:\test.jpg” */
name?: string;
/**播放窗口序号(有效值为 1~获取当前布局中返回的窗口数)*/
wndId?: number;
}
/**JS_RequestInterface返回消息 */
interface responseData {
errorCode: number;
errorModule: number;
uuid: string;
sequence: string;
/** 只需要关注这里*/
responseMsg: {
/**0成功,-1失败 */
code: 0 | -1;
/**错误描述,仅当 errorCode 非 0 时才有错误描述 */
msg: string;
/**返回的数据,如 RSA 公钥 */
data: string;
}
}
/**JS_SetWindowControlCallback 入参函数的参数 */
interface cbResponseData {
uuid: string;
sequence: string;
/** 命令*/
cmd: string;
/**开发者关注点在这 */
responseMsg: {
/**
* 1窗口选中消息
* 2预览/回放播放消息
* 3抓图结果消息
* 4预览紧急录像/回放录像剪辑结果消息
*5进入全屏/退出全屏消息
*/
type: 1 | 2 | 3 | 4 | 5;
msg: {
/**小窗口号 */
wndId: number;
/** 256-正在播放 512-空闲
* 768-开始播放 769-播放失败 770播放异常 816-播放结束
* -1-失败 0-成功
* 1024-进入全屏 1025-退出全屏
*/
result: number;
/**监控点编号 */
cameraIndexcode: string;
/** 扩展参数 窗口选中消息无扩展参数*/
expand: string;
},
}
}
interface WebControl {
JS_StartService: {
(szType: iStartServiceSzType, options?: iStartServiceOptions): Promise<iPromiseRes>
};
/**断开服务接口 */
JS_Disconnect: { (): Promise<iPromiseRes> };
/**调整插件窗口大小、位置接口 */
JS_Resize: { (iWidth: number, iHeight: number): void };
/**
*创建插件窗口
* @param {string} szId 与指定的div的id也就是szPluginContainer相同
* @param {number} iWidth 窗口宽
* @param {number} iHeight 窗口高
* @param {anyObj} [options] 可选参数
* @returns {Promise<iPromiseRes>}
* @memberof WebControl
*/
JS_CreateWnd(szId: string, iWidth: number, iHeight: number, options?: anyObj): Promise<iPromiseRes>;
/**扣除部分插件窗口 */
JS_CuttingPartWindow(iLeft: number, iTop: number, iWidth: number, iHeight: number): void;
/** 扣除插件窗口还原*/
JS_RepairPartWindow(iLeft: number, iTop: number, iWidth: number, iHeight: number): void;
/**插件窗口隐藏 */
JS_HideWnd: emptyFun;
/** 插件窗口显示*/
JS_ShowWnd: emptyFun;
/** 插件窗口销毁*/
JS_DestroyWnd: emptyFun;
/** 唤醒 WebControl.exe*/
JS_WakeUp(szProtocal: "VideoWebPlugin:\/\/"): void;
JS_RequestInterface(args: { funcName: iRequestFuncName, argument?: string }): Promise<responseData>;
/** 设置回调*/
JS_SetWindowControlCallback(cbIntegrationCallBack: (oData: cbResponseData) => void): void
}
/**构造函数入参 */
interface iWebControl {
/**div id */
szPluginContainer: string;
/**开始端口 建议15900*/
iServicePortStart: number;
/**结束端口 建议15909*/
iServicePortEnd: number;
/**用于 IE10 使用 ActiveX 的 clsid */
szClassId: "23BF3B0A-2C56-4D97-9C03-0CB103AA8F11";
/** 创建 WebControl 实例成功 */
cbConnectSuccess(): void;
/** 创建 WebControl 实例失败,可能没有安装插件*/
cbConnectError(): void;
/**
* 插件使用过程中发生的断开与插件服务连接的回调
* bNormalClose = false 时表示异常断开
* bNormalClose = true 时表示正常断开
*/
cbConnectClose(bNormalClose: boolean): void;
}
interface WebControlConstructor extends WebControl {
new(args: iWebControl): WebControl;
(args: iWebControl): WebControl;
}
declare var WebControl: WebControlConstructor