@ezuikit/player-ezopen 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1104 @@
1
+ import * as _ezuikit_utils_service_dist_types_fetch from '@ezuikit/utils-service/dist/types/fetch';
2
+ import { LoggerCls } from '@ezuikit/utils-logger/dist/types/logger';
3
+ import { LoggerOptions } from '@ezuikit/utils-logger';
4
+ import I18n from '@ezuikit/utils-i18n';
5
+ import Service, { DeviceCapacityRes, DeviceInfoRes } from '@ezuikit/utils-service';
6
+ import { EzopenURL } from '@ezuikit/utils-tools';
7
+ import EventEmitter from 'eventemitter3';
8
+
9
+ interface IResult$1<T> {
10
+ data?: T;
11
+ code?: number;
12
+ msg?: string;
13
+ }
14
+ /**
15
+ * 播放器标准接口
16
+ */
17
+ interface PlayerInterface {
18
+ playing: boolean;
19
+ volume: number;
20
+ playbackRate: number;
21
+ deviceCapacity: Record<string, any>;
22
+ i18n: any;
23
+ logger: any;
24
+ event: EventEmitter;
25
+ /**
26
+ * 播放
27
+ * @param options
28
+ * @returns {Promise}
29
+ */
30
+ play: (options?: any) => Promise<unknown>;
31
+ /**
32
+ * 暂停播放
33
+ * @returns
34
+ */
35
+ pause: (bool?: boolean) => Promise<unknown>;
36
+ /**
37
+ * 销毁并断流
38
+ * @returns
39
+ */
40
+ destroy: () => Promise<unknown>;
41
+ /**
42
+ * 截图
43
+ * @param {string} name 文件名 默认时间戳(new Date().getTime())
44
+ * @param {"png" | "jpeg"} fmt 图片格式
45
+ * @param {"base64"} type 文件格式 默认base64
46
+ * @param {boolean} download 是否直接下载 默认不直接下载
47
+ * @returns 返回base64字符
48
+ */
49
+ snapshot: (name?: string, fmt?: 'jpeg', type?: 'base64', download?: boolean) => Promise<IResult$1<{
50
+ fileName?: string;
51
+ base64?: string;
52
+ } | null>>;
53
+ /**
54
+ * 开始录制视频
55
+ * @param {string} name 文件名 默认时间戳(new Date().getTime())
56
+ * @param {"mp4"} fmt 图片格式 默认mp4
57
+ * @returns
58
+ */
59
+ startRecord?: (name?: string, fmt?: 'mp4') => Promise<any>;
60
+ /**
61
+ * 停止录制
62
+ * @returns
63
+ */
64
+ stopRecord?: () => Promise<any>;
65
+ /**
66
+ * 全屏
67
+ * @returns
68
+ */
69
+ fullScreen: () => Promise<void>;
70
+ /**
71
+ * 退出全屏
72
+ * @returns
73
+ */
74
+ exitScreen: () => Promise<void>;
75
+ /**
76
+ * 设置画布/视频的尺寸 不设置 默认使用容器的高宽(充满容器)
77
+ * @param {number=} width 画布的宽度
78
+ * @param {number=} height 画布的高度
79
+ * @returns
80
+ */
81
+ resize: (width?: number, height?: number) => Promise<{
82
+ width: number;
83
+ height: number;
84
+ }>;
85
+ /**
86
+ * 设置音量
87
+ * @param volume 音量 [0-1], 0:表示静音
88
+ * @returns {void}
89
+ */
90
+ setVolume: (volume: number) => void;
91
+ /**
92
+ * 设置封面
93
+ * @param url
94
+ * @returns
95
+ */
96
+ setPoster?: (postUrl: string) => void;
97
+ /**
98
+ * 设置播放速度
99
+ * @param rate
100
+ * @returns
101
+ */
102
+ setPlaybackRate?: (rate: number) => void;
103
+ /**
104
+ * 当前版本号
105
+ * @returns
106
+ */
107
+ getVersion: () => object;
108
+ /**
109
+ * 设置日志打印的级别 INFO | LOG | WARN | ERROR
110
+ *
111
+ *
112
+ * @param {string} level 日志级别 一次从大到小 3 -> 0 (为了更好的扩展)
113
+ * @returns
114
+ */
115
+ setDebug?: (level: 'INFO' | 'LOG' | 'WARN' | 'ERROR') => void;
116
+ }
117
+
118
+ interface PlayerPlugin {
119
+ name: string;
120
+ init?: (player?: PlayerInterface) => void;
121
+ beforeExec?: (player?: PlayerInterface) => boolean | Promise<boolean>;
122
+ exec: (player?: PlayerInterface) => void;
123
+ afterExec?: (player?: PlayerInterface) => void;
124
+ destroy?: (player?: PlayerInterface) => void;
125
+ }
126
+
127
+ /**
128
+ * 环境
129
+ */
130
+ interface PlayerEnv {
131
+ domain: string;
132
+ wsUrl?: string;
133
+ }
134
+ interface PlayerOptions {
135
+ /**
136
+ * dom id
137
+ */
138
+ id: string;
139
+ /**
140
+ * 视频封面
141
+ */
142
+ poster?: string;
143
+ /**
144
+ * 播放地址
145
+ */
146
+ url: string;
147
+ /**
148
+ *
149
+ */
150
+ accessToken?: string;
151
+ deviceSerial?: string;
152
+ /**
153
+ * 自动播放
154
+ */
155
+ autoPlay?: boolean;
156
+ /**
157
+ * 是否开启音频
158
+ */
159
+ audio?: boolean;
160
+ /**
161
+ * 环境变量
162
+ */
163
+ env?: PlayerEnv;
164
+ }
165
+ interface IResult<T> {
166
+ data?: T;
167
+ code?: number;
168
+ msg?: string;
169
+ }
170
+
171
+ interface IStreamClient {
172
+ /**
173
+ * @description 开流, 此时设备的流还没有发出来
174
+ * @param {string} szUrl 取流路径,如ws://hostname:port/channel
175
+ * @param {object} oParams 取流需要涉及的相关参数
176
+ * @param {function} cbMessage 消息回调函数
177
+ * @param {function} cbClose 失败回调
178
+ * @returns {Promise<string>} 返回Promise对象 // 取流uuid,用于区分每条取流连接
179
+ */
180
+ openStream: (szUrl: string, oParams: object, cbMessage: (msg: object) => void, cbClose: () => void) => Promise<string>;
181
+ /**
182
+ * @description 开始取流
183
+ *
184
+ * @param {string} id websocket id,在openStream的时候生成
185
+ * @param {string} szStartTime 开始时间
186
+ * @param {string} szStopTime 结束时间
187
+ * @param {function} cbMessage 码流回调函数
188
+ *
189
+ * @returns {Promise<unknown>} 返回Promise对象
190
+ */
191
+ startPlay: (id: string, szStartTime?: string, szStopTime?: string) => Promise<unknown>;
192
+ singleFrame: () => void;
193
+ /**
194
+ * @description 设置倍率
195
+ *
196
+ * @param {string} id websocket id在openStream的时候生成
197
+ * @param {number} iRate 播放倍率
198
+ *
199
+ * @returns {Promise<unknown>} Promise
200
+ */
201
+ setPlayRate: (id: string, iRate: number) => Promise<unknown>;
202
+ /**
203
+ * @description 定位回放
204
+ *
205
+ * @param {string} id websocket id在openStream的时候生成
206
+ * @param {string} szStartTime 开始时间
207
+ * @param {string} szStopTime 结束时间
208
+ *
209
+ * @returns {Promise<unknown>} Promise
210
+ */
211
+ seek: (id: string, szStartTime: string, szStopTime: string) => Promise<unknown>;
212
+ /**
213
+ * @description 暂停取流
214
+ *
215
+ * @param {string} id websocket id,在openStream的时候生成
216
+ *
217
+ * @returns {Promise<unknown>} 返回Promise对象
218
+ */
219
+ pause: (id: string) => Promise<unknown>;
220
+ /**
221
+ * @description 透传协议
222
+ *
223
+ * @param {string} id websocket id,在openStream的时候生成
224
+ * @param {string} szCmd, 透传的命令码
225
+ *
226
+ * @returns {Promise<unknown>} 返回Promise对象
227
+ */
228
+ transmission: (id: string, szCmd: string) => Promise<unknown>;
229
+ /**
230
+ * @description 恢复取流
231
+ *
232
+ * @param {string} id websocket id,在openStream的时候生成
233
+ *
234
+ * @returns {Promise<unknown>} 返回Promise对象
235
+ */
236
+ resume: (id: string) => Promise<unknown>;
237
+ /**
238
+ * @description 停止取流
239
+ *
240
+ * @param {string} id websocket id,在openStream的时候生成
241
+ *
242
+ * @returns {Promise<unknown>} 返回Promise对象
243
+ */
244
+ stop: (id: string) => Promise<unknown>;
245
+ stopAll: () => Promise<unknown>;
246
+ }
247
+ declare class StreamClient {
248
+ private readonly _player;
249
+ private _streamClient;
250
+ _streamUUID: string;
251
+ constructor(player: EZopenPlayer);
252
+ /**
253
+ * @description 开流, 此时设备的流还没有发出来
254
+ * @param {string} szUrl 取流路径,如ws://hostname:port/channel
255
+ * @param {object} oParams 取流需要涉及的相关参数
256
+ * @param {function} cbMessage 消息回调函数
257
+ * @param {function} cbClose 失败回调
258
+ * @returns {Promise<string>} 返回Promise对象 // 取流uuid,用于区分每条取流连接
259
+ */
260
+ openStream(szUrl: string, oParams: object, cbMessage: (msg: object) => void, cbClose: (id?: string) => void): Promise<string>;
261
+ /**
262
+ * @description 开始取流
263
+ *
264
+ * @param {string} id websocket id,在openStream的时候生成
265
+ * @param {string} szStartTime 开始时间
266
+ * @param {string} szStopTime 结束时间
267
+ * @param {function} cbMessage 码流回调函数
268
+ *
269
+ * @returns {Promise<unknown>} 返回Promise对象
270
+ */
271
+ startPlay(id?: string): Promise<void>;
272
+ /**
273
+ * @description 设置播放速度
274
+ * @param rate 播放速度
275
+ * @param uuid websocket id,在openStream的时候生成
276
+ * @returns
277
+ */
278
+ setPlayRate(rate: number, id?: string): Promise<void>;
279
+ /**
280
+ * @description 定位回放
281
+ *
282
+ * @param {string} id websocket id在openStream的时候生成
283
+ * @param {string} startTime 开始时间
284
+ * @param {string} stopTime 结束时间
285
+ *
286
+ * @returns {Promise<unknown>} Promise
287
+ */
288
+ seek(startTime: string, stopTime: string, id?: string): Promise<void>;
289
+ /**
290
+ * @description 停止所有流
291
+ * @returns
292
+ */
293
+ stopAll(): Promise<void>;
294
+ /**
295
+ * @description 客户端销毁
296
+ */
297
+ destroy(): void;
298
+ }
299
+
300
+ declare class ESCanvas {
301
+ constructor(szCanvasId: any);
302
+ m_iCanvasWidth: any;
303
+ m_iCanvasHeight: any;
304
+ m_iHorizontalResolution: number;
305
+ m_iVerticalResolution: number;
306
+ m_szDisplayMode: string;
307
+ m_szVideoFormat: string;
308
+ setDrawMutiShapeOneTime(bDrawMuti: any): void;
309
+ setMaxShapeSupport(iMax: any): void;
310
+ getMaxShapeSupport(): number;
311
+ setDrawStatus(bDrawStatus: any, cbCallback?: any): void;
312
+ setShapeType(szType: any): void;
313
+ setCurrentShapeInfo(oShapeInfo: any): void;
314
+ getShapeType(): string;
315
+ getAllShapesInfo(): (
316
+ | {
317
+ szType: any;
318
+ szGridMap: any;
319
+ iGridColNum: any;
320
+ iGridRowNum: any;
321
+ szText?: undefined;
322
+ szEnabled?: undefined;
323
+ szOSDType?: undefined;
324
+ iPositionX?: undefined;
325
+ iPositionY?: undefined;
326
+ szDateStyle?: undefined;
327
+ szClockType?: undefined;
328
+ szDisplayWeek?: undefined;
329
+ szId?: undefined;
330
+ szAlignment?: undefined;
331
+ aPoint?: undefined;
332
+ bChoosed?: undefined;
333
+ }
334
+ | {
335
+ szType: any;
336
+ szText: any;
337
+ szEnabled: any;
338
+ szOSDType: any;
339
+ iPositionX: any;
340
+ iPositionY: any;
341
+ szDateStyle: any;
342
+ szClockType: any;
343
+ szDisplayWeek: any;
344
+ szId: any;
345
+ szAlignment: any;
346
+ szGridMap?: undefined;
347
+ iGridColNum?: undefined;
348
+ iGridRowNum?: undefined;
349
+ aPoint?: undefined;
350
+ bChoosed?: undefined;
351
+ }
352
+ | {
353
+ szType: any;
354
+ aPoint: any;
355
+ szId: any;
356
+ bChoosed: any;
357
+ szGridMap?: undefined;
358
+ iGridColNum?: undefined;
359
+ iGridRowNum?: undefined;
360
+ szText?: undefined;
361
+ szEnabled?: undefined;
362
+ szOSDType?: undefined;
363
+ iPositionX?: undefined;
364
+ iPositionY?: undefined;
365
+ szDateStyle?: undefined;
366
+ szClockType?: undefined;
367
+ szDisplayWeek?: undefined;
368
+ szAlignment?: undefined;
369
+ }
370
+ )[];
371
+ deleteRepeatPolyonById(id: any): void;
372
+ getShapesInfoByType(szType: any): (
373
+ | {
374
+ szType: any;
375
+ szGridMap: any;
376
+ iGridColNum: any;
377
+ iGridRowNum: any;
378
+ szText?: undefined;
379
+ szEnabled?: undefined;
380
+ szOSDType?: undefined;
381
+ iPositionX?: undefined;
382
+ iPositionY?: undefined;
383
+ szDateStyle?: undefined;
384
+ szClockType?: undefined;
385
+ szDisplayWeek?: undefined;
386
+ szId?: undefined;
387
+ szAlignment?: undefined;
388
+ iPolygonType?: undefined;
389
+ iMinClosed?: undefined;
390
+ iMaxPointNum?: undefined;
391
+ iEditType?: undefined;
392
+ aPoint?: undefined;
393
+ bClosed?: undefined;
394
+ szTips?: undefined;
395
+ szDrawColor?: undefined;
396
+ szFillColor?: undefined;
397
+ iTranslucent?: undefined;
398
+ iLineType?: undefined;
399
+ iDirection?: undefined;
400
+ iArrowType?: undefined;
401
+ aCrossArrowPoint?: undefined;
402
+ }
403
+ | {
404
+ szType: any;
405
+ szText: any;
406
+ szEnabled: any;
407
+ szOSDType: any;
408
+ iPositionX: any;
409
+ iPositionY: any;
410
+ szDateStyle: any;
411
+ szClockType: any;
412
+ szDisplayWeek: any;
413
+ szId: any;
414
+ szAlignment: any;
415
+ szGridMap?: undefined;
416
+ iGridColNum?: undefined;
417
+ iGridRowNum?: undefined;
418
+ iPolygonType?: undefined;
419
+ iMinClosed?: undefined;
420
+ iMaxPointNum?: undefined;
421
+ iEditType?: undefined;
422
+ aPoint?: undefined;
423
+ bClosed?: undefined;
424
+ szTips?: undefined;
425
+ szDrawColor?: undefined;
426
+ szFillColor?: undefined;
427
+ iTranslucent?: undefined;
428
+ iLineType?: undefined;
429
+ iDirection?: undefined;
430
+ iArrowType?: undefined;
431
+ aCrossArrowPoint?: undefined;
432
+ }
433
+ | {
434
+ szType: any;
435
+ szId: any;
436
+ iPolygonType: any;
437
+ iMinClosed: any;
438
+ iMaxPointNum: any;
439
+ iEditType: any;
440
+ aPoint: any;
441
+ bClosed: any;
442
+ szTips: any;
443
+ szDrawColor: any;
444
+ szFillColor: any;
445
+ iTranslucent: any;
446
+ szGridMap?: undefined;
447
+ iGridColNum?: undefined;
448
+ iGridRowNum?: undefined;
449
+ szText?: undefined;
450
+ szEnabled?: undefined;
451
+ szOSDType?: undefined;
452
+ iPositionX?: undefined;
453
+ iPositionY?: undefined;
454
+ szDateStyle?: undefined;
455
+ szClockType?: undefined;
456
+ szDisplayWeek?: undefined;
457
+ szAlignment?: undefined;
458
+ iLineType?: undefined;
459
+ iDirection?: undefined;
460
+ iArrowType?: undefined;
461
+ aCrossArrowPoint?: undefined;
462
+ }
463
+ | {
464
+ szType: any;
465
+ szId: any;
466
+ aPoint: any;
467
+ szTips: any;
468
+ iLineType: any;
469
+ iDirection: any;
470
+ iArrowType: any;
471
+ szDrawColor: any;
472
+ aCrossArrowPoint: any;
473
+ szGridMap?: undefined;
474
+ iGridColNum?: undefined;
475
+ iGridRowNum?: undefined;
476
+ szText?: undefined;
477
+ szEnabled?: undefined;
478
+ szOSDType?: undefined;
479
+ iPositionX?: undefined;
480
+ iPositionY?: undefined;
481
+ szDateStyle?: undefined;
482
+ szClockType?: undefined;
483
+ szDisplayWeek?: undefined;
484
+ szAlignment?: undefined;
485
+ iPolygonType?: undefined;
486
+ iMinClosed?: undefined;
487
+ iMaxPointNum?: undefined;
488
+ iEditType?: undefined;
489
+ bClosed?: undefined;
490
+ szFillColor?: undefined;
491
+ iTranslucent?: undefined;
492
+ }
493
+ | {
494
+ szType: any;
495
+ iEditType: any;
496
+ aPoint: any;
497
+ szTips: any;
498
+ szDrawColor: any;
499
+ szFillColor: any;
500
+ iTranslucent: any;
501
+ szGridMap?: undefined;
502
+ iGridColNum?: undefined;
503
+ iGridRowNum?: undefined;
504
+ szText?: undefined;
505
+ szEnabled?: undefined;
506
+ szOSDType?: undefined;
507
+ iPositionX?: undefined;
508
+ iPositionY?: undefined;
509
+ szDateStyle?: undefined;
510
+ szClockType?: undefined;
511
+ szDisplayWeek?: undefined;
512
+ szId?: undefined;
513
+ szAlignment?: undefined;
514
+ iPolygonType?: undefined;
515
+ iMinClosed?: undefined;
516
+ iMaxPointNum?: undefined;
517
+ bClosed?: undefined;
518
+ iLineType?: undefined;
519
+ iDirection?: undefined;
520
+ iArrowType?: undefined;
521
+ aCrossArrowPoint?: undefined;
522
+ }
523
+ | {
524
+ szType: any;
525
+ aPoint: any;
526
+ szGridMap?: undefined;
527
+ iGridColNum?: undefined;
528
+ iGridRowNum?: undefined;
529
+ szText?: undefined;
530
+ szEnabled?: undefined;
531
+ szOSDType?: undefined;
532
+ iPositionX?: undefined;
533
+ iPositionY?: undefined;
534
+ szDateStyle?: undefined;
535
+ szClockType?: undefined;
536
+ szDisplayWeek?: undefined;
537
+ szId?: undefined;
538
+ szAlignment?: undefined;
539
+ iPolygonType?: undefined;
540
+ iMinClosed?: undefined;
541
+ iMaxPointNum?: undefined;
542
+ iEditType?: undefined;
543
+ bClosed?: undefined;
544
+ szTips?: undefined;
545
+ szDrawColor?: undefined;
546
+ szFillColor?: undefined;
547
+ iTranslucent?: undefined;
548
+ iLineType?: undefined;
549
+ iDirection?: undefined;
550
+ iArrowType?: undefined;
551
+ aCrossArrowPoint?: undefined;
552
+ }
553
+ )[];
554
+ setShapesInfoByType(szType: any, aShapesInfo: any): void;
555
+ addOSDShape(szText: any, szEnabled: any, iStartX: any, iStartY: any, oExtend: any): void;
556
+ selectShapeById(szShapeType: any, szId: any): void;
557
+ setCanvasSize(iWidth: any, iHeight: any): void;
558
+ setDrawStyle(szBorderColor: any, szFillColor: any, iTranslucent: any): void;
559
+ clearAllShape(): void;
560
+ clearShapeByType(szType: any): void;
561
+ deleteShape(iShapeIndex: any): void;
562
+ updateCanvas(szCanvasId: any): void;
563
+ resizeCanvas(): void;
564
+ canvasRedraw(): void;
565
+ [CANVAS]: any;
566
+ [CONTEXT]: any;
567
+ [SHAPES]: any[];
568
+ [DRAWSTATUS]: boolean;
569
+ [SHAPETYPE]: string;
570
+ [MAXSHAPENUMSUPPORT]: number;
571
+ [DRAWSHAPEMULTIONETIME]: boolean;
572
+ [CURRENTSHAPEINFO]: {};
573
+ [EVENTCALLBACK]: any;
574
+ [SHAPESTYLE]: {
575
+ szDrawColor: string;
576
+ szFillColor: string;
577
+ iTranslucent: number;
578
+ };
579
+ [POLYGONDRAWING]: boolean;
580
+ }
581
+ declare const CANVAS: unique symbol;
582
+ declare const CONTEXT: unique symbol;
583
+ declare const SHAPES: unique symbol;
584
+ declare const DRAWSTATUS: unique symbol;
585
+ declare const SHAPETYPE: unique symbol;
586
+ declare const MAXSHAPENUMSUPPORT: unique symbol;
587
+ declare const DRAWSHAPEMULTIONETIME: unique symbol;
588
+ declare const CURRENTSHAPEINFO: unique symbol;
589
+ declare const EVENTCALLBACK: unique symbol;
590
+ declare const SHAPESTYLE: unique symbol;
591
+ declare const POLYGONDRAWING: unique symbol;
592
+
593
+ declare const JSPlayCtrl: any;
594
+
595
+ /**
596
+ * @description 播放器窗口
597
+ * @warn 后续会弱化 id
598
+ */
599
+ declare class PlayerWindow {
600
+ id: string;
601
+ width: number;
602
+ height: number;
603
+ style: Record<string, string>;
604
+ $playerWnd: HTMLDivElement;
605
+ canvasId: string;
606
+ constructor(id: string, width: number, height: number, style?: Record<string, string>);
607
+ /**
608
+ * @description 渲染播放器窗口
609
+ * @returns
610
+ */
611
+ render(): void;
612
+ /**
613
+ * @description canvas 隐藏 (由于 v3 切换播放地址时 上个canvas 还在 页面resize canvas 会崩溃 变成白色, 使用改方法配合 reRenderCanvas)
614
+ */
615
+ hide(): void;
616
+ /**
617
+ * @description 销毁播放器窗口
618
+ */
619
+ destroy(): void;
620
+ /**
621
+ * @description 窗口resize
622
+ * @param {number} width 窗口的宽 (画布, 不包括自定义主题)
623
+ * @param {number} height 窗口的高 (画布, 不包括自定义主题)
624
+ * @returns {void}
625
+ */
626
+ resize(width: number, height: number): void;
627
+ /**
628
+ *
629
+ * @param {boolean} remove 是否移除
630
+ * @returns
631
+ */
632
+ reRenderCanvas(remove?: boolean): void;
633
+ }
634
+
635
+ interface WasmDecoderStatue {
636
+ bSupHardOrSoft: boolean;
637
+ bSupHardDecAVC: boolean;
638
+ bSupHardDecHEVC: boolean;
639
+ cmd: 'loaded' | 'onebyone';
640
+ errorCode: number;
641
+ status: any;
642
+ }
643
+
644
+ type Zoom3DCallback = (oRECT?: any) => void;
645
+
646
+ type SnapshotFmt = 'jpeg';
647
+
648
+ /**
649
+ * @description 插件管理系统
650
+ */
651
+ declare class PluginManager {
652
+ context: EZopenPlayer;
653
+ plugins: Map<string, PlayerPlugin>;
654
+ constructor(player: EZopenPlayer);
655
+ /**
656
+ * @description 注册插件做个插件
657
+ * @param plugins
658
+ */
659
+ usePlugins(plugins: PlayerPlugin[]): Promise<void>;
660
+ /**
661
+ * @description 注册插件
662
+ * @param plugins
663
+ */
664
+ use(plugin: PlayerPlugin): Promise<void>;
665
+ /**
666
+ * @description 通过name销毁指定插件
667
+ * @param {string} name 插件名
668
+ */
669
+ destroyByName(name: string): void;
670
+ /**
671
+ * @description 销毁插件
672
+ */
673
+ destroy(): void;
674
+ }
675
+
676
+ /***
677
+ * 鱼眼矫正
678
+ *
679
+ */
680
+ declare class FECCorrect {
681
+ _FECSplitIds: string | undefined;
682
+ _canvasFECSubPort: Map<any, any>;
683
+ _correctType: any;
684
+ private readonly _player;
685
+ constructor(player: EZopenPlayer);
686
+ _supportFEC(): boolean | undefined;
687
+ init(): void;
688
+ /**
689
+ * @description 设置矫正类型
690
+ * @param type
691
+ * @param ids
692
+ * @returns
693
+ */
694
+ setFECCorrectType(type: any, ids?: string): Promise<unknown>;
695
+ /**
696
+ * @description 设置 2D 鱼眼矫正旋转参数
697
+ * @param {number} port 鱼眼端口 主屏默认为 0
698
+ * @param {Object} param2d
699
+ */
700
+ setFEC2DParam(port: number, param2d: any): any;
701
+ /**
702
+ * @description 设置 3D 矫正视角参数
703
+ * @param {FECViewParam} param
704
+ * @returns {Promise<boolean>} true: 成功 false: 失败 undefined: 不支持
705
+ */
706
+ setFEC3DViewParam(param: any): Promise<boolean>;
707
+ /**
708
+ * @description 获取 3D 矫正视角参数
709
+ * @param {FECGetViewParam} param
710
+ * @returns {Promise<object>}
711
+ */
712
+ get3DViewParam(param: any): Promise<unknown>;
713
+ getFECSubPortMap(): Map<any, any>;
714
+ /**
715
+ * @description 创建分屏画面
716
+ * @returns
717
+ */
718
+ private _createSplitCanvas;
719
+ private _matchUpDateType;
720
+ /**
721
+ * @description 给分屏添加mouse事件
722
+ * @param {string} canvasId
723
+ * @param {{correctType: string}} type
724
+ * @returns
725
+ */
726
+ private _spliceCanvasMouseEvents;
727
+ /**
728
+ * @description 清空所有鱼眼子端口 不包括主窗口
729
+ */
730
+ private _closeFECAllSubWnd;
731
+ }
732
+
733
+ /**
734
+ * 设置水印参数
735
+ */
736
+ interface WaterMarkParams {
737
+ /** 文本信息(必填) */
738
+ fontString: string[];
739
+ /** 文本位置 字体的位置,fX 表示横坐标,fY 表示纵坐标,取值范围为[0,1],左上角是原点。 */
740
+ startPos?: {
741
+ fX: number;
742
+ fY: number;
743
+ };
744
+ /** 字体颜色信息,取值范围 [0,1] (number/255)。其中 fA 表示透明度,0 时完全透明不显示。 */
745
+ fontColor?: {
746
+ fR: number;
747
+ fG: number;
748
+ fB: number;
749
+ fA: number;
750
+ };
751
+ /** 字体大小,字体宽高设置不一样时,显示出来字体大小为宽高中较小值。建议取值 [0~canvasWidth */
752
+ fontSize?: {
753
+ nFontWidth: number;
754
+ nFontHeight: number;
755
+ };
756
+ /** 字体旋转角度 字体旋 转参数,①fRotateAngle 为旋转角度,单位度(0~360 度)。②fFillFullScreen 为 true 表示铺满全屏,会在 canvas 中斜体显示 n 个,false 表示只显示一行。 */
757
+ fontRotate?: {
758
+ fRotateAngle: number;
759
+ fFillFullScreen: boolean;
760
+ };
761
+ /** 字体 */
762
+ fontFamily?: string;
763
+ /** 当平铺斜体水印时,即 FontRotate. fFillFullScreen 为 true 时,需要用到此参数。nRowNumber 表示行数,nColNumber 列数。会显示 4 行 5 列的斜体水印。取值范围[3,13]。 */
764
+ fontNumber?: {
765
+ nRowNumber: number;
766
+ nColNumber: number;
767
+ };
768
+ /** 多行字间距:建议取值范围[1~2]。 */
769
+ space?: number;
770
+ }
771
+
772
+ type MirrorFlipCommand = 0 | 1 | 2;
773
+
774
+ interface EZopenPlayerOptions extends PlayerOptions {
775
+ logger?: Pick<LoggerOptions, 'level' | 'showTime'>;
776
+ i18n?: any;
777
+ staticPath?: string;
778
+ width?: number;
779
+ height?: number;
780
+ /** 全屏节点 */
781
+ fullScreenEle?: HTMLElement;
782
+ /** 指定解码类型, v1 软解 v3 包括硬解和多线程 */
783
+ decoderType?: 'auto' | 'v1' | 'v3';
784
+ extraParams?: {
785
+ ezopenParams?: Record<string, any>;
786
+ wsParams?: string | Record<string, any>;
787
+ };
788
+ }
789
+ declare class EZopenPlayer implements PlayerInterface {
790
+ _options: EZopenPlayerOptions;
791
+ static EVENT_TYPE: {
792
+ initializing: string;
793
+ loadstart: string;
794
+ abort: string;
795
+ waiting: string;
796
+ canplay: string;
797
+ rateChange: string;
798
+ volumeChange: string;
799
+ debug: string;
800
+ error: string;
801
+ videoInfo: string;
802
+ decoder: string;
803
+ urlChange: string;
804
+ API: {
805
+ play: string;
806
+ pause: string;
807
+ rateChange: string;
808
+ volumeChange: string;
809
+ destroy: string;
810
+ snapshot: string;
811
+ fullScreen: string;
812
+ exitScreen: string;
813
+ resize: string;
814
+ seek: string;
815
+ resume: string;
816
+ };
817
+ NETWORK: {
818
+ deviceCapacity: string;
819
+ deviceInfo: string;
820
+ videoFragmentFiles: string;
821
+ error: {
822
+ error: string;
823
+ deviceCapacity: string;
824
+ deviceInfo: string;
825
+ realPlayUrl: string;
826
+ videoFragmentFiles: string;
827
+ };
828
+ };
829
+ SOCKET: {
830
+ autoClose: string;
831
+ openStream: string;
832
+ startPlay: string;
833
+ stopAll: string;
834
+ setPlayRate: string;
835
+ seek: string;
836
+ close: string;
837
+ };
838
+ CALLBACK: {
839
+ pluginErrorHandler: string;
840
+ getStreamHeaderCallback: string;
841
+ getVideoStreamCallback: string;
842
+ appearFirstFrameCallback: string;
843
+ averageStreamSuccessCallback: string;
844
+ setRunTimeInfoCallBack: string;
845
+ openStreamCallback: string;
846
+ };
847
+ FECCorrect: {
848
+ setFEC2DParam: string;
849
+ };
850
+ };
851
+ logger: LoggerCls;
852
+ i18n: I18n;
853
+ event: EventEmitter;
854
+ wasmplayer: typeof JSPlayCtrl;
855
+ initializing: boolean;
856
+ loading: boolean;
857
+ /** 播放速度 */
858
+ playbackRate: number;
859
+ /** 是否在播放中 */
860
+ playing: boolean;
861
+ /** 音量 [0-1] */
862
+ volume: number;
863
+ /** 已经销毁 */
864
+ destroyed: boolean;
865
+ /** 播放地址 query */
866
+ urlInfo: Partial<EzopenURL>;
867
+ /** 设备能力集 */
868
+ deviceCapacity: Partial<DeviceCapacityRes>;
869
+ deviceInfo: Partial<DeviceInfoRes>;
870
+ /** 当前播放出现的错误 */
871
+ error: object | null;
872
+ /** 服务端接口 */
873
+ service: Service;
874
+ $container: HTMLElement;
875
+ esCanvas: ESCanvas;
876
+ fECCorrect: FECCorrect;
877
+ _oStreamClient: StreamClient;
878
+ _aHead: Uint8Array;
879
+ private _wasmDecoderInfo;
880
+ _g_port: number | null;
881
+ _secretKey: string;
882
+ _tempPauseDate: number | null;
883
+ _tempPauseTime: string;
884
+ _validateCode: string;
885
+ /** 视频信息 */
886
+ __videoInfo: any;
887
+ _waterMarkParams: any;
888
+ _decoderStatus: Partial<WasmDecoderStatue>;
889
+ _wss_info: {
890
+ wssUrl: string;
891
+ oParams: {
892
+ playURL: string;
893
+ };
894
+ };
895
+ __fCallback: Zoom3DCallback;
896
+ __b3DZoom: boolean;
897
+ pluginManager: PluginManager;
898
+ _playerWindow: PlayerWindow;
899
+ private readonly _playerFullScreen;
900
+ constructor(options: EZopenPlayerOptions);
901
+ private _playerInit;
902
+ /**
903
+ * @description 播放
904
+ * @param options
905
+ * @returns
906
+ */
907
+ play(options?: Partial<Pick<EZopenPlayerOptions, 'url' | 'accessToken'>>): Promise<unknown>;
908
+ _wss_play(szUrl: string, oParams?: {
909
+ playURL: string;
910
+ }, iWndNum?: number): Promise<unknown>;
911
+ /**
912
+ * 暂停播放 并断流???
913
+ * @param {boolean} bool 是否断流
914
+ * @returns
915
+ */
916
+ pause(bool?: boolean): Promise<unknown>;
917
+ /**
918
+ * 恢复
919
+ * @param time
920
+ * @returns
921
+ */
922
+ resume(time: string): Promise<unknown>;
923
+ /**
924
+ * @description 销毁并断流
925
+ * @returns
926
+ */
927
+ destroy(): Promise<void>;
928
+ /**
929
+ * @private
930
+ */
931
+ _destroyed(): void;
932
+ stop(): Promise<unknown>;
933
+ /**
934
+ * @description 截图
935
+ * @param {string} name 文件名 默认时间戳(new Date().getTime())
936
+ * @param {"jpeg"} fmt 图片格式 只支持 jpeg
937
+ * @param {"base64"} type 文件格式 默认base64
938
+ * @param {boolean} download 是否直接下载 默认不直接下载
939
+ * @returns 返回base64字符
940
+ */
941
+ snapshot(name?: string, fmt?: SnapshotFmt, type?: 'base64', download?: boolean): Promise<IResult<{
942
+ fileName?: string | undefined;
943
+ base64?: string | undefined;
944
+ } | null>>;
945
+ /**
946
+ * @description 全屏
947
+ * @param {number} width resize 当前画布的宽 (不存在 需手动resize)
948
+ * @param {number} height resize 当前画布的高 (不存在 需手动resize)
949
+ * @returns
950
+ */
951
+ fullScreen(width?: number, height?: number): Promise<void>;
952
+ /**
953
+ * @description 退出全屏
954
+ * @returns
955
+ */
956
+ exitScreen(): Promise<void>;
957
+ /**
958
+ * 设置画布/视频的尺寸 不设置 默认使用容器的高宽(充满容器)
959
+ * @param {number=} width 画布的宽度
960
+ * @param {number=} height 画布的高度
961
+ * @returns
962
+ */
963
+ resize(width?: number, height?: number): Promise<{
964
+ width: number;
965
+ height: number;
966
+ }>;
967
+ /**
968
+ * 设置音量
969
+ * @param {number} volume 音量[0-1], 0:表示静音
970
+ * @returns {0 | 1} 1 成功 0 失败
971
+ */
972
+ setVolume(volume: number): number;
973
+ /**
974
+ * @description 插件管理
975
+ * @param plugin 插件
976
+ */
977
+ use(plugin: PlayerPlugin): void;
978
+ /**
979
+ *
980
+ * @param {Object} type 矫正类型 参考 src/ezopen/constants.js
981
+ * @param {string=} ids 如果分屏矫正,需要传入分屏canvas的id字符串列表 如 canvas1,canvas2,canvas3
982
+ * @returns {Array<{code: number, msg: string, port: number, id: string}>} // code= 0 成功, -1 失败
983
+ * @returns
984
+ */
985
+ setFECCorrectType(type: any, ids?: string): Promise<unknown>;
986
+ /**
987
+ * @description 设置 2D 鱼眼矫正旋转参数
988
+ * @param {number} fishSubPort 鱼眼端口 主屏默认为 0
989
+ * @param {Object} param2d
990
+ */
991
+ setFEC2DParam(fishSubPort: number, param2d: object): any;
992
+ /**
993
+ * @description 设置 3D 矫正视角参数
994
+ * @param {object} param
995
+ * @returns {Promise<boolean>} true: 成功 false: 失败 undefined: 不支持
996
+ */
997
+ setFEC3DViewParam(param: object): Promise<boolean>;
998
+ /**
999
+ * @description 获取 3D 矫正视角参数
1000
+ * @param {object} param
1001
+ * @returns {Promise<object>}
1002
+ */
1003
+ get3DViewParam(param: object): Promise<unknown>;
1004
+ /**
1005
+ * 设置封面
1006
+ * @param {string} poster 封面封面地址
1007
+ * @returns {void}
1008
+ */
1009
+ setPoster(poster: string): void;
1010
+ /**
1011
+ * 设置播放速度
1012
+ * @param {0.5 | 1 | 2 | 4} rate 2的倍数
1013
+ * @returns
1014
+ */
1015
+ setPlaybackRate(rate: number): void;
1016
+ /**
1017
+ * @description seek 新的位置 需要设备支持
1018
+ * @param {string} startTime 开始时间 YYYYMMDDThhmmssZ
1019
+ * @param {string} stopTime 结束时间 YYYYMMDDThhmmssZ
1020
+ * @returns {Promise<void>}
1021
+ */
1022
+ seek(startTime: string, stopTime: string): Promise<void>;
1023
+ private _setOptions;
1024
+ /**
1025
+ * @description 打开3D放大
1026
+ * @param cb
1027
+ * @returns
1028
+ */
1029
+ enable3DZoom(cb: Zoom3DCallback): -1 | 0;
1030
+ /**
1031
+ * @description 关闭3D放大
1032
+ * @returns
1033
+ */
1034
+ disable3DZoom(): -1 | 0;
1035
+ getOSDTime(): number;
1036
+ /**
1037
+ * @description 获取帧信息
1038
+ * @returns {object}
1039
+ */
1040
+ getFrameInfo(): {
1041
+ codecType: number;
1042
+ width: number;
1043
+ height: number;
1044
+ year: number;
1045
+ month: number;
1046
+ day: number;
1047
+ hour: number;
1048
+ minute: number;
1049
+ second: number;
1050
+ };
1051
+ /**
1052
+ * @description 设置播放视频区域 (仅视频不是画布)
1053
+ * @param {number} left 视频展示区域 x轴开始位置
1054
+ * @param {number} right 视频展示区域 x轴结束位置
1055
+ * @param {number} top 视频展示区域 y轴开始位置
1056
+ * @param {number} bottom 视频展示区域 y轴结束位置
1057
+ * @param {boolean} flag
1058
+ * @param {boolean} isFullscreen 当页面旋转 90° 时 需要宽高互换 需要 设置为true
1059
+ * @returns {boolean}
1060
+ */
1061
+ setDisplayRegion(left: number, right: number, top: number, bottom: number, flag?: boolean, isFullscreen?: boolean): boolean;
1062
+ /**
1063
+ * @description 设置解密密钥 (如果在封装时设置了密钥,那么在播放之前需要调用该接口设置密钥才能正常解码。)
1064
+ * @param secretKey 密钥
1065
+ * @returns {number} 1 成功 0 失败
1066
+ */
1067
+ setSecretKey(secretKey: string): any;
1068
+ /**
1069
+ *
1070
+ * @returns
1071
+ */
1072
+ getOptions(): EZopenPlayerOptions;
1073
+ /**
1074
+ * @description 切换调试日志等级
1075
+ * @param {LoggerOptions} loggerOptions 日志等级
1076
+ */
1077
+ setLogger(options: LoggerOptions): void;
1078
+ version: string;
1079
+ /**
1080
+ * @description 获取版本号
1081
+ * @returns
1082
+ */
1083
+ getVersion(): {
1084
+ version: string;
1085
+ decoder: string;
1086
+ decoderVersion: any;
1087
+ };
1088
+ /**
1089
+ * @description 设置水印
1090
+ * @param {WaterMarkParams} params
1091
+ * @returns {Promise<any>}
1092
+ */
1093
+ setWaterMark(params: WaterMarkParams): Promise<unknown>;
1094
+ /**
1095
+ * @description 镜像翻转 (需要设备本身支持, 可以重能力集中获取)
1096
+ * @link https://open.ys7.com/help/59?h=%E9%95%9C%E5%83%8F%E7%BF%BB%E8%BD%AC#device_ptz-api3
1097
+ * @param {0 | 1 | 2} command 0-上下, 1-左右, 2-中心
1098
+ *
1099
+ * @returns {Promise}
1100
+ */
1101
+ setMirrorFlip(command: MirrorFlipCommand): Promise<_ezuikit_utils_service_dist_types_fetch.Response<any, undefined>>;
1102
+ }
1103
+
1104
+ export { type EZopenPlayerOptions, FECCorrect, type IResult, type IStreamClient, type MirrorFlipCommand, type PlayerEnv, PluginManager, StreamClient, type WasmDecoderStatue, type WaterMarkParams, EZopenPlayer as default };