@byteplus/veplayer 1.1.0-alpha.2

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,3142 @@
1
+ import { Property } from 'dom-helpers/esm/types';
2
+ import Player from 'xgplayer';
3
+ import { I18N, IXGI18nText, Plugin } from 'xgplayer';
4
+
5
+ declare enum POSITIONS {
6
+ ROOT = "root",
7
+ ROOT_LEFT = "rootLeft",
8
+ ROOT_RIGHT = "rootRight",
9
+ ROOT_TOP = "rootTop",
10
+ CONTROLS_LEFT = "controlsLeft",
11
+ CONTROLS_RIGHT = "controlsRight",
12
+ CONTROLS_CENTER = "controlsCenter"
13
+ }
14
+ /**
15
+ * @detail Options
16
+ *
17
+ *
18
+ * @export
19
+ * @interface ISdkErrorConfig
20
+ */
21
+ export interface ISdkErrorConfig {
22
+ /**
23
+ * 报错时是否显示提示图片
24
+ * 默认:true
25
+ *
26
+ * @type {boolean}
27
+ * @memberof ISdkErrorConfig
28
+ */
29
+ errorImg?: boolean;
30
+ /**
31
+ * 报错时是否展示
32
+ * 默认:true
33
+ *
34
+ * @type {boolean}
35
+ * @memberof ISdkErrorConfig
36
+ */
37
+ errorTips?: boolean;
38
+ /**
39
+ * 报错时是否展示“刷新”按钮
40
+ * 默认:true
41
+ *
42
+ * @type {boolean}
43
+ * @memberof ISdkErrorConfig
44
+ */
45
+ isNeedRefreshButton?: boolean;
46
+ /**
47
+ * 报错后是否进行降级,true则降级到playlist中相应 backUrlList字段(type为 rtm 不能设置true)
48
+ * 默认:false
49
+ *
50
+ * @type {boolean}
51
+ * @memberof ISdkErrorConfig
52
+ */
53
+ isNeedDemoteBack?: boolean;
54
+ /**
55
+ *
56
+ * 报错后重试次数
57
+ * 默认: 1
58
+ *
59
+ * @type {number}
60
+ * @memberof ISdkErrorConfig
61
+ */
62
+ retryLoopNum?: number;
63
+ /**
64
+ *
65
+ * 报错后提示文案
66
+ * 默认:播放发生错误,点击刷新试试吧
67
+ *
68
+ * @type {(HTMLElement | string)}
69
+ * @memberof ISdkErrorConfig
70
+ */
71
+ errorTipsText?: HTMLElement | string;
72
+ /**
73
+ * 播放器中所处的位置
74
+ * @hidden
75
+ * @type {string}
76
+ * @memberof ISdkErrorConfig
77
+ */
78
+ position?: POSITIONS;
79
+ }
80
+ /**
81
+ * @detail Options
82
+ *
83
+ *
84
+ * @export
85
+ * @interface IRtmConfig
86
+ */
87
+ export interface IRtmConfig {
88
+ /**
89
+ * sdp接口请求超时等待时间, 单位 ms
90
+ * 默认值: 5000
91
+ *
92
+ * @type {number}
93
+ * @memberof IRtmConfig
94
+ */
95
+ loadTimeout?: number;
96
+ /**
97
+ * sdp接口请求失败时重试间隔时间, 单位 ms
98
+ * 默认值:1000
99
+ *
100
+ * @type {number}
101
+ * @memberof IRtmConfig
102
+ */
103
+ retryDelay?: number;
104
+ /**
105
+ * sdp接口请求失败时的重试次数
106
+ * 默认值:0
107
+ *
108
+ * @type {number}
109
+ * @memberof IRtmConfig
110
+ */
111
+ retryCount?: number;
112
+ /**
113
+ * rtc播放video不会触发waiting,通过timeupdate事件模拟,两次timeupdate事件触发间隔时间大于此值时模拟waiting事件触发 , 单位 ms
114
+ * 默认值:300
115
+ *
116
+ * @type {number}
117
+ * @memberof IRtmConfig
118
+ */
119
+ stallInterval?: number;
120
+ /**
121
+ * rtc起播建联失败时降级到flv或hls播放, 指定时开启降级,不指定建联失败对外抛error
122
+ * 默认值:''
123
+ *
124
+ * @type {string}
125
+ * @memberof IRtmConfig
126
+ */
127
+ backupURL?: string;
128
+ /**
129
+ * 降级到flv或者hls时需要的播放插件, 配合 backupURL使用
130
+ * 默认值:null
131
+ *
132
+ * @type {('hls' | 'flv')}
133
+ * @memberof IRtmConfig
134
+ */
135
+ backupStreamType: "hls" | "flv";
136
+ }
137
+ /**
138
+ * @detail Options
139
+ * @brief 弹幕相关设置
140
+ *
141
+ * @export
142
+ * @interface InitConfig
143
+ */
144
+ export interface InitConfig {
145
+ /**
146
+ * 透明度, 枚举值[0, 33, 66, 99], 实际对应0, 0.33, 0.66, 1
147
+ * 默认:99
148
+ *
149
+ * @type {number}
150
+ * @memberof InitConfig
151
+ */
152
+ opacity?: number;
153
+ /**
154
+ * 枚举值[0, 33, 66, 99] 实际对应1/4, 1/2, 3/4, 1
155
+ * 默认:99
156
+ *
157
+ * @type {number}
158
+ * @memberof InitConfig
159
+ */
160
+ area?: number;
161
+ /**
162
+ * 速度, 枚举值[0, 20, 40, 60, 80, 100], 实际对应1/4, 1/2,1,5/4,3/2,2
163
+ * 默认:40
164
+ *
165
+ * @type {number}
166
+ * @memberof InitConfig
167
+ */
168
+ speed?: number;
169
+ /**
170
+ * 字体大小, 枚举值[0, 50, 100],实际对应14px 16px 20px
171
+ * 默认:50
172
+ *
173
+ * @type {number}
174
+ * @memberof InitConfig
175
+ */
176
+ fontSize?: number;
177
+ /**
178
+ * 是否打开面板
179
+ * 默认:false
180
+ *
181
+ * @type {boolean}
182
+ * @memberof InitConfig
183
+ */
184
+ active?: boolean;
185
+ /**
186
+ * 是否展示弹幕设置面板
187
+ * 默认: true
188
+ *
189
+ * @type {boolean}
190
+ * @memberof InitConfig
191
+ */
192
+ usePanel?: boolean;
193
+ /**
194
+ * 弹幕列表
195
+ *
196
+ * @type {DanmuItem[]}
197
+ * @memberof InitConfig
198
+ */
199
+ danmuItems?: DanmuItem[];
200
+ /**
201
+ * @hidden
202
+ *
203
+ * @type {ExternalItem[]}
204
+ * @memberof InitConfig
205
+ */
206
+ external?: ExternalItem[];
207
+ /**
208
+ * @hidden
209
+ *
210
+ * @type {IMaskConfig}
211
+ * @memberof InitConfig
212
+ */
213
+ maskConfig?: IMaskConfig;
214
+ /**
215
+ * @hidden
216
+ *
217
+ * @type {boolean}
218
+ * @memberof InitConfig
219
+ */
220
+ maskActive?: boolean;
221
+ }
222
+ export interface IMaskConfig {
223
+ maskUrl: string;
224
+ maskOffset?: number;
225
+ interval?: number;
226
+ }
227
+ export interface Lang {
228
+ zh: string;
229
+ en: string;
230
+ [props: string]: string;
231
+ }
232
+ /**
233
+ * @detail Options
234
+ *
235
+ *
236
+ * @export
237
+ * @interface DanmuItem
238
+ */
239
+ export interface DanmuItem {
240
+ /**
241
+ * 弹幕唯一id
242
+ *
243
+ * @type {string}
244
+ * @memberof DanmuItem
245
+ */
246
+ id: string;
247
+ /**
248
+ * 弹幕文案
249
+ *
250
+ * @type {string}
251
+ * @memberof DanmuItem
252
+ */
253
+ txt: string;
254
+ /**
255
+ * 弹幕出现时间, 单位为ms
256
+ *
257
+ * @type {number}
258
+ * @memberof DanmuItem
259
+ */
260
+ start?: number;
261
+ /**
262
+ * 是否优先显示
263
+ * @hidden
264
+ * @type {boolean}
265
+ * @memberof DanmuItem
266
+ */
267
+ prior?: boolean;
268
+ /**
269
+ * 弹幕持续显示时间, 单位为ms
270
+ *
271
+ * @type {number}
272
+ * @memberof DanmuItem
273
+ */
274
+ duration?: number;
275
+ /**
276
+ * 弹幕样式
277
+ * style : {
278
+ * color: '#ff9500',
279
+ * fontSize: '20px',
280
+ * padding: '2px 11px'
281
+ * }
282
+ *
283
+ * @type {Partial<Record<Property, string>>}
284
+ * @memberof DanmuItem
285
+ */
286
+ style?: Partial<Record<Property, string>>;
287
+ }
288
+ export interface ExternalItem {
289
+ key: string;
290
+ name: string;
291
+ value: boolean;
292
+ lang?: Lang;
293
+ }
294
+ /**
295
+ * @detail Options
296
+ *
297
+ * @export
298
+ * @interface ISubtitleConfig
299
+ */
300
+ export interface ISubtitleConfig {
301
+ /**
302
+ *
303
+ * @hidden
304
+ */
305
+ [propName: string]: any;
306
+ /**
307
+ * 图标位置
308
+ * 默认值:controlsRight
309
+ * @type {string}
310
+ * @memberof ISubtitleConfig
311
+ */
312
+ position?: string;
313
+ /**
314
+ * 图标排列权重
315
+ * 默认值:6
316
+ * @type {number}
317
+ * @memberof ISubtitleConfig
318
+ */
319
+ index?: number;
320
+ /**
321
+ * 字幕列表
322
+ * 默认值:无
323
+ * @type {Array<SubTitleItem>}
324
+ * @memberof ISubtitleConfig
325
+ */
326
+ list?: Array<ISubTitleItem>;
327
+ /**
328
+ * 是否默认打开
329
+ * 默认值:true
330
+ * @type {boolean}
331
+ * @memberof ISubtitleConfig
332
+ */
333
+ isDefaultOpen?: boolean;
334
+ /**
335
+ * 是否显示图标
336
+ * 默认值:true
337
+ * @type {boolean}
338
+ * @memberof ISubtitleConfig
339
+ */
340
+ isShowIcon?: boolean;
341
+ /**
342
+ * 字幕渲染模式,外挂字幕或原生字幕
343
+ * 默认值:external
344
+ * @type {string}
345
+ * @memberof ISubtitleConfig
346
+ */
347
+ mode?: "external" | "native";
348
+ /**
349
+ * 字幕更新模式,默认vod
350
+ * 默认值:vod
351
+ * @type {string}
352
+ * @memberof ISubtitleConfig
353
+ */
354
+ updateMode?: "vod" | "live";
355
+ /**
356
+ * 字幕样式
357
+ * 默认值:无
358
+ * @type {ISubtitleStyle}
359
+ * @memberof ISubtitleConfig
360
+ */
361
+ style?: ISubtitleStyle;
362
+ }
363
+ /**
364
+ * @detail Options
365
+ *
366
+ * @export
367
+ * @interface ISubtitleStyle
368
+ */
369
+ export interface ISubtitleStyle {
370
+ /**
371
+ * 是否跟随控制栏调整位置
372
+ * 默认值:true
373
+ * @type {boolean | null}
374
+ * @memberof ISubtitleStyle
375
+ */
376
+ follow: boolean | null;
377
+ /**
378
+ * 字体显示模式,默认是描边
379
+ * 默认值:'stroke'
380
+ * @type {'stroke' | 'bg'}
381
+ * @memberof ISubtitleStyle
382
+ */
383
+ mode?: "stroke" | "bg";
384
+ /**
385
+ * 跟随底部控制栏的高度
386
+ * 默认值:50
387
+ * @type {number}
388
+ * @memberof ISubtitleStyle
389
+ */
390
+ followBottom?: number;
391
+ /**
392
+ * 是否跟随视频自动调整字号
393
+ * 默认值:true
394
+ * @type {boolean}
395
+ * @memberof ISubtitleStyle
396
+ */
397
+ fitVideo?: boolean;
398
+ /**
399
+ * 字幕距离画面底部百分比
400
+ * 默认值:4
401
+ * @type {number}
402
+ * @memberof ISubtitleStyle
403
+ */
404
+ offsetBottom?: number;
405
+ /**
406
+ * 横屏视频适配基准字号
407
+ * 默认值:49
408
+ * @type {number}
409
+ * @memberof ISubtitleStyle
410
+ */
411
+ baseSizeX?: number;
412
+ /**
413
+ * 竖屏视频适配基准字号
414
+ * 默认值:28
415
+ * @type {number}
416
+ * @memberof ISubtitleStyle
417
+ */
418
+ baseSizeY?: number;
419
+ /**
420
+ * pc端最小字号
421
+ * 默认值:16
422
+ * @type {number}
423
+ * @memberof ISubtitleStyle
424
+ */
425
+ minSize?: number;
426
+ /**
427
+ * 移动端最小字号
428
+ * 默认值:13
429
+ * @type {number}
430
+ * @memberof ISubtitleStyle
431
+ */
432
+ minMobileSize?: number;
433
+ /**
434
+ * 最大显示行数
435
+ * 默认值:'double'
436
+ * @type {'double' | 'single' | 'three'}
437
+ * @memberof ISubtitleStyle
438
+ */
439
+ line?: "double" | "single" | "three";
440
+ /**
441
+ * 字体颜色, 16位颜色值或rgb值
442
+ * 默认值:'#fff'
443
+ * @type {string}
444
+ * @memberof ISubtitleStyle
445
+ */
446
+ fontColor?: string;
447
+ }
448
+ /**
449
+ * @detail Options
450
+ *
451
+ * @export
452
+ * @interface IListItem
453
+ */
454
+ export interface IListItem {
455
+ /**
456
+ * 开始时间
457
+ * 默认值:无
458
+ * @type { number}
459
+ * @memberof IListItem
460
+ */
461
+ start: number;
462
+ /**
463
+ * 结束时间
464
+ * 默认值:无
465
+ * @type { number}
466
+ * @memberof IListItem
467
+ */
468
+ end: number;
469
+ /**
470
+ * 字幕文案列表
471
+ * 默认值:无
472
+ * @type {Array<Object>}
473
+ * @memberof IListItem
474
+ */
475
+ list: {
476
+ /**
477
+ * 默认值:无
478
+ * @hidden
479
+ * @type {any}
480
+ */
481
+ [propName: string]: any;
482
+ /**
483
+ * 开始时间
484
+ * @type {number}
485
+ */
486
+ start: number;
487
+ /**
488
+ * 结束时间
489
+ * @type {number}
490
+ */
491
+ end: number;
492
+ /**
493
+ * 字幕文案数组
494
+ * @type {string[]}
495
+ */
496
+ text: string[];
497
+ /**
498
+ * 字幕顺序
499
+ * @type {number}
500
+ */
501
+ index?: number;
502
+ }[];
503
+ }
504
+ /**
505
+ * @detail Options
506
+ *
507
+ * @export
508
+ * @interface ISubTitleItem
509
+ */
510
+ export interface ISubTitleItem {
511
+ /**
512
+ * 字幕语言
513
+ * 默认值:无
514
+ * @type {string | number}
515
+ * @memberof ISubTitleItem
516
+ */
517
+ language?: string | number;
518
+ /**
519
+ * 字幕id
520
+ * 默认值:无
521
+ * @type {string | number}
522
+ * @memberof ISubTitleItem
523
+ */
524
+ id?: number | string;
525
+ /**
526
+ * 是否是默认选择的字幕
527
+ * 默认值:false
528
+ * @type {boolean}
529
+ * @memberof ISubTitleItem
530
+ */
531
+ isDefault?: boolean;
532
+ /**
533
+ * 字幕名称
534
+ * 默认值:无
535
+ * @type {any}
536
+ * @memberof ISubTitleItem
537
+ */
538
+ text?: any;
539
+ /**
540
+ * 外挂字幕地址
541
+ * 默认值:false
542
+ * @type {string}
543
+ * @memberof ISubTitleItem
544
+ */
545
+ url?: string;
546
+ /**
547
+ * stringContent
548
+ * 默认值:无
549
+ * @hidden
550
+ * @type {string}
551
+ * @memberof ISubTitleItem
552
+ */
553
+ stringContent?: string;
554
+ /**
555
+ * 字幕内容列表,非url形式时使用
556
+ * 默认值:无
557
+ * @type {Array<Object>}
558
+ * @memberof ISubTitleItem
559
+ */
560
+ list?: {
561
+ /**
562
+ * 默认值:无
563
+ * @hidden
564
+ * @type {any}
565
+ */
566
+ [propName: string]: any;
567
+ /**
568
+ * 开始时间
569
+ * @type {number}
570
+ */
571
+ start: number;
572
+ /**
573
+ * 结束时间
574
+ * @type {number}
575
+ */
576
+ end: number;
577
+ /**
578
+ * 子字幕列表
579
+ * @type {Array<IListItem>}
580
+ */
581
+ list: Array<IListItem>;
582
+ }[];
583
+ }
584
+ /**
585
+ * @detail Options
586
+ *
587
+ *
588
+ * @export
589
+ * @interface IDefinitionDemotePlugin
590
+ */
591
+ export interface IDefinitionDemotePlugin {
592
+ /**
593
+ * 超时重试次数
594
+ * 默认:3
595
+ *
596
+ * @type {number}
597
+ * @memberof IDefinitionDemotePlugin
598
+ */
599
+ oftenWaitingCount?: number;
600
+ /**
601
+ * 设置经常超时时间
602
+ * 默认:5000
603
+ *
604
+ * @type {number}
605
+ * @memberof IDefinitionDemotePlugin
606
+ */
607
+ oftenWaitingTime?: number;
608
+ /**
609
+ * 设置超时时间
610
+ * 默认5000
611
+ *
612
+ * @type {number}
613
+ * @memberof IDefinitionDemotePlugin
614
+ */
615
+ longWaitingTime?: number;
616
+ /**
617
+ * 是否自动触发降级
618
+ * 默认:false
619
+ *
620
+ * @type {boolean}
621
+ * @memberof IDefinitionDemotePlugin
622
+ */
623
+ isNeedAutoDemote?: boolean;
624
+ /**
625
+ *
626
+ * 降级顺序,按照数组顺序依次降级,数字元素对应playList中的definition
627
+ * 默认: ['uhd', 'hd', 'sd', 'ld', 'ao']
628
+ *
629
+ * @type {string[]}
630
+ * @memberof IDefinitionDemotePlugin
631
+ */
632
+ demotePriority?: string[];
633
+ }
634
+ /**
635
+ * @detail Options
636
+ * @brief 更多options
637
+ * @id 2
638
+ *
639
+
640
+ /**
641
+ * dash播放配置想
642
+ *
643
+ * @detail Options
644
+ * @export
645
+ * @interface IDashPluginConfig
646
+ */
647
+ export interface IDashPluginConfig {
648
+ /**
649
+ * 视频vid
650
+ * 默认:无
651
+ * 播放加密视频时必选
652
+ */
653
+ vid?: string;
654
+ /**
655
+ * 播放类型
656
+ * 默认:`TOP`
657
+ * 非必选
658
+ */
659
+ playInfoType: "TOP";
660
+ /**
661
+ * 清晰度映射文案
662
+ * 默认:无
663
+ * 非必选
664
+ * @example
665
+ * ``` javascript
666
+ * { 360p: "流畅 360p",
667
+ * 480p: "清晰 480p",
668
+ * 720p: "高清 720p",
669
+ * 1080p: "超高清 1080p"
670
+ * }
671
+ * ```
672
+ */
673
+ definitionText: Record<string, string>;
674
+ /**
675
+ * 默认清晰度
676
+ * 默认:列表第一个
677
+ * 非必选
678
+ * @example
679
+ * ``` javascript
680
+ * { 360p: "流畅 360p",
681
+ * 480p: "清晰 480p",
682
+ * 720p: "高清 720p",
683
+ * 1080p: "超高清 1080p"
684
+ * }
685
+ * ```
686
+ */
687
+ defaultDefinition?: string;
688
+ /**
689
+ * 获取证书地址
690
+ * 默认:`//i.snssdk.com/video/drm/v1/play_licenses`
691
+ * 播放加密视频时必选
692
+ */
693
+ getLicenseUrl?: string;
694
+ /**
695
+ * dash播放信息,由`Service.url`服务接口获取
696
+ * 默认:无
697
+ * 必选
698
+ */
699
+ dashOpts?: {
700
+ Data: any;
701
+ };
702
+ /**
703
+ * 兜底的mp4播放列表,由`Service.url`服务接口获取
704
+ * 默认:无
705
+ * 非必选
706
+ */
707
+ mp4Opts: {
708
+ mp4List: mp4OptsItem[];
709
+ };
710
+ /**
711
+ * 预加载时间,单位ms
712
+ * 默认:undefined
713
+ * 非必选
714
+ */
715
+ preloadTime?: number;
716
+ /**
717
+ * @hidden
718
+ * 自适应配置项
719
+ * 默认:undefined
720
+ * 非必选
721
+ */
722
+ autoBitrateOpts?: any;
723
+ /**
724
+ * @hidden
725
+ * 备用地址降级,默认情况下,当dash播放出问题后,会降级为mp4播放;
726
+ * 设置改参数后,会优先使用备用地址进行dash的降级播放,再次出错时,会降级为mp4播放
727
+ * 默认:false
728
+ * 非必选
729
+ */
730
+ useBackUrl?: boolean;
731
+ /**
732
+ * @hidden
733
+ * 优化首帧
734
+ * 是针对域名,将range参数放在url后面,避免OPTIONS请求,从而优化首帧
735
+ * 默认:无
736
+ * 非必选
737
+ */
738
+ url_range_domains?: string[];
739
+ }
740
+ /**
741
+ * dash播放的mp4兜底播放列表配置
742
+ *
743
+ * @detail Options
744
+ * @export
745
+ * @interface mp4OptsItem
746
+ */
747
+ export interface mp4OptsItem {
748
+ /**
749
+ * 清晰度
750
+ * 默认: 无
751
+ * 必传
752
+ */
753
+ definition: string;
754
+ /**
755
+ * mp4地址
756
+ * 默认: 无
757
+ * 必传
758
+ */
759
+ url: string;
760
+ }
761
+ /**
762
+ * DASH播放配置
763
+ *
764
+ * @detail Options
765
+ * @export
766
+ * @interface IDashPluginConfig
767
+ */
768
+ export interface IEncryptHlsPluginConfig {
769
+ /**
770
+ * 播放地址请求域名
771
+ * 默认:无
772
+ * 必选
773
+ */
774
+ playDomain: string;
775
+ /**
776
+ * 请求类型,固定值 'TOP'
777
+ * 默认: 无
778
+ */
779
+ getKeyType: string;
780
+ /**
781
+ * 密钥请求域名
782
+ * 默认:无
783
+ * 必选
784
+ */
785
+ keyDomain: string;
786
+ /**
787
+ * 播放地址获取token,由服务端生成下发,详见{@link https://www.volcengine.com/docs/4/67350#%E4%B8%B4%E6%97%B6%E5%AE%89%E5%85%A8%E5%87%AD%E8%AF%81%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E 播放临时安全凭证(PlayAuthToken)}
788
+ * 默认:无
789
+ * 必选
790
+ */
791
+ playAuthToken: string;
792
+ /**
793
+ * 密钥获取token,由服务端生成下发,详见{@link https://www.volcengine.com/docs/4/65659#%E7%AD%BE%E5%8F%91-hls-%E6%A0%87%E5%87%86%E5%8A%A0%E5%AF%86-authtoken%EF%BC%88sha1hlsdrmauthtoken%EF%BC%89 签发 Hls 标准加密AuthToken}
794
+ * 默认:无
795
+ * 必选
796
+ */
797
+ keyToken: string;
798
+ /**
799
+ * hls加密播放地址
800
+ * 默认:无
801
+ */
802
+ url?: string;
803
+ }
804
+ /**
805
+ * 质量日志配置
806
+ *
807
+ * @detail Options
808
+ * @export
809
+ * @interface IVodLogOptsConfig
810
+ */
811
+ export interface IVodLogOptsConfig {
812
+ /**
813
+ * 表示业务来源,使用业务自己的appid即可
814
+ * 默认:无
815
+ * 必选
816
+ */
817
+ line_app_id: number;
818
+ /**
819
+ * 用于识别单一用户的id
820
+ * 默认:无
821
+ * 必选
822
+ */
823
+ line_user_id: string | number;
824
+ /**
825
+ * 视频类型
826
+ * 默认:无
827
+ * 必选
828
+ */
829
+ vtype?: "MP4" | "HLS" | "DASH" | "FLV";
830
+ /**
831
+ * 自定义标签
832
+ * 默认:`default`
833
+ * 必选
834
+ */
835
+ tag?: string;
836
+ /**
837
+ * 视频解码器类型名称
838
+ * 默认:`h264`
839
+ * 必选
840
+ */
841
+ codec_type?: "h264" | "h265";
842
+ /**
843
+ * 是否加密,0:非drm视频,1:drm视频
844
+ * 默认:`0`
845
+ * 可选
846
+ */
847
+ drm_type?: 0 | 1;
848
+ /**
849
+ * 播放内核版本号
850
+ * 默认:无
851
+ * 可选
852
+ */
853
+ playerCoreVersion?: string;
854
+ /**
855
+ * 播放器版本号
856
+ * 默认:无
857
+ * 可选
858
+ */
859
+ playerVersion?: string;
860
+ /**
861
+ * DASH播放的封装类型
862
+ * 默认:无
863
+ * 可选
864
+ */
865
+ dynamic_type?: "segment_base" | "segment_template";
866
+ /**
867
+ * 是否使用bash,0:不使用,1:使用
868
+ * 默认:`0`
869
+ * 可选
870
+ */
871
+ enable_bash?: 0 | 1;
872
+ /**
873
+ * 发送的埋点日志是本地缓存的时候回调
874
+ * 默认:无
875
+ * 可选
876
+ */
877
+ sendLocalCallback?: (event: any, data: any) => void;
878
+ /**
879
+ * 是否禁用localStorage暂时缓存onPlay逻辑
880
+ * 默认:`false`
881
+ * 可选
882
+ */
883
+ disableLocalCache?: boolean;
884
+ /**
885
+ * 数据上报渠道,可选值:cn(国内)、va(美东) 、sg(新加坡)
886
+ * 默认:`cn`
887
+ * 可选
888
+ */
889
+ channel?: "cn" | "va" | "sg";
890
+ /**
891
+ * 是否关闭清晰度切换埋点
892
+ * 默认:`false`
893
+ * 可选
894
+ */
895
+ closeResolutionLog?: boolean;
896
+ /**
897
+ * 关闭seek相关埋点
898
+ * 默认:`false`
899
+ * 可选
900
+ */
901
+ closeSeekLog?: boolean;
902
+ /**
903
+ * 队列超过多少条日志的时候发送
904
+ * 默认:`5`
905
+ * 可选
906
+ */
907
+ maxQueueCount?: number;
908
+ }
909
+ /**
910
+ * mp4加密日志配置项
911
+ *
912
+ * @detail Options
913
+ * @export
914
+ * @interface IMp4EncryptPlayerConfig
915
+ */
916
+ export interface IMp4EncryptPlayerConfig {
917
+ /**
918
+ * 是否加密
919
+ * 默认:`false`
920
+ * 可选
921
+ */
922
+ isEncrypt?: boolean;
923
+ /**
924
+ * 视频vid
925
+ * 默认:无
926
+ * 可选
927
+ */
928
+ vid?: string;
929
+ /**
930
+ * 视频密钥 id
931
+ * 默认:无
932
+ * 可选
933
+ */
934
+ kid?: string;
935
+ /**
936
+ * 获取密钥凭证地址
937
+ * 默认:无
938
+ * 可选
939
+ */
940
+ getLicenseUrl?: string;
941
+ /**
942
+ * 是否使用EME
943
+ * 默认:`false`
944
+ * 可选
945
+ */
946
+ useEME?: boolean;
947
+ /**
948
+ * 视频密钥值
949
+ * 默认:无
950
+ * 可选
951
+ */
952
+ keyValue?: string;
953
+ /**
954
+ * 加密后的视频密钥值
955
+ * 默认:无
956
+ * 可选
957
+ */
958
+ secretKey?: string;
959
+ /**
960
+ * 是否携带cookie
961
+ */
962
+ withCredentials?: boolean;
963
+ /**
964
+ * drm内容
965
+ * 默认:无
966
+ * 可选
967
+ */
968
+ drm?: {
969
+ clearKeys: {
970
+ [propName: string]: string;
971
+ };
972
+ };
973
+ }
974
+ export declare type IDefinition = {
975
+ [propName: string]: any;
976
+ url: any;
977
+ definition: any;
978
+ bitrate?: number;
979
+ bandwidth?: number;
980
+ text?: string | {
981
+ [propName: string]: any;
982
+ };
983
+ iconText?: string | {
984
+ [propName: string]: any;
985
+ };
986
+ };
987
+ export declare type IPlayerOptions = {
988
+ [propName: string]: any;
989
+ id?: string;
990
+ el?: HTMLElement;
991
+ url?: any;
992
+ domEventType?: "default" | "touch" | "mouse";
993
+ nullUrlStart?: boolean;
994
+ width?: number | string;
995
+ height?: number | string;
996
+ fluid?: boolean;
997
+ fitVideoSize?: "fixWidth" | "fixHeight" | "fixed";
998
+ videoFillMode?: "auto" | "fillHeight" | "fillWidth" | "fill" | "cover";
999
+ volume?: number | {
1000
+ [propName: string]: any;
1001
+ };
1002
+ autoplay?: boolean;
1003
+ autoplayMuted?: boolean;
1004
+ loop?: boolean;
1005
+ isLive?: boolean;
1006
+ zoom?: number;
1007
+ videoInit?: boolean;
1008
+ poster?: string | {
1009
+ [propName: string]: any;
1010
+ };
1011
+ isMobileSimulateMode?: "mobile" | "pc";
1012
+ defaultPlaybackRate?: number;
1013
+ execBeforePluginsCall?: () => any;
1014
+ allowSeekAfterEnded?: boolean;
1015
+ enableContextmenu?: boolean;
1016
+ closeVideoClick?: boolean;
1017
+ closeVideoDblclick?: boolean;
1018
+ closePlayerBlur?: boolean;
1019
+ closeDelayBlur?: boolean;
1020
+ leavePlayerTime?: number;
1021
+ closePlayVideoFocus?: boolean;
1022
+ closePauseVideoFocus?: boolean;
1023
+ closeFocusVideoFocus?: boolean;
1024
+ closeControlsBlur?: boolean;
1025
+ topBarAutoHide?: boolean;
1026
+ videoAttributes?: {
1027
+ [propName: string]: any;
1028
+ };
1029
+ startTime?: number;
1030
+ seekedStatus?: "play" | "pause" | "auto";
1031
+ miniprogress?: boolean;
1032
+ disableSwipeHandler?: () => any;
1033
+ enableSwipeHandler?: () => any;
1034
+ ignores?: Array<"cssfullscreen" | "screenshot" | "pip" | "miniscreen" | "keyboard" | "download" | "playbackrate" | "time" | "definition" | "error" | "fullscreen" | "loading" | "mobile" | "pc" | "play" | "poster" | "progress" | "replay" | "start" | "volume" | string>;
1035
+ inactive?: number;
1036
+ lang?: string;
1037
+ controls?: boolean | {
1038
+ [propName: string]: any;
1039
+ };
1040
+ marginControls?: boolean;
1041
+ fullscreenTarget?: HTMLElement;
1042
+ screenShot?: boolean | {
1043
+ [propName: string]: any;
1044
+ };
1045
+ rotate?: boolean | {
1046
+ [propName: string]: any;
1047
+ };
1048
+ pip?: boolean | {
1049
+ [propName: string]: any;
1050
+ };
1051
+ download?: boolean | {
1052
+ [propName: string]: any;
1053
+ };
1054
+ mini?: boolean | {
1055
+ [propName: string]: any;
1056
+ };
1057
+ cssFullscreen?: boolean | {
1058
+ [propName: string]: any;
1059
+ };
1060
+ keyShortcut?: boolean;
1061
+ presets?: any[];
1062
+ plugins?: any[];
1063
+ playbackRate?: number | number[] | {
1064
+ [propName: string]: any;
1065
+ };
1066
+ definition?: {
1067
+ [propName: string]: any;
1068
+ list: Array<IDefinition>;
1069
+ defaultDefinition?: IDefinition["definition"];
1070
+ };
1071
+ playsinline?: boolean;
1072
+ customDuration?: number;
1073
+ timeOffset?: number;
1074
+ icons?: {
1075
+ [propName: string]: string | HTMLElement | (() => HTMLElement | string);
1076
+ };
1077
+ i18n?: Array<any>;
1078
+ tabindex?: number;
1079
+ thumbnail?: {
1080
+ urls: Array<string>;
1081
+ pic_num: number;
1082
+ col: number;
1083
+ row: number;
1084
+ height?: number;
1085
+ width?: number;
1086
+ };
1087
+ videoConfig?: {
1088
+ [propName: string]: any;
1089
+ };
1090
+ commonStyle?: {
1091
+ progressColor?: string;
1092
+ playedColor?: string;
1093
+ cachedColor?: string;
1094
+ sliderBtnStyle?: {
1095
+ [propName: string]: any;
1096
+ };
1097
+ volumeColor?: string;
1098
+ };
1099
+ };
1100
+ declare enum PlatformEnum {
1101
+ VOLC_ENGINE = "volcengine",
1102
+ BYTE_PLUS = "byteplus"
1103
+ }
1104
+ export interface apiMapItem {
1105
+ playDomain: string;
1106
+ backupPlayDomain?: string;
1107
+ licenseUrl: string;
1108
+ keyDomain: string;
1109
+ }
1110
+ declare enum CodecType {
1111
+ H265 = "h265",
1112
+ H264 = "h264"
1113
+ }
1114
+ export declare type PLAY_MODE_TYPE = "order" | "sloop" | "loop" | "random";
1115
+ export interface IMusicListItem {
1116
+ /**
1117
+ * 音乐地址
1118
+ *
1119
+ * @type {string}
1120
+ * @memberof IMusicListItem
1121
+ */
1122
+ src: string;
1123
+ /**
1124
+ * 音乐唯一vid
1125
+ *
1126
+ * @type {string | number}
1127
+ * @memberof IMusicListItem
1128
+ */
1129
+ vid: string | number;
1130
+ /**
1131
+ * 音乐封面
1132
+ *
1133
+ * @type {string}
1134
+ * @memberof IMusicListItem
1135
+ */
1136
+ poster?: string;
1137
+ /**
1138
+ * 音乐标题
1139
+ *
1140
+ * @type {string}
1141
+ * @memberof IMusicListItem
1142
+ */
1143
+ title?: string;
1144
+ [propName: string]: any;
1145
+ }
1146
+ export interface IABCycle {
1147
+ /**
1148
+ * AB循环段开始时间
1149
+ *
1150
+ * @type {boolean}
1151
+ * @memberof IABCycle
1152
+ */
1153
+ start: number;
1154
+ /**
1155
+ * AB循环段结束时间
1156
+ *
1157
+ * @type {boolean}
1158
+ * @memberof IABCycle
1159
+ */
1160
+ end: number;
1161
+ /**
1162
+ * AB段是否循环播放
1163
+ *
1164
+ * @type {boolean}
1165
+ * @memberof IABCycle
1166
+ */
1167
+ loop?: boolean;
1168
+ [propName: string]: any;
1169
+ }
1170
+ export interface IMusicConfig {
1171
+ /**
1172
+ * 是否启用离线下载播放
1173
+ *
1174
+ * @type {boolean}
1175
+ * @memberof IMusicConfig
1176
+ */
1177
+ offline?: boolean;
1178
+ /**
1179
+ * AB循环设置
1180
+ *
1181
+ * @type {IABCycle}
1182
+ * @memberof IMusicConfig
1183
+ */
1184
+ abCycle?: IABCycle | null;
1185
+ /**
1186
+ * 快进快退时间跨度
1187
+ *
1188
+ * @type {number}
1189
+ * @memberof IMusicConfig
1190
+ */
1191
+ timeScale?: number;
1192
+ /**
1193
+ * 循环模式
1194
+ *
1195
+ * @type {('order' | 'sloop' | 'loop' | 'random')}
1196
+ * @memberof IMusicConfig
1197
+ */
1198
+ mode?: PLAY_MODE_TYPE;
1199
+ /**
1200
+ * 播放列表
1201
+ *
1202
+ * @type {Array<IMusicListItem>}
1203
+ * @memberof IMusicConfig
1204
+ */
1205
+ list?: Array<IMusicListItem>;
1206
+ [propName: string]: any;
1207
+ }
1208
+ /**
1209
+ * @detail Options
1210
+ * @brief 播放地址列表, 可配置多线路和多清晰度
1211
+ *
1212
+ * @export
1213
+ * @interface Stream
1214
+ */
1215
+ export interface Stream {
1216
+ /**
1217
+ * url类型,可以选值为“rtm”/“flv”/“mp4”/“hls”
1218
+ *
1219
+ * @type {('rtm' | 'flv' | 'mp4' | 'hls')}
1220
+ * @memberof IPlayerConfig
1221
+ */
1222
+ streamType?: string;
1223
+ /**
1224
+ * 播放地址
1225
+ *
1226
+ * @type {string}
1227
+ * @memberof IPlayerConfig
1228
+ */
1229
+ url: string;
1230
+ /**
1231
+ * 清晰度key
1232
+ *
1233
+ * @type {string}
1234
+ * @memberof Stream
1235
+ */
1236
+ definition?: string;
1237
+ /**
1238
+ * 多语言词典中对应的key, 比如 definitionTextKey: HD_TEXT_KEY
1239
+ *
1240
+ * languages: {
1241
+ * zh: {
1242
+ * HD_TEXT_KEY: '高清'
1243
+ * }
1244
+ * }
1245
+ *
1246
+ * 则清晰度切换选项显示“高清”, 不设置则显示definition的值
1247
+ *
1248
+ * @type {string}
1249
+ * @memberof Stream
1250
+ */
1251
+ definitionTextKey?: string;
1252
+ /**
1253
+ * 编码格式
1254
+ *
1255
+ * @type {('h265' | 'h264')}
1256
+ * @memberof Stream
1257
+ */
1258
+ codec?: CodecType;
1259
+ /**
1260
+ * 线路唯一id
1261
+ *
1262
+ * @type {(number | string)}
1263
+ * @memberof Stream
1264
+ */
1265
+ lineId?: number | string;
1266
+ /**
1267
+ * 多语言词典中对应的key, 比如 lineTextKey: LINE_ONE
1268
+ *
1269
+ * languages: {
1270
+ * zh: {
1271
+ * LINE_ONE: '线路一'
1272
+ * }
1273
+ * }
1274
+ *
1275
+ * 则线路切换选项中显示“线路一”
1276
+ *
1277
+ * @type {string}
1278
+ * @memberof Stream
1279
+ */
1280
+ lineTextKey?: string;
1281
+ [propName: string]: any;
1282
+ }
1283
+ export interface Condition {
1284
+ definition?: string;
1285
+ lineId?: number | string;
1286
+ [propName: string]: any;
1287
+ }
1288
+ /**
1289
+ * @description 播放器当前状态
1290
+ */
1291
+ export interface Current {
1292
+ definition: string;
1293
+ streamType: string;
1294
+ language: string;
1295
+ lineId?: number | string;
1296
+ codec?: CodecType;
1297
+ [propName: string]: any;
1298
+ }
1299
+ /**
1300
+ * @detail Options
1301
+ * @id 1
1302
+ * @brief options参数列表:
1303
+ * 本文档是介绍火山引擎直播和点播播放器VePlayer的相关参数和Api。
1304
+ */
1305
+ export interface IPlayerConfig extends IPlayerOptions {
1306
+ /**
1307
+ * 是否是直播,默认为false
1308
+ * @type {boolean}
1309
+ * @memberof IPlayerConfig
1310
+ */
1311
+ isLive?: boolean;
1312
+ /**
1313
+ * 播放器容器id,VePlayer将被插入在该容器中
1314
+ *
1315
+ * @notes id和root必填一个
1316
+ * @type {string}
1317
+ * @memberof IPlayerConfig
1318
+ */
1319
+ id?: string;
1320
+ /**
1321
+ * 播放器容器,VePlayer将被插入在该容器中
1322
+ *
1323
+ * @type {HTMLElement}
1324
+ * @memberof IPlayerConfig
1325
+ */
1326
+ root?: HTMLElement;
1327
+ /**
1328
+ * 播放地址
1329
+ * 直播可通过 {@link https://console.volcengine.com/live/main/locationGenerate 视频直播控制台} 生成
1330
+ *
1331
+ * @type {string}
1332
+ * @memberof IPlayerConfig
1333
+ */
1334
+ url?: string;
1335
+ /**
1336
+ * 播放地址类型,可以选值为“rtm”/“flv”/“mp4”/“hls”
1337
+ * @notes 播放地址带后缀的则streamType非必填,否则为必填
1338
+ *
1339
+ * @type {(''mp4' | 'hls' | 'dash' | 'rtm' | 'flv')}
1340
+ * @memberof IPlayerConfig
1341
+ */
1342
+ streamType?: "mp4" | "hls" | "dash" | "rtm" | "flv";
1343
+ /**
1344
+ * 点播服务平台,可选值为'volcengine' 和 'byteplus',默认为'volcengine'即火山引擎视频点播
1345
+ * 设定此参数会指定默认的服务接口
1346
+ * @type {('volcengine' | 'byteplus')}
1347
+ * @memberof playerConfig
1348
+ */
1349
+ platform?: PlatformEnum;
1350
+ /**
1351
+ * 是否音乐播放器模式
1352
+ *
1353
+ * @type {boolean}
1354
+ * @memberof IPlayerConfig
1355
+ */
1356
+ isMusic?: boolean;
1357
+ /**
1358
+ * 右键是否可用
1359
+ *
1360
+ * @type {boolean}
1361
+ * @memberof IPlayerConfig
1362
+ */
1363
+ enableContextmenu?: boolean;
1364
+ /**
1365
+ * 关闭video上的阻止事件传播
1366
+ *
1367
+ * @type {boolean}
1368
+ * @memberof IPlayerConfig
1369
+ */
1370
+ closeVideoStopPropagation?: boolean;
1371
+ /**
1372
+ * 是否开启hls的MSE模式,仅移动端生效,开启后采用MSE方式播放HLS,默认在移动端使用原生video播放hls
1373
+ *
1374
+ * @type {boolean}
1375
+ * @memberof IPlayerConfig
1376
+ */
1377
+ enableHlsMSE?: boolean;
1378
+ /**
1379
+ * 是否开启mp4的MSE模式,开启后采用MSE方式播放MP4,
1380
+ * 同时带来精确的seek加载、视频的无缝切换、流量节省等功能
1381
+ *
1382
+ * @type {boolean}
1383
+ * @memberof IPlayerConfig
1384
+ */
1385
+ enableMp4MSE?: boolean;
1386
+ /**
1387
+ * 播放列表
1388
+ * @notes url和playList必填一个,二者都传入时, url必须在playList中。
1389
+ *
1390
+ * @type {Stream[]}
1391
+ * @memberof IPlayerConfig
1392
+ */
1393
+ playList?: Stream[];
1394
+ /**
1395
+ * 插件,可自行选择高级插件。
1396
+ * 目前支持的高级插件为: DefinitionDemotePlugin
1397
+ *
1398
+ * @type {any[]}
1399
+ * @memberof IPlayerConfig
1400
+ */
1401
+ plugins?: any[];
1402
+ /**
1403
+ * 默认配置
1404
+ * @hidden
1405
+ *
1406
+ * @type {IDefaultConfig}
1407
+ * @memberof IPlayerConfig
1408
+ */
1409
+ defaultConfig?: IDefaultConfig;
1410
+ /**
1411
+ * 设置多语言词典,可设置每个语言的多语言词典,
1412
+ * 例如:
1413
+ * {
1414
+ * zh: {
1415
+ * PIP: '画中画'
1416
+ * },
1417
+ * en: {
1418
+ * PIP: 'pip'
1419
+ * }
1420
+ * }
1421
+ *
1422
+ * @type {{ [key: string]: Record<string, any> }}
1423
+ * @memberof IPlayerConfig
1424
+ */
1425
+ languages?: {
1426
+ [key: string]: Record<string, any>;
1427
+ };
1428
+ /**
1429
+ * @hidden
1430
+ *
1431
+ * @type {boolean}
1432
+ * @memberof IPlayerConfig
1433
+ */
1434
+ isMobile?: boolean;
1435
+ /**
1436
+ * umd依赖备用地址
1437
+ * 用于依赖的CDN发生网络错误时的降级备用地址
1438
+ * 支持的依赖有hls(非加密hls播放)、flv(flv播放)、XGVideo(软解播放)、hlsEncrypt(加密hls播放)、dash(dash播放)、mp4Encrypt(加密np4播放)、danmujs(弹幕)、danmuMask(蒙版弹幕)、subtitle(外挂字幕)
1439
+ */
1440
+ umdUrlMap?: Record<string, string>;
1441
+ /**
1442
+ * 是否启用软解
1443
+ * 默认: false
1444
+ *
1445
+ * @type {boolean}
1446
+ * @memberof IPlayerConfig
1447
+ */
1448
+ useSoftDecoding?: boolean;
1449
+ /**
1450
+ * 视频编码方式
1451
+ * 软解useSoftDecoding设置为true时,提供codec可提升软解初始效率
1452
+ *
1453
+ * @type {('h264' | 'h265')}
1454
+ * @memberof IPlayerConfig
1455
+ */
1456
+ codec?: CodecType;
1457
+ /**
1458
+ * 是否开H265播放降级,即H.265硬解不支持时自动降级为软解
1459
+ *
1460
+ * @type {boolean}
1461
+ * @memberof IPlayerConfig
1462
+ */
1463
+ enableH265Degrade?: boolean;
1464
+ /**
1465
+ * 资源过期时的回调函数,用来更新视频资源
1466
+ *
1467
+ * @type {(any) => Promise<IPlayerConfig>}
1468
+ * @memberof IPlayerConfig
1469
+ */
1470
+ onMediaExpired?: () => Promise<IPlayerConfig>;
1471
+ /**
1472
+ * playAuthToken过期时的回调函数,用来更新playAuthToken
1473
+ *
1474
+ * @type {(any) => Promise<IPlayAuthTokenConfig>}
1475
+ * @memberof IPlayerConfig
1476
+ */
1477
+ onTokenExpired?: () => Promise<IPlayAuthTokenConfig>;
1478
+ /**
1479
+ * 定期检查资源过期的周期,单位秒,默认400
1480
+ *
1481
+ * @type {boolean}
1482
+ * @memberof IPlayerConfig
1483
+ */
1484
+ checkExpireInterval?: number;
1485
+ /**
1486
+ * 定期检查资源过期的方式,支持三种类型
1487
+ * urlExpire 根据url的过期时间判断
1488
+ * xhrStatus 发送资源请求,根据资源xhr状态判断
1489
+ * getUrlTime 根据估算的地址获取时间判断
1490
+ * @type {boolean}
1491
+ * @memberof IPlayerConfig
1492
+ */
1493
+ expireDetectType?: Array<"xhrStatus" | "getUrlTime">;
1494
+ /**
1495
+ * 播放器报错展示配置, 可以配置播放异常时的播放器显示的异常文案、图片,以及是否提供刷新按钮等
1496
+ *
1497
+ */
1498
+ sdkErrorPlugin?: ISdkErrorConfig;
1499
+ /**
1500
+ * rtm配置,配置rtm拉流参数
1501
+ * @notes 传入rtm流url时才生效
1502
+ *
1503
+ * @type {IRtmConfig}
1504
+ * @memberof IPlayerConfig
1505
+ */
1506
+ rtm?: IRtmConfig;
1507
+ /**
1508
+ * 弹幕及面板配置,可配置弹幕的一些参数,如弹幕文字大小、透明度、展示区域等,
1509
+ *
1510
+ * @type {InitConfig | boolean}
1511
+ * @memberof IPlayerConfig
1512
+ */
1513
+ DanmuPlugin?: InitConfig | boolean;
1514
+ /**
1515
+ * 清晰度自动降级配置
1516
+ * @notes 需要先引入DefinitionDemotePlugin插件,plugins: [window.VePlayer.DefinitionDemotePlugin]
1517
+ *
1518
+ * @type {IDefinitionDemotePlugin}
1519
+ * @memberof IPlayerConfig
1520
+ */
1521
+ DefinitionDemotePlugin?: IDefinitionDemotePlugin;
1522
+ /**
1523
+ * 唯一id,用于私有DRM加密
1524
+ *
1525
+ * @type {string}
1526
+ * @memberof IPlayerConfig
1527
+ */
1528
+ unionId?: string;
1529
+ /**
1530
+ * vid播放配置项
1531
+ * @notes 需要业务方服务端通过vid生成临时playAuthToken
1532
+ *
1533
+ * @type {IPlayAuthTokenConfig}
1534
+ * @memberof IPlayerConfig
1535
+ */
1536
+ getVideoByToken?: IPlayAuthTokenConfig;
1537
+ /**
1538
+ * dash 播放配置项
1539
+ * @type {Partial<IDashPluginConfig>}
1540
+ * @memberof IPlayerConfig
1541
+ */
1542
+ DASHPlugin?: Partial<IDashPluginConfig>;
1543
+ /**
1544
+ * hls 加密播放配置项
1545
+ * @type {Partial<IEncryptHlsPluginConfig> | boolean}
1546
+ * @memberof IPlayerConfig
1547
+ */
1548
+ EncryptHlsPlugin?: Partial<IEncryptHlsPluginConfig> | boolean;
1549
+ /**
1550
+ * 质量日志配置项
1551
+ * @type {Partial<IVodLogOptsConfig>}
1552
+ * @memberof IPlayerConfig
1553
+ */
1554
+ vodLogOpts?: Partial<IVodLogOptsConfig>;
1555
+ /**
1556
+ * mp4加密播放配置项
1557
+ * @type {Partial<IMp4EncryptPlayerConfig> | boolean}
1558
+ * @memberof IPlayerConfig
1559
+ */
1560
+ Mp4EncryptPlayer?: Partial<IMp4EncryptPlayerConfig> | boolean;
1561
+ /**
1562
+ * 自适应码率配置项
1563
+ * @type {IAutoBitrateOptsConfig}
1564
+ * @memberof IPlayerConfig
1565
+ */
1566
+ autoBitrateOpts?: IAutoBitrateOptsConfig;
1567
+ /**
1568
+ * 外挂字幕配置项
1569
+ * @type {ISubtitleConfig}
1570
+ * @memberof IPlayerConfig
1571
+ */
1572
+ Subtitle?: ISubtitleConfig;
1573
+ /**
1574
+ * 记忆播放配置项
1575
+ * @type {IMemoryPlayConfig}
1576
+ * @memberof IPlayerConfig
1577
+ */
1578
+ MemoryPlay?: IMemoryPlayConfig | boolean;
1579
+ /**
1580
+ * 音乐播放器配置项
1581
+ * @type {IMusicConfig}
1582
+ * @memberof IPlayerConfig
1583
+ */
1584
+ music?: IMusicConfig;
1585
+ }
1586
+ /**
1587
+ * 初始配置
1588
+ *
1589
+ * @export
1590
+ * @interface IDefaultConfig
1591
+ */
1592
+ export interface IDefaultConfig {
1593
+ /**
1594
+ * “点播”还是“直播”
1595
+ *
1596
+ * @type {('live' | 'vod')}
1597
+ * @memberof IPlayerConfig
1598
+ */
1599
+ type?: "live" | "vod";
1600
+ /**
1601
+ * 是否是直播
1602
+ *
1603
+ * @type {boolean}
1604
+ * @memberof IPlayerConfig
1605
+ */
1606
+ isLive?: boolean;
1607
+ /**
1608
+ * 线路唯一key
1609
+ *
1610
+ * @type {(number | string)}
1611
+ * @memberof Stream
1612
+ */
1613
+ lineId?: number | string;
1614
+ /**
1615
+ * 清晰度选择
1616
+ *
1617
+ * @type {string}
1618
+ * @memberof Stream
1619
+ */
1620
+ definition?: string;
1621
+ /**
1622
+ * 开始播放时间
1623
+ *
1624
+ * @type {number}
1625
+ * @memberof IDefaultConfig
1626
+ */
1627
+ startTime?: number;
1628
+ /**
1629
+ * 音量
1630
+ *
1631
+ * @type {number}
1632
+ * @memberof IDefaultConfig
1633
+ */
1634
+ volume?: number;
1635
+ /**
1636
+ * 弹幕插件配置
1637
+ *
1638
+ * @type {*}
1639
+ * @memberof IDefaultConfig
1640
+ */
1641
+ DanmuPlugin?: any;
1642
+ /**
1643
+ * 字幕插件配置
1644
+ *
1645
+ * @type {*}
1646
+ * @memberof IDefaultConfig
1647
+ */
1648
+ LiveSubtitlesIconPlugin?: any;
1649
+ }
1650
+ /**
1651
+ * vid播放配置信息
1652
+ *
1653
+ * @detail Options
1654
+ * @description PlayAuthToken获取视频信息配置
1655
+ * @export
1656
+ * @interface IPlayAuthTokenConfig
1657
+ */
1658
+ export interface IPlayAuthTokenConfig {
1659
+ /**
1660
+ * 服务端生成的临时playAuthToken
1661
+ *
1662
+ * @type {string}
1663
+ * @memberof IPlayAuthTokenConfig
1664
+ */
1665
+ playAuthToken: string;
1666
+ /**
1667
+ * 求地址接口域名
1668
+ *
1669
+ * @notes 默认为`//vod.volcengineapi.com`
1670
+ * @type {string}
1671
+ * @memberof IPlayAuthTokenConfig
1672
+ */
1673
+ playDomain?: string;
1674
+ /**
1675
+ * 是否启用控制台设置的封面图,默认false
1676
+ * @type {boolean}
1677
+ * @memberof IPlayAuthTokenConfig
1678
+ */
1679
+ needPoster?: boolean;
1680
+ /**
1681
+ * 是否启用控制台设置的雪碧图,默认false
1682
+ * @type {boolean}
1683
+ * @memberof IPlayAuthTokenConfig
1684
+ */
1685
+ needThumbs?: boolean;
1686
+ /**
1687
+ * 是否启用控制台设置的蒙版弹幕,默认false
1688
+ * @type {boolean}
1689
+ * @memberof IPlayAuthTokenConfig
1690
+ */
1691
+ needBarrageMask?: boolean;
1692
+ /**
1693
+ * 是否需要多清晰度,默认为true
1694
+ * @type {boolean}
1695
+ * @memberof IPlayAuthTokenConfig
1696
+ */
1697
+ needDefinitionList?: boolean;
1698
+ /**
1699
+ * hls标准加密播放所用的keyToken
1700
+ * @type {boolean}
1701
+ * @memberof IPlayAuthTokenConfig
1702
+ */
1703
+ keyToken?: string;
1704
+ /**
1705
+ * 密钥请求域名
1706
+ * @type {string}
1707
+ * @memberof IPlayAuthTokenConfig
1708
+ */
1709
+ keyDomain?: string;
1710
+ /**
1711
+ * 获取key方式,默认'TOP'
1712
+ * @type {string}
1713
+ * @memberof IPlayAuthTokenConfig
1714
+ */
1715
+ getKeyType?: string;
1716
+ /**
1717
+ * 获取privateDrmAuthToken的回调,
1718
+ * @type {(
1719
+ * playAuthIds: string,
1720
+ * vid: string,
1721
+ * unionInfo: string,
1722
+ * ) => Promise<Record<string, string>>}
1723
+ * @memberof IPlayAuthTokenConfig
1724
+ */
1725
+ getDrmAuthToken?: (playAuthIds: string, vid: string, unionInfo: string) => Promise<string>;
1726
+ /**
1727
+ * 可携带aid等透传参数,如
1728
+ * {aid: 1234},以playAuthToken下发的参数的优先级最高。
1729
+ * 具体可传参数见{@link https://www.volcengine.com/docs/4/65659 签发 PlayAuthToken}
1730
+ *
1731
+ * @type {Record<string, number | string | boolean>}
1732
+ * @memberof IPlayAuthTokenConfig
1733
+ */
1734
+ reqParams?: Record<string, number | string | boolean>;
1735
+ /**
1736
+ * 定义清晰度的映射
1737
+ *
1738
+ * @example 如:
1739
+ * ``` javascript
1740
+ * {
1741
+ * '480p': '标清',
1742
+ * '720p': '高清'
1743
+ * }
1744
+ * ```
1745
+ * 或
1746
+ * ``` javascript
1747
+ * {
1748
+ * '480p': {
1749
+ * definition: 'hd', // 清晰度兜底文案
1750
+ * definitionTextKey: 'HD' // 多语言文案key
1751
+ * },
1752
+ * '720p': {
1753
+ * definition: 'uhd',
1754
+ * definitionTextKey: 'UHD'
1755
+ * }
1756
+ * }
1757
+ * ```
1758
+ * `definitionTextKey`用来指定多语言的key
1759
+ * @type {Record<string, string | definitionItem>}
1760
+ * @memberof IPlayAuthTokenConfig
1761
+ */
1762
+ definitionMap?: Record<string, string | definitionItem>;
1763
+ /**
1764
+ * 服务502错误时重试次数,默认为1
1765
+ * @type {number}
1766
+ * @memberof IPlayAuthTokenConfig
1767
+ */
1768
+ retryCount?: number;
1769
+ }
1770
+ /**
1771
+ * 清晰度定义
1772
+ *
1773
+ * @detail Options
1774
+ * @export
1775
+ * @interface definitionItem
1776
+ */
1777
+ export interface definitionItem {
1778
+ /**
1779
+ * 清晰度
1780
+ *
1781
+ * @type {string}
1782
+ * @memberof definitionItem
1783
+ */
1784
+ definition?: string;
1785
+ /**
1786
+ * 清晰度多语言key
1787
+ *
1788
+ * @type {string}
1789
+ * @memberof definitionItem
1790
+ */
1791
+ definitionTextKey?: string;
1792
+ }
1793
+ export interface IAutoBitrateOptsConfig {
1794
+ /**
1795
+ * 是否开启功能,默认为false
1796
+ *
1797
+ * @type {boolean}
1798
+ * @memberof IAutoBitrateOptsConfig
1799
+ */
1800
+ isOpenAutoDefi?: boolean;
1801
+ /**
1802
+ * 自动切换清晰度对应显示文案
1803
+ *
1804
+ * @type {string}
1805
+ * @memberof IAutoBitrateOptsConfig
1806
+ */
1807
+ autoDefiText?: string;
1808
+ /**
1809
+ * 起播是否调整到自动切换, 默认为false
1810
+ *
1811
+ * @type {boolean}
1812
+ * @memberof IAutoBitrateOptsConfig
1813
+ */
1814
+ isPlayAutoDefi?: boolean;
1815
+ /**
1816
+ * 调用算法频率
1817
+ *
1818
+ * @type {boolean}
1819
+ * @memberof IAutoBitrateOptsConfig
1820
+ */
1821
+ interval?: number;
1822
+ /**
1823
+ * 多久后算消费视频,单位秒
1824
+ *
1825
+ * @type {number}
1826
+ * @memberof IAutoBitrateOptsConfig
1827
+ */
1828
+ noStallCheckTime?: number;
1829
+ /**
1830
+ * 算法 方法选择见文档,默认使用31即可,目前31策略卡顿收益很高
1831
+ *
1832
+ * @type {number}
1833
+ * @memberof IAutoBitrateOptsConfig
1834
+ */
1835
+ method?: number;
1836
+ /**
1837
+ * 算法模块, CDN方式为window.DashAbralgo
1838
+ *
1839
+ * @type {any}
1840
+ * @memberof IAutoBitrateOptsConfig
1841
+ */
1842
+ module?: any;
1843
+ }
1844
+ /**
1845
+ * 初始配置
1846
+ *
1847
+ * @export
1848
+ * @interface IMemoryPlayConfig
1849
+ */
1850
+ export interface IMemoryPlayConfig {
1851
+ /**
1852
+ * 存储标识id
1853
+ *
1854
+ * @type {number | string}
1855
+ * @memberof IMemoryPlayConfig
1856
+ */
1857
+ memoryId: number | string;
1858
+ /**
1859
+ * 设置时间函数
1860
+ *
1861
+ * @type {(id: number | string, time: number) => unknown}
1862
+ * @memberof IMemoryPlayConfig
1863
+ */
1864
+ saveTime: (id: number | string, time: number) => unknown;
1865
+ /**
1866
+ * 获取最后一次播放时间函数
1867
+ *
1868
+ * @type {(id: number | string) => number | Promise<number>}
1869
+ * @memberof IMemoryPlayConfig
1870
+ */
1871
+ getTime: (id: number | string) => number | Promise<number>;
1872
+ }
1873
+ declare class PlayerData {
1874
+ id?: string;
1875
+ root?: HTMLElement;
1876
+ configs: any;
1877
+ type: string;
1878
+ isLive: boolean;
1879
+ options: any;
1880
+ isMobile: boolean;
1881
+ playList: Stream[];
1882
+ plugins: any[];
1883
+ openSoftDecoding: boolean;
1884
+ defaultConfig: IDefaultConfig | undefined;
1885
+ isHitDefault: boolean;
1886
+ codec?: CodecType;
1887
+ enableH265Degrade: boolean;
1888
+ languageData: {
1889
+ extraLangList: IXGI18nText[];
1890
+ extendLangList: IXGI18nText[];
1891
+ };
1892
+ current: Current;
1893
+ checkExpireInterval: number;
1894
+ expireDetectType: Array<"xhrStatus" | "urlExpire" | "getUrlTime">;
1895
+ onMediaExpired: () => Promise<IPlayerConfig>;
1896
+ onTokenExpired: () => Promise<IPlayAuthTokenConfig>;
1897
+ platform: PlatformEnum;
1898
+ apiMap: apiMapItem;
1899
+ unionId?: string;
1900
+ unionInfo?: string;
1901
+ isMusic?: boolean;
1902
+ constructor(configs: IPlayerConfig);
1903
+ initPlayData(configs: any): void;
1904
+ initPlaylistAndGetCurrent(configs: IPlayerConfig): any;
1905
+ isCurrentH265(): boolean;
1906
+ getCurrentByDefaultConfig(): Stream;
1907
+ initCurrent(currentStreams: any): void;
1908
+ initI18nData(languages: any): {
1909
+ extraLangList: any[];
1910
+ extendLangList: any[];
1911
+ };
1912
+ /**
1913
+ * @description: 获取当前直播url
1914
+ */
1915
+ getCurrentUrl(): string;
1916
+ /**
1917
+ * @description: 获取当前的streamType
1918
+ */
1919
+ getCurrentStreamType(): any;
1920
+ /**
1921
+ * @description: 获取满足当前直播条件的流
1922
+ */
1923
+ getCurrentStreams(): Stream[];
1924
+ /**
1925
+ * @description: 获取根据线路ID去重的流,用于获取有几个线路
1926
+ */
1927
+ getLineList(): any;
1928
+ /**
1929
+ * @description: 根据线路ID获取符合条件的流
1930
+ * @param {number} lineId
1931
+ */
1932
+ getLineListByLineId(lineId: number | string): Stream[];
1933
+ /**
1934
+ * @description: 根据线路ID获取清晰度list,用于获取某个线路下有几个清晰度
1935
+ * @param {number} lineId
1936
+ */
1937
+ getDefinitionListByLineId(lineId: number | string): any;
1938
+ /**
1939
+ * @description: 根据条件筛选符合条件的流list
1940
+ * @param {Condition} condition
1941
+ */
1942
+ getUrlList(condition: Condition): Stream[];
1943
+ /**
1944
+ * @description: 获取当期清晰的上一级清晰度或下一级清晰度
1945
+ * @param {boolean} isDown
1946
+ */
1947
+ getNextDefinition(isDown: boolean, demotePriority: any): Stream[];
1948
+ }
1949
+ declare function isMSESupport(mime?: string): boolean;
1950
+ export interface IConfig {
1951
+ mode?: number;
1952
+ isAutoChange?: boolean;
1953
+ }
1954
+ declare class MobilePlayerPanel {
1955
+ config: IConfig;
1956
+ parent: HTMLElement;
1957
+ root: any;
1958
+ mode: number;
1959
+ isAutoChange: number;
1960
+ player: any;
1961
+ children: HTMLElement | undefined;
1962
+ container: HTMLElement | undefined;
1963
+ title: HTMLElement | undefined;
1964
+ isShow: boolean;
1965
+ constructor(args: any);
1966
+ initEvents(): void;
1967
+ handleOrientationChange(): void;
1968
+ changeConfig(config: IConfig): void;
1969
+ changeMode(mode: number): void;
1970
+ renderPanel(): void;
1971
+ showPanel(children: HTMLElement, title?: string, isItemList?: boolean): Promise<void>;
1972
+ updatePanel(children: HTMLElement): void;
1973
+ setTitle(title: any): void;
1974
+ renderTitle(title: any): HTMLElement;
1975
+ show(): void;
1976
+ hide(): void;
1977
+ handleHide(e: any): void;
1978
+ bind(event: string, eventHandle: any, isBubble?: boolean): void;
1979
+ destroy(): void;
1980
+ }
1981
+ declare class VePlayer {
1982
+ /**
1983
+ * 播放相关配置数据
1984
+ * @hidden
1985
+ *
1986
+ * @type {PlayerData}
1987
+ * @memberof VePlayer
1988
+ */
1989
+ playerData: PlayerData;
1990
+ /**
1991
+ * 播放器内核实例
1992
+ * @type {*}
1993
+ * @memberof VePlayer
1994
+ */
1995
+ player: Player & {
1996
+ changePluginsIcon?: (name: any, isShow: any) => void;
1997
+ playerData?: PlayerData;
1998
+ playerType?: string;
1999
+ playerVersion?: string;
2000
+ panel?: MobilePlayerPanel;
2001
+ emitExpireTimestamp?: number;
2002
+ };
2003
+ /**
2004
+ * @hidden
2005
+ *
2006
+ * @type {*}
2007
+ * @memberof VePlayer
2008
+ */
2009
+ mountingDom: any;
2010
+ /**
2011
+ * @hidden
2012
+ *
2013
+ * @type {*}
2014
+ * @memberof VePlayer
2015
+ */
2016
+ playerContainer: any;
2017
+ /**
2018
+ * @hidden
2019
+ *
2020
+ * @type {*}
2021
+ * @memberof VePlayer
2022
+ */
2023
+ mobilePanel: any;
2024
+ /**
2025
+ *
2026
+ * @private
2027
+ * @type {*}
2028
+ * @memberof VePlayer
2029
+ */
2030
+ private _emitter;
2031
+ /**
2032
+ *
2033
+ *
2034
+ * @private
2035
+ * @memberof VePlayer
2036
+ */
2037
+ private _isFirstCreated;
2038
+ /**
2039
+ * @hidden
2040
+ *
2041
+ * @type {*}
2042
+ * @memberof VePlayer
2043
+ */
2044
+ sdkPlugins: any[];
2045
+ /**
2046
+ * @hidden
2047
+ *
2048
+ * @type {*}
2049
+ * @memberof VePlayer
2050
+ */
2051
+ _sdkPlugins: any;
2052
+ /**
2053
+ * @hidden
2054
+ *
2055
+ * @type {*}
2056
+ * @memberof VePlayer
2057
+ */
2058
+ private checkExpireTimer;
2059
+ /**
2060
+ * @hidden
2061
+ *
2062
+ * @type {*}
2063
+ * @memberof VePlayer
2064
+ */
2065
+ private _playOriginalUrl;
2066
+ /**
2067
+ * @hidden
2068
+ * 过期次数
2069
+ * @type {*}
2070
+ * @memberof VePlayer
2071
+ */
2072
+ private expireCount;
2073
+ /**
2074
+ * @hidden
2075
+ * 获取url的时间
2076
+ * @type {*}
2077
+ * @memberof VePlayer
2078
+ */
2079
+ private getUrlTime;
2080
+ /**
2081
+ * @hidden
2082
+ * 延迟触发但错误
2083
+ * @type {*}
2084
+ * @memberof VePlayer
2085
+ */
2086
+ delayError: any[];
2087
+ private isFirstEmitted;
2088
+ /**
2089
+ * @hidden
2090
+ * umd加载器
2091
+ * @type {*}
2092
+ * @memberof VePlayer
2093
+ */
2094
+ private sdkUmdLoader;
2095
+ static isMSESupported: typeof isMSESupport;
2096
+ static isRTMSupported: typeof import("@byted/xgplayer-rts").RtsPlugin.isSupported;
2097
+ static playerVersion: string;
2098
+ constructor(configs: IPlayerConfig);
2099
+ /**
2100
+ *
2101
+ *
2102
+ * @private
2103
+ * @param {IPlayerConfig} configs
2104
+ * @memberof VePlayer
2105
+ */
2106
+ private _init;
2107
+ /**
2108
+ * @hidden
2109
+ * @description 初始化并注册sdk插件(非西瓜插件)
2110
+ * @memberof VePlayer
2111
+ */
2112
+ _initSdkPlugins(): void;
2113
+ /**
2114
+ * @hidden
2115
+ * @description 初始化过期检测
2116
+ * @memberof VePlayer
2117
+ */
2118
+ initCheckExpire(): void;
2119
+ /**
2120
+ * @hidden
2121
+ * @description 更新umd的备用地址
2122
+ * @memberof VePlayer
2123
+ */
2124
+ private initUmdLoader;
2125
+ /**
2126
+ * @hidden
2127
+ * @description umd 加载失败的回调
2128
+ * @memberof VePlayer
2129
+ */
2130
+ umdLoadErr(umdName: any, err: any): void;
2131
+ /**
2132
+ * @hidden
2133
+ * @description 循环执行过期检测
2134
+ * @memberof VePlayer
2135
+ */
2136
+ onRepeat(): void;
2137
+ /**
2138
+ * @hidden
2139
+ * @description 触发过期事件
2140
+ * @memberof VePlayer
2141
+ */
2142
+ emitExpireEvent(): void;
2143
+ /**
2144
+ * @hidden
2145
+ * @description 地址获取时间
2146
+ * @memberof VePlayer
2147
+ */
2148
+ getUrlTimestamp(url: string): void;
2149
+ /**
2150
+ * @description 监听sdk事件
2151
+ *
2152
+ * @param {string} action
2153
+ * @param {(...args: any[]) => void} func
2154
+ * @memberof VePlayer
2155
+ */
2156
+ on(action: string, func: (...args: any[]) => void): void;
2157
+ /**
2158
+ * @description 触发sdk事件
2159
+ *
2160
+ * @param {string} action
2161
+ * @param {*} [payload]
2162
+ * @memberof VePlayer
2163
+ */
2164
+ emit(action: string, payload?: any): void;
2165
+ /**
2166
+ * 监听sdk事件,事件处理函数只执行一次
2167
+ *
2168
+ * @param {string} action
2169
+ * @param {(...args: any[]) => void} func
2170
+ * @memberof VePlayer
2171
+ */
2172
+ once(action: string, func: (...args: any[]) => void): void;
2173
+ /**
2174
+ * 解绑事件监听
2175
+ *
2176
+ * @param {string} action
2177
+ * @param {(...args: any[]) => void} func
2178
+ * @memberof VePlayer
2179
+ */
2180
+ off(action: string, func: (...args: any[]) => void): void;
2181
+ /**
2182
+ * @hidden
2183
+ *
2184
+ * @memberof VePlayer
2185
+ */
2186
+ renderDom(): void;
2187
+ /**
2188
+ * @hidden
2189
+ *
2190
+ * @return {*}
2191
+ * @memberof VePlayer
2192
+ */
2193
+ renderPoster(): void;
2194
+ /**
2195
+ * @hidden
2196
+ *
2197
+ * @return {*}
2198
+ * @memberof VePlayer
2199
+ */
2200
+ createPlayer(): Promise<Player & {
2201
+ changePluginsIcon?: (name: any, isShow: any) => void;
2202
+ playerData?: PlayerData;
2203
+ playerType?: string;
2204
+ playerVersion?: string;
2205
+ panel?: MobilePlayerPanel;
2206
+ emitExpireTimestamp?: number;
2207
+ }>;
2208
+ /**
2209
+ * @hidden
2210
+ *
2211
+ * @param {*} finalOptions
2212
+ * @return {*}
2213
+ * @memberof VePlayer
2214
+ */
2215
+ setPluginConfig(finalOptions: IPlayerConfig): void;
2216
+ /**
2217
+ * @hidden
2218
+ *
2219
+ * @param {string} url 地址
2220
+ * @memberof VePlayer
2221
+ */
2222
+ detectCodec(url: string): Promise<void>;
2223
+ /**
2224
+ * @hidden
2225
+ *
2226
+ * @param {*} options
2227
+ * @return {*}
2228
+ * @memberof VePlayer
2229
+ */
2230
+ setDefaultConfigOptions(options: any): void;
2231
+ /**
2232
+ * 获取当前播放视频数据
2233
+ *
2234
+ * @return {any}
2235
+ * @memberof VePlayer
2236
+ */
2237
+ getCurrentPlayerConfig(): {
2238
+ type?: "vod" | "live";
2239
+ isLive?: boolean;
2240
+ lineId?: string | number; /**
2241
+ * @description 触发sdk事件
2242
+ *
2243
+ * @param {string} action
2244
+ * @param {*} [payload]
2245
+ * @memberof VePlayer
2246
+ */
2247
+ definition?: string;
2248
+ startTime?: number;
2249
+ volume?: number;
2250
+ DanmuPlugin?: any;
2251
+ LiveSubtitlesIconPlugin?: any;
2252
+ };
2253
+ /**
2254
+ *
2255
+ * @private
2256
+ * @return {*}
2257
+ * @memberof VePlayer
2258
+ */
2259
+ private _analyzeExtendPlugins;
2260
+ /**
2261
+ * @hidden
2262
+ *
2263
+ * @memberof VePlayer
2264
+ */
2265
+ beforePlayerCreate(): Promise<void>;
2266
+ /**
2267
+ * @hidden
2268
+ *
2269
+ * @memberof VePlayer
2270
+ */
2271
+ afterPlayerCreate(): void;
2272
+ /**
2273
+ * @hidden
2274
+ *
2275
+ * @memberof VePlayer
2276
+ */
2277
+ emitDelayError(): void;
2278
+ /**
2279
+ * @hidden
2280
+ *
2281
+ * @memberof VePlayer
2282
+ */
2283
+ private _setPlayerInfo;
2284
+ /**
2285
+ *
2286
+ *
2287
+ * @private
2288
+ * @param {boolean} isMobile
2289
+ * @memberof VePlayer
2290
+ */
2291
+ private _mountingPlayerPanel;
2292
+ /**
2293
+ *
2294
+ *
2295
+ * @private
2296
+ * @return {*}
2297
+ * @memberof VePlayer
2298
+ */
2299
+ private _bindPlayerEvents;
2300
+ /**
2301
+ * @private
2302
+ * @return {*}
2303
+ * @memberof VePlayer
2304
+ */
2305
+ private onMediaExpiredAction;
2306
+ /**
2307
+ * @hidden
2308
+ *
2309
+ * @memberof VePlayer
2310
+ */
2311
+ private onTokenExpiredAction;
2312
+ /**
2313
+ *
2314
+ *
2315
+ * @private
2316
+ * @memberof VePlayer
2317
+ */
2318
+ private _bindSdkEvents;
2319
+ /**
2320
+ * @hidden
2321
+ *
2322
+ * @memberof VePlayer
2323
+ */
2324
+ private _mountingExtendMethods;
2325
+ /**
2326
+ *
2327
+ *
2328
+ * @private
2329
+ * @return {*}
2330
+ * @memberof VePlayer
2331
+ */
2332
+ private _offPlayerEvents;
2333
+ /**
2334
+ * @hidden
2335
+ * 切换插件展示
2336
+ *
2337
+ * @param {*} pluginName
2338
+ * @param {*} IsShow
2339
+ * @return {*}
2340
+ * @memberof VePlayer
2341
+ */
2342
+ changePluginsIcon(pluginName: any, IsShow: any): void;
2343
+ /**
2344
+ * @hidden
2345
+ *
2346
+ * @description 对外提供获取SDK插件实例的方法
2347
+ * @param { string } name
2348
+ * @return {*}
2349
+ * @memberof VePlayer
2350
+ */
2351
+ getSdkPlugin(name: any): any;
2352
+ /**
2353
+ * @description 更换playAuthToken的方法
2354
+ * @notes 这里指同一个视频切换视频源,不能用来切换不同类型的视频
2355
+ * @param { IPlayAuthTokenConfig } config authToken配置
2356
+ * @param { boolean } isNewVideo 是否是新视频,默认true。若未false即表示同一个视频切换token播放,会在切换前时间点继续播放
2357
+ * @memberof VePlayer
2358
+ */
2359
+ switchAuthToken(config: IPlayAuthTokenConfig, isNewVideo?: boolean): Promise<void>;
2360
+ /**
2361
+ * @description 更新playAuthToken的方法,用来更新视频地址
2362
+ * @param { IPlayAuthTokenConfig } config
2363
+ * @memberof VePlayer
2364
+ */
2365
+ updateAuthToken(config: IPlayAuthTokenConfig): Promise<void>;
2366
+ /**
2367
+ * @description 返回当前视频的地址
2368
+ * @memberof VePlayer
2369
+ */
2370
+ get src(): any;
2371
+ /**
2372
+ * @description 设置当前视频的地址
2373
+ * @notes 会重新拉取新的视频,从0开始起播
2374
+ * @memberof VePlayer
2375
+ */
2376
+ set src(url: any);
2377
+ /**
2378
+ * 切换视频url
2379
+ * @param {string} url 同一个视频,切换视频地址
2380
+ * @notes 切换后从切换前的时间点继续播放
2381
+ * @return {Promise<void>}
2382
+ * @memberof VePlayer
2383
+ */
2384
+ switchURL(url: string): Promise<void>;
2385
+ /**
2386
+ * 重建播放下一个
2387
+ *
2388
+ * @param {playerConfig} config
2389
+ * @param { boolean } isNewVideo 是否是新视频,默认true。若未false即表示同一个视频切换token播放,会在切换前时间点继续播放
2390
+ * @memberof VePlayer
2391
+ */
2392
+ next(config: IPlayerConfig, isNewVideo?: boolean): Promise<void>;
2393
+ /**
2394
+ * 切换视频源,主要用于在视频过期时更新视频源
2395
+ *
2396
+ * @param {IPlayerConfig} config
2397
+ * @param { boolean } isNewVideo 是否是新视频,默认true。若未false即表示同一个视频切换token播放,会在切换前时间点继续播放
2398
+ * @return{Promise<any>}
2399
+ * @memberof VePlayer
2400
+ */
2401
+ playNext(config: IPlayerConfig, isNewVideo?: boolean): Promise<any>;
2402
+ /**
2403
+ * @hidden
2404
+ *
2405
+ * @return {*}
2406
+ * @memberof VePlayer
2407
+ */
2408
+ resetUrlState(url: any): void;
2409
+ /**
2410
+ * 销毁xgplayer实例
2411
+ *
2412
+ * @private
2413
+ * @memberof VePlayer
2414
+ */
2415
+ private _destroyPlayer;
2416
+ /**
2417
+ * @hidden
2418
+ *
2419
+ * @return {*}
2420
+ * @memberof VePlayer
2421
+ */
2422
+ getPlayerInstance(): Player & {
2423
+ changePluginsIcon?: (name: any, isShow: any) => void;
2424
+ playerData?: PlayerData;
2425
+ playerType?: string;
2426
+ playerVersion?: string;
2427
+ panel?: MobilePlayerPanel;
2428
+ emitExpireTimestamp?: number;
2429
+ };
2430
+ /**
2431
+ * @hidden
2432
+ *
2433
+ * @return {*}
2434
+ * @memberof VePlayer
2435
+ */
2436
+ getSoftDecodingOption(isOpenSoftDecoding: boolean, url: string, type: string): Promise<{
2437
+ mediaType: string;
2438
+ innerDegrade: number;
2439
+ codecType: string;
2440
+ } | {
2441
+ mediaType?: undefined;
2442
+ innerDegrade?: undefined;
2443
+ codecType?: undefined;
2444
+ }>;
2445
+ /**
2446
+ * @hidden
2447
+ *
2448
+ * @description 获取h265软解播放时的播放列表
2449
+ * @memberof VePlayer
2450
+ */
2451
+ setH265SoftPlayList(): void;
2452
+ /**
2453
+ * 初始化多语言词典
2454
+ *
2455
+ * @param {*} languages
2456
+ * @memberof VePlayer
2457
+ */
2458
+ private _initI18N;
2459
+ /**
2460
+ * 获取音乐播放模式
2461
+ * @notes 仅音乐播放模式有效
2462
+ * @return {PLAY_MODE_TYPE}
2463
+ * @memberof VePlayer
2464
+ */
2465
+ get musicMode(): PLAY_MODE_TYPE;
2466
+ /**
2467
+ * 设置音乐播放模式
2468
+ * @notes 仅音乐播放模式有效
2469
+ * @memberof VePlayer
2470
+ * @param {PLAY_MODE_TYPE} val 模式值
2471
+ */
2472
+ set musicMode(val: PLAY_MODE_TYPE);
2473
+ /**
2474
+ * 获取音乐播放快进快退时间跨度
2475
+ * @notes 仅音乐播放模式有效
2476
+ * @return {number}
2477
+ * @memberof VePlayer
2478
+ */
2479
+ get musicTimeScale(): number;
2480
+ /**
2481
+ * 设置音乐播放快进快退时间跨度
2482
+ * @notes 仅音乐播放模式有效
2483
+ * @param {number} scale 时间跨度
2484
+ * @memberof VePlayer
2485
+ */
2486
+ set musicTimeScale(scale: number);
2487
+ /**
2488
+ * 获取音乐播放列表
2489
+ * @notes 仅音乐播放模式有效
2490
+ * @return {IMusicListItem[]}
2491
+ * @memberof VePlayer
2492
+ */
2493
+ get musicList(): IMusicListItem[];
2494
+ /**
2495
+ * 设置音乐播放列表
2496
+ * @notes 仅音乐播放模式有效
2497
+ * @param {IMusicListItem[]} list 播放列表
2498
+ * @memberof VePlayer
2499
+ */
2500
+ set musicList(list: IMusicListItem[]);
2501
+ /**
2502
+ * 向播放列表中加入歌曲
2503
+ * @notes 仅音乐播放模式有效
2504
+ * @param {IMusicListItem} meta 歌曲信息
2505
+ * @memberof VePlayer
2506
+ */
2507
+ musicAdd(meta: IMusicListItem): void;
2508
+ /**
2509
+ * 随机获取播放列表中某一首歌曲
2510
+ * @notes 仅音乐播放模式有效
2511
+ * @return {IMusicListItem} 歌曲信息
2512
+ * @memberof VePlayer
2513
+ */
2514
+ musicRandom(): IMusicListItem;
2515
+ /**
2516
+ * 播放播放列表的下一首歌曲
2517
+ * @notes 仅音乐播放模式有效
2518
+ * @memberof VePlayer
2519
+ */
2520
+ musicNext(): void;
2521
+ /**
2522
+ * 播放播放列表的上一首歌曲
2523
+ * @notes 仅音乐播放模式有效
2524
+ * @memberof VePlayer
2525
+ */
2526
+ musicPrev(): void;
2527
+ /**
2528
+ * 播放播放列表的第n首歌曲
2529
+ * @notes 仅音乐播放模式有效
2530
+ * @param {number} index 播放列表中的序号
2531
+ * @memberof VePlayer
2532
+ */
2533
+ musicSetIndex(index: number): void;
2534
+ /**
2535
+ * 歌曲快进
2536
+ * @notes 仅音乐播放模式有效
2537
+ * @memberof VePlayer
2538
+ */
2539
+ musicForward(): void;
2540
+ /**
2541
+ * 歌曲后退
2542
+ * @notes 仅音乐播放模式有效
2543
+ * @memberof VePlayer
2544
+ */
2545
+ musicBackward(): void;
2546
+ /**
2547
+ * 从播放列表移除指定歌曲
2548
+ * @notes 仅音乐播放模式有效
2549
+ * @param {string | number} vid 歌曲vid
2550
+ * @memberof VePlayer
2551
+ */
2552
+ musicRemove(vid: string | number): void;
2553
+ /**
2554
+ * 设置ab循环
2555
+ * @param { number | IABCycle } start
2556
+ * @param { number } [end]
2557
+ * @param { boolean } [loop]
2558
+ * @param {{ [propName: string]: any }} [ext]
2559
+ * @memberof VePlayer
2560
+ */
2561
+ musicSetAbCycle(start: number | IABCycle, end?: number, loop?: boolean, ext?: {
2562
+ [propName: string]: any;
2563
+ }): void;
2564
+ /**
2565
+ * 移除ab循环
2566
+ * @memberof VePlayer
2567
+ */
2568
+ musicRemoveAbCycle(): void;
2569
+ /**
2570
+ * 销毁当前播放器SDK实例
2571
+ *
2572
+ * @memberof VePlayer
2573
+ */
2574
+ destroy(): Promise<void>;
2575
+ }
2576
+ export declare function getI18N(): typeof I18N;
2577
+ declare class MusicPreset {
2578
+ ignores: string[];
2579
+ plugins: any[];
2580
+ constructor(options: any, playerConfig: any);
2581
+ }
2582
+ export interface ISubTitles {
2583
+ timestamp: number;
2584
+ text: string;
2585
+ duration: number;
2586
+ url: string;
2587
+ lang: string;
2588
+ delimiter?: string;
2589
+ textArr?: string[];
2590
+ wordpiece?: any[];
2591
+ }
2592
+ export interface ISubTitlesState {
2593
+ showLang: string;
2594
+ subTitleList: ISubTitles[];
2595
+ rtmpDtsGap: number;
2596
+ showingSubtitle: string;
2597
+ currentSub: any;
2598
+ dtsBase: number;
2599
+ }
2600
+ declare class LiveSubTitlesPlugin extends Plugin {
2601
+ static get pluginName(): string;
2602
+ static get defaultConfig(): {
2603
+ position: string;
2604
+ showLang: string;
2605
+ };
2606
+ constructor(configs: any);
2607
+ state: ISubTitlesState;
2608
+ clearLineTimer: any;
2609
+ showTimer: any;
2610
+ beforePlayerInit(): void;
2611
+ onPause(): void;
2612
+ onPlay(): void;
2613
+ destroy(): void;
2614
+ clearRtmpDtsGap(): void;
2615
+ clearSubTitle(isClearScreen: boolean): void;
2616
+ getIsSoft(): boolean;
2617
+ handleVideoTimeupdate(data: any): void;
2618
+ renderSubtitle(subTitle: ISubTitles): void;
2619
+ handleSEIParsed(sei: any, originPts?: any): void;
2620
+ insertSubTitle(...subTitles: ISubTitles[]): void;
2621
+ setCurrentLang(lang: string): void;
2622
+ adjustSubTitleTime(time: number): number;
2623
+ findSubTitleByTime(currentTime: number): {
2624
+ delimiter: string;
2625
+ textArr: string[];
2626
+ timestamp: number;
2627
+ text: string;
2628
+ duration: number;
2629
+ url: string;
2630
+ lang: string;
2631
+ wordpiece?: any[];
2632
+ };
2633
+ splitSubTitle(subTitle: ISubTitles): {
2634
+ delimiter: string;
2635
+ textArr: string[];
2636
+ timestamp: number;
2637
+ text: string;
2638
+ duration: number;
2639
+ url: string;
2640
+ lang: string;
2641
+ wordpiece?: any[];
2642
+ };
2643
+ showSurplus(): void;
2644
+ createNewDom(parent: HTMLElement): HTMLSpanElement;
2645
+ test(): void;
2646
+ getPlayTime(): void;
2647
+ resetDom(el: HTMLElement): void;
2648
+ render(): string;
2649
+ }
2650
+ export declare class LiveSubtitlesIconPlugin extends Plugin {
2651
+ static get pluginName(): string;
2652
+ static get defaultConfig(): {
2653
+ position: string;
2654
+ index: number;
2655
+ defaultOpen: boolean;
2656
+ default: string;
2657
+ list: {
2658
+ key: string;
2659
+ showText: string;
2660
+ }[];
2661
+ };
2662
+ isMobile: boolean;
2663
+ isOpenState: boolean;
2664
+ optionList: any;
2665
+ currentLang: string;
2666
+ constructor(configs: any);
2667
+ afterCreate(): void;
2668
+ afterPlayerInit(): void;
2669
+ registerIcons(): {
2670
+ aiSubOpen: {
2671
+ icon: any;
2672
+ class: string;
2673
+ };
2674
+ aiSubClose: {
2675
+ icon: any;
2676
+ class: string;
2677
+ };
2678
+ };
2679
+ registerLanguageTexts(): {
2680
+ sub: {
2681
+ jp: string;
2682
+ en: string;
2683
+ zh: string;
2684
+ "zh-hk": string;
2685
+ };
2686
+ subOpen: {
2687
+ jp: string;
2688
+ en: string;
2689
+ zh: string;
2690
+ "zh-hk": string;
2691
+ };
2692
+ subClose: {
2693
+ jp: string;
2694
+ en: string;
2695
+ zh: string;
2696
+ "zh-hk": string;
2697
+ };
2698
+ };
2699
+ children(): {
2700
+ LiveSubTitlesPlugin: {
2701
+ plugin: typeof LiveSubTitlesPlugin;
2702
+ options: {
2703
+ root: HTMLElement;
2704
+ showLang: string;
2705
+ };
2706
+ };
2707
+ };
2708
+ initEvents(): void;
2709
+ handleButtonChange(): void;
2710
+ showMobilePanel(): void;
2711
+ renderItemList(): HTMLElement;
2712
+ renderItem(item: any): HTMLElement;
2713
+ updatePanel(): void;
2714
+ showPanel(): void;
2715
+ hidePanel(): void;
2716
+ open(isInit?: boolean): void;
2717
+ close(): void;
2718
+ renderOptionList(): void;
2719
+ changeSubTitleLang(key: string, isInit?: boolean): void;
2720
+ toggleSubTitle(): void;
2721
+ destroy(): void;
2722
+ render(): string;
2723
+ }
2724
+ export interface IPanelItem {
2725
+ showText: string;
2726
+ selected: boolean;
2727
+ language?: string | number;
2728
+ "data-id"?: number | string;
2729
+ "data-type"?: string;
2730
+ }
2731
+ export declare class Subtitle extends Plugin {
2732
+ constructor(args: any);
2733
+ static get pluginName(): string;
2734
+ static get defaultConfig(): {
2735
+ position: string;
2736
+ index: number;
2737
+ list: any[];
2738
+ isDefaultOpen: boolean;
2739
+ style: {
2740
+ follow: boolean;
2741
+ mode: string;
2742
+ followBottom: number;
2743
+ fitVideo: boolean;
2744
+ offsetBottom: number;
2745
+ baseSizeX: number;
2746
+ baseSizeY: number;
2747
+ minSize: number;
2748
+ minMobileSize: number;
2749
+ line: string;
2750
+ fontColor: string;
2751
+ };
2752
+ isShowIcon: boolean;
2753
+ mode: string;
2754
+ updateMode: string;
2755
+ };
2756
+ private _delegates;
2757
+ isOpenState: boolean;
2758
+ optionList: any;
2759
+ currentLang: string;
2760
+ subTitles: any;
2761
+ curIndex: number;
2762
+ curItem: ISubTitleItem;
2763
+ afterCreate(): void;
2764
+ /**
2765
+ * @description 初始化原生字幕
2766
+ *
2767
+ */
2768
+ _initNativeSubtitle(defaultIndex: any): void;
2769
+ /**
2770
+ * 初始化外挂字幕
2771
+ * @param {number} defaultIndex
2772
+ */
2773
+ _initExtSubTitle(defaultIndex: any): void;
2774
+ _renderList(defaultIndex: any): void;
2775
+ _onOff(): void;
2776
+ _onChange(data: any): void;
2777
+ _onListReset(data: any): void;
2778
+ updateCurItem(cIndex: any, subtitle: any): void;
2779
+ initEvents(): void;
2780
+ handleButtonChange(e: any): void;
2781
+ showList(): void;
2782
+ hideList(): void;
2783
+ openSubtitle(): void;
2784
+ getSubTitleIndex(list: any, subtitle?: {
2785
+ id: string;
2786
+ language: string;
2787
+ }): number;
2788
+ registerIcons(): {
2789
+ vttSubOpen: {
2790
+ icon: any;
2791
+ class: string;
2792
+ };
2793
+ vttSubClose: {
2794
+ icon: any;
2795
+ class: string;
2796
+ };
2797
+ };
2798
+ registerLanguageTexts(): {
2799
+ sub: {
2800
+ jp: string;
2801
+ en: string;
2802
+ zh: string;
2803
+ "zh-hk": string;
2804
+ };
2805
+ subOpen: {
2806
+ jp: string;
2807
+ en: string;
2808
+ zh: string;
2809
+ "zh-hk": string;
2810
+ };
2811
+ subClose: {
2812
+ jp: string;
2813
+ en: string;
2814
+ zh: string;
2815
+ "zh-hk": string;
2816
+ };
2817
+ };
2818
+ creatOptionList(): void;
2819
+ getList(): any;
2820
+ renderOptionList(): void;
2821
+ handlerClickSwitch: (e: any, data: any) => void;
2822
+ /**
2823
+ *
2824
+ * @param {ISubTitleItem} subtitle
2825
+ * @returns
2826
+ */
2827
+ switchSubTitle(subtitle?: ISubTitleItem): any;
2828
+ switchOffSubtitle(): void;
2829
+ noShowSubtitle(): void;
2830
+ renderItemList(): void;
2831
+ /**
2832
+ *
2833
+ * @param { Array<SubTitleItem> } list
2834
+ * @param { boolean } needRemove 是否移除原来的字幕
2835
+ */
2836
+ updateSubtitles(list?: any[], needRemove?: boolean): void;
2837
+ updateList(data?: {}): void;
2838
+ changeTipText(): void;
2839
+ showMobilePanel(): void;
2840
+ updatePanel(): void;
2841
+ renderPanel(): HTMLElement;
2842
+ renderPanelItem(item: IPanelItem): HTMLElement;
2843
+ getTextByLang(item: any, key?: any, lang?: any): any;
2844
+ onPlayerFocus: (e: any) => void;
2845
+ onPlayerBlur: (e: any) => void;
2846
+ rePosition(): void;
2847
+ destroy(): void;
2848
+ render(): string;
2849
+ }
2850
+ export declare class DefinitionDemotePlugin extends Plugin {
2851
+ static get pluginName(): string;
2852
+ waitings: number[];
2853
+ timer: any;
2854
+ longWaitingEmitTime: number;
2855
+ waitingStartTime: number;
2856
+ playerData: any;
2857
+ isNeedShowTips: boolean;
2858
+ static get defaultConfig(): {
2859
+ oftenWaitingCount: number;
2860
+ oftenWaitingTime: number;
2861
+ longWaitingTime: number;
2862
+ isNeedAutoDemote: boolean;
2863
+ demotePriority: any[];
2864
+ };
2865
+ constructor(args: any);
2866
+ registerLanguageTexts(): {
2867
+ definition_demote_txt: {
2868
+ jp: string;
2869
+ en: string;
2870
+ zh: string;
2871
+ "zh-hk": string;
2872
+ };
2873
+ };
2874
+ afterCreate(): void;
2875
+ bindCtx(): void;
2876
+ bindEvents(): void;
2877
+ _waiting(): void;
2878
+ _count(): void;
2879
+ _time(): void;
2880
+ _clearTime(): void;
2881
+ clearState(): void;
2882
+ demote(): void;
2883
+ changeUrl(url: any): void;
2884
+ showToast(definition: any): void;
2885
+ destroy(): void;
2886
+ }
2887
+ export declare class TimeShiftPlugin extends Plugin {
2888
+ static get pluginName(): string;
2889
+ static get defaultConfig(): {
2890
+ position: string;
2891
+ livingStartTime: number;
2892
+ maxMoveTime: number;
2893
+ currentTime: number;
2894
+ timeShiftUrl: string;
2895
+ cardList: any[];
2896
+ };
2897
+ isMobile: boolean;
2898
+ playedBar: any;
2899
+ cachedBar: any;
2900
+ innerBar: any;
2901
+ progressBtn: any;
2902
+ progressPoint: any;
2903
+ backLiveBt: any;
2904
+ cardDomList: any[];
2905
+ initTime: number;
2906
+ liveGap: number;
2907
+ shiftTimeGap: number;
2908
+ isProgressMoving: boolean;
2909
+ isPlayTimeShift: boolean;
2910
+ private liveUrl;
2911
+ get duration(): any;
2912
+ registerLanguageTexts(): {
2913
+ BACKLIVE: {
2914
+ jp: string;
2915
+ en: string;
2916
+ zh: string;
2917
+ "zh-hk": string;
2918
+ };
2919
+ };
2920
+ updateLang(): void;
2921
+ afterCreate(): void;
2922
+ clacTime(): void;
2923
+ initEvents(): void;
2924
+ bindDomEvents(): void;
2925
+ handleTimeUpdate(): void;
2926
+ onBodyClick: (e: any) => void;
2927
+ handleMouseDown(e: any): void;
2928
+ handleMouseMove(e: any): void;
2929
+ handleMouseUp(e: any): void;
2930
+ handleMouseEnter(e: any): void;
2931
+ handleMouseLeave(): void;
2932
+ focus(): void;
2933
+ blur(): void;
2934
+ computeTime(e: any): {
2935
+ percent: number;
2936
+ offset: number;
2937
+ width: any;
2938
+ left: any;
2939
+ e: any;
2940
+ };
2941
+ tipsUpdate(e: any): void;
2942
+ updateShiftTime(percent: number): void;
2943
+ getCurrentProgress(): number;
2944
+ progressUpdate(): void;
2945
+ changeTimeShift(time: any): void;
2946
+ changeTimeUrl(): void;
2947
+ createBackLiveBtDom(): any;
2948
+ backLive(): void;
2949
+ toggleBackButton(): void;
2950
+ updateCardList(cardList: any): void;
2951
+ clearCardDom(): void;
2952
+ createTimeShiftCard(): void;
2953
+ renderCard(card: any): void;
2954
+ cardProcessUpdate(): void;
2955
+ calcCardProcess(time: any): number;
2956
+ destroy(): void;
2957
+ render(): string;
2958
+ }
2959
+ export declare class MirrorPlugin extends Plugin {
2960
+ static get pluginName(): string;
2961
+ static get defaultConfig(): {
2962
+ position: string;
2963
+ index: number;
2964
+ disable: boolean;
2965
+ defaultEnable: boolean;
2966
+ };
2967
+ isEnableMirror: boolean;
2968
+ constructor(args: any);
2969
+ afterCreate(): void;
2970
+ registerIcons(): {
2971
+ [x: string]: {
2972
+ icon: any;
2973
+ class: string;
2974
+ };
2975
+ };
2976
+ initIcons(): void;
2977
+ registerLanguageTexts(): {
2978
+ getMirror: {
2979
+ jp: string;
2980
+ en: string;
2981
+ zh: string;
2982
+ "zh-hk": string;
2983
+ };
2984
+ exitMirror: {
2985
+ jp: string;
2986
+ en: string;
2987
+ zh: string;
2988
+ "zh-hk": string;
2989
+ };
2990
+ };
2991
+ btnClick(e: any): void;
2992
+ action(flag: any): void;
2993
+ updateMirrorState(isEnableMirror: any): void;
2994
+ animate(isEnableMirror: any): void;
2995
+ switchTips(isEnableMirror: any): void;
2996
+ destroy(): void;
2997
+ render(): string;
2998
+ }
2999
+ declare class ToastPlugin extends Plugin {
3000
+ static get pluginName(): string;
3001
+ static get defaultConfig(): {
3002
+ index: number;
3003
+ };
3004
+ constructor(args: any);
3005
+ private toastNumber;
3006
+ private toastMaps;
3007
+ beforePlayerInit(): void;
3008
+ afterPlayerInit(): void;
3009
+ afterCreate(): void;
3010
+ destroy(): void;
3011
+ add(content: string | HTMLElement, duration?: number, isNeedCloseBt?: boolean): number;
3012
+ remove(id: number): void;
3013
+ renderToast(content: string | HTMLElement, isNeedCloseBt: any, id: any): HTMLElement;
3014
+ render(): string;
3015
+ }
3016
+ export declare class MemoryPlay extends Plugin {
3017
+ static get pluginName(): string;
3018
+ static get defaultConfig(): {
3019
+ getTime: any;
3020
+ saveTime: any;
3021
+ memoryId: string;
3022
+ };
3023
+ startTime: number;
3024
+ saveTimeFun: (id: number | string, time: number) => unknown;
3025
+ getTimeFun: (id: number | string) => number | Promise<number>;
3026
+ memoryId: number | string;
3027
+ canJump: boolean;
3028
+ constructor(args: any);
3029
+ registerLanguageTexts(): {
3030
+ preText: {
3031
+ jp: string;
3032
+ en: string;
3033
+ zh: string;
3034
+ "zh-hk": string;
3035
+ };
3036
+ };
3037
+ children(): {
3038
+ toast: typeof ToastPlugin;
3039
+ };
3040
+ afterCreate(): void;
3041
+ beforePlayerInit(): Promise<void>;
3042
+ destroy(): void;
3043
+ getTime(): Promise<void>;
3044
+ setSave(): void;
3045
+ showToast(): void;
3046
+ saveTimeByStorage(memoryId: any, time: any): void;
3047
+ getTimeByStorage(memoryId: any): string;
3048
+ }
3049
+ export declare type InfoItem = {
3050
+ key: string;
3051
+ label: string;
3052
+ labelTextKey?: string;
3053
+ value?: any;
3054
+ render?: (key: any) => string;
3055
+ type?: string;
3056
+ dom?: Element;
3057
+ };
3058
+ /**
3059
+ * 直播信息面板
3060
+ */
3061
+ export declare class LiveInfoPanel extends Plugin {
3062
+ private _pollTimer;
3063
+ private _infoItems;
3064
+ static get pluginName(): string;
3065
+ static get defaultConfig(): {
3066
+ visible: boolean;
3067
+ showH265Info: boolean;
3068
+ };
3069
+ get streamType(): any;
3070
+ afterCreate(): void;
3071
+ registerLanguageTexts(): {
3072
+ DECODEFPS: {
3073
+ en: string;
3074
+ zh: string;
3075
+ };
3076
+ DECODECOST: {
3077
+ en: string;
3078
+ zh: string;
3079
+ };
3080
+ FORMAT: {
3081
+ en: string;
3082
+ zh: string;
3083
+ };
3084
+ FPS: {
3085
+ en: string;
3086
+ zh: string;
3087
+ };
3088
+ BITRATE: {
3089
+ en: string;
3090
+ zh: string;
3091
+ };
3092
+ GOP: {
3093
+ en: string;
3094
+ zh: string;
3095
+ };
3096
+ RESOLUTION: {
3097
+ en: string;
3098
+ zh: string;
3099
+ };
3100
+ ENCODETYPE: {
3101
+ en: string;
3102
+ zh: string;
3103
+ };
3104
+ BUFFEREND: {
3105
+ en: string;
3106
+ zh: string;
3107
+ };
3108
+ CURRENTTIME: {
3109
+ en: string;
3110
+ zh: string;
3111
+ };
3112
+ };
3113
+ _getDefaultInfo(data: any): Record<string, InfoItem>;
3114
+ _init(): void;
3115
+ _getStats(): any;
3116
+ _getInfoListData(): Record<string, InfoItem>;
3117
+ _initDom(infoItems: any): any;
3118
+ _updateTitle(rowDom: Element, item: InfoItem): void;
3119
+ _updateDom(rowdom: Element, newItem: InfoItem): void;
3120
+ _renderLabel(item: InfoItem): any;
3121
+ _renderValue(item: InfoItem): any;
3122
+ _handleDataChange(): void;
3123
+ _tick(): void;
3124
+ _poll(): void;
3125
+ destroy(): void;
3126
+ _handleError(): void;
3127
+ _handleLoadedData(): void;
3128
+ _open(): void;
3129
+ _close(): void;
3130
+ open(): void;
3131
+ close(): void;
3132
+ render(): string;
3133
+ }
3134
+ export * from "xgplayer";
3135
+
3136
+ export {
3137
+ LiveSubTitlesPlugin as LiveSubtitlesPlugin,
3138
+ MusicPreset as Music,
3139
+ VePlayer as default,
3140
+ };
3141
+
3142
+ export {};