@byteplus/veplayer 1.11.0-rc.0 → 1.11.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.
Files changed (3) hide show
  1. package/index.d.ts +195 -12
  2. package/index.min.js +2 -2
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -79,8 +79,21 @@ export interface ISdkErrorConfig {
79
79
  * @hidden
80
80
  */
81
81
  isNeedDemoteBack?: boolean;
82
+ /**
83
+ * @brief 是否允许回退到同清晰度不同线路的 fallbackurl:
84
+ * - `false`:只能在当前 defintion 范围内 fallback。
85
+ * - `true`:允许 fallback 相同清晰度,不同的线路的 fallbackurl。
86
+ * @default true
87
+ *
88
+ */
89
+ /** {en}
90
+ * @brief Is demote to different line enabled? The values are as follows:
91
+ * - `false`: only demote in current definition line.
92
+ * - `true`: allow demote to different line.
93
+ */
94
+ allowDemoteToDifferentLine?: boolean;
82
95
  /** {zh}
83
- * @brief 报错后重试次数。
96
+ * @brief 报错后重试轮数。
84
97
  * @default 1
85
98
  */
86
99
  retryLoopNum?: number;
@@ -798,18 +811,125 @@ export interface ITextItem {
798
811
  */
799
812
  export interface IDefinitionDemotePlugin {
800
813
  /**
801
- * @brief 是否开启自动降级,取值如下:
814
+ * @brief 长卡顿情况下是否开启自动降级,取值如下:
802
815
  * - `false`:关闭自动降级。
803
816
  * - `true`:开启自动降级。
804
817
  * @default true
805
818
  *
806
819
  */
807
820
  /** {en}
808
- * @brief Is automatic downgrade enabled? The values are as follows:
821
+ * @brief Is automatic downgrade enabled for long waiting? The values are as follows:
822
+ * - `false`: automatic downgrade is disabled.
823
+ * - `true`: automatic downgrade is enabled.
824
+ */
825
+ isNeedAutoDemoteWhenLongWaiting?: boolean;
826
+ /**
827
+ * @brief 频繁卡顿情况下是否开启自动降级,取值如下:
828
+ * - `false`:关闭自动降级。
829
+ * - `true`:开启自动降级。
830
+ * @default true
831
+ *
832
+ */
833
+ /** {en}
834
+ * @brief Is automatic downgrade enabled for often waiting? The values are as follows:
809
835
  * - `false`: automatic downgrade is disabled.
810
836
  * - `true`: automatic downgrade is enabled.
811
837
  */
812
- isNeedAutoDemote?: boolean;
838
+ isNeedAutoDemoteWhenOftenWaiting?: boolean;
839
+ /**
840
+ * @brief 长卡顿情况下,当用户开启 fallbackUrl 降级(降级到备用线路) 时,优先降级清晰度还是 fallbackUrl,取值如下:
841
+ * - `false`:优先在同一个清晰度的所有 fallback 之间切换, 都有问题的情况下,再降低到下一个清晰度
842
+ * - `true`:优先降级清晰度, 清晰度降到最低之后,再在最后一个清晰度的 fallbackUrl 之间切换
843
+ * @default false
844
+ *
845
+ */
846
+ /** {en}
847
+ * @brief Is demote quality first? The values are as follows:
848
+ * - `false`: not demote quality first.
849
+ * - `true`: demote quality first.
850
+ */
851
+ shouldDemoteDefinitionFirstWhenLongWaiting?: boolean;
852
+ /**
853
+ * @brief 频繁卡顿情况下,当用户开启 fallbackUrl 降级(降级到备用线路) 时,优先降级清晰度还是 fallbackUrl,取值如下:
854
+ * - `false`:优先在同一个清晰度的所有 fallback 之间切换, 都有问题的情况下,再降低到下一个清晰度
855
+ * - `true`:优先降级清晰度, 清晰度降到最低之后,再在最后一个清晰度的 fallbackUrl 之间切换
856
+ * @default false
857
+ *
858
+ */
859
+ /** {en}
860
+ * @brief Is demote quality first? The values are as follows:
861
+ * - `false`: not demote quality first.
862
+ * - `true`: demote quality first.
863
+ */
864
+ shouldDemoteDefinitionFirstWhenOftenWaiting?: boolean;
865
+ /**
866
+ * @brief 长卡顿情况下是否开启 fallbackUrl 降级:
867
+ * - `false`:不尝试降级到备用线路。
868
+ * - `true`:尝试降级到备用线路。
869
+ * @default true
870
+ *
871
+ */
872
+ /** {en}
873
+ * @brief Is automatic downgrade enabled? The values are as follows:
874
+ * - `false`: not try to play fallbackUrl first.
875
+ * - `true`: try to play fallbackUrl first before demote definition.
876
+ */
877
+ isNeedDemoteBackWhenLongWaiting?: boolean;
878
+ /**
879
+ * @brief 频繁卡顿情况下是否开启 fallbackUrl 降级:
880
+ * - `false`:不尝试降级到备用线路。
881
+ * - `true`:尝试降级到备用线路。
882
+ * @default true
883
+ *
884
+ */
885
+ /** {en}
886
+ * @brief Is automatic downgrade enabled? The values are as follows:
887
+ * - `false`: not try to play fallbackUrl first.
888
+ * - `true`: try to play fallbackUrl first before demote definition.
889
+ */
890
+ isNeedDemoteBackWhenOftenWaiting?: boolean;
891
+ /**
892
+ * @brief 长卡顿情况下是否允许回退到同清晰度不同线路的 fallbackurl:
893
+ * - `false`:只能在当前 defintion 范围内 fallback。
894
+ * - `true`:允许 fallback 相同清晰度,不同的线路的 fallbackurl。
895
+ * @default true
896
+ *
897
+ */
898
+ /** {en}
899
+ * @brief Is demote to different line enabled? The values are as follows:
900
+ * - `false`: only demote in current definition line.
901
+ * - `true`: allow demote to different line.
902
+ */
903
+ allowDemoteToDifferentLineWhenLongWaiting?: boolean;
904
+ /**
905
+ * @brief 频繁卡顿情况下是否允许回退到同清晰度不同线路的 fallbackurl:
906
+ * - `false`:只能在当前 defintion 范围内 fallback。
907
+ * - `true`:允许 fallback 相同清晰度,不同的线路的 fallbackurl。
908
+ * @default true
909
+ *
910
+ */
911
+ /** {en}
912
+ * @brief Is demote to different line enabled? The values are as follows:
913
+ * - `false`: only demote in current definition line.
914
+ * - `true`: allow demote to different line.
915
+ */
916
+ allowDemoteToDifferentLineWhenOftenWaiting?: boolean;
917
+ /**
918
+ * @brief 同一清晰度降级至 fallbackurl 的重试轮数。
919
+ * @default 1
920
+ */
921
+ /** {en}
922
+ * @brief The retry loop number for all available fallbackUrl.
923
+ */
924
+ retryLoopNum?: number;
925
+ /**
926
+ * @brief 在降级时到下一个definition 时,是否显示 toast 提示。
927
+ * @default 1
928
+ */
929
+ /** {en}
930
+ * @brief Whether to show toast when demote to next definition.
931
+ */
932
+ bumpToastWhenDemoteToNextDefinition?: boolean;
813
933
  /**
814
934
  * @brief 清晰度降级顺序。数组中的元素需与 `playList` 中的 `definition` 相对应。
815
935
  * @default []
@@ -862,15 +982,34 @@ export interface IDefinitionDemotePlugin {
862
982
  * @brief 提醒降级的toast显示持续时间,单位ms
863
983
  */
864
984
  toastShowTime?: number;
985
+ /**
986
+ * @brief 记录清除时间阈值,单位为毫秒。
987
+ * @default 3 * 60 * 1000
988
+ */
989
+ /** {en}
990
+ * @brief Record clear time threshold, unit is ms.
991
+ */
992
+ clearRecordThreshold?: number;
993
+ }
994
+ declare enum FALLBACK_REASON {
995
+ LONG_STALL = "long_stall",
996
+ OFTEN_STALL = "often_stall",
997
+ ERROR = "error"
865
998
  }
866
999
  export declare class DefinitionDemotePlugin extends Plugin {
867
1000
  static get pluginName(): string;
868
1001
  waitings: number[];
869
1002
  timer: ReturnType<typeof setTimeout>;
1003
+ clearRecordTimer: ReturnType<typeof setTimeout>;
870
1004
  toastId: number;
871
1005
  longWaitingEmitTime: number;
872
1006
  waitingStartTime: number;
873
1007
  playerData: PlayerData;
1008
+ fallbackState: {
1009
+ retryTimes: number;
1010
+ idx: number;
1011
+ };
1012
+ isDemoting: boolean;
874
1013
  static get defaultConfig(): IDefinitionDemotePlugin;
875
1014
  constructor(args: any);
876
1015
  registerLanguageTexts(): {
@@ -889,8 +1028,21 @@ export declare class DefinitionDemotePlugin extends Plugin {
889
1028
  _time(): void;
890
1029
  _clearTime(): void;
891
1030
  clearState(): void;
892
- demote(): void;
893
- changeUrl(url: Url): void;
1031
+ demote(reason: FALLBACK_REASON): void;
1032
+ executeDemoteFallbackFirst(reason: FALLBACK_REASON): void;
1033
+ executeDemoteDefinitionFirst(reason: FALLBACK_REASON): void;
1034
+ private _emitFallbackEventAndReportTea;
1035
+ getRetryListForCurrentDefinition(): {
1036
+ urls: any[];
1037
+ sources: (string | number)[];
1038
+ };
1039
+ getRetryListForCurrentDefinitionAcrossAllLines(): {
1040
+ urls: any[];
1041
+ sources: any[];
1042
+ };
1043
+ resetTimes(): void;
1044
+ changeMainOrBackup(reason: FALLBACK_REASON): boolean;
1045
+ changeUrl(url: Url, source: string | number): void;
894
1046
  showToast(definition: Stream): void;
895
1047
  destroy(): void;
896
1048
  }
@@ -3502,7 +3654,7 @@ export interface IPlayAuthTokenConfig {
3502
3654
  */
3503
3655
  autoDemoteDefinition?: string;
3504
3656
  /** {zh}
3505
- * @brief 开启清晰度自动降级(`isNeedAutoDemote` 为 `true`)时的自动档位对应的多语言文案 key,取值对应 `languages` 字段中各语种的 `key`。
3657
+ * @brief 开启清晰度自动降级(`isNeedAutoDemoteWhenLongWaiting` 为 `true`)时的自动档位对应的多语言文案 key,取值对应 `languages` 字段中各语种的 `key`。
3506
3658
  * @notes 如果指定的清晰度,playAuthToken从服务端返回的清晰度列表中不存在该清晰度,则此参数无效。
3507
3659
  * @default -
3508
3660
  */
@@ -4288,6 +4440,7 @@ declare class PlayerData {
4288
4440
  * @description: 获取满足当前直播条件的流
4289
4441
  */
4290
4442
  getCurrentStreams(): Stream[];
4443
+ getStreamsMatchCurrentDefinition(): Stream[];
4291
4444
  /**
4292
4445
  * @description: 获取根据线路ID去重的流,用于获取有几个线路
4293
4446
  */
@@ -4302,6 +4455,7 @@ declare class PlayerData {
4302
4455
  * @param {number} lineId
4303
4456
  */
4304
4457
  getDefinitionListByLineId(lineId: number | string): Stream[];
4458
+ getDefinitionListForAllLines(): Stream[];
4305
4459
  /**
4306
4460
  * @description: 根据条件筛选符合条件的流list
4307
4461
  * @param {Condition} condition
@@ -4312,7 +4466,10 @@ declare class PlayerData {
4312
4466
  * @param {boolean} isDown 是否取下一级清晰度
4313
4467
  * @param {string[]} demotePriority 清晰度降级顺序
4314
4468
  */
4315
- getNextDefinition(isDown: boolean, demotePriority: string[]): Stream[];
4469
+ getNextDefinition(isDown: boolean, demotePriority: string[], allowDemoteToDifferentLine?: boolean): {
4470
+ urls: Stream[];
4471
+ lineId: string | number;
4472
+ };
4316
4473
  /**
4317
4474
  * 获取api map
4318
4475
  * @return { ApiMapConfig }
@@ -5754,11 +5911,11 @@ export declare const Events: {
5754
5911
  */
5755
5912
  REFRESH_CLICK: string;
5756
5913
  /** {zh}
5757
- * @brief 报错时触发降级。
5914
+ * @brief 发生报错,卡顿时,在同清晰度等级下,触发降级至 fallbackUrl。
5758
5915
  */
5759
5916
  PLAY_BACKUP_CHANGE: string;
5760
5917
  /** {zh}
5761
- * @brief 报错时触发的降级结束。
5918
+ * @brief 发生报错,卡顿时,在同清晰度等级下,触发降级至 fallbackUrl, 所有可执行降级结束,无可用 fallbackUrl
5762
5919
  */
5763
5920
  PLAY_BACKUP_CHANGE_FINISH: string;
5764
5921
  /** {zh}
@@ -5789,6 +5946,15 @@ export declare const Events: {
5789
5946
  * @brief 清晰度降级。
5790
5947
  */
5791
5948
  DEFINITION_DEMOTE: string;
5949
+ /** {zh}
5950
+ * @brief 已降至最低清晰度。
5951
+ */
5952
+ DEFINITION_DEMOTE_ALL_DONE: string;
5953
+ /** {zh}
5954
+ * @brief 所有可执行的降级操作均执行完毕。如果用户同时开启了 definition 降级和 fallbackUrl 降级,
5955
+ * 无论两者哪个优先级更高,待所有可执行的降级操作均执行完毕,会触发该事件。
5956
+ */
5957
+ DEMOTE_ALL_DONE: string;
5792
5958
  /** {zh}
5793
5959
  * @hidden
5794
5960
  */
@@ -6071,6 +6237,10 @@ export declare const Events: {
6071
6237
  * @brief `<source>` 加载成功。
6072
6238
  */
6073
6239
  SOURCE_SUCCESS: string;
6240
+ /** {zh}
6241
+ * @brief 降级事件。
6242
+ */
6243
+ FALLBACK: string;
6074
6244
  /** {zh}
6075
6245
  * @brief 在播放被终止时触发。例如当播放中的视频重新开始播放。
6076
6246
  */
@@ -6390,6 +6560,10 @@ export declare const Event: {
6390
6560
  * @brief `<source>` 加载成功。
6391
6561
  */
6392
6562
  SOURCE_SUCCESS: string;
6563
+ /** {zh}
6564
+ * @brief 降级事件。
6565
+ */
6566
+ FALLBACK: string;
6393
6567
  };
6394
6568
  PluginEvents: {
6395
6569
  /** {zh}
@@ -6417,11 +6591,11 @@ export declare const Event: {
6417
6591
  */
6418
6592
  REFRESH_CLICK: string;
6419
6593
  /** {zh}
6420
- * @brief 报错时触发降级。
6594
+ * @brief 发生报错,卡顿时,在同清晰度等级下,触发降级至 fallbackUrl。
6421
6595
  */
6422
6596
  PLAY_BACKUP_CHANGE: string;
6423
6597
  /** {zh}
6424
- * @brief 报错时触发的降级结束。
6598
+ * @brief 发生报错,卡顿时,在同清晰度等级下,触发降级至 fallbackUrl, 所有可执行降级结束,无可用 fallbackUrl
6425
6599
  */
6426
6600
  PLAY_BACKUP_CHANGE_FINISH: string;
6427
6601
  /** {zh}
@@ -6452,6 +6626,15 @@ export declare const Event: {
6452
6626
  * @brief 清晰度降级。
6453
6627
  */
6454
6628
  DEFINITION_DEMOTE: string;
6629
+ /** {zh}
6630
+ * @brief 已降至最低清晰度。
6631
+ */
6632
+ DEFINITION_DEMOTE_ALL_DONE: string;
6633
+ /** {zh}
6634
+ * @brief 所有可执行的降级操作均执行完毕。如果用户同时开启了 definition 降级和 fallbackUrl 降级,
6635
+ * 无论两者哪个优先级更高,待所有可执行的降级操作均执行完毕,会触发该事件。
6636
+ */
6637
+ DEMOTE_ALL_DONE: string;
6455
6638
  /** {zh}
6456
6639
  * @hidden
6457
6640
  */