@volcengine/veplayer 1.17.0-rc.0 → 1.17.0-rc.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
@@ -897,6 +897,24 @@ export declare class DefinitionDemotePlugin extends Plugin {
897
897
  showToast(definition: Stream): void;
898
898
  destroy(): void;
899
899
  }
900
+ export interface IAudioTrackConfig {
901
+ /** 控件在控制栏中的排列顺序,数值越小越靠左。@default 5 */
902
+ index?: number;
903
+ /** 是否显示图标按钮。@default true */
904
+ isShowIcon?: boolean;
905
+ /** 竖屏时是否隐藏控件。@default false */
906
+ hidePortrait?: boolean;
907
+ /** 音轨列表中是否在语言名称后显示括号内的原始轨道名,如 `日本語 (Stereo AudioTrack1)`。@default true */
908
+ showNameSuffix?: boolean;
909
+ }
910
+ export interface IAudioTrackMobileConfig {
911
+ /** 控件在控制栏中的排列顺序,数值越小越靠左。@default 2.6 */
912
+ index?: number;
913
+ /** 是否显示图标按钮。@default true */
914
+ isShowIcon?: boolean;
915
+ /** 音轨列表中是否在语言名称后显示括号内的原始轨道名,如 `日本語 (Stereo AudioTrack1)`。@default true */
916
+ showNameSuffix?: boolean;
917
+ }
900
918
  /**
901
919
  * @brief DASH 播放配置。
902
920
  * @list Options
@@ -2378,24 +2396,36 @@ export interface IMusicListItem {
2378
2396
  * @type {string}
2379
2397
  * @brief 音乐播放地址。
2380
2398
  */
2399
+ /** {en}
2400
+ * @brief Music playback URL.
2401
+ */
2381
2402
  src: string;
2382
2403
  /** {zh}
2383
2404
  * @type {string | number}
2384
2405
  * @memberof IMusicListItem
2385
2406
  * @brief 音乐唯一 ID。
2386
2407
  */
2408
+ /** {en}
2409
+ * @brief Unique music ID.
2410
+ */
2387
2411
  vid: string | number;
2388
2412
  /** {zh}
2389
2413
  * @type {string}
2390
2414
  * @memberof IMusicListItem
2391
2415
  * @brief 音乐封面 URL 地址。
2392
2416
  */
2417
+ /** {en}
2418
+ * @brief Music cover image URL.
2419
+ */
2393
2420
  poster?: string;
2394
2421
  /** {zh}
2395
2422
  * @type {string}
2396
2423
  * @memberof IMusicListItem
2397
2424
  * @brief 音乐标题。
2398
2425
  */
2426
+ /** {en}
2427
+ * @brief Music title.
2428
+ */
2399
2429
  title?: string;
2400
2430
  /** {zh}
2401
2431
  * @hidden
@@ -2419,6 +2449,10 @@ export interface IABCycle {
2419
2449
  * @memberof IABCycle
2420
2450
  * @brief AB 循环段开始时间,单位为秒。
2421
2451
  */
2452
+ /** {en}
2453
+ * @brief AB loop start time in seconds.
2454
+ * @default 0
2455
+ */
2422
2456
  start: number;
2423
2457
  /** {zh}
2424
2458
  * @default 音乐结束时间点
@@ -2427,6 +2461,10 @@ export interface IABCycle {
2427
2461
  * @memberof IABCycle
2428
2462
  * @brief AB 循环段开始时间,单位为秒。
2429
2463
  */
2464
+ /** {en}
2465
+ * @brief AB loop end time in seconds.
2466
+ * @default End of audio
2467
+ */
2430
2468
  end: number;
2431
2469
  /** {zh}
2432
2470
  * @default false
@@ -2434,6 +2472,10 @@ export interface IABCycle {
2434
2472
  * @memberof IABCycle
2435
2473
  * @brief AB 段是否循环播放。
2436
2474
  */
2475
+ /** {en}
2476
+ * @brief Whether to loop the AB segment.
2477
+ * @default false
2478
+ */
2437
2479
  loop?: boolean;
2438
2480
  /**
2439
2481
  * @hidden
@@ -2457,6 +2499,10 @@ export interface IMusicConfig {
2457
2499
  * @memberof IMusicConfig
2458
2500
  * @brief 是否启用离线下载播放。
2459
2501
  */
2502
+ /** {en}
2503
+ * @brief Whether to enable offline downloaded playback.
2504
+ * @default false
2505
+ */
2460
2506
  offline?: boolean;
2461
2507
  /** {zh}
2462
2508
  * @default null
@@ -2465,6 +2511,10 @@ export interface IMusicConfig {
2465
2511
  * @memberof IMusicConfig
2466
2512
  * @brief AB 循环播放配置。
2467
2513
  */
2514
+ /** {en}
2515
+ * @brief AB loop playback configuration.
2516
+ * @default null
2517
+ */
2468
2518
  abCycle?: IABCycle | null;
2469
2519
  /** {zh}
2470
2520
  * @default 15
@@ -2473,6 +2523,10 @@ export interface IMusicConfig {
2473
2523
  * @memberof IMusicConfig
2474
2524
  * @brief 快进快退时间跨度,单位为秒。
2475
2525
  */
2526
+ /** {en}
2527
+ * @brief Fast-forward / rewind step in seconds.
2528
+ * @default 15
2529
+ */
2476
2530
  timeScale?: number;
2477
2531
  /** {zh}
2478
2532
  * @default order
@@ -2481,6 +2535,10 @@ export interface IMusicConfig {
2481
2535
  * @memberof IMusicConfig
2482
2536
  * @brief 循环模式。
2483
2537
  */
2538
+ /** {en}
2539
+ * @brief Playback loop mode: `order`, `sloop` (single loop), `loop` (list loop), `random`.
2540
+ * @default order
2541
+ */
2484
2542
  mode?: PlayModeType;
2485
2543
  /** {zh}
2486
2544
  * @default []
@@ -2489,6 +2547,10 @@ export interface IMusicConfig {
2489
2547
  * @memberof IMusicConfig
2490
2548
  * @brief 播放列表。
2491
2549
  */
2550
+ /** {en}
2551
+ * @brief Music playlist.
2552
+ * @default []
2553
+ */
2492
2554
  list?: Array<IMusicListItem>;
2493
2555
  /** {zh}
2494
2556
  * @hidden
@@ -2518,18 +2580,27 @@ export interface Stream extends Partial<IPlayInfoListItem> {
2518
2580
  * - `"mp4"`
2519
2581
  * - `"hls"`
2520
2582
  */
2583
+ /** {en}
2584
+ * @brief Stream type: `"rtm"`, `"flv"`, `"mp4"`, or `"hls"`.
2585
+ */
2521
2586
  streamType?: string;
2522
2587
  /** {zh}
2523
2588
  * @brief 视频播放地址。
2524
2589
  * @type {Url}
2525
2590
  * @memberof IPlayerConfig
2526
2591
  */
2592
+ /** {en}
2593
+ * @brief Video playback URL.
2594
+ */
2527
2595
  url: Url;
2528
2596
  /** {zh}
2529
2597
  * @type {string}
2530
2598
  * @memberof Stream
2531
2599
  * @brief 清晰度 key
2532
2600
  */
2601
+ /** {en}
2602
+ * @brief Definition key for this stream.
2603
+ */
2533
2604
  definition?: string;
2534
2605
  /** {zh}
2535
2606
  * @type {string}
@@ -2537,6 +2608,10 @@ export interface Stream extends Partial<IPlayInfoListItem> {
2537
2608
  * @brief 映射清晰度 key
2538
2609
  * @default -
2539
2610
  */
2611
+ /** {en}
2612
+ * @brief Mapped definition key.
2613
+ * @default -
2614
+ */
2540
2615
  mapDefinition?: string;
2541
2616
  /** {zh}
2542
2617
  * @type {string}
@@ -2548,10 +2623,17 @@ export interface Stream extends Partial<IPlayInfoListItem> {
2548
2623
  * @brief 编码格式
2549
2624
  * @default unknown
2550
2625
  */
2626
+ /** {en}
2627
+ * @brief Codec type of this stream.
2628
+ * @default unknown
2629
+ */
2551
2630
  codec?: ICodecType;
2552
2631
  /** {zh}
2553
2632
  * @brief 线路唯一 ID
2554
2633
  */
2634
+ /** {en}
2635
+ * @brief Unique line (CDN route) ID.
2636
+ */
2555
2637
  lineId?: number | string;
2556
2638
  /** {zh}
2557
2639
  * @example
@@ -2602,6 +2684,9 @@ export interface Stream extends Partial<IPlayInfoListItem> {
2602
2684
  /** {zh}
2603
2685
  * @brief 私有加密播放的加密密钥,对应{@link https://www.volcengine.com/docs/4/2918 GetPlayInfo} 接口返回的PlayInfoList项中的 PlayAuth
2604
2686
  */
2687
+ /** {en}
2688
+ * @brief Encryption key for private-encrypted playback, corresponding to `PlayAuth` in the GetPlayInfo response.
2689
+ */
2605
2690
  secretKey?: string;
2606
2691
  /**
2607
2692
  * @brief 视频为加密视频时的加密类型
@@ -2697,6 +2782,10 @@ export interface IPlayerConfig extends IPlayerOptions {
2697
2782
  * @default -
2698
2783
  * @listtip `id` 和 `root` 参数需至少传入 1 个。如果都传入,则优先使用 `root` 参数。
2699
2784
  */
2785
+ /** {en}
2786
+ * @brief Player container ID. The player will be inserted into this container. At least one of `id` or `root` must be provided.
2787
+ * @default -
2788
+ */
2700
2789
  id?: string;
2701
2790
  /** {zh}
2702
2791
  * @brief 播放器容器 DOM 元素。VePlayer 将被插入该容器中。
@@ -2704,11 +2793,19 @@ export interface IPlayerConfig extends IPlayerOptions {
2704
2793
  * @default -
2705
2794
  * @listtip `id` 和 `root` 参数需至少传入 1 个。如果都传入,则优先使用 `root` 参数。
2706
2795
  */
2796
+ /** {en}
2797
+ * @brief Player container DOM element. VePlayer will be inserted into this container. At least one of `id` or `root` must be provided; `root` takes precedence when both are provided.
2798
+ * @default -
2799
+ */
2707
2800
  root?: HTMLElement;
2708
2801
  /** {zh}
2709
2802
  * @brief 视频播放地址。
2710
2803
  * @default -
2711
2804
  */
2805
+ /** {en}
2806
+ * @brief Video playback URL.
2807
+ * @default -
2808
+ */
2712
2809
  url?: Url;
2713
2810
  /** {zh}
2714
2811
  * @brief 视频点播服务中的视频 ID。推荐填写,以方便跟踪该视频的播放质量。您将音视频上传至视频点播服务后,可通过以下方式获取 `Vid`:
@@ -2718,21 +2815,35 @@ export interface IPlayerConfig extends IPlayerOptions {
2718
2815
  * - 如果您设置了媒资上传完成的回调事件,会在 [FileUploadComplete](https://www.volcengine.com/docs/4/4655) 中返回 `Vid`。
2719
2816
  * @default -
2720
2817
  */
2818
+ /** {en}
2819
+ * @brief Video ID in the VOD service. Recommended for tracking playback quality.
2820
+ * @default -
2821
+ */
2721
2822
  vid?: string;
2722
2823
  /** {zh}
2723
2824
  * @brief Vid 播放配置项。应用服务端需通过 `vid` 生成临时临时播放 Token,下发给客户端。
2724
2825
  * @type {IPlayAuthTokenConfig}
2725
2826
  * @memberof IPlayerConfig
2726
2827
  */
2828
+ /** {en}
2829
+ * @brief Vid playback configuration. The app server generates a temporary play token from `vid` and passes it to the client.
2830
+ */
2727
2831
  getVideoByToken?: IPlayAuthTokenConfig;
2728
2832
  /** {zh}
2729
2833
  * @brief 视频加密类型
2730
2834
  * @default -
2731
2835
  */
2836
+ /** {en}
2837
+ * @brief Video encryption type.
2838
+ * @default -
2839
+ */
2732
2840
  drmType?: EDRMTYPE;
2733
2841
  /** {zh}
2734
2842
  * @brief 私有加密会话id
2735
2843
  */
2844
+ /** {en}
2845
+ * @brief Private encryption session ID.
2846
+ */
2736
2847
  encryptSessionId?: string;
2737
2848
  /**
2738
2849
  * @brief 视频为加密视频时的密钥KeyId,对应{@link https://www.volcengine.com/docs/4/2918 GetPlayInfo} 接口返回的PlayInfoList项中的 PlayAuthId
@@ -2742,6 +2853,9 @@ export interface IPlayerConfig extends IPlayerOptions {
2742
2853
  /** {zh}
2743
2854
  * @brief 私有加密播放的加密密钥,对应{@link https://www.volcengine.com/docs/4/2918 GetPlayInfo} 接口返回的PlayInfoList项中的 PlayAuth
2744
2855
  */
2856
+ /** {en}
2857
+ * @brief Encryption key for private-encrypted playback, corresponding to `PlayAuth` in the GetPlayInfo response.
2858
+ */
2745
2859
  playAuth?: string;
2746
2860
  /** {zh}
2747
2861
  * @brief 视频格式。取值如下:
@@ -2751,21 +2865,36 @@ export interface IPlayerConfig extends IPlayerOptions {
2751
2865
  * - `flv`
2752
2866
  * @listtip 如果 `url` 参数取值中不包含文件格式后缀,则 `streamType` 必填。
2753
2867
  */
2868
+ /** {en}
2869
+ * @brief Video format. Required when the `url` does not include a file extension.
2870
+ */
2754
2871
  streamType?: "mp4" | "hls" | "dash" | "rtm" | "flv";
2755
2872
  /** {zh}
2756
2873
  * @brief 播放器宽度。可传入数字或者 CSS `width` 属性值。如为数字,单位为 px。
2757
2874
  * @default 100%
2758
2875
  */
2876
+ /** {en}
2877
+ * @brief Player width. Accepts a number (px) or a CSS `width` value.
2878
+ * @default 100%
2879
+ */
2759
2880
  width?: number | string;
2760
2881
  /** {zh}
2761
2882
  * @brief 播放器高度。可传入数字或者 CSS `width` 属性值。如为数字,单位为 px。
2762
2883
  * @default 100%
2763
2884
  */
2885
+ /** {en}
2886
+ * @brief Player height. Accepts a number (px) or a CSS `height` value.
2887
+ * @default 100%
2888
+ */
2764
2889
  height?: number | string;
2765
2890
  /** {zh}
2766
2891
  * @brief 默认起播音量。取值范围为 [0,1]。
2767
2892
  * @default 0.6
2768
2893
  */
2894
+ /** {en}
2895
+ * @brief Initial playback volume. Range: [0, 1].
2896
+ * @default 0.6
2897
+ */
2769
2898
  volume?: number;
2770
2899
  /** {zh}
2771
2900
  * @brief 是否开启自动播放。取值如下:
@@ -2775,10 +2904,17 @@ export interface IPlayerConfig extends IPlayerOptions {
2775
2904
  * @notes 受限制于浏览器策略,自动播放不一定能成功,取决于浏览器环境、用户行为、浏览器配置等,详细参考自动播放 @link https://www.volcengine.com/docs/4/68693#%E8%87%AA%E5%8A%A8%E6%92%AD%E6%94%BE
2776
2905
  * @listtip 受限于浏览器策略,自动播放不一定能成功,取决于浏览器环境、用户行为、浏览器配置等。详情请参考[自动播放](https://www.volcengine.com/docs/4/68693#%E8%87%AA%E5%8A%A8%E6%92%AD%E6%94%BE)。
2777
2906
  */
2907
+ /** {en}
2908
+ * @brief Whether to enable autoplay. Subject to browser autoplay policies.
2909
+ * @default false
2910
+ */
2778
2911
  autoplay?: boolean;
2779
2912
  /** {zh}
2780
2913
  * @brief 视频封面图配置。
2781
2914
  */
2915
+ /** {en}
2916
+ * @brief Video poster image configuration.
2917
+ */
2782
2918
  poster?: string | IPoster;
2783
2919
  /** {zh}
2784
2920
  * @brief 是否开启静音自动播放。取值如下:
@@ -2786,6 +2922,10 @@ export interface IPlayerConfig extends IPlayerOptions {
2786
2922
  * - `false`:关闭静音自动播放。
2787
2923
  * @default false
2788
2924
  */
2925
+ /** {en}
2926
+ * @brief Whether to enable muted autoplay.
2927
+ * @default false
2928
+ */
2789
2929
  autoplayMuted?: boolean;
2790
2930
  /** {zh}
2791
2931
  * @brief 是否开启降级静音自动播放。开启后,有声音自动播放失败时,会降级成静音自动播放。取值如下:
@@ -2793,6 +2933,10 @@ export interface IPlayerConfig extends IPlayerOptions {
2793
2933
  * - `false`:关闭降级静音自动播放
2794
2934
  * @default false
2795
2935
  */
2936
+ /** {en}
2937
+ * @brief Whether to fall back to muted autoplay when autoplay with sound fails.
2938
+ * @default false
2939
+ */
2796
2940
  enableDegradeMuteAutoplay?: boolean;
2797
2941
  /** {zh}
2798
2942
  * @brief 启用微信jsBridge方式的自动播放,默认不开启
@@ -2811,6 +2955,10 @@ export interface IPlayerConfig extends IPlayerOptions {
2811
2955
  * - `false`:不开启
2812
2956
  * @default false
2813
2957
  */
2958
+ /** {en}
2959
+ * @brief Whether to allow the first user interaction (any click) to trigger autoplay.
2960
+ * @default false
2961
+ */
2814
2962
  enableUserActionAutoplay?: boolean;
2815
2963
  /** {zh}
2816
2964
  * @brief 是否开启循环播放。取值如下:
@@ -2818,11 +2966,19 @@ export interface IPlayerConfig extends IPlayerOptions {
2818
2966
  * - `false`:关闭循环播放。
2819
2967
  * @default false
2820
2968
  */
2969
+ /** {en}
2970
+ * @brief Whether to enable loop playback.
2971
+ * @default false
2972
+ */
2821
2973
  loop?: boolean;
2822
2974
  /** {zh}
2823
2975
  * @brief 默认起播倍速。可设为 `0.5`、`0.75`、`1`、`1.5`、`2`。
2824
2976
  * @default 1
2825
2977
  */
2978
+ /** {en}
2979
+ * @brief Default playback rate. Supported values: `0.5`, `0.75`, `1`, `1.5`, `2`.
2980
+ * @default 1
2981
+ */
2826
2982
  defaultPlaybackRate?: number;
2827
2983
  /** {zh}
2828
2984
  * @brief 界面语言。取值如下:
@@ -2832,6 +2988,10 @@ export interface IPlayerConfig extends IPlayerOptions {
2832
2988
  * - `zh-hk`
2833
2989
  * @default zh
2834
2990
  */
2991
+ /** {en}
2992
+ * @brief UI language. Supported values: `zh`, `zh-cn`, `en`, `jp`, `zh-hk`.
2993
+ * @default zh
2994
+ */
2835
2995
  lang?: "zh" | "zh-cn" | "en" | "jp" | "zh-hk";
2836
2996
  /** {zh}
2837
2997
  * @brief 多语言词典。可设置每个语种的词典,例如:
@@ -2842,6 +3002,9 @@ export interface IPlayerConfig extends IPlayerOptions {
2842
3002
  * @see 了解更多,请参见{@link https://www.volcengine.com/docs/6469/127529 默认词典}。
2843
3003
  * @listtip 了解更多,请参见[默认词典](https://www.volcengine.com/docs/6469/127529)。
2844
3004
  */
3005
+ /** {en}
3006
+ * @brief i18n dictionary. Provide per-language key-value maps, e.g. `{ zh: { PIP: '画中画' }, en: { PIP: 'pip' } }`.
3007
+ */
2845
3008
  languages?: {
2846
3009
  [key: string]: Record<string, any>;
2847
3010
  };
@@ -2851,17 +3014,28 @@ export interface IPlayerConfig extends IPlayerOptions {
2851
3014
  * @notes 画中画功能由浏览器提供,如果本身浏览器不支持,即使有该配置也不显示画中画按钮
2852
3015
  * @listtip 画中画功能由浏览器提供。如果浏览器不支持,即使传入此配置也不会显示画中画按钮。
2853
3016
  */
3017
+ /** {en}
3018
+ * @brief Picture-in-picture configuration. Requires browser-level PiP support.
3019
+ * @default PC: {position: 'controlsRight', index: 2.5, showIcon: true}; mobile: false
3020
+ */
2854
3021
  pip?: IPIPConfig | boolean;
2855
3022
  /** {zh}
2856
3023
  * @brief 全屏配置。
2857
3024
  * @default {position: 'controlsRight', index: 0, rotateFullscreen: false, useCssFullscreen: false, target: null, switchCallback: null, disable: false, needBackIcon: false }
2858
3025
  */
3026
+ /** {en}
3027
+ * @brief Fullscreen configuration.
3028
+ */
2859
3029
  fullscreen?: IFullscreenConfig;
2860
3030
  /** {zh}
2861
3031
  * @breif 是否总是显示清晰度切换控件,即只有一个清晰度时也显示清晰度切换控件
2862
3032
  * @default false
2863
3033
  * @brief 是否总是显示清晰度切换控件,即只有单个清晰度时也显示清晰度切换控件。
2864
3034
  */
3035
+ /** {en}
3036
+ * @brief Whether to always show the definition selector, even when only one definition is available.
3037
+ * @default false
3038
+ */
2865
3039
  alwaysShowDefinition?: boolean;
2866
3040
  /** {zh}
2867
3041
  * @breif url对应视频的清晰度文案,仅`alwaysShowDefinition`为`true`时有效
@@ -2869,12 +3043,20 @@ export interface IPlayerConfig extends IPlayerOptions {
2869
3043
  * @listtip 仅 `alwaysShowDefinition` 为 `true` 时有效。
2870
3044
  * @brief `url` 参数对应视频的清晰度文案。
2871
3045
  */
3046
+ /** {en}
3047
+ * @brief Display label for the definition corresponding to `url`. Only effective when `alwaysShowDefinition` is `true`.
3048
+ * @default HD
3049
+ */
2872
3050
  definitionText?: string;
2873
3051
  /** {zh}
2874
3052
  * @brief `url` 参数对应视频的清晰度文案的多语言 key,对应参数 `languages` 中的文案。
2875
3053
  * @default -
2876
3054
  * @listtip 仅 `alwaysShowDefinition` 为 `true` 时有效,优先级高于 `definitionText`。
2877
3055
  */
3056
+ /** {en}
3057
+ * @brief i18n key for the definition label of `url`, mapping to `languages`. Takes priority over `definitionText`.
3058
+ * @default -
3059
+ */
2878
3060
  definitionTextKey?: string;
2879
3061
  /** {zh}
2880
3062
  * @brief 视频编码格式。
@@ -2882,6 +3064,9 @@ export interface IPlayerConfig extends IPlayerOptions {
2882
3064
  * @listtip - 在已知视频编码方式的情况下推荐传入,以便日志分析。
2883
3065
  * - 在 `useSoftDecoding` 参数为 `true`(开启 H.265 兼容降级模式)时,建议传入,可提升软解初始效率。
2884
3066
  */
3067
+ /** {en}
3068
+ * @brief Video codec type. Recommended when the codec is known, to improve log analysis and soft-decode initialization.
3069
+ */
2885
3070
  codec?: ICodecType;
2886
3071
  /** {zh}
2887
3072
  * @brief 点播服务所在区域,影响服务接口的请求域名
@@ -2933,6 +3118,9 @@ export interface IPlayerConfig extends IPlayerOptions {
2933
3118
  * @brief `video` 标签扩展属性。播放器初始化时会设置在 `videoElement` 或 `audioElement` 对象上。请参考 [HTMLMediaElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement#properties) 查看支持的属性。
2934
3119
  * @default 无
2935
3120
  */
3121
+ /** {en}
3122
+ * @brief Extra attributes applied to the `videoElement` / `audioElement` on initialization. See [HTMLMediaElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement#properties).
3123
+ */
2936
3124
  videoAttributes?: Partial<HTMLVideoElement>;
2937
3125
  /** {zh}
2938
3126
  * @brief 是否启用流式布局。启用流式布局后,播放器会根据屏幕宽度进行自适应调整,以确保在不同屏幕尺寸上都能呈现良好的显示效果。取值如下:
@@ -2943,6 +3131,10 @@ export interface IPlayerConfig extends IPlayerOptions {
2943
3131
  * - 如果 `width` 和 `height` 不是 `Number` 类型,默认使用 16:9 比例。
2944
3132
  * @default false
2945
3133
  */
3134
+ /** {en}
3135
+ * @brief Whether to enable fluid layout. When enabled, the player adapts its aspect ratio based on `width` / `height` (defaults to 16:9 when they are non-numeric).
3136
+ * @default false
3137
+ */
2946
3138
  fluid?: boolean;
2947
3139
  /** {zh}
2948
3140
  * @brief 尺寸适配方式。在视频资源初始化之后,根据获取到的 `videoWidth` 和 `videoHeight` 的值对播放器容器宽高比进行调整。取值如下:
@@ -2951,6 +3143,10 @@ export interface IPlayerConfig extends IPlayerOptions {
2951
3143
  * - `fixHeight`: 保持容器高度,仅适配宽度。
2952
3144
  * @default fixed
2953
3145
  */
3146
+ /** {en}
3147
+ * @brief Container size adaptation mode after video metadata is loaded. `fixed`: keep container ratio; `fixWidth`: adapt height; `fixHeight`: adapt width.
3148
+ * @default fixed
3149
+ */
2954
3150
  fitVideoSize?: "fixWidth" | "fixHeight" | "fixed";
2955
3151
  /** {zh}
2956
3152
  * @brief 视频画面填充模式,等同于设置{@link https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit CSS object-fit}属性。取值如下:
@@ -2961,6 +3157,10 @@ export interface IPlayerConfig extends IPlayerOptions {
2961
3157
  * - `fillHeight`: 填充高度,宽度溢出则裁剪宽度,当播放器容器宽高比大于视频的宽高比,等同于设置CSS `object-fit: cover`。
2962
3158
  * @default auto
2963
3159
  */
3160
+ /** {en}
3161
+ * @brief Video fill mode, equivalent to CSS `object-fit`. `auto`: browser default (may produce letterboxing); `fill`: stretch; `cover`: crop to fill; `fillWidth` / `fillHeight`: fill one axis and crop the other.
3162
+ * @default auto
3163
+ */
2964
3164
  videoFillMode?: "auto" | "fillHeight" | "fillWidth" | "fill" | "cover";
2965
3165
  /** {zh}
2966
3166
  * @brief 是否开启画面和控制栏分离模式。开启时,控制栏将会常驻,与视频画面不重叠。
@@ -2968,11 +3168,18 @@ export interface IPlayerConfig extends IPlayerOptions {
2968
3168
  * - `false`:关闭
2969
3169
  * @default false
2970
3170
  */
3171
+ /** {en}
3172
+ * @brief Whether to separate the video canvas from the controls bar. When enabled, the controls bar is always visible and does not overlap the video.
3173
+ * @default false
3174
+ */
2971
3175
  marginControls?: boolean;
2972
3176
  /** {zh}
2973
3177
  * @brief 是否启用 X5 内核浏览器的同层播放。
2974
3178
  * @default 无
2975
3179
  */
3180
+ /** {en}
3181
+ * @brief Enable same-layer playback for X5 kernel browsers.
3182
+ */
2976
3183
  "x5-video-player-type"?: string;
2977
3184
  /** {zh}
2978
3185
  * @brief 是否启用 X5 内核浏览器的全屏播放模式。
@@ -2980,6 +3187,9 @@ export interface IPlayerConfig extends IPlayerOptions {
2980
3187
  * - `false`:停用
2981
3188
  * @default 无
2982
3189
  */
3190
+ /** {en}
3191
+ * @brief Whether to enable fullscreen playback mode for X5 kernel browsers.
3192
+ */
2983
3193
  "x5-video-player-fullscreen"?: boolean;
2984
3194
  /** {zh}
2985
3195
  * @brief X5 内核浏览器的横竖屏控制。取值如下:
@@ -2988,11 +3198,19 @@ export interface IPlayerConfig extends IPlayerOptions {
2988
3198
  * - `landscape|portrait`:跟随手机自动旋转
2989
3199
  * @default `landscape|portrait`(移动端)
2990
3200
  */
3201
+ /** {en}
3202
+ * @brief Screen orientation for X5 kernel browsers. `landscape`, `portrait`, or `landscape|portrait` (auto-rotate).
3203
+ * @default `landscape|portrait` (mobile)
3204
+ */
2991
3205
  "x5-video-orientation"?: "landscape" | "portrait" | "landscape|portrait";
2992
3206
  /** {zh}
2993
3207
  * @brief 为播放器配置关键点样式。
2994
3208
  * @default -
2995
3209
  */
3210
+ /** {en}
3211
+ * @brief Key point style configuration for the player.
3212
+ * @default -
3213
+ */
2996
3214
  commonStyle?: ICommonStyle;
2997
3215
  /** {zh}
2998
3216
  * @brief 是否开启音乐播放模式。开启后,您可还通过 `music` 参数对音乐播放器进行配置。取值如下:
@@ -3000,6 +3218,10 @@ export interface IPlayerConfig extends IPlayerOptions {
3000
3218
  * - `false`:停用音乐播放模式
3001
3219
  * @default false
3002
3220
  */
3221
+ /** {en}
3222
+ * @brief Whether to enable music playback mode. Use `music` for further music player configuration.
3223
+ * @default false
3224
+ */
3003
3225
  isMusic?: boolean;
3004
3226
  /** {zh}
3005
3227
  * @hidden
@@ -3020,6 +3242,10 @@ export interface IPlayerConfig extends IPlayerOptions {
3020
3242
  * - `false`:开启。
3021
3243
  * @default false
3022
3244
  */
3245
+ /** {en}
3246
+ * @brief Whether to stop event propagation on the `video` element.
3247
+ * @default false
3248
+ */
3023
3249
  closeVideoStopPropagation?: boolean;
3024
3250
  /** {zh}
3025
3251
  * @brief 是否开启右键菜单。取值如下:
@@ -3027,6 +3253,10 @@ export interface IPlayerConfig extends IPlayerOptions {
3027
3253
  * - `false`:否。
3028
3254
  * @default false
3029
3255
  */
3256
+ /** {en}
3257
+ * @brief Whether to enable the right-click context menu.
3258
+ * @default false
3259
+ */
3030
3260
  enableMenu?: boolean;
3031
3261
  /**
3032
3262
  * @brief 是否禁用 PC 端点击播放器区域切换播放和暂停功能。
@@ -3112,39 +3342,88 @@ export interface IPlayerConfig extends IPlayerOptions {
3112
3342
  /** {zh}
3113
3343
  * @brief 是否开启 HLS 视频的 MSE 模式。仅移动端生效。默认情况下,在移动端使用原生 `video` 播放 HLS 视频。开启后,将采用 MSE 方式播放 HLS 视频,实现更好的兼容性、能控制缓存、节省流量。
3114
3344
  * @notes 仅移动端生效,开启后采用MSE方式播放HLS,默认在移动端使用原生video播放hls
3345
+ * @default false
3346
+ */
3347
+ /** {en}
3348
+ * @brief Whether to use MSE for HLS playback on mobile (default is native `video`). Improves compatibility, cache control, and bandwidth usage.
3349
+ * @default false
3115
3350
  */
3116
3351
  enableHlsMSE?: boolean;
3352
+ /** {zh}
3353
+ * @brief 是否启用 {@link https://hlsjs.video-dev.org/ hls.js} 插件播放HLS视频,默认为true,设置为false后,PC端播放HLS使用自研hls插件播放HLS视频
3354
+ * @default true
3355
+ */
3356
+ /** {en}
3357
+ * @brief Whether to use the hls.js plugin for HLS playback on PC. When `false`, the built-in HLS adapter is used instead.
3358
+ * @default true
3359
+ */
3360
+ enableHlsJs?: boolean;
3117
3361
  /** {zh}
3118
3362
  * @brief 在 PC Safari 上是否 HLS 插件播放视频。取值如下:
3119
3363
  * - `true`:使用 HLS 插件。SDK 会自动加载 HLS 插件。
3120
3364
  * - `false`:不使用 HLS 插件。
3121
3365
  * @default true
3122
3366
  */
3367
+ /** {en}
3368
+ * @brief Whether to use the HLS plugin on PC Safari. When `true`, the SDK loads the HLS plugin automatically.
3369
+ * @default true
3370
+ */
3123
3371
  useHlsPluginForSafari?: boolean;
3124
3372
  /** {zh}
3125
3373
  * @brief 是否开启 MP4 视频的 MSE 模式。开启后,将采用 MSE 方式播放 MP4,实现精确的 Seek 加载、视频的无缝切换、流量节省等功能。
3126
3374
  * @default false
3127
3375
  */
3376
+ /** {en}
3377
+ * @brief Whether to use MSE for MP4 playback, enabling accurate seek, seamless stream switching, and bandwidth savings.
3378
+ * @default false
3379
+ */
3128
3380
  enableMp4MSE?: boolean;
3129
3381
  /** {zh}
3130
3382
  * @brief 播放地址列表。
3131
3383
  * @default -
3132
3384
  */
3385
+ /** {en}
3386
+ * @brief Playlist of video streams with multi-definition and multi-line support.
3387
+ * @default -
3388
+ */
3133
3389
  playList?: Stream[];
3134
3390
  /** {zh}
3135
3391
  * @brief 默认清晰度。仅当 `playList` 有值时生效。
3136
3392
  * @default playList第一项
3137
3393
  */
3394
+ /** {en}
3395
+ * @brief Default definition. Effective only when `playList` is set.
3396
+ * @default First item of playList
3397
+ */
3138
3398
  defaultDefinition?: string;
3399
+ /** {zh}
3400
+ * @brief 起播默认音频轨道的语言代码(BCP-47,如 `"zh"`、`"en"`)。
3401
+ * @notes HLS 流匹配 `audioTrack.lang`;iOS 原生播放匹配 `audioTrack.language`。
3402
+ * 多条轨道语言相同时取第一条。未匹配到时沿用 manifest 默认轨道。
3403
+ * @default -
3404
+ */
3405
+ /** {en}
3406
+ * @brief Default audio track language code (BCP-47, e.g. `"zh"`, `"en"`) at playback start. Falls back to the manifest default when no match is found.
3407
+ * @default -
3408
+ */
3409
+ defaultAudioLang?: string;
3139
3410
  /** {zh}
3140
3411
  * @brief 插件,可自行选择安装的插件,支持{@link https://h5player.bytedance.com/plugins/ 西瓜播放器插件}。
3141
3412
  * @default -
3142
3413
  */
3414
+ /** {en}
3415
+ * @brief Additional plugins to install. Compatible with XGPlayer plugins.
3416
+ * @default -
3417
+ */
3143
3418
  plugins?: any[];
3144
3419
  /** {zh}
3145
3420
  * @brief 用于禁用插件。VePlayer 内置了一些常用的功能插件。如需禁用某一内置插件,可传入插件名称(不区分大小写)。
3146
3421
  * @default []
3147
3422
  */
3423
+ /** {en}
3424
+ * @brief List of built-in plugin names to disable (case-insensitive).
3425
+ * @default []
3426
+ */
3148
3427
  ignores?: string[];
3149
3428
  /** {zh}
3150
3429
  * @brief 默认配置
@@ -3187,6 +3466,10 @@ export interface IPlayerConfig extends IPlayerOptions {
3187
3466
  * @default -
3188
3467
  * @notes 插件可以从{@link https://www.volcengine.com/docs/4/67077 集成SDK} 章节中下载SDK离线包获取
3189
3468
  */
3469
+ /** {en}
3470
+ * @brief Fallback URL map for UMD plugin dependencies when the default CDN is unreachable. Supported keys: `hls`, `flv`, `XGVideo`, `hlsEncrypt`, `dash`, `mp4Encrypt`, `danmujs`, `danmuMask`, `subtitle`.
3471
+ * @default -
3472
+ */
3190
3473
  umdUrlMap?: Record<string, string>;
3191
3474
  /**
3192
3475
  * @brief 唯一 ID,用于[私有加密方案](https://www.volcengine.com/docs/4/106524)。
@@ -3204,6 +3487,10 @@ export interface IPlayerConfig extends IPlayerOptions {
3204
3487
  * @listtip - 移动端浏览器不支持 FLV 格式,如果需要播放该格式的视频,请开启软解。
3205
3488
  * - 软解播放的解码操作依赖设备 CPU,播放高码率、高分辨率的视频时,对 CPU 占用率较高。
3206
3489
  */
3490
+ /** {en}
3491
+ * @brief Whether to enable software decoding. Required for FLV on mobile. High CPU usage on high-bitrate / high-resolution videos.
3492
+ * @default false
3493
+ */
3207
3494
  useSoftDecoding?: boolean;
3208
3495
  /** {zh}
3209
3496
  * @brief 是否开启 H.265 自动降级模式。开启 H.265 兼容模式后,VePlayer 会在不支持 H.265 硬解的浏览器环境下,自动降级为兼容模式。取值如下:
@@ -3212,11 +3499,19 @@ export interface IPlayerConfig extends IPlayerOptions {
3212
3499
  * - `false`:不开启 H.265 自动降级模式。
3213
3500
  * @default false
3214
3501
  */
3502
+ /** {en}
3503
+ * @brief Whether to enable H.265 auto-degrade mode. When enabled, VePlayer falls back to a compatible mode in browsers that do not support H.265 hardware decoding.
3504
+ * @default false
3505
+ */
3215
3506
  enableH265Degrade?: boolean;
3216
3507
  /** {zh}
3217
3508
  * @brief 是否开启视频播放地址过期检测。开启后,播放器会轮询地将播放器所在的客户端时间与过期时间戳进行比较,以判断视频播放地址是否过期。
3218
3509
  * @default false
3219
3510
  */
3511
+ /** {en}
3512
+ * @brief Whether to enable URL expiry polling. The player periodically compares the client time against `urlExpireTimestamp`.
3513
+ * @default false
3514
+ */
3220
3515
  enableUrlExpireCheck?: boolean;
3221
3516
  /**
3222
3517
  * @brief 地址的过期时间戳,单位秒(s),vid模式下不用输入,播放器自动获取。如果是火山引擎的CDN分发地址,在不传入过期时间戳时,则需指定urlType,支持{@link https://www.volcengine.com/docs/4/177191 A-E类型},其他云厂商或者业务服务器存储的地址不支持。
@@ -3237,11 +3532,19 @@ export interface IPlayerConfig extends IPlayerOptions {
3237
3532
  * @brief 播放源过期的回调函数。可用来更新播放源数据。
3238
3533
  * @default -
3239
3534
  */
3535
+ /** {en}
3536
+ * @brief Callback invoked when the playback source expires. Use it to refresh source data.
3537
+ * @default -
3538
+ */
3240
3539
  onMediaExpired?: () => Promise<SourceConfig>;
3241
3540
  /** {zh}
3242
3541
  * @brief 临时播放 Token 过期时的回调函数,可用来更新临时播放 Token。
3243
3542
  * @default -
3244
3543
  */
3544
+ /** {en}
3545
+ * @brief Callback invoked when the temporary play token expires. Use it to refresh the token.
3546
+ * @default -
3547
+ */
3245
3548
  onTokenExpired?: () => Promise<IPlayAuthTokenConfig>;
3246
3549
  /** {zh}
3247
3550
  * @hidden
@@ -3256,78 +3559,192 @@ export interface IPlayerConfig extends IPlayerOptions {
3256
3559
  * @brief 是否开启日志打印。
3257
3560
  * @default false
3258
3561
  */
3562
+ /** {en}
3563
+ * @brief Whether to enable debug log output.
3564
+ * @default false
3565
+ */
3259
3566
  debug?: boolean;
3260
3567
  /** {zh}
3261
3568
  * @brief 播放器报错信息。支持配置播放异常时显示的异常文案、图片以及是否提供刷新按钮等。
3262
3569
  * @default -
3263
3570
  */
3571
+ /** {en}
3572
+ * @brief Error UI configuration. Controls the error message, image, and refresh button displayed on playback failure.
3573
+ * @default -
3574
+ */
3264
3575
  sdkErrorPlugin?: ISdkErrorConfig;
3265
3576
  /** {zh}
3266
- * @brief rtm配置,配置rtm拉流参数
3267
- * @notes 传入rtm流url时才生效
3268
- * @default -
3269
- * @hidden
3577
+ * @brief 非 MSE 播放模式下(含加密 HLS),触发媒体错误后的窗口内最大重试次数。
3578
+ * @default 3
3270
3579
  */
3271
3580
  /** {en}
3272
- * @hidden
3581
+ * @brief Maximum number of retries within the sliding window for media errors in non-MSE mode (including encrypted HLS).
3582
+ * @default 3
3273
3583
  */
3274
- rtm?: IRtmConfig;
3584
+ oriErrRetryCount?: number;
3275
3585
  /** {zh}
3276
- * @brief 弹幕及面板配置。支持配置弹幕文字大小、透明度、展示区域等参数。
3277
- * @default -
3586
+ * @brief 重试滑动窗口时长(ms)。窗口内超过 `oriErrRetryCount` 次重试后停止并进行错误诊断。
3587
+ * @default 10000
3278
3588
  */
3279
- DanmuPlugin?: IDanmuConfig | boolean;
3280
- /** {zh}
3281
- * @brief 清晰度降级配置。
3282
- * @notes 需要先引入DefinitionDemotePlugin插件,plugins: [VePlayer.DefinitionDemotePlugin]
3589
+ /** {en}
3590
+ * @brief Sliding window duration (ms) for retry counting. Retries stop and error analysis begins once `oriErrRetryCount` is reached within the window.
3591
+ * @default 10000
3283
3592
  */
3284
- DefinitionDemotePlugin?: IDefinitionDemotePlugin;
3593
+ oriErrRetryCycle?: number;
3285
3594
  /** {zh}
3286
- * @hidden
3287
- * @brief DASH 播放配置项
3288
- * @default -
3595
+ * @brief 重试指数退避基础延迟(ms)。第 n 次重试延迟为 `oriErrRetryBaseDelay * 2^(n-1)`。
3596
+ * @default 500
3289
3597
  */
3290
3598
  /** {en}
3291
- * @hidden
3599
+ * @brief Base delay (ms) for exponential backoff between retries. The delay for the nth retry is `oriErrRetryBaseDelay * 2^(n-1)`.
3600
+ * @default 500
3292
3601
  */
3293
- DASHPlugin?: Partial<IDashPluginConfig>;
3602
+ oriErrRetryBaseDelay?: number;
3294
3603
  /** {zh}
3295
- * @brief HLS 加密播放配置。
3296
- * @default -
3604
+ * @brief 最大总重试次数(跨窗口累计)。设为 `0` 表示不限制。
3605
+ * @default 0
3297
3606
  */
3298
- EncryptHlsPlugin?: Partial<IEncryptHlsPluginConfig> | boolean;
3299
- /** {zh}
3300
- * @brief 质量日志上报配置。
3301
- * @default -
3607
+ /** {en}
3608
+ * @brief Maximum total retry count accumulated across all windows. Set to `0` to disable the limit.
3609
+ * @default 0
3302
3610
  */
3303
- vodLogOpts?: Partial<IVodLogOptsConfig>;
3611
+ oriErrMaxTotalRetry?: number;
3304
3612
  /** {zh}
3305
- * @brief 日志tea的id,一般不需要配置,播放器会自动设置。
3306
- * @default 火山国内:4951,海外:323254
3613
+ * @brief 是否在重试耗尽后发起错误诊断请求,以细化错误码。
3614
+ * @default true
3307
3615
  */
3308
3616
  /** {en}
3309
- * @brief The id of the log tea. Generally, no configuration is required and the player will automatically set it.。
3310
- * @default 323254
3617
+ * @brief Whether to perform error analysis after retries are exhausted, to refine the error code.
3618
+ * @default true
3311
3619
  */
3312
- logTeaAppId?: number;
3620
+ needSyncAnalyzeError?: boolean;
3313
3621
  /** {zh}
3314
- * @hidden
3315
- * @brief mp4加密播放配置项
3316
- * @default -
3622
+ * @brief 网络诊断请求超时时间(ms)。
3623
+ * @default 3000
3317
3624
  */
3318
3625
  /** {en}
3319
- * @hidden
3626
+ * @brief Timeout (ms) for the network analysis request.
3627
+ * @default 3000
3628
+ */
3629
+ analyzeTimeout?: number;
3630
+ /** {zh}
3631
+ * @brief 需要忽略、不上报的错误码列表。
3632
+ * @default []
3633
+ */
3634
+ /** {en}
3635
+ * @brief List of error codes to suppress and not report.
3636
+ * @default []
3637
+ */
3638
+ ignoreErrorCodes?: Array<string | number>;
3639
+ /** {zh}
3640
+ * @brief PC 端音频轨道切换插件配置。传 `false` 可禁用该插件。
3641
+ * @notes 仅在多音轨视频中生效;单音轨时插件自动隐藏。
3642
+ * @default -
3643
+ */
3644
+ /** {en}
3645
+ * @brief PC audio track selector plugin configuration. Pass `false` to disable. Only effective for multi-track videos.
3646
+ * @default -
3647
+ */
3648
+ AudioTrack?: IAudioTrackConfig | false;
3649
+ /** {zh}
3650
+ * @brief 移动端音频轨道切换插件配置。传 `false` 可禁用该插件。
3651
+ * @notes 仅在多音轨视频中生效;单音轨时插件自动隐藏。
3652
+ * @default -
3653
+ */
3654
+ /** {en}
3655
+ * @brief Mobile audio track selector plugin configuration. Pass `false` to disable. Only effective for multi-track videos.
3656
+ * @default -
3657
+ */
3658
+ AudioTrackMobile?: IAudioTrackMobileConfig | false;
3659
+ /** {zh}
3660
+ * @brief rtm配置,配置rtm拉流参数
3661
+ * @notes 传入rtm流url时才生效
3662
+ * @default -
3663
+ * @hidden
3664
+ */
3665
+ /** {en}
3666
+ * @hidden
3667
+ */
3668
+ rtm?: IRtmConfig;
3669
+ /** {zh}
3670
+ * @brief 弹幕及面板配置。支持配置弹幕文字大小、透明度、展示区域等参数。
3671
+ * @default -
3672
+ */
3673
+ /** {en}
3674
+ * @brief Danmaku (bullet comment) and panel configuration. Supports font size, opacity, display area, etc.
3675
+ * @default -
3676
+ */
3677
+ DanmuPlugin?: IDanmuConfig | boolean;
3678
+ /** {zh}
3679
+ * @brief 清晰度降级配置。
3680
+ * @notes 需要先引入DefinitionDemotePlugin插件,plugins: [VePlayer.DefinitionDemotePlugin]
3681
+ */
3682
+ /** {en}
3683
+ * @brief Definition auto-demote configuration. Requires `DefinitionDemotePlugin` in `plugins`.
3684
+ */
3685
+ DefinitionDemotePlugin?: IDefinitionDemotePlugin;
3686
+ /** {zh}
3687
+ * @hidden
3688
+ * @brief DASH 播放配置项
3689
+ * @default -
3690
+ */
3691
+ /** {en}
3692
+ * @hidden
3693
+ */
3694
+ DASHPlugin?: Partial<IDashPluginConfig>;
3695
+ /** {zh}
3696
+ * @brief HLS 加密播放配置。
3697
+ * @default -
3698
+ */
3699
+ /** {en}
3700
+ * @brief Encrypted HLS playback configuration.
3701
+ * @default -
3702
+ */
3703
+ EncryptHlsPlugin?: Partial<IEncryptHlsPluginConfig> | boolean;
3704
+ /** {zh}
3705
+ * @brief 质量日志上报配置。
3706
+ * @default -
3707
+ */
3708
+ /** {en}
3709
+ * @brief Quality metrics log reporting configuration.
3710
+ * @default -
3711
+ */
3712
+ vodLogOpts?: Partial<IVodLogOptsConfig>;
3713
+ /** {zh}
3714
+ * @brief 日志tea的id,一般不需要配置,播放器会自动设置。
3715
+ * @default 火山国内:4951,海外:323254
3716
+ */
3717
+ /** {en}
3718
+ * @brief The id of the log tea. Generally, no configuration is required and the player will automatically set it.
3719
+ * @default 323254
3720
+ */
3721
+ logTeaAppId?: number;
3722
+ /** {zh}
3723
+ * @hidden
3724
+ * @brief mp4加密播放配置项
3725
+ * @default -
3726
+ */
3727
+ /** {en}
3728
+ * @hidden
3320
3729
  */
3321
3730
  Mp4EncryptPlayer?: Partial<IMp4EncryptPlayerConfig> | boolean;
3322
3731
  /** {zh}
3323
3732
  * @brief 多码率自适应播放配置。
3324
3733
  * @default -
3325
3734
  */
3735
+ /** {en}
3736
+ * @brief Adaptive bitrate (ABR) playback configuration.
3737
+ * @default -
3738
+ */
3326
3739
  autoBitrateOpts?: IAutoBitrateOpts;
3327
3740
  /** {zh}
3328
3741
  * @brief 动态 Buffer 配置。
3329
3742
  * @default -
3330
3743
  */
3744
+ /** {en}
3745
+ * @brief Dynamic buffer range configuration.
3746
+ * @default -
3747
+ */
3331
3748
  adaptRange?: IAdaptRange;
3332
3749
  /** {zh}
3333
3750
  * @brief 视频时长。
@@ -3342,45 +3759,73 @@ export interface IPlayerConfig extends IPlayerOptions {
3342
3759
  * @brief 外挂字幕配置。
3343
3760
  * @default -
3344
3761
  */
3762
+ /** {en}
3763
+ * @brief External subtitle configuration.
3764
+ * @default -
3765
+ */
3345
3766
  Subtitle?: ISubtitleConfig;
3346
3767
  /** {zh}
3347
3768
  * @type {IMemoryPlayConfig}
3348
3769
  * @memberof IPlayerConfig
3349
3770
  * @brief 记忆播放配置。
3350
3771
  */
3772
+ /** {en}
3773
+ * @brief Resume playback (memory play) configuration.
3774
+ */
3351
3775
  MemoryPlay?: IMemoryPlayConfig | boolean;
3352
3776
  /** {zh}
3353
3777
  * @type {IMusicConfig}
3354
3778
  * @memberof IPlayerConfig
3355
3779
  * @brief 音乐播放器配置。
3356
3780
  */
3781
+ /** {en}
3782
+ * @brief Music player configuration. Effective when `isMusic` is `true`.
3783
+ */
3357
3784
  music?: IMusicConfig;
3358
3785
  /** {zh}
3359
3786
  * @type {IMusicConfig}
3360
3787
  * @memberof IPlayerConfig
3361
3788
  * @brief 自动播放配置。
3362
3789
  */
3790
+ /** {en}
3791
+ * @brief Autoplay plugin configuration.
3792
+ */
3363
3793
  AutoplayPlugin?: IAutoplayPluginConfig;
3364
3794
  /** {zh}
3365
3795
  * @type { IPlayListConfig }
3366
3796
  * @memberof IPlayerConfig
3367
3797
  * @brief 播放列表配置。
3368
3798
  */
3799
+ /** {en}
3800
+ * @brief Playlist plugin configuration.
3801
+ */
3369
3802
  playListPlugin?: IPlayListConfig;
3370
3803
  /** {zh}
3371
3804
  * @brief 动态水印配置。
3372
3805
  * @default -
3373
3806
  */
3807
+ /** {en}
3808
+ * @brief Dynamic watermark configuration.
3809
+ * @default -
3810
+ */
3374
3811
  dynamicwatermark?: IWatermarkConfig;
3375
3812
  /** {zh}
3376
3813
  * @brief 进度条预览缩略图配置。
3377
3814
  * @default -
3378
3815
  */
3816
+ /** {en}
3817
+ * @brief Progress bar thumbnail preview configuration.
3818
+ * @default -
3819
+ */
3379
3820
  thumbnail?: IThumbnailConfig;
3380
3821
  /** {zh}
3381
3822
  * @brief 进度条标记配置
3382
3823
  * @default -
3383
3824
  */
3825
+ /** {en}
3826
+ * @brief Progress bar dot marker configuration.
3827
+ * @default -
3828
+ */
3384
3829
  progressDot?: IDot[];
3385
3830
  /** {zh}
3386
3831
  * @brief 移动端下倍速、清晰度等选择弹窗的样式
@@ -3464,6 +3909,10 @@ export interface IDefaultConfig {
3464
3909
  * 如果是对象则可以对音量控制插件进行各型特性单独配置
3465
3910
  * @default 0.6
3466
3911
  */
3912
+ /** {en}
3913
+ * @brief Volume configuration. A number sets the default volume [0, 1]; an object allows per-feature configuration.
3914
+ * @default 0.6
3915
+ */
3467
3916
  volume?: IVolume;
3468
3917
  /** {zh}
3469
3918
  * @brief 弹幕插件配置
@@ -3471,6 +3920,9 @@ export interface IDefaultConfig {
3471
3920
  * @type {*}
3472
3921
  * @memberof IDefaultConfig
3473
3922
  */
3923
+ /** {en}
3924
+ * @brief Danmaku plugin configuration.
3925
+ */
3474
3926
  DanmuPlugin?: any;
3475
3927
  /** {zh}
3476
3928
  * @brief 字幕插件配置
@@ -3478,6 +3930,9 @@ export interface IDefaultConfig {
3478
3930
  * @type {*}
3479
3931
  * @memberof IDefaultConfig
3480
3932
  */
3933
+ /** {en}
3934
+ * @brief Live subtitle icon plugin configuration.
3935
+ */
3481
3936
  LiveSubtitlesIconPlugin?: any;
3482
3937
  }
3483
3938
  /** {zh}
@@ -3490,11 +3945,19 @@ export interface IPlayAuthTokenConfig {
3490
3945
  * @brief 应用服务端生成的临时播放凭证。
3491
3946
  * @default -
3492
3947
  */
3948
+ /** {en}
3949
+ * @brief Temporary play token generated by the app server.
3950
+ * @default -
3951
+ */
3493
3952
  playAuthToken: string;
3494
3953
  /** {zh}
3495
3954
  * @brief 默认清晰度。对应 [GetPlayInfo](https://www.volcengine.com/docs/4/2918) 接口返回的 `Definition`。为空时默认为接口返回的最高清晰度。
3496
3955
  * @default -
3497
3956
  */
3957
+ /** {en}
3958
+ * @brief Default definition, corresponding to `Definition` in the GetPlayInfo response. Defaults to the highest available when empty.
3959
+ * @default -
3960
+ */
3498
3961
  defaultDefinition?: string;
3499
3962
  /** {zh}
3500
3963
  * @brief 获取播放地址的请求域名。
@@ -3514,6 +3977,10 @@ export interface IPlayAuthTokenConfig {
3514
3977
  * @default false
3515
3978
  * @listtip 请确保您已在视频点播控制台中生成和设置封面图,详见[封面图和封面候选](https://www.volcengine.com/docs/4/5335)。
3516
3979
  */
3980
+ /** {en}
3981
+ * @brief Whether to use the poster image set in the VOD console.
3982
+ * @default false
3983
+ */
3517
3984
  needPoster?: boolean;
3518
3985
  /** {zh}
3519
3986
  * @brief 是否使用您在视频点播控制台上生成的雪碧图。取值如下:
@@ -3523,6 +3990,10 @@ export interface IPlayAuthTokenConfig {
3523
3990
  * @default false
3524
3991
  * @listtip 请确保您已通过视频点播媒体处理服务生成雪碧图,详见[雪碧图](https://www.volcengine.com/docs/4/1171758)。
3525
3992
  */
3993
+ /** {en}
3994
+ * @brief Whether to use the sprite sheet (thumbnail) generated by the VOD media processing service.
3995
+ * @default false
3996
+ */
3526
3997
  needThumbs?: boolean;
3527
3998
  /** {zh}
3528
3999
  * @brief 是否使用您在视频点播控制台上生成的蒙版弹幕。取值如下:
@@ -3532,17 +4003,29 @@ export interface IPlayAuthTokenConfig {
3532
4003
  * @default false
3533
4004
  * @listtip 请确保您已通过视频点播媒体处理服务生成蒙版弹幕。
3534
4005
  */
4006
+ /** {en}
4007
+ * @brief Whether to use the masked danmaku generated by the VOD media processing service.
4008
+ * @default false
4009
+ */
3535
4010
  needBarrageMask?: boolean;
3536
4011
  /** {zh}
3537
4012
  * @brief 是否需要获取展示多个清晰度。
3538
4013
  * @default true
3539
4014
  */
4015
+ /** {en}
4016
+ * @brief Whether to fetch and display multiple definition options.
4017
+ * @default true
4018
+ */
3540
4019
  needDefinitionList?: boolean;
3541
4020
  /** {zh}
3542
4021
  * @briefhls标准加密播放所需要的keyToken
3543
4022
  * @default -
3544
4023
  * @brief 用于 HLS 标准加密播放的 keyToken。
3545
4024
  */
4025
+ /** {en}
4026
+ * @brief Key token required for HLS standard-encrypted playback.
4027
+ * @default -
4028
+ */
3546
4029
  keyToken?: string;
3547
4030
  /** {zh}
3548
4031
  * @hidden
@@ -3557,6 +4040,10 @@ export interface IPlayAuthTokenConfig {
3557
4040
  * - `unionInfo`: 由 `unionId` 生成的 `unionInfo`,用来加密`PrivateDrmAuthToken`。
3558
4041
  * @default -
3559
4042
  */
4043
+ /** {en}
4044
+ * @brief Async callback to fetch `PrivateDrmAuthToken`. Receives `playAuthIds` (comma-separated key IDs), `vid`, and `unionInfo`.
4045
+ * @default -
4046
+ */
3560
4047
  getDrmAuthToken?: (playAuthIds: string, vid: string, unionInfo: string) => Promise<string>;
3561
4048
  /**
3562
4049
  * @brief 商业DRM 获取license的token
@@ -3583,6 +4070,10 @@ export interface IPlayAuthTokenConfig {
3583
4070
  * 具体可传参数见{@link https://www.volcengine.com/docs/4/65659 签发 PlayAuthToken}
3584
4071
  * @default -
3585
4072
  */
4073
+ /** {en}
4074
+ * @brief Extra pass-through query parameters (e.g. `{ aid: 1234 }`). Parameters from `playAuthToken` take highest priority.
4075
+ * @default -
4076
+ */
3586
4077
  reqParams?: Record<string, number | string | boolean>;
3587
4078
  /** {zh}
3588
4079
  * @brief 定义清晰度的映射。
@@ -3614,24 +4105,46 @@ export interface IPlayAuthTokenConfig {
3614
4105
  * @brief 点播服务发生 502 错误时的重试次数。
3615
4106
  * @default 1
3616
4107
  */
4108
+ /** {en}
4109
+ * @brief Number of retries when the VOD service returns a 502 error.
4110
+ * @default 1
4111
+ */
3617
4112
  retryCount?: number;
3618
4113
  /** {zh}
3619
4114
  * @brief 清晰度自动降级开启时的自动档位,对应{@link https://www.volcengine.com/docs/4/2918 GetPlayInfo}返回的Definition字段
3620
4115
  * @notes 如果指定的清晰度,playAuthToken从服务端返回的清晰度列表中不存在该清晰度,则此参数无效。
3621
4116
  * @default -
3622
4117
  */
4118
+ /** {en}
4119
+ * @brief Auto-demote definition target when definition auto-demote is enabled. Corresponds to `Definition` in GetPlayInfo response.
4120
+ * @default -
4121
+ */
3623
4122
  autoDemoteDefinition?: string;
3624
4123
  /** {zh}
3625
4124
  * @brief 开启清晰度自动降级(`isNeedAutoDemote` 为 `true`)时的自动档位对应的多语言文案 key,取值对应 `languages` 字段中各语种的 `key`。
3626
4125
  * @notes 如果指定的清晰度,playAuthToken从服务端返回的清晰度列表中不存在该清晰度,则此参数无效。
3627
4126
  * @default -
3628
4127
  */
4128
+ /** {en}
4129
+ * @brief i18n key for the auto-demote definition label, mapping into `languages`.
4130
+ * @default -
4131
+ */
3629
4132
  autoDemoteDefinitionTextKey?: string;
3630
4133
  /** {zh}
3631
4134
  * @brief 视频地址请求时携带的额外query参数
3632
4135
  * @notes 一般用于携带HLS标准加密播放携带
3633
4136
  */
4137
+ /** {en}
4138
+ * @brief Extra query parameters appended to video URL requests. Typically used for HLS standard-encrypted playback.
4139
+ */
3634
4140
  urlQueryParams?: Record<string, string>;
4141
+ /** {zh}
4142
+ * @brief HLS 播放时是否使用master m3u8 地址作为播放源
4143
+ */
4144
+ /** {en}
4145
+ * @brief Whether to use the master m3u8 URL as the playback source for HLS.
4146
+ */
4147
+ useMasterM3u8?: boolean;
3635
4148
  }
3636
4149
  /** {zh}
3637
4150
  * @list Options
@@ -3736,6 +4249,10 @@ export interface IPIPConfig extends IPluginConfig {
3736
4249
  * - `false`:不显示画中画按钮。
3737
4250
  * @default false
3738
4251
  */
4252
+ /** {en}
4253
+ * @brief Whether to show the picture-in-picture button.
4254
+ * @default false
4255
+ */
3739
4256
  showIcon?: boolean;
3740
4257
  /** {zh}
3741
4258
  * @brief 是否优先使用[网页画中画](https://developer.mozilla.org/en-US/docs/Web/API/DocumentPictureInPicture)。
@@ -3745,26 +4262,46 @@ export interface IPIPConfig extends IPluginConfig {
3745
4262
  * @default false
3746
4263
  * @listtip 仅浏览器支持 `DocumentPictureInPicture` 时才生效。
3747
4264
  */
4265
+ /** {en}
4266
+ * @brief Whether to prefer `DocumentPictureInPicture` (web PiP) when available.
4267
+ * @default false
4268
+ */
3748
4269
  preferDocument?: boolean;
3749
4270
  /** {zh}
3750
4271
  * @brief 网页画中画模式下窗口的宽度。
3751
4272
  * @default -
3752
4273
  */
4274
+ /** {en}
4275
+ * @brief Width of the document PiP window.
4276
+ * @default -
4277
+ */
3753
4278
  width?: number;
3754
4279
  /** {zh}
3755
4280
  * @brief 网页画中画模式下窗口的高度。
3756
4281
  * @default -
3757
4282
  */
4283
+ /** {en}
4284
+ * @brief Height of the document PiP window.
4285
+ * @default -
4286
+ */
3758
4287
  height?: number;
3759
4288
  /** {zh}
3760
4289
  * @brief 网页画中画模式下窗口的根节点。
3761
4290
  * @default -
3762
4291
  */
4292
+ /** {en}
4293
+ * @brief Root element of the document PiP window.
4294
+ * @default -
4295
+ */
3763
4296
  docPiPNode?: HTMLElement;
3764
4297
  /** {zh}
3765
4298
  * @brief 文档画中画窗口的 css style
3766
4299
  * @default -
3767
4300
  */
4301
+ /** {en}
4302
+ * @brief CSS style for the document PiP window.
4303
+ * @default -
4304
+ */
3768
4305
  docPiPStyle?: ((...arg: any) => string) | string;
3769
4306
  }
3770
4307
  /** {zh}
@@ -3785,6 +4322,10 @@ export interface IFullscreenConfig {
3785
4322
  * - `false`:系统全屏。
3786
4323
  * @default false
3787
4324
  */
4325
+ /** {en}
4326
+ * @brief Whether to use CSS fullscreen instead of native system fullscreen.
4327
+ * @default false
4328
+ */
3788
4329
  useCssFullscreen?: boolean;
3789
4330
  /** {zh}
3790
4331
  * @brief 是否使用旋转横屏。取值如下:
@@ -3797,22 +4338,38 @@ export interface IFullscreenConfig {
3797
4338
  * @listtip - 该参数的优先级高于 `useCssFullscreen` 参数。
3798
4339
  * - 该参数一般用于移动端。
3799
4340
  */
4341
+ /** {en}
4342
+ * @brief Whether to rotate the DOM 90° to achieve landscape fullscreen. Takes priority over `useCssFullscreen`. Mainly for mobile.
4343
+ * @default false
4344
+ */
3800
4345
  rotateFullscreen?: boolean;
3801
4346
  /** {zh}
3802
4347
  * @brief 旋转全屏后,锁定屏幕方向。适应于移动端设备全屏观看横屏视频
3803
4348
  * @default false
3804
4349
  * @notes 仅部分浏览器支持,兼容性见{@link https://caniuse.com/mdn-api_screenorientation_lock ScreenOrientation API: lock}
3805
4350
  */
4351
+ /** {en}
4352
+ * @brief Whether to lock the screen orientation after rotating to fullscreen. Only supported in some browsers.
4353
+ * @default false
4354
+ */
3806
4355
  useScreenOrientation?: boolean;
3807
4356
  /** {zh}
3808
4357
  * @brief 旋转全屏后,锁定屏幕方向类型,默认是横屏,可选值见{@link https://developer.mozilla.org/en-US/docs/Web/API/ScreenOrientation/lock#orientation orientation}
3809
4358
  * @default landscape
3810
4359
  */
4360
+ /** {en}
4361
+ * @brief Orientation type to lock after rotating to fullscreen.
4362
+ * @default landscape
4363
+ */
3811
4364
  lockOrientationType?: string;
3812
4365
  /** {zh}
3813
4366
  * @brief 自定义全屏功能的 `dom`。默认是播放器根节点。该参数必须是 `player.root` 的父辈节点,适用于解决全屏时和 `player.root` 同级的 `dom`需要显示的场景。
3814
4367
  * @default `null`
3815
4368
  */
4369
+ /** {en}
4370
+ * @brief Custom DOM element for fullscreen. Must be an ancestor of `player.root`. Defaults to the player root node.
4371
+ * @default null
4372
+ */
3816
4373
  target?: HTMLElement;
3817
4374
  /** {zh}
3818
4375
  * @brief 是否禁用全屏按钮。
@@ -3820,6 +4377,10 @@ export interface IFullscreenConfig {
3820
4377
  * - `false`:不禁用。
3821
4378
  * @default false
3822
4379
  */
4380
+ /** {en}
4381
+ * @brief Whether to disable the fullscreen button. When `true`, the button is not rendered.
4382
+ * @default false
4383
+ */
3823
4384
  disable?: boolean;
3824
4385
  /** {zh}
3825
4386
  * @brief 全屏的时候是否显示右上角返回按钮。取值如下:
@@ -3830,11 +4391,19 @@ export interface IFullscreenConfig {
3830
4391
  * @notes 该配置一般在移动端开启
3831
4392
  * @listtip 此参数一般用于移动端。
3832
4393
  */
4394
+ /** {en}
4395
+ * @brief Whether to show a back button in the top-right corner during fullscreen. Mainly for mobile.
4396
+ * @default false
4397
+ */
3833
4398
  needBackIcon?: boolean;
3834
4399
  /** {zh}
3835
4400
  * @brief 全屏切换自定义实现。该函数配置相当于完全替代插件内部的切换逻辑。
3836
4401
  * @default `null`
3837
4402
  */
4403
+ /** {en}
4404
+ * @brief Custom fullscreen toggle implementation. Completely replaces the built-in toggle logic.
4405
+ * @default null
4406
+ */
3838
4407
  switchCallback?: (...arg: any) => any;
3839
4408
  }
3840
4409
  /** {zh}
@@ -3847,26 +4416,41 @@ export interface ICommonStyle {
3847
4416
  * @brief 进度条底色。
3848
4417
  * @default 无
3849
4418
  */
4419
+ /** {en}
4420
+ * @brief Progress bar track color.
4421
+ */
3850
4422
  progressColor?: string;
3851
4423
  /** {zh}
3852
4424
  * @brief 播放完成部分进度条底色。
3853
4425
  * @default 无
3854
4426
  */
4427
+ /** {en}
4428
+ * @brief Color of the played portion of the progress bar.
4429
+ */
3855
4430
  playedColor?: string;
3856
4431
  /** {zh}
3857
4432
  * @brief 缓存部分进度条底色。
3858
4433
  * @default 无
3859
4434
  */
4435
+ /** {en}
4436
+ * @brief Color of the buffered portion of the progress bar.
4437
+ */
3860
4438
  cachedColor?: string;
3861
4439
  /** {zh}
3862
4440
  * @brief 进度条滑块样式。
3863
4441
  * @default 无
3864
4442
  */
4443
+ /** {en}
4444
+ * @brief Style of the progress bar thumb/slider.
4445
+ */
3865
4446
  sliderBtnStyle?: CSSStyleDeclaration;
3866
4447
  /** {zh}
3867
4448
  * @brief 音量颜色。
3868
4449
  * @default 无
3869
4450
  */
4451
+ /** {en}
4452
+ * @brief Volume control color.
4453
+ */
3870
4454
  volumeColor?: string;
3871
4455
  }
3872
4456
  /** {zh}
@@ -3879,11 +4463,19 @@ export interface IPoster {
3879
4463
  * @brief 封面图 URL 地址。
3880
4464
  * @default -
3881
4465
  */
4466
+ /** {en}
4467
+ * @brief Poster image URL.
4468
+ * @default -
4469
+ */
3882
4470
  poster: string;
3883
4471
  /** {zh}
3884
4472
  * @brief 是否在播放结束之后显示封面图。
3885
4473
  * @default true
3886
4474
  */
4475
+ /** {en}
4476
+ * @brief Whether to show the poster after playback ends.
4477
+ * @default true
4478
+ */
3887
4479
  isEndedShow?: boolean;
3888
4480
  /** {zh}
3889
4481
  * @brief 是否播放后隐藏封面图。
@@ -3891,11 +4483,19 @@ export interface IPoster {
3891
4483
  * - `false`:在 `play` 事件触发后隐藏封面图。
3892
4484
  * @default false
3893
4485
  */
4486
+ /** {en}
4487
+ * @brief Whether to hide the poster after playback starts. When `true`, the poster re-appears after a URL update.
4488
+ * @default false
4489
+ */
3894
4490
  hideCanplay?: boolean;
3895
4491
  /** {zh}
3896
4492
  * @brief 是否一直显示封面图。
3897
4493
  * @default false
3898
4494
  */
4495
+ /** {en}
4496
+ * @brief Whether to keep the poster always visible.
4497
+ * @default false
4498
+ */
3899
4499
  notHidden?: boolean;
3900
4500
  /** {zh}
3901
4501
  * @brief 封面图填充方式。取值如下:
@@ -3904,6 +4504,9 @@ export interface IPoster {
3904
4504
  * - `cover`:完全覆盖容器,多余部分会被裁剪。
3905
4505
  * - `contain`:完全覆盖,与容器不匹配时会被拉伸压缩。
3906
4506
  */
4507
+ /** {en}
4508
+ * @brief Poster fill mode: `fixWidth`, `fixHeight`, `cover` (crop to fill), or `contain` (stretch to fill).
4509
+ */
3907
4510
  fillMode?: "fixWidth" | "fixHeight" | "cover" | "contain";
3908
4511
  }
3909
4512
  /** {zh}
@@ -3916,48 +4519,82 @@ export interface IThumbnailConfig {
3916
4519
  * @brief 雪碧图地址数组。
3917
4520
  * @default -
3918
4521
  */
4522
+ /** {en}
4523
+ * @brief Array of sprite sheet URLs.
4524
+ * @default -
4525
+ */
3919
4526
  urls: Array<string>;
3920
4527
  /** {zh}
3921
4528
  * @brief 缩略小图总张数。
3922
4529
  * @default -
3923
4530
  */
4531
+ /** {en}
4532
+ * @brief Total number of thumbnail frames.
4533
+ * @default -
4534
+ */
3924
4535
  pic_num: number;
3925
4536
  /** {zh}
3926
4537
  * @brief 雪碧大图中每列包含的缩略小图数量。
3927
4538
  * @default -
3928
4539
  */
4540
+ /** {en}
4541
+ * @brief Number of thumbnail columns per sprite sheet.
4542
+ * @default -
4543
+ */
3929
4544
  col: number;
3930
4545
  /** {zh}
3931
4546
  * @brief 雪碧大图中每行包含的缩略小图数量。
3932
4547
  * @default -
3933
4548
  */
4549
+ /** {en}
4550
+ * @brief Number of thumbnail rows per sprite sheet.
4551
+ * @default -
4552
+ */
3934
4553
  row: number;
3935
4554
  /** {zh}
3936
4555
  * @brief 缩略小图高度,单位为 px。
3937
4556
  * @default -
3938
4557
  */
4558
+ /** {en}
4559
+ * @brief Thumbnail frame height in px.
4560
+ * @default -
4561
+ */
3939
4562
  height?: number;
3940
4563
  /** {zh}
3941
4564
  * @brief 缩略小图宽度,单位为 px。
3942
4565
  * @default -
3943
4566
  */
4567
+ /** {en}
4568
+ * @brief Thumbnail frame width in px.
4569
+ * @default -
4570
+ */
3944
4571
  width?: number;
3945
4572
  /** {zh}
3946
4573
  * @brief 显示缩放比例
3947
4574
  * @default 1
3948
4575
  * @hidden
3949
4576
  */
4577
+ /** {en}
4578
+ * @hidden
4579
+ */
3950
4580
  scale?: 1;
3951
4581
  /** {zh}
3952
4582
  * @brief 额外添加在dom上的class
3953
4583
  * @default -
3954
4584
  * @hidden
3955
4585
  */
4586
+ /** {en}
4587
+ * @hidden
4588
+ */
3956
4589
  className?: string;
3957
4590
  /** {zh}
3958
4591
  * @brief 是否在竖屏的时候隐藏缩略图。
3959
4592
  * @default false
3960
4593
  */
4594
+ /** {en}
4595
+ * @brief Whether to hide the thumbnail in portrait orientation.
4596
+ * @default false
4597
+ */
3961
4598
  hidePortrait?: false;
3962
4599
  }
3963
4600
  export interface ISourceConfig {
@@ -3973,764 +4610,809 @@ export interface ApiMapConfig {
3973
4610
  playDomain: string;
3974
4611
  backupPlayDomain?: string;
3975
4612
  }
3976
- export type TLogChannel = "cn" | "va" | "sg";
3977
- declare enum PreloadScene {
3978
- /**
3979
- * 普通场景(手动执行预加载)
3980
- */
3981
- NORMAL = 0,
3982
- /**
3983
- * Feed流场景(播放器自动执行预加载)
3984
- * @brief Feed 流场景(播放器自动执行预加载)
3985
- */
3986
- /** {en}
3987
- * @brief Feed流场景(播放器自动执行预加载)
3988
- */
3989
- FEED = 1
4613
+ declare enum UmdKeys {
4614
+ HLS = "hls",
4615
+ HLSJS = "hlsjs",
4616
+ FLV = "flv",
4617
+ XGVideo = "XGVideo",
4618
+ HLSEncrypt = "hlsEncrypt",
4619
+ DASH = "dash",
4620
+ MP4Encrypt = "mp4Encrypt",
4621
+ DanmuJS = "danmujs",
4622
+ DanmuMask = "danmuMask",
4623
+ StreamProbe = "streamprobe",
4624
+ VeStrategy = "vestrategy",
4625
+ VeStrategyH265 = "vestrategy_h265",
4626
+ VeStrategyPreload = "vestrategy_preload",
4627
+ VeStrategyAdaptRange = "vestrategy_adapt_range",
4628
+ DashAbralgo = "DashAbralgo",
4629
+ Preloader = "preloader",
4630
+ HLSjsPro = "hlsjsPro"
3990
4631
  }
3991
- declare enum StrategyNames {
4632
+ /**
4633
+ * @hidden
4634
+ * @breif umdmap 配置
4635
+ */
4636
+ export declare type UMDMap = Record<UmdKeys, {
3992
4637
  /**
3993
- * h265
3994
- * @brief H.265 策略
4638
+ * umd Module 的名称,即在window下暴露的接口名称
3995
4639
  */
3996
- H265 = "h265",
4640
+ name: string;
3997
4641
  /**
3998
- * 预加载
3999
- * @brief 预加载策略
4642
+ * 对应umd文件名,只用来标记,实际不使用
4000
4643
  */
4001
- PRELOAD = "preload",
4644
+ pluginName?: string;
4002
4645
  /**
4003
- * Range拆分-动态Buffer
4004
- * @brief 动态 Buffer
4646
+ * 对应npm包的名称,在打包文件时,会在libd.config.js中onPostBuild的钩子中会用于寻找对应npm包
4005
4647
  */
4006
- ADAPT_RANGE = "adaptRange"
4007
- }
4008
- /** {zh}
4009
- * @hidden
4010
- * h265策略配置
4011
- * @detail Options
4012
- */
4013
- export declare type IH265Config = {
4648
+ packageName: string;
4014
4649
  /**
4015
- * h265策略依赖Module
4650
+ * npm包中umd入口文件路径,用于打包上传到cdn目录
4016
4651
  */
4017
- Strategy?: any;
4652
+ devPath: string;
4653
+ }>;
4654
+ declare class UMDLoader {
4655
+ private static jsLoadMap;
4656
+ private static jsLoadPromiseMap;
4657
+ umdMap: UMDMap;
4658
+ backupUmdUrlMap: Record<string, string>;
4659
+ failCallback: (umdName: string, err: any) => any;
4660
+ region: TRegionType;
4661
+ userRegion: TRegionType;
4662
+ customPluginPublicPath: string;
4663
+ importedPlugins: any[];
4664
+ constructor();
4018
4665
  /**
4019
- * 是否禁用265策略
4666
+ * @return { string } 插件加载的公共路径
4020
4667
  */
4021
- disabled?: boolean;
4022
- } & VeStrategyH265Config;
4023
- /** {zh}
4024
- * 预加载初始配置
4025
- * @detail Options
4026
- */
4027
- export declare type IPreloadConfig = {
4668
+ get pluginPublicPath(): string;
4028
4669
  /**
4029
- * 预加载场景
4030
- * @default 0
4031
- * */
4032
- preloadScene?: PreloadScene;
4670
+ * 更新umd的备用地址
4671
+ * @param {Record<string, string>} map 备用地址map
4672
+ */
4673
+ updateBackupMap(map: Record<string, string>): void;
4033
4674
  /**
4034
- * 向前预加载视频个数,Feed流场景时生效
4035
- * @default 1
4036
- * @brief 向前预加载视频个数。Feed 流场景时生效。
4675
+ * 加载额外的js-sdk
4676
+ * 适用 umd 模块
4677
+ * 只能浏览器环境下使用
4678
+ * @param url 额外加载JS 的 CDN 地址
4679
+ * @param isJs 是否js文件
4037
4680
  */
4038
- /** {en}
4039
- * @brief 向前预加载视频个数,Feed流场景时生效
4681
+ loadExtraCdn(url: string, isJs?: boolean): Promise<void>;
4682
+ /**
4683
+ * @description 加载xgplayer插件
4684
+ * @param pluginName 插件名称
4685
+ * @param successCallback 加载完成后执行的回调
4686
+ * @return Promise<any>
4040
4687
  */
4041
- prevCount?: number;
4688
+ loadPlugins(pluginName: UmdKeys, successCallback?: () => void): Promise<any>;
4042
4689
  /**
4043
- * 向后预加载视频个数,Feed流场景生效
4044
- * @default 2
4045
- * @brief 向后预加载视频个数。Feed 流场景生效
4690
+ * 处理加载成功
4046
4691
  */
4047
- /** {en}
4048
- * @brief 向后预加载视频个数,Feed流场景生效
4692
+ private handleLoadSuccess;
4693
+ /**
4694
+ * 处理加载失败
4049
4695
  */
4050
- nextCount?: number;
4696
+ private handleLoadError;
4051
4697
  /**
4052
- * 单个视频预加载时长
4053
- * @default 5
4698
+ * 处理catch分支的错误处理
4054
4699
  */
4055
- preloadTime?: number;
4700
+ private handleLoadCatch;
4056
4701
  /**
4057
- * 最大视频缓存个数
4058
- * @default 15
4702
+ * 加载备用URL
4059
4703
  */
4060
- preloadMaxCacheCount?: number;
4704
+ private loadBackupUrl;
4061
4705
  /**
4062
- * 预加载依赖Module
4063
- * @brief 预加载依赖 Module
4706
+ * 触发成功回调
4064
4707
  */
4065
- /** {en}
4066
- * @brief 预加载依赖Module
4708
+ private triggerSuccessCallback;
4709
+ }
4710
+ export declare class SdkPlugin {
4711
+ pluginName: string;
4712
+ __args: any;
4713
+ sdk: VePlayer;
4714
+ playerData: PlayerData;
4715
+ player: Player;
4716
+ _emitter: EventEmitter;
4717
+ static defineGetterOrSetter(Obj: any, map: any): void;
4718
+ /**
4719
+ * @type { string }
4067
4720
  */
4068
- Strategy?: any;
4721
+ static get pluginName(): string;
4069
4722
  /**
4070
- * 是否禁用预加载
4723
+ * @constructor
4724
+ * @param { { sdk: object, pluginName: string, [propName: string]: any;} } args
4071
4725
  */
4072
- disabled?: boolean;
4073
- };
4074
- /** {zh}
4075
- * @hidden
4076
- * @detail Options
4077
- * @brief Range 拆分(动态Buffer)策略初始配置
4078
- * @notes adaptRange策略配置结构较复杂,暂不开放Range默认配置自定义,使用策略下发
4079
- */
4080
- export declare type IAdaptRangeConfig = {
4081
- /** {zh}
4082
- * @brief 预加载依赖Module
4726
+ constructor(args: any);
4727
+ /**
4728
+ * @description sdk实例创建,挂载插件实例时首先执行
4083
4729
  */
4084
- Strategy?: any;
4085
- /** {zh}
4086
- * @brief 是否禁用Range拆分策略
4730
+ beforeCreate(): void;
4731
+ /**
4732
+ * @description sdk实例创建,挂载插件实例完后执行
4087
4733
  */
4088
- disabled?: boolean;
4089
- };
4090
- /** {zh}
4091
- * @detail Options
4092
- * @brief 策略配置。
4093
- */
4094
- export declare type StrategyConfigOptions = {
4734
+ afterCreate(): void;
4095
4735
  /**
4096
- * h265策略配置
4097
- * @hidden
4098
- * @brief H.265 策略配置。
4736
+ * @description sdk创建播放器前执行,只有这里能保证异步操作在creatPlayer之前同步完成
4099
4737
  */
4100
- /** {en}
4101
- * @hidden
4102
- * @brief h265策略配置
4738
+ beforePlayerCreate(): void;
4739
+ /**
4740
+ * @description sdk创建播放器完执行
4103
4741
  */
4104
- [StrategyNames.H265]?: boolean | IH265Config;
4742
+ afterPlayerCreate(): void;
4105
4743
  /**
4106
- * 预加载配置
4107
- * @brief 预加载配置。
4744
+ * @description sdk销毁时执行
4108
4745
  */
4109
- /** {en}
4110
- * @brief 预加载配置
4746
+ destroy(): void;
4747
+ /**
4748
+ * @private
4749
+ * @param { any } args
4111
4750
  */
4112
- [StrategyNames.PRELOAD]?: boolean | IPreloadConfig;
4751
+ __init(args: any): void;
4113
4752
  /**
4114
- * Range拆分(动态Buffer)
4115
- * @brief 动态 Buffer 配置。
4753
+ * @description 插件销毁
4754
+ * @private
4116
4755
  */
4117
- /** {en}
4118
- * @brief Range拆分(动态Buffer)
4756
+ __destroy(): void;
4757
+ }
4758
+ declare class AuthToken extends SdkPlugin {
4759
+ static get pluginName(): string;
4760
+ isPlayByToken: boolean;
4761
+ isEncrypt: boolean;
4762
+ tokenInfo: ITokenInfo;
4763
+ keyTokenInfo: ITokenInfo;
4764
+ thirdPartyDrmAuthTokenInfo: ITokenInfo;
4765
+ config: IPlayAuthTokenConfig;
4766
+ privateDrmAuthToken: string;
4767
+ useUnionInfoDRM: boolean;
4768
+ sessionId: string;
4769
+ retryCount: number;
4770
+ playInfo?: VideoInfoRes;
4771
+ constructor(args: any);
4772
+ beforePlayerCreate(): Promise<void>;
4773
+ getVideoInfo(): Promise<{
4774
+ vid: string;
4775
+ playList: Stream[];
4776
+ codec: ICodecType;
4777
+ defaultDefinition: string;
4778
+ }>;
4779
+ getVideos(): Promise<any>;
4780
+ getPrivateDrmInfo(playList: Stream[], vid: string, streamType: string): Promise<void>;
4781
+ getThumbnailConfig(thumbs: IThumbInfoItem[]): void;
4782
+ getBarrageMaskUrl(url: string): void;
4783
+ getDrmConfig(videoInfo: IVideoInfo): void;
4784
+ init(): void;
4785
+ initConfig(getVideoByToken: IPlayAuthTokenConfig): void;
4786
+ /**
4787
+ * @description 更新playAuthToken
4788
+ * @param {IPlayAuthTokenConfig} getVideoByToken token信息
4789
+ * @param {boolean} isNewVideo 是否新视频,即是否为切换视频
4119
4790
  */
4120
- [StrategyNames.ADAPT_RANGE]?: boolean | IAdaptRangeConfig;
4121
- };
4791
+ updateAuthToken(getVideoByToken: IPlayAuthTokenConfig, isNewVideo: boolean): Promise<void>;
4792
+ checkPlayAuthTokenValid(): boolean;
4793
+ checkKeyTokenValid(): boolean;
4794
+ checkDrmAuthTokenValid(): boolean;
4795
+ }
4122
4796
  /** {zh}
4123
- * 播放器预初始化配置
4124
- * @detail Options
4797
+ * @hidden
4125
4798
  */
4126
- export declare type StrategyInitOptions = {
4127
- /** {zh}
4128
- * 应用ID
4129
- * @brief 应用 ID
4130
- */
4131
- /** {en}
4132
- * @brief appid
4133
- */
4134
- appId: number;
4135
- /** {zh}
4136
- * @brief 用户所在区域
4137
- * @default cn
4138
- * @notes 如果是海外用户,播放时请填写'mya'
4139
- */
4140
- /** {en}
4141
- * @brief The region where the user is located,
4142
- * @default sg
4143
- */
4144
- region?: TRegionType;
4145
- /** {zh}
4146
- * 高级能力(策略)配置
4147
- * @brief 策略配置
4148
- */
4149
- /** {en}
4150
- * @brief Advanced Capability (Strategy) Configuration
4151
- */
4152
- strategies: StrategyConfigOptions;
4153
- /** {zh}
4154
- * 设备ID
4155
- * @brief 设备 ID
4156
- */
4157
- /** {en}
4158
- * @brief device id
4159
- */
4160
- deviceId?: string;
4161
- /** {zh}
4162
- * @brief 手动注入依赖插件,默认自动加载
4163
- * @default -
4164
- */
4165
- /** {en}
4166
- * @brief Manually inject dependency plugins, automatically load by default
4167
- * @default -
4168
- */
4169
- plugins?: any[];
4799
+ export interface IAdaptRangeDefaultOptions {
4800
+ maxTargetCacheDur: number;
4801
+ minTargetCacheDur: number;
4802
+ rangeMaxDuration: number;
4803
+ rangeMinDuration: number;
4804
+ cacheSafeFactor: number;
4805
+ estPTcontrol: boolean;
4806
+ estPlayTime: number;
4807
+ minBandwidth: number;
4808
+ minDangerThreshold: number;
4809
+ rangeControl: boolean;
4810
+ rangeMinSize: number;
4811
+ safeFactor: number;
4812
+ targetCacheControl: boolean;
4813
+ }
4814
+ declare abstract class AbstractBaseAdapter {
4815
+ isLive: boolean;
4816
+ playerData: PlayerData;
4817
+ streamType: string;
4818
+ constructor(options: {
4819
+ configs: IPlayerConfig;
4820
+ playerData: PlayerData;
4821
+ streamType: string;
4822
+ });
4170
4823
  /**
4171
- * 策略Module,默认自动加载
4172
- * @brief 策略 Module,默认自动加载
4173
- * @default -
4174
- */
4175
- /** {en}
4176
- * @brief Strategy Module, automatically loaded by default
4177
- * @default -
4824
+ * @description 是否使用原生video的abr能力
4178
4825
  */
4179
- Module?: typeof VeStrategy;
4180
- };
4181
- /** {zh}
4182
- * 预加载实例,通过预加载实例可执行一些高级方法
4183
- * @detail Options
4184
- * @hidden
4185
- */
4186
- export declare type PreloaderManager = {
4826
+ abstract useNativeAbr(): boolean;
4827
+ abstract canOpenAbr(vidPlayInfo?: VideoInfoRes): boolean;
4828
+ abstract applyAbrPluginConfig(_finalOptions: any, _autoBitrateOpts: any): void;
4829
+ abstract prepareAbrModule(_playerData: any, _sdkUmdLoader: any): void;
4830
+ abstract needAbrAutoDefinition(): boolean;
4831
+ abstract setAbrDefaultDefiWithAuto(): boolean;
4832
+ abstract generatePlaylistFromServer(res: VideoInfoRes, ...args: any[]): Stream[];
4833
+ abstract canAdaptRangeEnable(): boolean;
4834
+ abstract adaptRangeDefaultOptions(): IAdaptRangeDefaultOptions | undefined;
4835
+ abstract applyAdaptRangePluginConfig(_finalOptions: any, _adaptRangeOptions: any): void;
4836
+ abstract applyAdaptRangeStrategy(_finalOptions: any, _adaptRangeOptions: any): void;
4837
+ abstract getPlugins(umdLoader: UMDLoader): Promise<XGPlugin[]>;
4838
+ abstract setPluginConfigInVid(videoInfo: IVideoInfo, context: AuthToken): void;
4839
+ }
4840
+ declare class PlayerData {
4841
+ id?: string;
4842
+ root?: HTMLElement;
4843
+ configs: IPlayerConfig;
4844
+ type: string;
4845
+ isLive: boolean;
4846
+ options: any;
4847
+ isMobile: boolean;
4848
+ playList: Stream[];
4849
+ plugins: any[];
4850
+ openSoftDecoding: boolean;
4851
+ defaultConfig: IDefaultConfig | undefined;
4852
+ isHitDefault: boolean;
4853
+ codec?: ICodecType;
4854
+ enableH265Degrade: boolean;
4855
+ languageData: {
4856
+ extraLangList: IXGI18nText[];
4857
+ extendLangList: IXGI18nText[];
4858
+ };
4859
+ current: Current;
4860
+ onMediaExpired: () => Promise<SourceConfig>;
4861
+ onTokenExpired: () => Promise<IPlayAuthTokenConfig>;
4862
+ unionId?: string;
4863
+ unionInfo?: string;
4864
+ isMusic?: boolean;
4865
+ sdkPlugins: any[];
4866
+ useHlsPluginForSafari: boolean;
4867
+ enableHlsJs: boolean;
4868
+ enableMenu: boolean;
4869
+ region: TRegionType;
4870
+ userRegion: TRegionType;
4871
+ playDomainDegrade: boolean;
4872
+ strategiesPlugins: any[];
4873
+ strategiesPluginConfigs: any;
4187
4874
  /**
4188
- * 移除所有已预加载数据
4875
+ * @default playList第一项
4189
4876
  */
4190
- removeAll(): void;
4877
+ defaultDefinition: string;
4878
+ urlCheckData: {
4879
+ enableUrlExpireCheck: boolean;
4880
+ urlExpireTimestamp: number;
4881
+ urlExpireDiff: number;
4882
+ urlCheckExpireInterval: number;
4883
+ };
4884
+ private isAutoBitrateEnable;
4885
+ adapter: AbstractBaseAdapter;
4191
4886
  /**
4192
- * 移除所有预加载任务
4887
+ * @breif 是否vid模式的加密播放
4193
4888
  */
4194
- removeAllPreloadTask(): void;
4889
+ isVidEncrypt: boolean;
4890
+ dashOpts: {
4891
+ Data: IGetPlayInfoRes;
4892
+ };
4195
4893
  /**
4196
- * 清空待预加载列表
4894
+ * @brief 播放器sdk实例
4197
4895
  */
4198
- clearPreloadList(): void;
4199
- };
4200
- declare enum PreloaderStatus {
4896
+ sdk: VePlayer;
4201
4897
  /**
4202
- * 不可用
4898
+ * @brief 当前加密播放类型,为空则表示非加密
4203
4899
  */
4204
- DISABLED = 0,
4900
+ drmType: EDRMTYPE;
4205
4901
  /**
4206
- * 初始状态
4902
+ * @brief 私有加密会话id
4207
4903
  */
4208
- INITIALIZING = 1,
4904
+ encryptSessionId?: string;
4905
+ constructor(configs: IPlayerConfig & {
4906
+ licensSupportModuleList: string[];
4907
+ }, sdk: VePlayer);
4209
4908
  /**
4210
- * 已Ready
4909
+ * 初始化播放数据
4910
+ * @param configs { IPlayerConfig } 播放器配置
4211
4911
  */
4212
- READY = 2,
4912
+ initPlayData(configs: IPlayerConfig): void;
4913
+ initPlaylistAndGetCurrent(configs: IPlayerConfig): Stream;
4914
+ checkAutoBitratePlayList(): boolean;
4915
+ getABRStreamInfo(streamType: any, originDefaultStream: any): {
4916
+ defaultDefinition: string;
4917
+ defaultStream: any;
4918
+ playList: Stream[];
4919
+ };
4920
+ isCurrentH265(): boolean;
4921
+ setDrmType(drmType: EDRMTYPE): void;
4922
+ getCurrentByDefaultConfig(): Stream;
4923
+ initCurrent(currentStreams: Stream): void;
4924
+ initCheckExpireData(): void;
4213
4925
  /**
4214
- * 加载失败
4926
+ * 更新过期检测的数据
4215
4927
  */
4216
- FAILED = 3
4217
- }
4218
- /** {zh}
4219
- * 预加载配置更新
4220
- * @detail Options
4221
- * @hidden
4222
- */
4223
- export declare type IPreloadUpdateConfig = {
4928
+ updateCheckExpireData(): void;
4929
+ initI18nData(languages: any): {
4930
+ extraLangList: any[];
4931
+ extendLangList: any[];
4932
+ };
4224
4933
  /**
4225
- * 向前加载视频个数
4934
+ * @description: 获取当前直播url
4226
4935
  */
4227
- prevCount?: number;
4936
+ getCurrentUrl(): Url;
4937
+ getTargetStreamType(stream?: Stream): string;
4228
4938
  /**
4229
- * 向后加载视频个数
4939
+ * @description: 获取当前的streamType
4230
4940
  */
4231
- nextCount?: number;
4232
- };
4233
- /** {zh}
4234
- * 预加载视频资源
4235
- * @detail Options
4236
- */
4237
- export declare type IPreloadStream = {
4941
+ getCurrentStreamType(): string;
4942
+ getStreamType(): string;
4943
+ isOpenABR(): boolean;
4944
+ showRealDefinition(): boolean;
4945
+ isAutoDefinition(def: any): boolean;
4946
+ isPlayAutoDefinition(def?: string): boolean;
4947
+ isDefinitionMatch(pre: any, next: any): boolean;
4238
4948
  /**
4239
- * 视频唯一ID
4240
- * @brief 视频 ID
4949
+ * @description: 获取满足当前直播条件的流
4241
4950
  */
4242
- /** {en}
4243
- * @brief 视频唯一ID
4951
+ getCurrentStreams(): Stream[];
4952
+ /**
4953
+ * @description: 获取根据线路ID去重的流,用于获取有几个线路
4244
4954
  */
4245
- vid: string;
4955
+ getLineList(): Stream[];
4246
4956
  /**
4247
- * 播放地址
4248
- * @brief 视频播放地址
4957
+ * @description: 根据线路ID获取符合条件的流
4958
+ * @param {number} lineId
4249
4959
  */
4250
- /** {en}
4251
- * @brief 播放地址
4960
+ getLineListByLineId(lineId: number | string): Stream[];
4961
+ /**
4962
+ * @description: 根据线路ID获取清晰度list,用于获取某个线路下有几个清晰度
4963
+ * @param {number} lineId
4252
4964
  */
4253
- url: string;
4965
+ getDefinitionListByLineId(lineId: number | string): Stream[];
4254
4966
  /**
4255
- * 视频清晰度
4967
+ * @description: 根据条件筛选符合条件的流list
4968
+ * @param {Condition} condition
4256
4969
  */
4257
- definition: string;
4970
+ getUrlList(condition: Condition): Stream[];
4258
4971
  /**
4259
- * 视频streamType,暂只支持 mp4
4260
- * @brief 视频流类型,当前仅支持 mp4
4972
+ * @description: 获取当期清晰的上一级清晰度或下一级清晰度
4973
+ * @param {boolean} isDown 是否取下一级清晰度
4974
+ * @param {string[]} demotePriority 清晰度降级顺序
4261
4975
  */
4262
- /** {en}
4263
- * @brief 视频streamType,暂只支持 mp4
4976
+ getNextDefinition(isDown: boolean, demotePriority: string[]): Stream[];
4977
+ /**
4978
+ * 获取api map
4979
+ * @return { ApiMapConfig }
4264
4980
  */
4265
- streamType: string;
4981
+ get apiMap(): ApiMapConfig;
4266
4982
  /**
4267
- * 视频codec,暂支持 h264
4268
- * @brief 视频编码格式,当前仅支持 mp4
4983
+ * 获取播放域名
4269
4984
  */
4270
- /** {en}
4271
- * @brief 视频codec,暂支持 h264
4985
+ get playDomain(): string;
4986
+ setVodTeaId(): void;
4987
+ /**
4988
+ * 更新configs,即更新用户的configs,常用于playNext时
4989
+ * @param newConfigs {IPlayerConfig} 要更新的配置
4272
4990
  */
4273
- codec: string;
4991
+ updateConfigs(newConfigs: IPlayerConfig): void;
4274
4992
  /**
4275
- * 码率, 数据统计需要,可选填
4276
- * @brief 码率, 数据统计需要,选填
4993
+ * 更新playList
4277
4994
  */
4278
- /** {en}
4279
- * @brief 码率, 数据统计需要,可选填
4280
- */
4281
- bitrate: number;
4995
+ updatePlayList(): void;
4996
+ isVidPlay(): boolean;
4997
+ }
4998
+ /**
4999
+ * @hidden
5000
+ * @brief 移动端交互面板配置
5001
+ */
5002
+ export interface IConfig {
5003
+ mode?: number;
5004
+ isAutoChange?: boolean;
5005
+ }
5006
+ declare class MobilePlayerPanel {
5007
+ config: IConfig;
5008
+ parent: HTMLElement;
5009
+ root: any;
5010
+ mode: number;
5011
+ isAutoChange: number;
5012
+ player: any;
5013
+ children: HTMLElement | undefined;
5014
+ container: HTMLElement | undefined;
5015
+ title: HTMLElement | undefined;
5016
+ isShow: boolean;
5017
+ showCancelBtn: boolean;
5018
+ constructor(args: any);
5019
+ initEvents(): void;
5020
+ handleOrientationChange(): void;
5021
+ changeConfig(config: IConfig): void;
5022
+ changeMode(mode: number): void;
5023
+ renderPanel(): void;
5024
+ showPanel(children: HTMLElement, title?: string, isItemList?: boolean): Promise<void>;
5025
+ updatePanel(children: HTMLElement): void;
5026
+ setTitle(title: any): void;
5027
+ renderTitle(title: any): HTMLElement;
5028
+ show(): void;
5029
+ hide(): void;
5030
+ handleHide(e: any): void;
5031
+ bind(event: string, eventHandle: any, isBubble?: boolean): void;
5032
+ destroy(): void;
5033
+ }
5034
+ declare enum StrategyNames {
4282
5035
  /**
4283
- * 视频时长,数据统计需要,可选填
4284
- * @brief 视频时长,数据统计需要,选填
4285
- */
4286
- /** {en}
4287
- * @brief 视频时长,数据统计需要,可选填
5036
+ * h265
5037
+ * @brief H.265 策略
4288
5038
  */
4289
- duration: number;
5039
+ H265 = "h265",
4290
5040
  /**
4291
- * 视频大小,数据统计需要,可选填
4292
- * @brief 视频大小,数据统计需要,选填
5041
+ * 预加载
5042
+ * @brief 预加载策略
4293
5043
  */
4294
- /** {en}
4295
- * @brief 视频大小,数据统计需要,可选填
5044
+ PRELOAD = "preload",
5045
+ /**
5046
+ * Range拆分-动态Buffer
5047
+ * @brief 动态 Buffer
4296
5048
  */
4297
- size: number;
4298
- };
4299
- declare class VeStrategyWrapper {
4300
- private tea;
4301
- private static mapStrategyNameToUmdKey;
4302
- teaId: number;
4303
- teaChannel: TLogChannel;
4304
- preloader: PreloaderManagerOrigin | undefined;
4305
- preloaderStatus: PreloaderStatus;
4306
- private sdkUmdLoader;
4307
- private webId;
4308
- private config;
4309
- private status;
4310
- private initPromise;
4311
- private preloadCacheConfig;
4312
- private preloadCacheScene;
4313
- private preloadCacheList;
4314
- constructor();
4315
- private initUmdLoader;
4316
- private fetchWebId;
4317
- private initTea;
4318
- private fetchVeStrategy;
4319
- private fetchStrategies;
4320
- private initOnce;
4321
- init(config: StrategyInitOptions): Promise<boolean>;
4322
- initPreloadService(options: StrategyInitOptions): Promise<boolean>;
4323
- addPreloadList(list: IPreloadStream[]): void;
4324
- setPreloadList(list: IPreloadStream[]): Promise<void>;
4325
- setPreloadScene(preloadScene: PreloadScene, options?: any): void;
4326
- prepare(): Promise<boolean>;
4327
- getDeviceId(): string;
4328
- isReady(): boolean;
4329
- getStrategyRecommendations(options?: any, commonOptions?: any): StrategyRecommendation;
4330
- getStrategyRecommendationsAsync(options?: any, commonOptions?: any): Promise<StrategyRecommendation>;
4331
- isHevcRecommended(): boolean;
4332
- private initPreloaderConfig;
4333
- }
4334
- declare const _default: VeStrategyWrapper;
4335
- declare enum UmdKeys {
4336
- HLS = "hls",
4337
- FLV = "flv",
4338
- XGVideo = "XGVideo",
4339
- HLSEncrypt = "hlsEncrypt",
4340
- DASH = "dash",
4341
- MP4Encrypt = "mp4Encrypt",
4342
- DanmuJS = "danmujs",
4343
- DanmuMask = "danmuMask",
4344
- StreamProbe = "streamprobe",
4345
- VeStrategy = "vestrategy",
4346
- VeStrategyH265 = "vestrategy_h265",
4347
- VeStrategyPreload = "vestrategy_preload",
4348
- VeStrategyAdaptRange = "vestrategy_adapt_range",
4349
- DashAbralgo = "DashAbralgo",
4350
- Preloader = "preloader"
5049
+ ADAPT_RANGE = "adaptRange"
4351
5050
  }
4352
- /**
5051
+ /** {zh}
5052
+ * 预加载实例,通过预加载实例可执行一些高级方法
5053
+ * @detail Options
4353
5054
  * @hidden
4354
- * @breif umdmap 配置
4355
5055
  */
4356
- export declare type UMDMap = Record<UmdKeys, {
5056
+ export declare type PreloaderManager = {
4357
5057
  /**
4358
- * umd Module 的名称,即在window下暴露的接口名称
5058
+ * 移除所有已预加载数据
4359
5059
  */
4360
- name: string;
5060
+ removeAll(): void;
4361
5061
  /**
4362
- * 对应umd文件名,只用来标记,实际不使用
5062
+ * 移除所有预加载任务
4363
5063
  */
4364
- pluginName?: string;
5064
+ removeAllPreloadTask(): void;
4365
5065
  /**
4366
- * 对应npm包的名称,在打包文件时,会在libd.config.js中onPostBuild的钩子中会用于寻找对应npm包
5066
+ * 清空待预加载列表
4367
5067
  */
4368
- packageName: string;
5068
+ clearPreloadList(): void;
5069
+ };
5070
+ declare enum PreloadScene {
4369
5071
  /**
4370
- * npm包中umd入口文件路径,用于打包上传到cdn目录
5072
+ * 普通场景(手动执行预加载)
4371
5073
  */
4372
- devPath: string;
4373
- }>;
4374
- declare class UMDLoader {
4375
- private static jsLoadMap;
4376
- private static jsLoadPromiseMap;
4377
- umdMap: UMDMap;
4378
- backupUmdUrlMap: Record<string, string>;
4379
- failCallback: (umdName: string, err: any) => any;
4380
- region: TRegionType;
4381
- userRegion: TRegionType;
4382
- customPluginPublicPath: string;
4383
- importedPlugins: any[];
4384
- constructor();
5074
+ NORMAL = 0,
4385
5075
  /**
4386
- * @return { string } 插件加载的公共路径
5076
+ * Feed流场景(播放器自动执行预加载)
5077
+ * @brief Feed 流场景(播放器自动执行预加载)
4387
5078
  */
4388
- get pluginPublicPath(): string;
5079
+ /** {en}
5080
+ * @brief Feed流场景(播放器自动执行预加载)
5081
+ */
5082
+ FEED = 1
5083
+ }
5084
+ declare enum PreloadFormat {
5085
+ MP4 = "mp4",
5086
+ HLS = "hls"
5087
+ }
5088
+ declare enum PreloaderStatus {
4389
5089
  /**
4390
- * 更新umd的备用地址
4391
- * @param {Record<string, string>} map 备用地址map
5090
+ * 不可用
4392
5091
  */
4393
- updateBackupMap(map: Record<string, string>): void;
5092
+ DISABLED = 0,
4394
5093
  /**
4395
- * 加载额外的js-sdk
4396
- * 适用 umd 模块
4397
- * 只能浏览器环境下使用
4398
- * @param url 额外加载JS 的 CDN 地址
4399
- * @param isJs 是否js文件
5094
+ * 初始状态
4400
5095
  */
4401
- loadExtraCdn(url: string, isJs?: boolean): Promise<void>;
5096
+ INITIALIZING = 1,
4402
5097
  /**
4403
- * @description 加载xgplayer插件
4404
- * @param pluginName 插件名称
4405
- * @param successCallback 加载完成后执行的回调
4406
- * @return Promise<any>
5098
+ * 已Ready
4407
5099
  */
4408
- loadPlugins(pluginName: UmdKeys, successCallback?: () => void): Promise<any>;
5100
+ READY = 2,
5101
+ /**
5102
+ * 加载失败
5103
+ */
5104
+ FAILED = 3
4409
5105
  }
4410
- export declare class SdkPlugin {
4411
- pluginName: string;
4412
- __args: any;
4413
- sdk: VePlayer;
4414
- playerData: PlayerData;
4415
- player: Player;
4416
- _emitter: EventEmitter;
4417
- static defineGetterOrSetter(Obj: any, map: any): void;
5106
+ /** {zh}
5107
+ * 预加载配置更新
5108
+ * @detail Options
5109
+ * @hidden
5110
+ */
5111
+ export declare type IPreloadUpdateConfig = {
4418
5112
  /**
4419
- * @type { string }
5113
+ * 向前加载视频个数
4420
5114
  */
4421
- static get pluginName(): string;
5115
+ prevCount?: number;
4422
5116
  /**
4423
- * @constructor
4424
- * @param { { sdk: object, pluginName: string, [propName: string]: any;} } args
5117
+ * 向后加载视频个数
4425
5118
  */
4426
- constructor(args: any);
5119
+ nextCount?: number;
5120
+ };
5121
+ /** {zh}
5122
+ * 预加载视频资源
5123
+ * @detail Options
5124
+ */
5125
+ export declare type IPreloadStream = {
4427
5126
  /**
4428
- * @description sdk实例创建,挂载插件实例时首先执行
5127
+ * 视频唯一ID
5128
+ * @brief 视频 ID
4429
5129
  */
4430
- beforeCreate(): void;
5130
+ /** {en}
5131
+ * @brief 视频唯一ID
5132
+ */
5133
+ vid: string;
4431
5134
  /**
4432
- * @description sdk实例创建,挂载插件实例完后执行
5135
+ * 播放地址
5136
+ * @brief 视频播放地址
4433
5137
  */
4434
- afterCreate(): void;
5138
+ /** {en}
5139
+ * @brief 播放地址
5140
+ */
5141
+ url: string;
4435
5142
  /**
4436
- * @description sdk创建播放器前执行,只有这里能保证异步操作在creatPlayer之前同步完成
5143
+ * 视频清晰度
4437
5144
  */
4438
- beforePlayerCreate(): void;
5145
+ definition: string;
4439
5146
  /**
4440
- * @description sdk创建播放器完执行
5147
+ * 视频streamType,支持 mp4、hls
5148
+ * @brief 视频流类型,支持 mp4、hls
4441
5149
  */
4442
- afterPlayerCreate(): void;
5150
+ /** {en}
5151
+ * @brief video streamType,support mp4、hls
5152
+ */
5153
+ streamType: string;
4443
5154
  /**
4444
- * @description sdk销毁时执行
5155
+ * 视频codec,暂支持 h264
5156
+ * @brief 视频编码格式,当前仅支持 mp4
4445
5157
  */
4446
- destroy(): void;
5158
+ /** {en}
5159
+ * @brief 视频codec,暂支持 h264
5160
+ */
5161
+ codec: string;
4447
5162
  /**
4448
- * @private
4449
- * @param { any } args
5163
+ * 码率, 数据统计需要,可选填
5164
+ * @brief 码率, 数据统计需要,选填
4450
5165
  */
4451
- __init(args: any): void;
5166
+ /** {en}
5167
+ * @brief 码率, 数据统计需要,可选填
5168
+ */
5169
+ bitrate: number;
4452
5170
  /**
4453
- * @description 插件销毁
4454
- * @private
5171
+ * 视频时长,数据统计需要,可选填
5172
+ * @brief 视频时长,数据统计需要,选填
4455
5173
  */
4456
- __destroy(): void;
4457
- }
4458
- declare class AuthToken extends SdkPlugin {
4459
- static get pluginName(): string;
4460
- isPlayByToken: boolean;
4461
- isEncrypt: boolean;
4462
- tokenInfo: ITokenInfo;
4463
- keyTokenInfo: ITokenInfo;
4464
- thirdPartyDrmAuthTokenInfo: ITokenInfo;
4465
- config: IPlayAuthTokenConfig;
4466
- privateDrmAuthToken: string;
4467
- useUnionInfoDRM: boolean;
4468
- sessionId: string;
4469
- retryCount: number;
4470
- playInfo?: VideoInfoRes;
4471
- constructor(args: any);
4472
- beforePlayerCreate(): Promise<void>;
4473
- getVideoInfo(): Promise<{
4474
- vid: string;
4475
- playList: Stream[];
4476
- codec: ICodecType;
4477
- defaultDefinition: string;
4478
- }>;
4479
- getVideos(): Promise<any>;
4480
- getPrivateDrmInfo(playList: Stream[], vid: string, streamType: string): Promise<void>;
4481
- getThumbnailConfig(thumbs: IThumbInfoItem[]): void;
4482
- getBarrageMaskUrl(url: string): void;
4483
- getDrmConfig(videoInfo: IVideoInfo): void;
4484
- init(): void;
4485
- initConfig(getVideoByToken: IPlayAuthTokenConfig): void;
5174
+ /** {en}
5175
+ * @brief 视频时长,数据统计需要,可选填
5176
+ */
5177
+ duration: number;
4486
5178
  /**
4487
- * @description 更新playAuthToken
4488
- * @param {IPlayAuthTokenConfig} getVideoByToken token信息
4489
- * @param {boolean} isNewVideo 是否新视频,即是否为切换视频
5179
+ * 视频大小,数据统计需要,可选填
5180
+ * @brief 视频大小,数据统计需要,选填
4490
5181
  */
4491
- updateAuthToken(getVideoByToken: IPlayAuthTokenConfig, isNewVideo: boolean): Promise<void>;
4492
- checkPlayAuthTokenValid(): boolean;
4493
- checkKeyTokenValid(): boolean;
4494
- checkDrmAuthTokenValid(): boolean;
4495
- }
5182
+ /** {en}
5183
+ * @brief 视频大小,数据统计需要,可选填
5184
+ */
5185
+ size: number;
5186
+ };
5187
+ export type TLogChannel = "cn" | "va" | "sg";
4496
5188
  /** {zh}
4497
5189
  * @hidden
5190
+ * h265策略配置
5191
+ * @detail Options
4498
5192
  */
4499
- export interface IAdaptRangeDefaultOptions {
4500
- maxTargetCacheDur: number;
4501
- minTargetCacheDur: number;
4502
- rangeMaxDuration: number;
4503
- rangeMinDuration: number;
4504
- cacheSafeFactor: number;
4505
- estPTcontrol: boolean;
4506
- estPlayTime: number;
4507
- minBandwidth: number;
4508
- minDangerThreshold: number;
4509
- rangeControl: boolean;
4510
- rangeMinSize: number;
4511
- safeFactor: number;
4512
- targetCacheControl: boolean;
4513
- }
4514
- declare abstract class AbstractBaseAdapter {
4515
- isLive: boolean;
4516
- playerData: PlayerData;
4517
- streamType: string;
4518
- constructor(options: {
4519
- configs: IPlayerConfig;
4520
- playerData: PlayerData;
4521
- streamType: string;
4522
- });
5193
+ export declare type IH265Config = {
4523
5194
  /**
4524
- * @description 是否使用原生video的abr能力
5195
+ * h265策略依赖Module
4525
5196
  */
4526
- abstract useNativeAbr(): boolean;
4527
- abstract canOpenAbr(vidPlayInfo?: VideoInfoRes): boolean;
4528
- abstract applyAbrPluginConfig(_finalOptions: any, _autoBitrateOpts: any): void;
4529
- abstract prepareAbrModule(_playerData: any, _sdkUmdLoader: any): void;
4530
- abstract needAbrAutoDefinition(): boolean;
4531
- abstract setAbrDefaultDefiWithAuto(): boolean;
4532
- abstract generatePlaylistFromServer(res: VideoInfoRes): Stream[];
4533
- abstract canAdaptRangeEnable(): boolean;
4534
- abstract adaptRangeDefaultOptions(): IAdaptRangeDefaultOptions | undefined;
4535
- abstract applyAdaptRangePluginConfig(_finalOptions: any, _adaptRangeOptions: any): void;
4536
- abstract applyAdaptRangeStrategy(_finalOptions: any, _adaptRangeOptions: any): void;
4537
- abstract getPlugins(umdLoader: UMDLoader): Promise<XGPlugin[]>;
4538
- abstract setPluginConfigInVid(videoInfo: IVideoInfo, context: AuthToken): void;
4539
- }
4540
- declare class PlayerData {
4541
- id?: string;
4542
- root?: HTMLElement;
4543
- configs: IPlayerConfig;
4544
- strategyConfig?: StrategyConfigOptions;
4545
- type: string;
4546
- isLive: boolean;
4547
- options: any;
4548
- isMobile: boolean;
4549
- playList: Stream[];
4550
- plugins: any[];
4551
- openSoftDecoding: boolean;
4552
- defaultConfig: IDefaultConfig | undefined;
4553
- isHitDefault: boolean;
4554
- codec?: ICodecType;
4555
- enableH265Degrade: boolean;
4556
- languageData: {
4557
- extraLangList: IXGI18nText[];
4558
- extendLangList: IXGI18nText[];
4559
- };
4560
- current: Current;
4561
- onMediaExpired: () => Promise<SourceConfig>;
4562
- onTokenExpired: () => Promise<IPlayAuthTokenConfig>;
4563
- unionId?: string;
4564
- unionInfo?: string;
4565
- isMusic?: boolean;
4566
- sdkPlugins: any[];
4567
- useHlsPluginForSafari: boolean;
4568
- enableMenu: boolean;
4569
- region: TRegionType;
4570
- userRegion: TRegionType;
4571
- playDomainDegrade: boolean;
4572
- strategiesPlugins: any[];
4573
- strategiesPluginConfigs: any;
5197
+ Strategy?: any;
4574
5198
  /**
4575
- * @default playList第一项
5199
+ * 是否禁用265策略
4576
5200
  */
4577
- defaultDefinition: string;
4578
- urlCheckData: {
4579
- enableUrlExpireCheck: boolean;
4580
- urlExpireTimestamp: number;
4581
- urlExpireDiff: number;
4582
- urlCheckExpireInterval: number;
4583
- };
4584
- private isAutoBitrateEnable;
4585
- adapter: AbstractBaseAdapter;
5201
+ disabled?: boolean;
5202
+ } & VeStrategyH265Config;
5203
+ /** {zh}
5204
+ * 预加载初始配置
5205
+ * @detail Options
5206
+ */
5207
+ export declare type IPreloadConfig = {
5208
+ /** {zh}
5209
+ * 预加载场景
5210
+ * - 0:手动执行
5211
+ * - 1:字段执行
5212
+ * @default 0
5213
+ */
5214
+ /** {en}
5215
+ * preload scene
5216
+ * - 0: manual execution
5217
+ * - 1: field execution
5218
+ * @default 0
5219
+ */
5220
+ preloadScene?: PreloadScene;
5221
+ /** {zh}
5222
+ * @brief 视频格式
5223
+ * - mp4: mp4格式
5224
+ * - hls: hls格式
5225
+ * @default mp4
5226
+ */
5227
+ /** {en}
5228
+ * @brief video format
5229
+ * - mp4: mp4 format
5230
+ * - hls: hls format
5231
+ * @default mp4
5232
+ */
5233
+ format?: PreloadFormat;
5234
+ /** {zh}
5235
+ * 向前预加载视频个数,Feed流场景时生效
5236
+ * @default 1
5237
+ * @brief 向前预加载视频个数。Feed 流场景时生效。
5238
+ */
5239
+ /** {en}
5240
+ * @brief 向前预加载视频个数,Feed流场景时生效
5241
+ */
5242
+ prevCount?: number;
4586
5243
  /**
4587
- * @breif 是否vid模式的加密播放
5244
+ * 向后预加载视频个数,Feed流场景生效
5245
+ * @default 2
5246
+ * @brief 向后预加载视频个数。Feed 流场景生效
5247
+ */
5248
+ /** {en}
5249
+ * @brief 向后预加载视频个数,Feed流场景生效
5250
+ */
5251
+ nextCount?: number;
5252
+ /**
5253
+ * 单个视频预加载时长
5254
+ * @default 5
5255
+ */
5256
+ preloadTime?: number;
5257
+ /**
5258
+ * 最大视频缓存个数
5259
+ * @default 15
5260
+ */
5261
+ preloadMaxCacheCount?: number;
5262
+ /**
5263
+ * 预加载依赖Module
5264
+ * @brief 预加载依赖 Module
5265
+ */
5266
+ /** {en}
5267
+ * @brief 预加载依赖Module
5268
+ */
5269
+ Strategy?: any;
5270
+ /**
5271
+ * 是否禁用预加载
5272
+ */
5273
+ disabled?: boolean;
5274
+ };
5275
+ /** {zh}
5276
+ * @hidden
5277
+ * @detail Options
5278
+ * @brief Range 拆分(动态Buffer)策略初始配置
5279
+ * @notes adaptRange策略配置结构较复杂,暂不开放Range默认配置自定义,使用策略下发
5280
+ */
5281
+ export declare type IAdaptRangeConfig = {
5282
+ /** {zh}
5283
+ * @brief 预加载依赖Module
4588
5284
  */
4589
- isVidEncrypt: boolean;
4590
- dashOpts: {
4591
- Data: IGetPlayInfoRes;
4592
- };
4593
- /**
4594
- * @brief 播放器sdk实例
5285
+ Strategy?: any;
5286
+ /** {zh}
5287
+ * @brief 是否禁用Range拆分策略
4595
5288
  */
4596
- sdk: VePlayer;
5289
+ disabled?: boolean;
5290
+ };
5291
+ /** {zh}
5292
+ * @detail Options
5293
+ * @brief 策略配置。
5294
+ */
5295
+ export declare type StrategyConfigOptions = {
4597
5296
  /**
4598
- * @brief 当前加密播放类型,为空则表示非加密
5297
+ * h265策略配置
5298
+ * @hidden
5299
+ * @brief H.265 策略配置。
4599
5300
  */
4600
- drmType: EDRMTYPE;
4601
- /**
4602
- * @brief 私有加密会话id
5301
+ /** {en}
5302
+ * @hidden
5303
+ * @brief h265策略配置
4603
5304
  */
4604
- encryptSessionId?: string;
4605
- constructor(configs: IPlayerConfig & {
4606
- licensSupportModuleList: string[];
4607
- }, sdk: VePlayer);
5305
+ [StrategyNames.H265]?: boolean | IH265Config;
4608
5306
  /**
4609
- * 初始化播放数据
4610
- * @param configs { IPlayerConfig } 播放器配置
5307
+ * 预加载配置
5308
+ * @brief 预加载配置。
4611
5309
  */
4612
- initPlayData(configs: IPlayerConfig): void;
4613
- initPlaylistAndGetCurrent(configs: IPlayerConfig): Stream;
4614
- checkAutoBitratePlayList(): boolean;
4615
- getABRStreamInfo(streamType: any, originDefaultStream: any): {
4616
- defaultDefinition: string;
4617
- defaultStream: any;
4618
- playList: Stream[];
4619
- };
4620
- isCurrentH265(): boolean;
4621
- setDrmType(drmType: EDRMTYPE): void;
4622
- getCurrentByDefaultConfig(): Stream;
4623
- initCurrent(currentStreams: Stream): void;
4624
- initCheckExpireData(): void;
4625
- /**
4626
- * 更新过期检测的数据
5310
+ /** {en}
5311
+ * @brief 预加载配置
4627
5312
  */
4628
- updateCheckExpireData(): void;
4629
- initI18nData(languages: any): {
4630
- extraLangList: any[];
4631
- extendLangList: any[];
4632
- };
5313
+ [StrategyNames.PRELOAD]?: boolean | IPreloadConfig;
4633
5314
  /**
4634
- * @description: 获取当前直播url
5315
+ * Range拆分(动态Buffer)
5316
+ * @brief 动态 Buffer 配置。
4635
5317
  */
4636
- getCurrentUrl(): Url;
4637
- getTargetStreamType(stream?: Stream): string;
4638
- /**
4639
- * @description: 获取当前的streamType
5318
+ /** {en}
5319
+ * @brief Range拆分(动态Buffer)
4640
5320
  */
4641
- getCurrentStreamType(): string;
4642
- getStreamType(): string;
4643
- isOpenABR(): boolean;
4644
- showRealDefinition(): boolean;
4645
- isAutoDefinition(def: any): boolean;
4646
- isPlayAutoDefinition(def?: string): boolean;
4647
- isDefinitionMatch(pre: any, next: any): boolean;
4648
- /**
4649
- * @description: 获取满足当前直播条件的流
5321
+ [StrategyNames.ADAPT_RANGE]?: boolean | IAdaptRangeConfig;
5322
+ };
5323
+ /** {zh}
5324
+ * 播放器预初始化配置
5325
+ * @detail Options
5326
+ */
5327
+ export declare type StrategyInitOptions = {
5328
+ /** {zh}
5329
+ * 应用ID
5330
+ * @brief 应用 ID
4650
5331
  */
4651
- getCurrentStreams(): Stream[];
4652
- /**
4653
- * @description: 获取根据线路ID去重的流,用于获取有几个线路
5332
+ /** {en}
5333
+ * @brief appid
4654
5334
  */
4655
- getLineList(): Stream[];
4656
- /**
4657
- * @description: 根据线路ID获取符合条件的流
4658
- * @param {number} lineId
5335
+ appId: number;
5336
+ /** {zh}
5337
+ * @brief 用户所在区域
5338
+ * @default cn
5339
+ * @notes 如果是海外用户,播放时请填写'mya'
4659
5340
  */
4660
- getLineListByLineId(lineId: number | string): Stream[];
4661
- /**
4662
- * @description: 根据线路ID获取清晰度list,用于获取某个线路下有几个清晰度
4663
- * @param {number} lineId
5341
+ /** {en}
5342
+ * @brief The region where the user is located,
5343
+ * @default sg
4664
5344
  */
4665
- getDefinitionListByLineId(lineId: number | string): Stream[];
4666
- /**
4667
- * @description: 根据条件筛选符合条件的流list
4668
- * @param {Condition} condition
5345
+ region?: TRegionType;
5346
+ /** {zh}
5347
+ * 高级能力(策略)配置
5348
+ * @brief 策略配置
4669
5349
  */
4670
- getUrlList(condition: Condition): Stream[];
4671
- /**
4672
- * @description: 获取当期清晰的上一级清晰度或下一级清晰度
4673
- * @param {boolean} isDown 是否取下一级清晰度
4674
- * @param {string[]} demotePriority 清晰度降级顺序
5350
+ /** {en}
5351
+ * @brief Advanced Capability (Strategy) Configuration
4675
5352
  */
4676
- getNextDefinition(isDown: boolean, demotePriority: string[]): Stream[];
4677
- /**
4678
- * 获取api map
4679
- * @return { ApiMapConfig }
5353
+ strategies: StrategyConfigOptions;
5354
+ /** {zh}
5355
+ * 设备ID
5356
+ * @brief 设备 ID
4680
5357
  */
4681
- get apiMap(): ApiMapConfig;
4682
- /**
4683
- * 获取播放域名
5358
+ /** {en}
5359
+ * @brief device id
4684
5360
  */
4685
- get playDomain(): string;
4686
- setVodTeaId(): void;
4687
- /**
4688
- * 更新configs,即更新用户的configs,常用于playNext时
4689
- * @param newConfigs {IPlayerConfig} 要更新的配置
5361
+ deviceId?: string;
5362
+ /** {zh}
5363
+ * @brief 手动注入依赖插件,默认自动加载
5364
+ * @default -
4690
5365
  */
4691
- updateConfigs(newConfigs: IPlayerConfig): void;
5366
+ /** {en}
5367
+ * @brief Manually inject dependency plugins, automatically load by default
5368
+ * @default -
5369
+ */
5370
+ plugins?: any[];
4692
5371
  /**
4693
- * 更新playList
5372
+ * 策略Module,默认自动加载
5373
+ * @brief 策略 Module,默认自动加载
5374
+ * @default -
4694
5375
  */
4695
- updatePlayList(): void;
4696
- isVidPlay(): boolean;
4697
- }
4698
- /**
4699
- * @hidden
4700
- * @brief 移动端交互面板配置
4701
- */
4702
- export interface IConfig {
4703
- mode?: number;
4704
- isAutoChange?: boolean;
4705
- }
4706
- declare class MobilePlayerPanel {
4707
- config: IConfig;
4708
- parent: HTMLElement;
4709
- root: any;
4710
- mode: number;
4711
- isAutoChange: number;
4712
- player: any;
4713
- children: HTMLElement | undefined;
4714
- container: HTMLElement | undefined;
4715
- title: HTMLElement | undefined;
4716
- isShow: boolean;
4717
- showCancelBtn: boolean;
4718
- constructor(args: any);
4719
- initEvents(): void;
4720
- handleOrientationChange(): void;
4721
- changeConfig(config: IConfig): void;
4722
- changeMode(mode: number): void;
4723
- renderPanel(): void;
4724
- showPanel(children: HTMLElement, title?: string, isItemList?: boolean): Promise<void>;
4725
- updatePanel(children: HTMLElement): void;
4726
- setTitle(title: any): void;
4727
- renderTitle(title: any): HTMLElement;
4728
- show(): void;
4729
- hide(): void;
4730
- handleHide(e: any): void;
4731
- bind(event: string, eventHandle: any, isBubble?: boolean): void;
4732
- destroy(): void;
5376
+ /** {en}
5377
+ * @brief Strategy Module, automatically loaded by default
5378
+ * @default -
5379
+ */
5380
+ Module?: typeof VeStrategy;
5381
+ };
5382
+ declare class VeStrategyManager {
5383
+ tea: Collector;
5384
+ private static mapStrategyNameToUmdKey;
5385
+ teaId: number;
5386
+ teaChannel: TLogChannel;
5387
+ private sdkUmdLoader;
5388
+ private webId;
5389
+ config: StrategyInitOptions;
5390
+ private status;
5391
+ private initPromise;
5392
+ Module: typeof VeStrategy;
5393
+ private preloadWrapper;
5394
+ private h265Wrapper;
5395
+ get preloader(): PreloaderManagerOrigin | undefined;
5396
+ get preloaderStatus(): PreloaderStatus;
5397
+ constructor();
5398
+ private initUmdLoader;
5399
+ private fetchWebId;
5400
+ private initTea;
5401
+ private fetchVeStrategy;
5402
+ private fetchStrategies;
5403
+ private initOnce;
5404
+ init(config: StrategyInitOptions): Promise<boolean>;
5405
+ addPreloadList(list: IPreloadStream[]): void;
5406
+ setPreloadList(list: IPreloadStream[]): Promise<void>;
5407
+ setPreloadScene(preloadScene: PreloadScene, options?: any): void;
5408
+ prepare(): Promise<boolean>;
5409
+ getDeviceId(): string;
5410
+ isReady(): boolean;
5411
+ getStrategyRecommendations(options?: any, commonOptions?: any): StrategyRecommendation;
5412
+ getStrategyRecommendationsAsync(options?: any, commonOptions?: any): Promise<StrategyRecommendation>;
5413
+ isHevcRecommended(): boolean;
4733
5414
  }
5415
+ declare const _default: VeStrategyManager;
4734
5416
  export interface IlicenseContent {
4735
5417
  content: string;
4736
5418
  sign: string;
@@ -4850,6 +5532,8 @@ declare class VePlayer {
4850
5532
  * @memberof VePlayer
4851
5533
  */
4852
5534
  private _emitter;
5535
+ /** 最近一次用户主动(或 defaultAudioLang)选中的音轨语言代码,用于清晰度切换后恢复音轨 */
5536
+ private _lastSelectedAudioLang;
4853
5537
  /**
4854
5538
  *
4855
5539
  *
@@ -4956,6 +5640,10 @@ declare class VePlayer {
4956
5640
  * @param list 待预加载视频列表,详情见{@link IPreloadStream[]}
4957
5641
  */
4958
5642
  static setPreloadList(list: IPreloadStream[]): Promise<void>;
5643
+ /** {zh}
5644
+ * @brief 是否支持iOS的MMS
5645
+ */
5646
+ static isMMSSupported: typeof isMMSSupported;
4959
5647
  /**
4960
5648
  * @hidden
4961
5649
  * @param codec
@@ -5252,6 +5940,9 @@ declare class VePlayer {
5252
5940
  * @memberof VePlayer
5253
5941
  */
5254
5942
  private _bindSdkEvents;
5943
+ private _bindNativeAudioTrackEvents;
5944
+ private _onNativeAddTrack;
5945
+ private _onNativeTrackChange;
5255
5946
  /** {zh}
5256
5947
  * @hidden
5257
5948
  *
@@ -5265,6 +5956,12 @@ declare class VePlayer {
5265
5956
  * @return {*}
5266
5957
  * @memberof VePlayer
5267
5958
  */
5959
+ /** @hidden 获取 HLS 实例(兼容加密和普通 HLS 插件) */
5960
+ private _getHlsInstance;
5961
+ /** @hidden 在 HLS 音轨列表就绪或清晰度切换后,恢复上次选中的音轨;找不到时 fallback 到 defaultAudioLang */
5962
+ private _applyDefaultAudioLang;
5963
+ /** @hidden 在 native AudioTrackList 就绪后,恢复上次选中的音轨;找不到时 fallback 到 defaultAudioLang */
5964
+ private _applyDefaultAudioLangNative;
5268
5965
  private _offPlayerEvents;
5269
5966
  /** {zh}
5270
5967
  * @hidden 切换插件展示
@@ -5404,6 +6101,50 @@ declare class VePlayer {
5404
6101
  selected: boolean;
5405
6102
  [propName: string]: any;
5406
6103
  }>;
6104
+ /** {zh}
6105
+ * @brief 获取音频轨道列表。HLS 流通过 hls.js 获取,iOS 原生播放通过 HTMLMediaElement.audioTracks 获取。
6106
+ * @notes 每项包含 `id`、`name`、`lang`、`channels`、`default`、`selected` 字段;轨道数量 ≤ 1 时返回空数组。
6107
+ */
6108
+ getAudioTracks(): Array<{
6109
+ id: string | number;
6110
+ name: string;
6111
+ lang?: string;
6112
+ channels?: string;
6113
+ default: boolean;
6114
+ selected: boolean;
6115
+ [key: string]: unknown;
6116
+ }>;
6117
+ /** {zh}
6118
+ * @brief 获取当前激活的音频轨道。
6119
+ * @notes HLS 流通过 hls.js 获取,iOS 原生播放通过 HTMLMediaElement.audioTracks 获取;无激活轨道时返回 null。
6120
+ */
6121
+ getCurrentAudioTrack(): {
6122
+ id: string | number;
6123
+ name: string;
6124
+ lang?: string;
6125
+ channels?: string;
6126
+ default: boolean;
6127
+ selected: boolean;
6128
+ [key: string]: unknown;
6129
+ } | null;
6130
+ /** {zh}
6131
+ * @brief 切换音频轨道。
6132
+ * @param id 目标轨道的 id,可通过 `getAudioTracks()` 获取。
6133
+ * @notes 切换完成后会触发 `Events.AUDIO_TRACK_CHANGE` 事件;
6134
+ * 同时 PC 端和移动端音频轨道插件的选中状态会自动更新。
6135
+ */
6136
+ switchAudioTrack(id: string | number): void;
6137
+ /** {zh}
6138
+ * @brief 当前播放是否命中预加载缓存
6139
+ * @memberof VePlayer
6140
+ * @return {boolean} 是否命中预加载
6141
+ */
6142
+ /** {en}
6143
+ * @brief Whether the current playback hits the preloaded cache
6144
+ * @memberof VePlayer
6145
+ * @return {boolean} Whether the current playback hits the preloaded cache
6146
+ */
6147
+ get hitPreload(): boolean;
5407
6148
  /** {zh}
5408
6149
  * @brief 初始化多语言词典
5409
6150
  *
@@ -5775,15 +6516,17 @@ export declare class Subtitle extends Plugin {
5775
6516
  */
5776
6517
  _initExtSubTitle(defaultIndex: any): void;
5777
6518
  _renderList(defaultIndex: any): void;
5778
- _onOff(): void;
5779
- _onChange(data: any): void;
5780
- _onListReset(data: any): void;
6519
+ _onOff: () => void;
6520
+ _onChange: (data: any) => void;
6521
+ _onListReset: (data: any) => void;
5781
6522
  updateCurItem(cIndex: any, subtitle: any): void;
5782
6523
  initEvents(): void;
5783
- handleButtonChange(e: any): void;
6524
+ handleButtonChange: (e: any) => void;
6525
+ onEnter: (e: any) => void;
6526
+ onLeave: (e: any) => void;
5784
6527
  showList(): void;
5785
6528
  hideList(): void;
5786
- openSubtitle(): void;
6529
+ openSubtitle(): Promise<any>;
5787
6530
  getSubTitleIndex(list: any, subtitle?: {
5788
6531
  id: string;
5789
6532
  language: string;
@@ -5825,9 +6568,9 @@ export declare class Subtitle extends Plugin {
5825
6568
  /**
5826
6569
  *
5827
6570
  * @param {ISubTitleItem} subtitle
5828
- * @returns
6571
+ * @returns {Promise<void>}
5829
6572
  */
5830
- switchSubTitle(subtitle?: ISubTitleItem): any;
6573
+ switchSubTitle(subtitle?: ISubTitleItem): Promise<void>;
5831
6574
  switchOffSubtitle(): void;
5832
6575
  noShowSubtitle(): void;
5833
6576
  renderItemList(): void;
@@ -6191,6 +6934,10 @@ export declare const Events: {
6191
6934
  * @brief 多码率自适应播放时,自动挡位对应的清晰度改变。
6192
6935
  */
6193
6936
  ABR_AUTO_DESC_CHANGE: string;
6937
+ /** {zh}
6938
+ * @brief 播放插件内核的扩展事件
6939
+ */
6940
+ CORE_EVENT: string;
6194
6941
  /** {zh}
6195
6942
  * @brief 播放器实例创建完成时触发。
6196
6943
  */
@@ -6397,6 +7144,14 @@ export declare const Events: {
6397
7144
  * @brief license 提醒
6398
7145
  */
6399
7146
  LICENSE_STATUS_WARNING: string;
7147
+ /** {zh}
7148
+ * @brief HLS 音频轨道列表更新时触发。`data.audioTracks` 为完整轨道数组。
7149
+ */
7150
+ AUDIO_TRACKS_UPDATED: string;
7151
+ /** {zh}
7152
+ * @brief 音频轨道切换完成时触发。`data.id` 为新轨道 id,`data.audioTrack` 为完整轨道对象。
7153
+ */
7154
+ AUDIO_TRACK_CHANGE: string;
6400
7155
  /** {zh}
6401
7156
  * @brief 在播放被终止时触发。例如当播放中的视频重新开始播放。
6402
7157
  */
@@ -6720,6 +7475,14 @@ export declare const Event: {
6720
7475
  * @brief license 提醒
6721
7476
  */
6722
7477
  LICENSE_STATUS_WARNING: string;
7478
+ /** {zh}
7479
+ * @brief HLS 音频轨道列表更新时触发。`data.audioTracks` 为完整轨道数组。
7480
+ */
7481
+ AUDIO_TRACKS_UPDATED: string;
7482
+ /** {zh}
7483
+ * @brief 音频轨道切换完成时触发。`data.id` 为新轨道 id,`data.audioTrack` 为完整轨道对象。
7484
+ */
7485
+ AUDIO_TRACK_CHANGE: string;
6723
7486
  };
6724
7487
  PluginEvents: {
6725
7488
  /** {zh}
@@ -6862,6 +7625,10 @@ export declare const Event: {
6862
7625
  * @brief 多码率自适应播放时,自动挡位对应的清晰度改变。
6863
7626
  */
6864
7627
  ABR_AUTO_DESC_CHANGE: string;
7628
+ /** {zh}
7629
+ * @brief 播放插件内核的扩展事件
7630
+ */
7631
+ CORE_EVENT: string;
6865
7632
  };
6866
7633
  };
6867
7634
  export * from "xgplayer";