@volcengine/veplayer 1.9.0 → 1.9.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.
package/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
+ import VeStrategy from '@byted/volcengine-vestrategy';
2
+ import { StrategyRecommendation } from '@byted/volcengine-vestrategy';
3
+ import { VeStrategyH265Config } from '@byted/volcengine-vestrategy-h265';
4
+ import { PreloaderManager as PreloaderManagerOrigin } from '@byted/volcengine-vestrategy-preload';
1
5
  import VodLogger from '@byted/xgplayer-app-logger/es/logger.js';
2
- import VeStrategy from '@volcengine/vestrategy';
3
- import { StrategyRecommendation, VeStrategyInitOptions } from '@volcengine/vestrategy';
4
- import { VeStrategyH265Config } from '@volcengine/vestrategy-h265';
5
6
  import EventEmitter from 'eventemitter3';
6
7
  import Player from 'xgplayer';
7
8
  import { BasePlugin, I18N, IXGI18nText, Plugin } from 'xgplayer';
@@ -199,7 +200,8 @@ export interface IRtmConfig {
199
200
  * @kind property
200
201
  */
201
202
  /** {en}
202
- * @brief 弹幕相关设置
203
+ * @list Options
204
+ * @kind property
203
205
  */
204
206
  export interface IDanmuConfig {
205
207
  /**
@@ -306,7 +308,11 @@ export interface IMaskConfig {
306
308
  maskOffset?: number;
307
309
  interval?: number;
308
310
  }
309
- /**
311
+ /** {zh}
312
+ * @hidden
313
+ * @brief 语言类型
314
+ */
315
+ /** {en}
310
316
  * @hidden
311
317
  * @brief 语言类型
312
318
  */
@@ -315,7 +321,7 @@ export interface Lang {
315
321
  en: string;
316
322
  [props: string]: string;
317
323
  }
318
- /**
324
+ /** {zh}
319
325
  * @brief 弹幕项
320
326
  * @list Options
321
327
  * @kind property
@@ -323,7 +329,11 @@ export interface Lang {
323
329
  * @interface DanmuItem
324
330
  */
325
331
  /** {en}
326
- * @brief 弹幕项配置
332
+ * @list Options
333
+ * @kind property
334
+ * @export
335
+ * @interface DanmuItem
336
+ * @brief 弹幕项
327
337
  */
328
338
  export interface DanmuItem {
329
339
  /**
@@ -1359,6 +1369,146 @@ export declare type IPlayerOptions = {
1359
1369
  volumeColor?: string;
1360
1370
  };
1361
1371
  };
1372
+ /**
1373
+ * @brief mobile端交互配置。
1374
+ * @list Options
1375
+ * @kind property
1376
+ */
1377
+ export interface IMobileConfig {
1378
+ /**
1379
+ * @brief 是否禁用手势,手势包括:
1380
+ * - 水平手势滑动快进/快退
1381
+ * - 左侧手势滑动调节亮度
1382
+ * - 右侧手势滑动调节音量(iOS不可用)
1383
+ * @default false
1384
+ */
1385
+ disableGesture?: boolean;
1386
+ /**
1387
+ * @brief 是否启用水平手势处理,水平手势快进/快退
1388
+ * @default false
1389
+ */
1390
+ gestureX?: boolean;
1391
+ /**
1392
+ * @brief 是否启用垂直手势处理, 垂直手势包括屏幕右侧和屏幕左侧,默认左侧调节亮度,右侧调节音量,左右范围比例通过scopeL和scopeR设置
1393
+ * @default false
1394
+ */
1395
+ gestureY?: boolean;
1396
+ /**
1397
+ * @brief 左侧手势范围比例,取值0-1
1398
+ * @default 0.25
1399
+ */
1400
+ scopeL?: number;
1401
+ /**
1402
+ * @brief 右侧手势范围,取值0-1
1403
+ * @default 0.25
1404
+ */
1405
+ scopeR?: number;
1406
+ /**
1407
+ * @brief 是否启用左侧调暗功能,因为web端无法调用系统的亮度,这个功能实际使用透明蒙层实
1408
+ * @default true
1409
+ */
1410
+ darkness?: boolean;
1411
+ /**
1412
+ * @brief 播放器可调节的最大暗度,即蒙层最大透明度
1413
+ * @default 0.6
1414
+ */
1415
+ maxDarkness?: number;
1416
+ /**
1417
+ * @brief 是否启用上下渐变阴影,即在播放器在激活时上下范围内有阴影
1418
+ * - normal 上下阴影
1419
+ * - none 无阴影
1420
+ * - top 仅上阴影
1421
+ * - bottom 仅下阴影
1422
+ * @default normal
1423
+ */
1424
+ gradient?: "normal" | "none" | "top" | "bottom";
1425
+ /**
1426
+ * @brief 是否在touchMove事件触发时(即手势滑动时)同时更新播放器的currentTime, 在手势移动过程中,不会直接调用播放器的快进快退,在toucheEnd的时候再设置
1427
+ * @default false
1428
+ */
1429
+ isTouchingSeek?: boolean;
1430
+ /**
1431
+ * @brief 手势滑动的最小步伐,单位px,即滑动距离超过多少算作滑动,以减少不必要的滑动手势事件触发
1432
+ * @default 5
1433
+ */
1434
+ miniMoveStep?: number;
1435
+ /**
1436
+ * @brief 长按快进倍速
1437
+ * @default 2
1438
+ */
1439
+ pressRate?: number;
1440
+ /**
1441
+ * @brief 是否禁用时间预览雪碧图面板
1442
+ * @notice 前提需要配置进度条预览雪碧图 thumbnail
1443
+ * @default true
1444
+ */
1445
+ disableActive?: boolean;
1446
+ /**
1447
+ * @brief 是否禁用时间进度条,即拖动时不展示mini进度条
1448
+ * @default false
1449
+ */
1450
+ disableTimeProgress?: boolean;
1451
+ /**
1452
+ * @brief 手势拖动的时候是否隐藏控制栏
1453
+ * @default true
1454
+ */
1455
+ hideControlsActive?: boolean;
1456
+ /**
1457
+ * @brief 手势结束时隐藏控制栏
1458
+ * @default false
1459
+ */
1460
+ hideControlsEnd?: boolean;
1461
+ /**
1462
+ * @brief 滑动播放器区域快进/快退时,播放器区域对应的时长,即完整滑过播放器所对应的时长,单位ms
1463
+ * @default 360000
1464
+ */
1465
+ moveDuration?: number;
1466
+ /**
1467
+ * @brief 是否关闭双击切换暂停/播放的能力,同closeVideoDblclick
1468
+ * @default false
1469
+ */
1470
+ closedbClick?: boolean;
1471
+ /**
1472
+ * @brief 禁用长按倍速调整
1473
+ * @default true
1474
+ */
1475
+ disablePress?: boolean;
1476
+ /**
1477
+ * @brief 是否禁用快进/快退的时候按钮提示
1478
+ * @default false
1479
+ */
1480
+ disableSeekIcon?: boolean;
1481
+ }
1482
+ /**
1483
+ * @brief 播放器中间切换暂停/播放的按钮。
1484
+ * @list Options
1485
+ * @kind property
1486
+ */
1487
+ export interface IStartConfig {
1488
+ /**
1489
+ * @brief 暂停是否常驻
1490
+ * @default true
1491
+ */
1492
+ isShowPause?: boolean;
1493
+ /**
1494
+ * @brief 是否播放结束常驻
1495
+ * @default false
1496
+ */
1497
+ isShowEnd?: boolean;
1498
+ /**
1499
+ * @brief 是否禁用点击动画
1500
+ * @default pc:true,mobile:false
1501
+ */
1502
+ disableAnimate?: boolean;
1503
+ /**
1504
+ * @brief 按钮的跟随模式
1505
+ * - hide:起播之后隐藏
1506
+ * - show:常驻一直存在
1507
+ * - auto:自动跟随,播放器激活时即player.isActive=true的时候显示,否则隐藏
1508
+ * @default hide
1509
+ */
1510
+ mode?: "hide" | "show" | "auto";
1511
+ }
1362
1512
  /**
1363
1513
  * @brief 自动播放配置。
1364
1514
  * @list Options
@@ -1408,7 +1558,7 @@ export interface IAutoplayPluginConfig {
1408
1558
  */
1409
1559
  enableUserActionAutoplay?: boolean;
1410
1560
  /**
1411
- * @brief 静音自动播放时,是否在播放器容器上居中展示取消静音的大按钮
1561
+ * @brief 静音自动播放时,是否在播放器容器上居中展示取消静音的大按钮。
1412
1562
  * @default true
1413
1563
  */
1414
1564
  showUnmuteBtn?: boolean;
@@ -1462,12 +1612,13 @@ export declare const enum TOGGLE_MODES {
1462
1612
  */
1463
1613
  export interface IPlayListItem {
1464
1614
  /**
1465
- * @notes `playAuthToken` 为空时,此参数必传。
1615
+ * @notes 临时播放 Token 为空时,此参数必传。
1466
1616
  * @default -
1467
1617
  * @listtip `playAuthToken` 为空时,此参数必传。
1468
1618
  * @brief 视频地址。
1469
1619
  */
1470
1620
  /** {en}
1621
+ * @notes 临时播放 Token 为空时,此参数必传。
1471
1622
  */
1472
1623
  url?: string;
1473
1624
  /**
@@ -1953,6 +2104,8 @@ declare enum RTMCodec {
1953
2104
  * - `'sg'`:暂不生效
1954
2105
  * - `'va'`:暂不生效
1955
2106
  */
2107
+ /** {en}
2108
+ */
1956
2109
  export declare type TRegionType = "cn" | "mya" | "va" | "sg";
1957
2110
  /** {zh}
1958
2111
  * @brief 音乐循环模式:
@@ -1961,6 +2114,8 @@ export declare type TRegionType = "cn" | "mya" | "va" | "sg";
1961
2114
  * - `'loop'`:列表循环
1962
2115
  * - `'random'`:列表随机
1963
2116
  */
2117
+ /** {en}
2118
+ */
1964
2119
  export declare type PlayModeType = "order" | "sloop" | "loop" | "random";
1965
2120
  export interface IMusicListItem {
1966
2121
  /** {zh}
@@ -1996,6 +2151,10 @@ export interface IMusicListItem {
1996
2151
  * @list Options
1997
2152
  * @kind property
1998
2153
  */
2154
+ /** {en}
2155
+ * @list Options
2156
+ * @kind property
2157
+ */
1999
2158
  export interface IABCycle {
2000
2159
  /** {zh}
2001
2160
  * @default 0
@@ -2030,6 +2189,10 @@ export interface IABCycle {
2030
2189
  * @brief 音乐播放模式配置。
2031
2190
  * @kind property
2032
2191
  */
2192
+ /** {en}
2193
+ * @list Options
2194
+ * @kind property
2195
+ */
2033
2196
  export interface IMusicConfig {
2034
2197
  /** {zh}
2035
2198
  * @default false
@@ -2080,7 +2243,12 @@ export interface IMusicConfig {
2080
2243
  * @list Options
2081
2244
  * @brief 播放地址列表,可配置多线路和多清晰度。
2082
2245
  * @kind property
2083
- *
2246
+ * @export
2247
+ * @interface Stream
2248
+ */
2249
+ /** {en}
2250
+ * @list Options
2251
+ * @kind property
2084
2252
  * @export
2085
2253
  * @interface Stream
2086
2254
  */
@@ -2096,8 +2264,7 @@ export interface Stream extends Partial<IPlayInfoListItem> {
2096
2264
  */
2097
2265
  streamType?: string;
2098
2266
  /** {zh}
2099
- * @brief 播放地址
2100
- * 如果是数组形式,则数组每项需要传入src和type,分别表示视频地址及类型,在非MSE的播放方式下,将以HTML@{link https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/source <source>} 形式设置视频资源
2267
+ * @brief 视频播放地址。
2101
2268
  * @type {Url}
2102
2269
  * @memberof IPlayerConfig
2103
2270
  */
@@ -2169,6 +2336,9 @@ export interface Stream extends Partial<IPlayInfoListItem> {
2169
2336
  /** {zh}
2170
2337
  * @hidden
2171
2338
  */
2339
+ /** {en}
2340
+ * @hidden
2341
+ */
2172
2342
  export interface Condition {
2173
2343
  definition?: string;
2174
2344
  lineId?: number | string;
@@ -2177,6 +2347,9 @@ export interface Condition {
2177
2347
  /** {zh}
2178
2348
  * @hidden
2179
2349
  */
2350
+ /** {en}
2351
+ * @hidden
2352
+ */
2180
2353
  export interface Current {
2181
2354
  definition: string;
2182
2355
  streamType: string;
@@ -2193,10 +2366,13 @@ export interface Current {
2193
2366
  */
2194
2367
  [propName: string]: any;
2195
2368
  }
2196
- /**
2369
+ /** {zh}
2370
+ * @detail Options
2371
+ * @brief URL 类型。支持字符串和数组。如果是数组形式,则每个数组项应包含视频播放地址 `src` 和视频容器格式类型 `type`,在 HTML `<video />` 元素中使用 [`<source />`](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/source) 元素设置多种格式的视频源。以 `<source />` 元素设置的地址不支持 MSE(媒体源扩展)播放场景,例如 PC 上播放 HLS 视频或安卓上播放 HLS 加密视频。
2372
+ */
2373
+ /** {en}
2197
2374
  * @detail Options
2198
- * @brief url 类型,支持字符串和数组,当为数组时将以HTML@{link https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/source <source>} 形式设置视频资源,可设置多个格式以兼容不同的浏览器
2199
- * 注意:数组形式的url不支持hls、dash等的MSE方式播放
2375
+ * @brief URL type. Supports strings and arrays. If it's in the form of an array, each item in the array should contain the video playback address `src` and the video container format type `type`. Use the [<source />](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/source) element in the HTML `<video />` element to set multiple format video sources. The addresses set with the `<source />` element do not support MSE (Media Source Extensions) playback scenarios, such as playing HLS videos on PCs or encrypted HLS videos on Android.
2200
2376
  */
2201
2377
  export declare type Url = string | Array<{
2202
2378
  src: string;
@@ -2233,7 +2409,6 @@ export interface IPlayerConfig extends IPlayerOptions {
2233
2409
  root?: HTMLElement;
2234
2410
  /** {zh}
2235
2411
  * @brief 视频播放地址。
2236
- * 如果是数组形式,则数组每项需要传入src和type,分别表示视频地址及类型,在非MSE的播放方式下,将以HTML@{link https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/source <source>} 形式设置视频资源
2237
2412
  * @default -
2238
2413
  */
2239
2414
  url?: Url;
@@ -2247,7 +2422,7 @@ export interface IPlayerConfig extends IPlayerOptions {
2247
2422
  */
2248
2423
  vid?: string;
2249
2424
  /** {zh}
2250
- * @brief Vid 播放配置项。应用服务端需通过 `vid` 生成临时 `playAuthToken`,下发给客户端。
2425
+ * @brief Vid 播放配置项。应用服务端需通过 `vid` 生成临时临时播放 Token,下发给客户端。
2251
2426
  * @type {IPlayAuthTokenConfig}
2252
2427
  * @memberof IPlayerConfig
2253
2428
  */
@@ -2527,6 +2702,57 @@ export interface IPlayerConfig extends IPlayerOptions {
2527
2702
  * @default false
2528
2703
  */
2529
2704
  enableMenu?: boolean;
2705
+ /**
2706
+ * @brief 是否关闭pc端单击播放器区域切换播放/暂停
2707
+ * @default false
2708
+ */
2709
+ closeVideoClick?: boolean;
2710
+ /**
2711
+ * @brief pc端: 是否关闭双击播放器进入全屏的能力
2712
+ * mobile端: 是否关闭双击切换暂停/播放的能力
2713
+ * @default pc端: true, mobile端: false
2714
+ */
2715
+ closeVideoDblclick?: boolean;
2716
+ /**
2717
+ * @brief 是否关闭播放器自动失焦(只在pc端生效)
2718
+ * @default false
2719
+ */
2720
+ closeDelayBlur?: boolean;
2721
+ /**
2722
+ * @brief 播放器focus状态自动消失延迟时长,单位为ms
2723
+ * @default pc端: 2000, mobile端: 3000
2724
+ */
2725
+ inactive?: number;
2726
+ /**
2727
+ * @brief 用户鼠标离开播放器区域之后,控制栏隐藏延时时间,如果想要鼠标移出播放器区域就隐藏,则配置为0(只在pc端生效)
2728
+ * @default 0
2729
+ */
2730
+ leavePlayerTime?: number;
2731
+ /**
2732
+ * @brief 是否关闭play时触发player焦点状态
2733
+ * @default pc端:true, mobile端:false
2734
+ */
2735
+ closePlayVideoFocus?: boolean;
2736
+ /**
2737
+ * @brief 是否关闭pause时触发player焦点状态,会强制呼出控制栏
2738
+ * @default false
2739
+ */
2740
+ closePauseVideoFocus?: boolean;
2741
+ /**
2742
+ * @brief 是否需要在退出全屏后滚动定位到全屏之前的位置。(一般安卓下退出全屏后页面会滚动)
2743
+ * @default false
2744
+ */
2745
+ needFullscreenScroll?: boolean;
2746
+ /**
2747
+ * @brief 移动端交互插件配置
2748
+ * @default -
2749
+ */
2750
+ mobile?: IMobileConfig;
2751
+ /**
2752
+ * @brief 播放器中间切换暂停/播放的按钮插件配置
2753
+ * @default -
2754
+ */
2755
+ start?: IStartConfig;
2530
2756
  /** {zh}
2531
2757
  * @brief 是否开启 HLS 视频的 MSE 模式。仅移动端生效。默认情况下,在移动端使用原生 `video` 播放 HLS 视频。开启后,将采用 MSE 方式播放 HLS 视频,实现更好的兼容性、能控制缓存、节省流量。
2532
2758
  * @notes 仅移动端生效,开启后采用MSE方式播放HLS,默认在移动端使用原生video播放hls
@@ -2626,7 +2852,7 @@ export interface IPlayerConfig extends IPlayerOptions {
2626
2852
  */
2627
2853
  enableH265Degrade?: boolean;
2628
2854
  /** {zh}
2629
- * @brief 是否开启地址过期检测,开启后以轮询的方式将当前时间与过期时间戳进行对比,以判断是否过期
2855
+ * @brief 是否开启视频播放地址过期检测。开启后,播放器会轮询地将播放器所在的客户端时间与过期时间戳进行比较,以判断视频播放地址是否过期。
2630
2856
  * @default false
2631
2857
  */
2632
2858
  enableUrlExpireCheck?: boolean;
@@ -2636,23 +2862,23 @@ export interface IPlayerConfig extends IPlayerOptions {
2636
2862
  */
2637
2863
  urlExpireTimestamp?: number;
2638
2864
  /**
2639
- * @brief 判断地址过期的阈值,单位秒(s)。如设置为500时,则在过期前500ms时就可以检测出过期执行更新地址操作,为更新地址留足足够缓冲时间。
2865
+ * @brief 判断视频播放地址过期的阈值。单位为秒。如设置为 500,则 SDK 会在地址过期前 500 秒时就触发过期事件 `Events.MEDIA_EXPIRED`,为您更新地址留足缓冲时间。
2640
2866
  * @default 60
2641
2867
  */
2642
2868
  urlExpireDiff?: number;
2643
2869
  /**
2644
- * @brief 地址过期检测任务的时间间隔,单位ms。
2870
+ * @brief 视频播放地址过期检测的时间间隔。单位为毫秒。播放器以这个时间间隔轮询地将播放器所在的客户端时间与过期时间戳进行比较,以判断地址是否过期。
2645
2871
  * @default 400
2646
2872
  */
2647
2873
  urlCheckExpireInterval?: number;
2648
2874
  /** {zh}
2649
2875
  * @hidden
2650
- * @brief 资源过期时的回调函数,用来更新视频资源
2876
+ * @brief 播放源过期的回调函数。可用来更新播放源数据。
2651
2877
  * @default -
2652
2878
  */
2653
2879
  onMediaExpired?: () => Promise<SourceConfig>;
2654
2880
  /** {zh}
2655
- * @brief `playAuthToken` 过期时的回调函数,可用来更新 `playAuthToken`。
2881
+ * @brief 临时播放 Token 过期时的回调函数,可用来更新临时播放 Token。
2656
2882
  * @default -
2657
2883
  */
2658
2884
  onTokenExpired?: () => Promise<IPlayAuthTokenConfig>;
@@ -2702,7 +2928,7 @@ export interface IPlayerConfig extends IPlayerOptions {
2702
2928
  */
2703
2929
  EncryptHlsPlugin?: Partial<IEncryptHlsPluginConfig> | boolean;
2704
2930
  /** {zh}
2705
- * @brief 质量日志上报配置
2931
+ * @brief 质量日志上报配置。
2706
2932
  * @default -
2707
2933
  */
2708
2934
  vodLogOpts?: Partial<IVodLogOptsConfig>;
@@ -2713,7 +2939,7 @@ export interface IPlayerConfig extends IPlayerOptions {
2713
2939
  */
2714
2940
  Mp4EncryptPlayer?: Partial<IMp4EncryptPlayerConfig> | boolean;
2715
2941
  /** {zh}
2716
- * @brief 自适应码率配置项
2942
+ * @brief 自适应码率配置。
2717
2943
  * @default -
2718
2944
  */
2719
2945
  autoBitrateOpts?: IAutoBitrateOpts;
@@ -2747,18 +2973,18 @@ export interface IPlayerConfig extends IPlayerOptions {
2747
2973
  */
2748
2974
  playListPlugin?: IPlayListConfig;
2749
2975
  /** {zh}
2750
- * @brief 动态水印配置
2976
+ * @brief 动态水印配置。
2751
2977
  * @default -
2752
2978
  */
2753
2979
  dynamicwatermark?: IWatermarkConfig;
2754
2980
  /** {zh}
2755
- * @brief 进度条预览缩略图配置
2981
+ * @brief 进度条预览缩略图配置。
2756
2982
  * @default -
2757
2983
  */
2758
2984
  thumbnail?: IThumbnailConfig;
2759
2985
  }
2760
2986
  /**
2761
- * @brief source数据,可包含urlplayList、getVideoByToken和urlExpireTimestamp
2987
+ * @brief 播放源数据。支持传入视频播放地址 `url`、播放列表 `playList` 或者 `vid` `playAuthToken`,还需包含新地址的过期时间戳 `urlExpireTimestamp`。
2762
2988
  */
2763
2989
  export declare type SourceConfig = Pick<IPlayerConfig, "url" | "playList" | "getVideoByToken" | "urlExpireTimestamp">;
2764
2990
  /** {zh}
@@ -3212,44 +3438,242 @@ export interface ApiMapConfig {
3212
3438
  playDomain: string;
3213
3439
  backupPlayDomain?: string;
3214
3440
  }
3441
+ declare enum PreloadScene {
3442
+ /**
3443
+ * 普通场景(手动执行预加载)
3444
+ */
3445
+ NORMAL = 0,
3446
+ /**
3447
+ * Feed流场景(播放器自动执行预加载)
3448
+ */
3449
+ FEED = 1
3450
+ }
3215
3451
  declare enum StrategyNames {
3216
- H265 = "h265"
3452
+ /**
3453
+ * h265
3454
+ */
3455
+ H265 = "h265",
3456
+ /**
3457
+ * 预加载
3458
+ */
3459
+ PRELOAD = "preload"
3217
3460
  }
3218
- /**
3461
+ /**{zh}
3219
3462
  * @hidden
3220
- * @brief 策略配置项
3463
+ * h265策略配置
3464
+ * @detail detail
3465
+ */
3466
+ export declare type IH265Config = {
3467
+ /**
3468
+ * h265策略依赖Module
3469
+ */
3470
+ Strategy?: any;
3471
+ /**
3472
+ * 是否禁用265策略
3473
+ */
3474
+ disabled?: boolean;
3475
+ } & VeStrategyH265Config;
3476
+ /**{zh}
3477
+ * 预加载初始配置
3478
+ * @detail detail
3479
+ */
3480
+ export declare type IPreloadConfig = {
3481
+ /**
3482
+ * 预加载场景
3483
+ * @default 0
3484
+ * */
3485
+ preloadScene?: PreloadScene;
3486
+ /**
3487
+ * 向前预加载视频个数,Feed流场景时生效
3488
+ * @default 1
3489
+ */
3490
+ prevCount?: number;
3491
+ /**
3492
+ * 向后预加载视频个数,Feed流场景生效
3493
+ * @default 2
3494
+ */
3495
+ nextCount?: number;
3496
+ /**
3497
+ * 单个视频预加载时长
3498
+ * @default 5
3499
+ */
3500
+ preloadTime?: number;
3501
+ /**
3502
+ * 最大视频缓存个数
3503
+ * @default 15
3504
+ */
3505
+ preloadMaxCacheCount?: number;
3506
+ /**
3507
+ * 预加载依赖Module
3508
+ */
3509
+ Strategy?: any;
3510
+ /**
3511
+ * 是否禁用预加载
3512
+ */
3513
+ disabled?: boolean;
3514
+ };
3515
+ /**{zh}
3516
+ * 高级能力(策略)配置
3517
+ * @detail detail
3221
3518
  */
3222
3519
  export declare type StrategyConfigOptions = {
3223
- [StrategyNames.H265]?: boolean | {
3224
- Strategy?: any;
3225
- disabled?: boolean;
3226
- config?: VeStrategyH265Config;
3227
- };
3520
+ /**
3521
+ * @hidden
3522
+ * h265策略配置
3523
+ */
3524
+ [StrategyNames.H265]?: boolean | IH265Config;
3525
+ /**
3526
+ * 预加载配置
3527
+ */
3528
+ [StrategyNames.PRELOAD]?: boolean | IPreloadConfig;
3228
3529
  };
3229
- export declare type StrategyInitOptions = Omit<VeStrategyInitOptions, "strategies"> & {
3230
- Module: typeof VeStrategy;
3530
+ /**{zh}
3531
+ * 播放器预初始化配置
3532
+ * @detail detail
3533
+ */
3534
+ export declare type StrategyInitOptions = {
3535
+ /**
3536
+ * 应用ID
3537
+ */
3538
+ appId: number;
3539
+ /**
3540
+ * 高级能力(策略)配置
3541
+ */
3231
3542
  strategies: StrategyConfigOptions;
3543
+ /**
3544
+ * 设备ID
3545
+ */
3546
+ deviceId?: string;
3547
+ /**
3548
+ * 手动注入依赖插件,默认自动加载
3549
+ */
3550
+ plugins?: any[];
3551
+ /**
3552
+ * 策略Module,默认自动加载
3553
+ */
3554
+ Module?: typeof VeStrategy;
3555
+ };
3556
+ /**{zh}
3557
+ * 预加载实例,通过预加载实例可执行一些高级方法
3558
+ * @detail detail
3559
+ */
3560
+ export declare type PreloaderManager = {
3561
+ /**
3562
+ * 移除所有已预加载数据
3563
+ */
3564
+ removeAll(): void;
3565
+ /**
3566
+ * 移除所有预加载任务
3567
+ */
3568
+ removeAllPreloadTask(): void;
3569
+ /**
3570
+ * 清空待预加载列表
3571
+ */
3572
+ clearPreloadList(): void;
3573
+ };
3574
+ declare enum PreloaderStatus {
3575
+ /**
3576
+ * 不可用
3577
+ */
3578
+ DISABLED = 0,
3579
+ /**
3580
+ * 初始状态
3581
+ */
3582
+ INITIALIZING = 1,
3583
+ /**
3584
+ * 已Ready
3585
+ */
3586
+ READY = 2,
3587
+ /**
3588
+ * 加载失败
3589
+ */
3590
+ FAILED = 3
3591
+ }
3592
+ /**{zh}
3593
+ * 预加载配置更新
3594
+ * @detail detail
3595
+ */
3596
+ export declare type IPreloadUpdateConfig = {
3597
+ /**
3598
+ * 向前加载视频个数
3599
+ */
3600
+ prevCount?: number;
3601
+ /**
3602
+ * 向后加载视频个数
3603
+ */
3604
+ nextCount?: number;
3605
+ };
3606
+ /**{zh}
3607
+ * 预加载视频资源
3608
+ * @detail detail
3609
+ */
3610
+ export declare type IPreloadStream = {
3611
+ /**
3612
+ * 视频唯一ID
3613
+ */
3614
+ vid: string;
3615
+ /**
3616
+ * 播放地址
3617
+ */
3618
+ url: string;
3619
+ /**
3620
+ * 视频清晰度
3621
+ */
3622
+ definition: string;
3623
+ /**
3624
+ * 视频streamType,暂只支持 mp4
3625
+ */
3626
+ streamType: string;
3627
+ /**
3628
+ * 视频codec,暂支持 h264
3629
+ */
3630
+ codec: string;
3631
+ /**
3632
+ * 码率, 数据统计需要,可选填
3633
+ */
3634
+ bitrate: number;
3635
+ /**
3636
+ * 视频时长,数据统计需要,可选填
3637
+ */
3638
+ duration: number;
3639
+ /**
3640
+ * 视频大小,数据统计需要,可选填
3641
+ */
3642
+ size: number;
3232
3643
  };
3233
3644
  declare class VeStrategyWrapper {
3645
+ private tea;
3234
3646
  private static mapStrategyNameToUmdKey;
3235
3647
  private static TEA_ID;
3648
+ preloader: PreloaderManagerOrigin | undefined;
3649
+ preloaderStatus: PreloaderStatus;
3236
3650
  private sdkUmdLoader;
3237
3651
  private webId;
3238
3652
  private config;
3239
3653
  private status;
3240
3654
  private initPromise;
3655
+ private preloadCacheConfig;
3656
+ private preloadCacheScene;
3657
+ private preloadCacheList;
3241
3658
  constructor();
3242
3659
  private initUmdLoader;
3243
3660
  private fetchWebId;
3661
+ private initTea;
3244
3662
  private fetchVeStrategy;
3245
3663
  private fetchStrategies;
3246
3664
  private initOnce;
3247
3665
  init(config: StrategyInitOptions): Promise<boolean>;
3666
+ initPreloadService(options: StrategyInitOptions): Promise<boolean>;
3667
+ addPreloadList(list: IPreloadStream[]): void;
3668
+ setPreloadList(list: IPreloadStream[]): Promise<void>;
3669
+ setPreloadScene(preloadScene: PreloadScene, options?: any): void;
3248
3670
  prepare(): Promise<boolean>;
3249
3671
  getDeviceId(): string;
3250
3672
  isReady(): boolean;
3251
3673
  getStrategyRecommendations(): StrategyRecommendation;
3674
+ getStrategyRecommendationsAsync(): Promise<StrategyRecommendation>;
3252
3675
  isHevcRecommended(): boolean;
3676
+ private initPreloaderConfig;
3253
3677
  }
3254
3678
  declare const _default: VeStrategyWrapper;
3255
3679
  declare class PlayerData {
@@ -3426,7 +3850,9 @@ declare enum UmdKeys {
3426
3850
  StreamProbe = "streamprobe",
3427
3851
  VeStrategy = "vestrategy",
3428
3852
  VeStrategyH265 = "vestrategy_h265",
3429
- DashAbralgo = "DashAbralgo"
3853
+ VeStrategyPreload = "vestrategy_preload",
3854
+ DashAbralgo = "DashAbralgo",
3855
+ Preloader = "preloader"
3430
3856
  }
3431
3857
  /**
3432
3858
  * @hidden
@@ -3473,7 +3899,10 @@ declare class umdLoader {
3473
3899
  */
3474
3900
  loadPlugins(pluginName: UmdKeys, successCallback?: () => void): Promise<any>;
3475
3901
  }
3476
- /**
3902
+ /** {zh}
3903
+ * @hidden
3904
+ */
3905
+ /** {en}
3477
3906
  * @hidden
3478
3907
  */
3479
3908
  export declare type PlayerCore = Player & {
@@ -3595,6 +4024,37 @@ declare class VePlayer {
3595
4024
  * @memberof VePlayer
3596
4025
  */
3597
4026
  static sdkVersion: string;
4027
+ /**{zh}
4028
+ * @brief 播放器预初始化配置
4029
+ * @param options 初始化配置,详情见{@link StrategyInitOptions}
4030
+ */
4031
+ static prepare(options: StrategyInitOptions): Promise<void>;
4032
+ /**{zh}
4033
+ * @brief 设置预加载模式
4034
+ * @param preloadScene 预加载模式,详情见{@link PreloadScene}
4035
+ * @param options 预加载配置更新,详情见{@link IPreloadUpdateConfig}
4036
+ */
4037
+ static setPreloadScene(preloadScene: PreloadScene, options?: IPreloadUpdateConfig): void;
4038
+ /**{zh}
4039
+ * @brief 获取预加载实例,可通过预加载实例执行高级方法,需在VePlayer.prepare Promise执行完成之后才能获取到预加载实例
4040
+ * @returns 预加载实例,详情见{@link PreloaderManager}
4041
+ */
4042
+ static get preloader(): PreloaderManager | undefined;
4043
+ /**{zh}
4044
+ * @brief 获取当前预加载实例状态
4045
+ * @returns 预加载实例状态,详情见{@link PreloaderStatus}
4046
+ */
4047
+ static get preloaderStatus(): PreloaderStatus;
4048
+ /**{zh}
4049
+ * @brief 添加待预加载视频列表
4050
+ * @param list 待预加载视频列表,详情见{@link IPreloadStream[]}。
4051
+ */
4052
+ static addPreloadList(list: IPreloadStream[]): void;
4053
+ /**{zh}
4054
+ * @brief 设置待预加载视频列表,替换当前已设置的待预加载列表
4055
+ * @param list 待预加载视频列表,详情见{@link IPreloadStream[]}
4056
+ */
4057
+ static setPreloadList(list: IPreloadStream[]): Promise<void>;
3598
4058
  /**
3599
4059
  * @hidden
3600
4060
  * @param codec
@@ -3819,8 +4279,8 @@ declare class VePlayer {
3819
4279
  */
3820
4280
  private _onMediaExpiredAction;
3821
4281
  /**
3822
- * @brief 更新视频源,常用于地址过期时或者过期前更新视频地址及过期时间戳
3823
- * @param source 视频资源配置,支持传入地址urlplayList、getVideByToken以及过期检查的相关配置
4282
+ * @brief 更新播放源。您可在视频播放地址过期前调用此方法更新地址及过期时间戳。
4283
+ * @param source 播放源配置。详见 [SourceConfig](1248901#sourceconfig)。支持传入视频播放地址 `url`、播放列表 `playList` 或者 `vid` 和 `playAuthToken`,还需包含新地址的过期时间戳 `urlExpireTimestamp`。
3824
4284
  */
3825
4285
  updateMediaSource(source: SourceConfig): Promise<void>;
3826
4286
  /** {zh}
@@ -3868,17 +4328,17 @@ declare class VePlayer {
3868
4328
  */
3869
4329
  getSdkPlugin(name: any): any;
3870
4330
  /** {zh}
3871
- * @brief 播放时更换 `playAuthToken`,以更换视频源。
4331
+ * @brief 播放时更换临时播放 Token,以更换视频源。
3872
4332
  * @memberof VePlayer
3873
- * @param config `playAuthToken` 配置。
4333
+ * @param config 临时播放 Token 配置。
3874
4334
  * @param isNewVideo 是否为新视频。为 `false` 时,更换后,会从更换前的时间点继续播放。
3875
4335
  */
3876
4336
  switchAuthToken(config: IPlayAuthTokenConfig, isNewVideo?: boolean): Promise<void>;
3877
4337
  /** {zh}
3878
- * @brief 更新 `playAuthToken`。
4338
+ * @brief 更新临时播放 Token。
3879
4339
  * @memberof VePlayer
3880
- * @notes 播放前 `playAuthToken` 过期(收到 `play_auth_token_expired` 事件或者 `onTokenExpired` 回调触发)时,调用此方法更新 `playAuthToken`。
3881
- * @param config `playAuthToken` 配置。
4340
+ * @notes 播放前临时播放 Token 过期(收到 `play_auth_token_expired` 事件或者 `onTokenExpired` 回调触发)时,调用此方法更新临时播放 Token。
4341
+ * @param config 临时播放 Token 配置。
3882
4342
  */
3883
4343
  updateAuthToken(config: IPlayAuthTokenConfig): Promise<void>;
3884
4344
  private _playerPlayNext;