@ezuikit/player-ezopen 8.2.2-beta.3 → 8.2.2-beta.4

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