@volcengine/veplayer 1.8.6-rc.9 → 1.8.7-rc.0

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
@@ -5,6 +5,7 @@ import { VeStrategyH265Config } from '@volcengine/vestrategy-h265';
5
5
  import EventEmitter from 'eventemitter3';
6
6
  import Player from 'xgplayer';
7
7
  import { BasePlugin, I18N, IXGI18nText, Plugin } from 'xgplayer';
8
+ import { IUrl } from 'xgplayer/es/defaultConfig';
8
9
 
9
10
  /**
10
11
  * @brief 插件按钮位置
@@ -780,53 +781,81 @@ export interface ITextItem {
780
781
  /**
781
782
  * @brief 清晰度自动降级配置
782
783
  * @list Options
783
- * @hidden
784
- *
785
- * @export
786
- * @interface IDefinitionDemotePlugin
784
+ * @kind property
787
785
  */
788
786
  export interface IDefinitionDemotePlugin {
789
787
  /**
790
- * 超时重试次数
791
- * 默认:3
788
+ * @brief 是否自动触发降级
789
+ * @default true
792
790
  *
793
- * @type {number}
794
- * @memberof IDefinitionDemotePlugin
795
791
  */
796
- oftenWaitingCount?: number;
792
+ isNeedAutoDemote?: boolean;
797
793
  /**
798
- * 设置经常超时时间
799
- * 默认:5000
794
+ * @brief 降级顺序,按照数组 顺序依次降级,数组 中的元素与playList 中的 definition 相对应
795
+ * @default []
800
796
  *
801
- * @type {number}
797
+ * @type {string[]}
802
798
  * @memberof IDefinitionDemotePlugin
803
799
  */
804
- oftenWaitingTime?: number;
800
+ demotePriority?: string[];
805
801
  /**
806
- * 设置超时时间
807
- * 默认5000
802
+ * @brief 长时间卡顿的时间阈值,单位为ms。卡顿超过该值,即为长时间卡顿
803
+ * @default 5000
808
804
  *
809
- * @type {number}
810
- * @memberof IDefinitionDemotePlugin
811
805
  */
812
806
  longWaitingTime?: number;
813
807
  /**
814
- * 是否自动触发降级
815
- * 默认:false
808
+ * @brief 频繁卡顿的次数阈值。OftenWaitingTime 内卡顿次数大于等于阈值时,触发often_waiting事件,即表示发生了频繁卡顿
809
+ * @default 3
816
810
  *
817
- * @type {boolean}
818
- * @memberof IDefinitionDemotePlugin
819
811
  */
820
- isNeedAutoDemote?: boolean;
812
+ oftenWaitingCount?: number;
821
813
  /**
822
- *
823
- * 降级顺序,按照数组顺序依次降级,数字元素对应playList中的definition
824
- * 默认: ['uhd', 'hd', 'sd', 'ld', 'ao']
825
- *
826
- * @type {string[]}
827
- * @memberof IDefinitionDemotePlugin
814
+ * @brief 频繁卡顿的时间范围。OftenWaitingTime 内卡顿次数大于等于阈值时,触发often_waiting事件,即表示发生了频繁卡顿
815
+ * @default 5000
828
816
  */
829
- demotePriority?: string[];
817
+ oftenWaitingTime?: number;
818
+ /**
819
+ * @brief 卡顿时是否显示建议切换清晰度的提醒tips
820
+ * @default true
821
+ */
822
+ isNeedShowTips?: boolean;
823
+ /**
824
+ * @brief 提醒降级的toast显示持续时间,单位ms
825
+ * @default 3000
826
+ */
827
+ toastShowTime?: number;
828
+ }
829
+ export declare class DefinitionDemotePlugin extends Plugin {
830
+ static get pluginName(): string;
831
+ waitings: number[];
832
+ timer: ReturnType<typeof setTimeout>;
833
+ toastId: number;
834
+ longWaitingEmitTime: number;
835
+ waitingStartTime: number;
836
+ playerData: PlayerData;
837
+ static get defaultConfig(): IDefinitionDemotePlugin;
838
+ constructor(args: any);
839
+ registerLanguageTexts(): {
840
+ definition_demote_txt: {
841
+ jp: string;
842
+ en: string;
843
+ zh: string;
844
+ "zh-hk": string;
845
+ };
846
+ };
847
+ afterCreate(): void;
848
+ bindCtx(): void;
849
+ bindEvents(): void;
850
+ _waiting(): void;
851
+ _count(): void;
852
+ _time(): void;
853
+ _clearTime(): void;
854
+ clearState(): void;
855
+ demote(): void;
856
+ changeUrl(url: string): void;
857
+ showToast(definition: Stream): void;
858
+ destroy(): void;
830
859
  }
831
860
  /**
832
861
  * @brief DASH 播放配置。
@@ -840,7 +869,7 @@ export interface IDashPluginConfig {
840
869
  /**
841
870
  * @brief 视频 ID。
842
871
  * @default -
843
- * @notice 播放加密视频时必选
872
+ * @notes 播放加密视频时必选
844
873
  */
845
874
  /** {en}
846
875
  * @brief 视频vid
@@ -1011,7 +1040,7 @@ export interface IVodLogOptsConfig {
1011
1040
  /**
1012
1041
  * @brief 用于识别单一用户的 ID,可在{@link https://www.volcengine.com/docs/4/75736#qoe-%E6%8C%87%E6%A0%87%E8%AF%B4%E6%98%8E QoE指标}中用于用户维度的筛选,也可以用于{@link https://www.volcengine.com/docs/4/106093 单点追查} 查找单用户的播放日志
1013
1042
  * 用户 ID 对应于单点追查功能的查询条件中的设备 ID 维度。如不设置用户 ID,VePlayer 将根据用户浏览器随机生成一个值,该值会在浏览器端缓存。
1014
- * @notice 强烈建议您使用与业务相关的用户 ID,以便在发生播放错误时通过{@link https://console.volcengine.com/vod/region:vod+cn-north-1/quality_control/SingleTracing/?Tab=play 点播控制台 > 质量平台 > 单点追查}功能排查故障。
1043
+ * @notes 强烈建议您使用与业务相关的用户 ID,以便在发生播放错误时通过{@link https://console.volcengine.com/vod/region:vod+cn-north-1/quality_control/SingleTracing/?Tab=play 点播控制台 > 质量平台 > 单点追查}功能排查故障。
1015
1044
  * @default -
1016
1045
  */
1017
1046
  line_user_id: string | number;
@@ -1023,7 +1052,7 @@ export interface IVodLogOptsConfig {
1023
1052
  vtype?: "MP4" | "HLS" | "DASH" | "FLV";
1024
1053
  /**
1025
1054
  * @brief 业务标签。对应于质量平台上的业务类型维度,其作用是区分业务中的不同场景,以便进行多维度分析。举例来说,假设您的应用中包含短视频和长视频两个场景,则可分别将 `tag` 设为 `short` 和 `long`。这样一来,您就能够在{@link https://www.volcengine.com/docs/4/120175 质量平台}上通过业务标签维度查询或过滤不同场景的数据。
1026
- * @notice 如需自定义配置 tag 值在点播控制台上的展示文案,请联系{@link https://www.volcengine.com/docs/4/108992#%E5%94%AE%E5%90%8E%E6%94%AF%E6%8C%81 技术支持}
1055
+ * @notes 如需自定义配置 tag 值在点播控制台上的展示文案,请联系{@link https://www.volcengine.com/docs/4/108992#%E5%94%AE%E5%90%8E%E6%94%AF%E6%8C%81 技术支持}
1027
1056
  * @default 普通视频
1028
1057
  */
1029
1058
  tag?: string;
@@ -1401,7 +1430,7 @@ export declare const enum TOGGLE_MODES {
1401
1430
  */
1402
1431
  export interface IPlayListItem {
1403
1432
  /**
1404
- * @notice `playAuthToken` 为空时,此参数必传。
1433
+ * @notes `playAuthToken` 为空时,此参数必传。
1405
1434
  * @default -
1406
1435
  * @listtip `playAuthToken` 为空时,此参数必传。
1407
1436
  * @brief 视频地址。
@@ -1410,7 +1439,7 @@ export interface IPlayListItem {
1410
1439
  */
1411
1440
  url?: string;
1412
1441
  /**
1413
- * @notice `url` 为空时,此参数必传。
1442
+ * @notes `url` 为空时,此参数必传。
1414
1443
  * @default -
1415
1444
  * @listtip `url` 为空时,此参数必传。
1416
1445
  * @brief 播放临时安全凭证,由业务的 AppServer 签发。
@@ -1483,7 +1512,7 @@ export interface IPlayListConfig {
1483
1512
  * - `rootRight`:播放器根节点右侧
1484
1513
  * - `rootTop`:播放器根节点顶部
1485
1514
  * - `root`:播放器根节点
1486
- * @notice 此参数同时影响“打开/关闭播放列表”和“播放下一个”两个按钮的位置。
1515
+ * @notes 此参数同时影响“打开/关闭播放列表”和“播放下一个”两个按钮的位置。
1487
1516
  * @default controlsLeft
1488
1517
  */
1489
1518
  /** {en}
@@ -1631,7 +1660,188 @@ export declare class PlayListPlugin extends Plugin {
1631
1660
  get disable(): boolean;
1632
1661
  render(): string;
1633
1662
  }
1634
- export interface IPlayInfoList {
1663
+ /**
1664
+ * @brief 动态水印配置。
1665
+ * @list Options
1666
+ * @kind property
1667
+ */
1668
+ /** {en}
1669
+ * @brief watermark config
1670
+ */
1671
+ export interface IWatermarkConfig {
1672
+ /**
1673
+ * @brief 是否开启水印
1674
+ * @default false
1675
+ */
1676
+ enable: boolean;
1677
+ /**
1678
+ * @brief 水印文案内容
1679
+ * @default -
1680
+ */
1681
+ content: string;
1682
+ /**
1683
+ * @brief 水印展示形式
1684
+ * - 0: 固定位置
1685
+ * - 1: 全屏滚动
1686
+ * - 2: 随机闪烁
1687
+ * @default 1
1688
+ */
1689
+ displayType: 0 | 1 | 2;
1690
+ /**
1691
+ * @brief 水印字体大小,number类型时单位为px,string类型需要携带单位
1692
+ * @default 12
1693
+ */
1694
+ fontSize: number | string;
1695
+ /**
1696
+ * @brief 水印字体颜色
1697
+ * @brief #FFFFFF
1698
+ */
1699
+ fontColor: string;
1700
+ /**
1701
+ * @brief 不透明度
1702
+ * @default 0.3
1703
+ */
1704
+ opacity: number;
1705
+ /**
1706
+ * @brief 水印闪烁速度
1707
+ * @default MODERATE
1708
+ * - MODERATE: 适中
1709
+ * - FAST: 较快
1710
+ * - SLOW: 较慢
1711
+ */
1712
+ tickerSpeed?: "SLOW" | "MODERATE" | "FAST";
1713
+ /**
1714
+ * @brief 水印字体类型
1715
+ * @default -
1716
+ */
1717
+ fontFamily?: string;
1718
+ /**
1719
+ * @brief 水印相对于播放容器顶部起始位置,单位px
1720
+ * @default 0
1721
+ */
1722
+ top?: number;
1723
+ /**
1724
+ * @brief 水印相对于播放容器左侧起始位置,单位px
1725
+ * @default 0
1726
+ */
1727
+ left?: number;
1728
+ /**
1729
+ * @brief 水印相对于播放容器底部起始位置,单位px
1730
+ * @default -
1731
+ */
1732
+ bottom?: number;
1733
+ /**
1734
+ * @brief 水印相对于播放容器右侧起始位置,单位px
1735
+ * @default -
1736
+ */
1737
+ right?: number;
1738
+ }
1739
+ export declare class DynamicWatermarkPlugin extends Plugin {
1740
+ private wm;
1741
+ static get pluginName(): string;
1742
+ static get defaultConfig(): IWatermarkConfig & {
1743
+ position: string;
1744
+ };
1745
+ constructor(props: any);
1746
+ afterCreate(): void;
1747
+ start(): void;
1748
+ pause(): void;
1749
+ resume(): void;
1750
+ resize(): void;
1751
+ _initWatermark(): void;
1752
+ destroy(): void;
1753
+ render(): string | HTMLElement;
1754
+ }
1755
+ declare class ToastPlugin extends Plugin {
1756
+ static get pluginName(): string;
1757
+ static get defaultConfig(): {
1758
+ index: number;
1759
+ };
1760
+ constructor(args: any);
1761
+ private toastNumber;
1762
+ private toastMaps;
1763
+ beforePlayerInit(): void;
1764
+ afterPlayerInit(): void;
1765
+ afterCreate(): void;
1766
+ destroy(): void;
1767
+ add(content: string | HTMLElement, duration?: number, isNeedCloseBt?: boolean): number;
1768
+ remove(id: number): void;
1769
+ renderToast(content: string | HTMLElement, isNeedCloseBt: any, id: any): HTMLElement;
1770
+ render(): string;
1771
+ }
1772
+ /** {zh}
1773
+ * @brief 记忆播放配置。
1774
+ * @kind property
1775
+ * @list Options
1776
+ * @interface IMemoryPlayConfig
1777
+ */
1778
+ export interface IMemoryPlayConfig {
1779
+ /** {zh}
1780
+ * @brief 存储标识id
1781
+ * @default 视频vid或视频地址(去除query参数)
1782
+ *
1783
+ * @type {number | string}
1784
+ * @memberof IMemoryPlayConfig
1785
+ */
1786
+ memoryId: number | string;
1787
+ /** {zh}
1788
+ * @brief 设置存储记忆时间的回调函数
1789
+ * @default -
1790
+ * @param id 存储标识id,由SDK传入
1791
+ * @param time 需要记忆的时间点
1792
+ * @type {(id: number | string, time: number) => unknown}
1793
+ * @memberof IMemoryPlayConfig
1794
+ */
1795
+ saveTime?: (id: number | string, time: number) => unknown;
1796
+ /** {zh}
1797
+ * @brief 获取最后一次播放时间的回调函数
1798
+ * @param id 存储标识id,由SDK传入
1799
+ * @default -
1800
+ */
1801
+ getTime?: (id: number | string) => number | Promise<number>;
1802
+ /** {zh}
1803
+ * @brief 判断是否播放了最小时间阈值,即如果播的时长太小,则不算做播放过,存储的时间进度为0
1804
+ * @default 1
1805
+ */
1806
+ minStartTime?: number;
1807
+ /** {zh}
1808
+ * @brief 判断是否播放结束的最小时间阈值,即距离结束多少时间内算作播放结束,播放结束则不存储时间进度,且清空之前的进度为0
1809
+ * @default 1
1810
+ */
1811
+ minEndTime?: number;
1812
+ }
1813
+ export declare class MemoryPlay extends Plugin {
1814
+ static get pluginName(): string;
1815
+ static get defaultConfig(): IMemoryPlayConfig;
1816
+ startTime: number;
1817
+ saveTimeFun: (id: number | string, time: number) => unknown;
1818
+ getTimeFun: (id: number | string) => number | Promise<number>;
1819
+ memoryId: number | string;
1820
+ shouldShowToast: boolean;
1821
+ constructor(args: any);
1822
+ registerLanguageTexts(): {
1823
+ preText: {
1824
+ jp: string;
1825
+ en: string;
1826
+ zh: string;
1827
+ "zh-hk": string;
1828
+ };
1829
+ };
1830
+ children(): {
1831
+ toast: typeof ToastPlugin;
1832
+ };
1833
+ afterCreate(): void;
1834
+ beforePlayerInit(): Promise<void>;
1835
+ getTime(): Promise<void>;
1836
+ saveTime(): void;
1837
+ visibilitychangeCallback(): void;
1838
+ setSave(): void;
1839
+ showToast(): void;
1840
+ saveTimeByStorage(memoryId: string, time: number): void;
1841
+ getTimeByStorage(memoryId: string): string | 0;
1842
+ destroy(): void;
1843
+ }
1844
+ export interface IPlayInfoListItem {
1635
1845
  BackupPlayUrl: string;
1636
1846
  BackupUrlExpire: string;
1637
1847
  BarrageMaskOffset: string;
@@ -1813,7 +2023,7 @@ export interface IMusicConfig {
1813
2023
  * @export
1814
2024
  * @interface Stream
1815
2025
  */
1816
- export interface Stream extends Partial<IPlayInfoList> {
2026
+ export interface Stream extends Partial<IPlayInfoListItem> {
1817
2027
  /** {zh}
1818
2028
  * @type {('rtm' | 'flv' | 'mp4' | 'hls')}
1819
2029
  * @memberof IPlayerConfig
@@ -1837,6 +2047,13 @@ export interface Stream extends Partial<IPlayInfoList> {
1837
2047
  * @brief 清晰度 key
1838
2048
  */
1839
2049
  definition?: string;
2050
+ /** {zh}
2051
+ * @type {string}
2052
+ * @memberof Stream
2053
+ * @brief 映射清晰度 key,用于清晰度降级中设置自动档位实际对应的definition
2054
+ * @default -
2055
+ */
2056
+ mapDefinition?: string;
1840
2057
  /** {zh}
1841
2058
  * @type {string}
1842
2059
  * @memberof Stream
@@ -1868,6 +2085,16 @@ export interface Stream extends Partial<IPlayInfoList> {
1868
2085
  * @brief 多语言词典中对应的 key。比如 `lineTextKey: LINE_ONE`。
1869
2086
  */
1870
2087
  lineTextKey?: string;
2088
+ /**
2089
+ * @brief 码流的平均码率
2090
+ * @default -
2091
+ */
2092
+ bitrate?: number;
2093
+ /**
2094
+ * @brief 码流流畅播放需要的带宽
2095
+ * @default -
2096
+ */
2097
+ bandwidth?: number;
1871
2098
  /** {zh}
1872
2099
  * @hidden
1873
2100
  */
@@ -1975,12 +2202,12 @@ export interface IPlayerConfig extends IPlayerOptions {
1975
2202
  * - `true`:是
1976
2203
  * - `false`:否
1977
2204
  * @default false
1978
- * @notice 受限制于浏览器策略,自动播放不一定能成功,取决于浏览器环境、用户行为、浏览器配置等,详细参考自动播放 @link https://www.volcengine.com/docs/4/68693#%E8%87%AA%E5%8A%A8%E6%92%AD%E6%94%BE
2205
+ * @notes 受限制于浏览器策略,自动播放不一定能成功,取决于浏览器环境、用户行为、浏览器配置等,详细参考自动播放 @link https://www.volcengine.com/docs/4/68693#%E8%87%AA%E5%8A%A8%E6%92%AD%E6%94%BE
1979
2206
  * @listtip 受限于浏览器策略,自动播放不一定能成功,取决于浏览器环境、用户行为、浏览器配置等。详情请参考[自动播放](https://www.volcengine.com/docs/4/68693#%E8%87%AA%E5%8A%A8%E6%92%AD%E6%94%BE)。
1980
2207
  */
1981
2208
  autoplay?: boolean;
1982
2209
  /** {zh}
1983
- * @brief 视频封面图片的 URL。
2210
+ * @brief 视频封面图配置。
1984
2211
  */
1985
2212
  poster?: string | IPoster;
1986
2213
  /** {zh}
@@ -2041,7 +2268,7 @@ export interface IPlayerConfig extends IPlayerOptions {
2041
2268
  * ```javascript
2042
2269
  * { zh: { PIP: '画中画' }, en: { PIP: 'pip' }}
2043
2270
  * ```
2044
- * @notice
2271
+ * @notes
2045
2272
  * @see 了解更多,请参见{@link https://www.volcengine.com/docs/6469/127529 默认词典}。
2046
2273
  * @listtip 了解更多,请参见[默认词典](https://www.volcengine.com/docs/6469/127529)。
2047
2274
  */
@@ -2051,7 +2278,7 @@ export interface IPlayerConfig extends IPlayerOptions {
2051
2278
  /** {zh}
2052
2279
  * @brief 画中画配置。
2053
2280
  * @default PC: {position: 'controlsRight', index: 2.5, showIcon: true}; mobile:false
2054
- * @notice 画中画功能由浏览器提供,如果本身浏览器不支持,即使有该配置也不显示画中画按钮
2281
+ * @notes 画中画功能由浏览器提供,如果本身浏览器不支持,即使有该配置也不显示画中画按钮
2055
2282
  * @listtip 画中画功能由浏览器提供。如果浏览器不支持,即使传入此配置也不会显示画中画按钮。
2056
2283
  */
2057
2284
  pip?: IPIPConfig | boolean;
@@ -2081,7 +2308,7 @@ export interface IPlayerConfig extends IPlayerOptions {
2081
2308
  definitionTextKey?: string;
2082
2309
  /** {zh}
2083
2310
  * @brief 视频编码格式。
2084
- * @notice 在已知视频编码方式的情况下推荐传入,以方便日志分析
2311
+ * @notes 在已知视频编码方式的情况下推荐传入,以方便日志分析
2085
2312
  * @listtip - 在已知视频编码方式的情况下推荐传入,以便日志分析。
2086
2313
  * - 在 `useSoftDecoding` 参数为 `true`(开启 H.265 兼容降级模式)时,建议传入,可提升软解初始效率。
2087
2314
  */
@@ -2089,7 +2316,7 @@ export interface IPlayerConfig extends IPlayerOptions {
2089
2316
  /** {zh}
2090
2317
  * @brief 点播服务所在区域,影响服务接口和日志上报
2091
2318
  * @default cn
2092
- * @notice 火山引擎海外区域播放时请填写'mya'
2319
+ * @notes 火山引擎海外区域播放时请填写'mya'
2093
2320
  * @hidden
2094
2321
  */
2095
2322
  /** {en}
@@ -2101,12 +2328,12 @@ export interface IPlayerConfig extends IPlayerOptions {
2101
2328
  /** {zh}
2102
2329
  * @brief 插件加载的路径。您可从 [SDK 离线包](https://www.volcengine.com/docs/4/67077#%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96)中获取插件,然后将插件文件放置于应用服务器上,再在初始化播放器时指定插件地址。
2103
2330
  * @default https://lf-unpkg.volccdn.com/obj/vcloudfe/sdk/@volcengine/veplayer/${version}/plugin
2104
- * @notice 可将插件文件夹置于业务方服务器上,指定插件的地址即可
2331
+ * @notes 可将插件文件夹置于业务方服务器上,指定插件的地址即可
2105
2332
  */
2106
2333
  /** {en}
2107
2334
  * @brief plug loading public path, used to specify the loading path of the plug-in, or the local file service to load the plug-in
2108
2335
  * @default https://sf-unpkg.bytepluscdn.com/obj/byteplusfe-sg/sdk/@byteplus/veplayer/${version}/plugin
2109
- * @notice can place the plug-in folder on the business server and specify the address of the plug-in.
2336
+ * @notes can place the plug-in folder on the business server and specify the address of the plug-in.
2110
2337
  */
2111
2338
  pluginPublicPath?: string;
2112
2339
  /**
@@ -2223,7 +2450,7 @@ export interface IPlayerConfig extends IPlayerOptions {
2223
2450
  enableMenu?: boolean;
2224
2451
  /** {zh}
2225
2452
  * @brief 是否开启 HLS 视频的 MSE 模式。仅移动端生效。默认情况下,在移动端使用原生`video 播放 HLS 视频。开启后,将采用 MSE 方式播放 HLS 视频,实现更好的兼容性、能控制缓存、节省流量。
2226
- * @notice 仅移动端生效,开启后采用MSE方式播放HLS,默认在移动端使用原生video播放hls
2453
+ * @notes 仅移动端生效,开启后采用MSE方式播放HLS,默认在移动端使用原生video播放hls
2227
2454
  */
2228
2455
  enableHlsMSE?: boolean;
2229
2456
  /** {zh}
@@ -2243,6 +2470,11 @@ export interface IPlayerConfig extends IPlayerOptions {
2243
2470
  * @default -
2244
2471
  */
2245
2472
  playList?: Stream[];
2473
+ /** {zh}
2474
+ * @brief 只传playList时,用于指定默认清晰度
2475
+ * @default playList第一项
2476
+ */
2477
+ defaultDefinition?: string;
2246
2478
  /** {zh}
2247
2479
  * @brief 插件,可自行选择安装的插件,支持{@link https://h5player.bytedance.com/plugins/ 西瓜播放器插件}。
2248
2480
  * @default -
@@ -2286,7 +2518,7 @@ export interface IPlayerConfig extends IPlayerOptions {
2286
2518
  * })
2287
2519
  * ```
2288
2520
  * @default -
2289
- * @notice 插件可以从{@link https://www.volcengine.com/docs/4/67077 集成SDK} 章节中下载SDK离线包获取
2521
+ * @notes 插件可以从{@link https://www.volcengine.com/docs/4/67077 集成SDK} 章节中下载SDK离线包获取
2290
2522
  */
2291
2523
  umdUrlMap?: Record<string, string>;
2292
2524
  /**
@@ -2370,7 +2602,6 @@ export interface IPlayerConfig extends IPlayerOptions {
2370
2602
  DanmuPlugin?: IDanmuConfig | boolean;
2371
2603
  /** {zh}
2372
2604
  * @brief 清晰度自动降级配置
2373
- * @hidden
2374
2605
  * @notes 需要先引入DefinitionDemotePlugin插件,plugins: [VePlayer.DefinitionDemotePlugin]
2375
2606
  */
2376
2607
  DefinitionDemotePlugin?: IDefinitionDemotePlugin;
@@ -2431,6 +2662,16 @@ export interface IPlayerConfig extends IPlayerOptions {
2431
2662
  * @brief 播放列表配置。
2432
2663
  */
2433
2664
  playListPlugin?: IPlayListConfig;
2665
+ /** {zh}
2666
+ * @brief 动态水印配置
2667
+ * @default -
2668
+ */
2669
+ dynamicwatermark?: IWatermarkConfig;
2670
+ /** {zh}
2671
+ * @brief 进度条预览缩略图配置
2672
+ * @default -
2673
+ */
2674
+ thumbnail?: IThumbnailConfig;
2434
2675
  }
2435
2676
  /** {zh}
2436
2677
  * @hidden
@@ -2609,6 +2850,18 @@ export interface IPlayAuthTokenConfig {
2609
2850
  * @default 1
2610
2851
  */
2611
2852
  retryCount?: number;
2853
+ /** {zh}
2854
+ * @brief 清晰度自动降级开启时的自动档位,对应{@link https://www.volcengine.com/docs/4/2918 GetPlayInfo}返回的Definition字段
2855
+ * @notes 如果指定的清晰度,playAuthToken从服务端返回的清晰度列表中不存在该清晰度,则此参数无效。
2856
+ * @default -
2857
+ */
2858
+ autoDemoteDefinition?: string;
2859
+ /** {zh}
2860
+ * @brief 清晰度自动降级开启时的自动档位对应的多语言文案key,即languages字段中对应语种的相应key
2861
+ * @notes 如果指定的清晰度,playAuthToken从服务端返回的清晰度列表中不存在该清晰度,则此参数无效。
2862
+ * @default -
2863
+ */
2864
+ autoDemoteDefinitionTextKey?: string;
2612
2865
  }
2613
2866
  /** {zh}
2614
2867
  * @list Options
@@ -2679,45 +2932,6 @@ export interface IAutoBitrateOptsConfig {
2679
2932
  */
2680
2933
  module?: any;
2681
2934
  }
2682
- /** {zh}
2683
- * @brief 记忆播放配置。
2684
- * @kind property
2685
- * @list Options
2686
- * @interface IMemoryPlayConfig
2687
- */
2688
- export interface IMemoryPlayConfig {
2689
- /** {zh}
2690
- * @brief 存储标识id
2691
- * @default options.vid || options.url
2692
- *
2693
- * @type {number | string}
2694
- * @memberof IMemoryPlayConfig
2695
- */
2696
- memoryId: number | string;
2697
- /** {zh}
2698
- * @brief 设置时间函数
2699
- * @default -
2700
- *
2701
- * @type {(id: number | string, time: number) => unknown}
2702
- * @memberof IMemoryPlayConfig
2703
- */
2704
- saveTime?: (id: number | string, time: number) => unknown;
2705
- /** {zh}
2706
- * @brief 获取最后一次播放时间函数
2707
- * @default -
2708
- */
2709
- getTime?: (id: number | string) => number | Promise<number>;
2710
- /** {zh}
2711
- * @brief 判断是否播放了最小时间阈值,即如果播的时长太小,则不算做播放过,存储的时间进度为0
2712
- * @default 1
2713
- */
2714
- minStartTime?: number;
2715
- /** {zh}
2716
- * @brief 判断是否播放结束的最小时间阈值,即距离结束多少时间内算作播放结束,播放结束则不存储时间进度,且清空之前的进度为0
2717
- * @default 1
2718
- */
2719
- minEndTime?: number;
2720
- }
2721
2935
  /** {zh}
2722
2936
  * @brief 插件按钮位置
2723
2937
  */
@@ -2825,7 +3039,7 @@ export interface IFullscreenConfig {
2825
3039
  * - `false`:否。
2826
3040
  * - `true`:是,即全屏后,如在竖屏状态下,播放器会把 `dom` 旋转 90 度实现横屏效果。
2827
3041
  * @default false
2828
- * @notice
3042
+ * @notes
2829
3043
  * - 该配置优先于 `useCssFullscreen` 配置。
2830
3044
  * - 该配置一般在移动端使用。
2831
3045
  * @listtip - 该参数的优先级高于 `useCssFullscreen` 参数。
@@ -2850,7 +3064,7 @@ export interface IFullscreenConfig {
2850
3064
  * - `false`:不显示右上角返回按钮。
2851
3065
  * - `true`:显示右上角返回按钮。
2852
3066
  * @default false
2853
- * @notice 该配置一般在移动端开启
3067
+ * @notes 该配置一般在移动端开启
2854
3068
  * @listtip 此参数一般用于移动端。
2855
3069
  */
2856
3070
  needBackIcon?: boolean;
@@ -2929,6 +3143,58 @@ export interface IPoster {
2929
3143
  */
2930
3144
  fillMode?: "fixWidth" | "fixHeight" | "cover" | "contain";
2931
3145
  }
3146
+ /** {zh}
3147
+ * @list Options
3148
+ * @brief 进度条预览缩略图配置
3149
+ * @kind property
3150
+ */
3151
+ export interface IThumbnailConfig {
3152
+ /** {zh}
3153
+ * @brief 雪碧图截图地址数组
3154
+ * @default -
3155
+ */
3156
+ urls: Array<string>;
3157
+ /** {zh}
3158
+ * @brief 雪碧图中小图总数目
3159
+ * @default -
3160
+ */
3161
+ pic_num: number;
3162
+ /** {zh}
3163
+ * @brief 雪碧图每张大图中小图列数
3164
+ * @default -
3165
+ */
3166
+ col: number;
3167
+ /** {zh}
3168
+ * @brief 雪碧图每张大图中小图行数
3169
+ * @default -
3170
+ */
3171
+ row: number;
3172
+ /** {zh}
3173
+ * @brief 雪碧图每张小图的高度
3174
+ * @default -
3175
+ */
3176
+ height?: number;
3177
+ /** {zh}
3178
+ * @brief 雪碧图每张小图的宽度
3179
+ * @default -
3180
+ */
3181
+ width?: number;
3182
+ /** {zh}
3183
+ * @brief 显示缩放比例
3184
+ * @default 1
3185
+ */
3186
+ scale?: 1;
3187
+ /** {zh}
3188
+ * @brief 额外添加在dom上的class
3189
+ * @default -
3190
+ */
3191
+ className?: string;
3192
+ /** {zh}
3193
+ * @brief 是否在竖屏的时候隐藏
3194
+ * @default false
3195
+ */
3196
+ hidePortrait?: false;
3197
+ }
2932
3198
  /**
2933
3199
  * @brief api map
2934
3200
  * @hidden
@@ -3012,9 +3278,14 @@ declare class PlayerData {
3012
3278
  playDomainDegrade: boolean;
3013
3279
  strategiesPlugins: any[];
3014
3280
  strategiesPluginConfigs: any;
3281
+ /**
3282
+ * @brief direct-url播放模式时的默认清晰度
3283
+ * @default playList第一项
3284
+ */
3285
+ defaultDefinition: string;
3015
3286
  constructor(configs: IPlayerConfig);
3016
- initPlayData(configs: any): void;
3017
- initPlaylistAndGetCurrent(configs: IPlayerConfig): any;
3287
+ initPlayData(configs: IPlayerConfig): void;
3288
+ initPlaylistAndGetCurrent(configs: IPlayerConfig): Stream;
3018
3289
  isCurrentH265(): boolean;
3019
3290
  getCurrentByDefaultConfig(): Stream;
3020
3291
  initCurrent(currentStreams: any): void;
@@ -3055,9 +3326,10 @@ declare class PlayerData {
3055
3326
  getUrlList(condition: Condition): Stream[];
3056
3327
  /**
3057
3328
  * @description: 获取当期清晰的上一级清晰度或下一级清晰度
3058
- * @param {boolean} isDown
3329
+ * @param {boolean} isDown 是否取下一级清晰度
3330
+ * @param {string[]} demotePriority 清晰度降级顺序
3059
3331
  */
3060
- getNextDefinition(isDown: boolean, demotePriority: any): Stream[];
3332
+ getNextDefinition(isDown: boolean, demotePriority: string[]): Stream[];
3061
3333
  /**
3062
3334
  * 获取api map
3063
3335
  * @return { ApiMapConfig }
@@ -3117,7 +3389,8 @@ declare enum UmdKeys {
3117
3389
  DanmuMask = "danmuMask",
3118
3390
  StreamProbe = "streamprobe",
3119
3391
  VeStrategy = "vestrategy",
3120
- VeStrategyH265 = "vestrategy_h265"
3392
+ VeStrategyH265 = "vestrategy_h265",
3393
+ Preloader = "preloader"
3121
3394
  }
3122
3395
  /**
3123
3396
  * @hidden
@@ -3131,6 +3404,7 @@ export declare type UMDMap = Record<UmdKeys, {
3131
3404
  }>;
3132
3405
  declare class umdLoader {
3133
3406
  private static jsLoadMap;
3407
+ private static jsLoadPromiseMap;
3134
3408
  umdMap: UMDMap;
3135
3409
  backupUmdUrlMap: Record<string, string>;
3136
3410
  failCallback: (umdName: string, err: any) => any;
@@ -3163,6 +3437,91 @@ declare class umdLoader {
3163
3437
  */
3164
3438
  loadPlugins(pluginName: UmdKeys, successCallback?: () => void): Promise<any>;
3165
3439
  }
3440
+ export interface IPreloadConfig {
3441
+ preloadCacheType: 0 | 1;
3442
+ autoPreload: boolean;
3443
+ autoCheckPreload: boolean;
3444
+ autoCheck: {
3445
+ enable: boolean;
3446
+ interval: number;
3447
+ };
3448
+ preloadTime: number;
3449
+ segmentMinDuration: number;
3450
+ preloadMaxCacheCount: number;
3451
+ }
3452
+ export interface IPreloadConfigOptions extends IPreloadConfig {
3453
+ enableMp4: boolean;
3454
+ enableDash: boolean;
3455
+ enableDebugger: boolean;
3456
+ plugins: any[];
3457
+ }
3458
+ export interface IPreloadDataPayload {
3459
+ vid: string;
3460
+ vtype: string;
3461
+ codecType: string;
3462
+ payload: Array<{
3463
+ url: {
3464
+ src: string;
3465
+ }[];
3466
+ bitrate: number;
3467
+ duration: number;
3468
+ size: number;
3469
+ definition: string;
3470
+ }>;
3471
+ defaultDefinition?: string;
3472
+ duration?: number;
3473
+ mediaType?: string;
3474
+ bizType?: 0 | 1;
3475
+ }
3476
+ export interface IPreloadData {
3477
+ data: IPreloadDataPayload;
3478
+ order?: number;
3479
+ }
3480
+ declare class Preloader {
3481
+ private inst;
3482
+ private sdkUmdLoader;
3483
+ private registerPromise;
3484
+ constructor();
3485
+ static get defaultConfig(): {
3486
+ preloadCacheType: number;
3487
+ autoPreload: boolean;
3488
+ autoCheckPreload: boolean;
3489
+ autoCheck: {
3490
+ enable: boolean;
3491
+ interval: number;
3492
+ };
3493
+ preloadTime: number;
3494
+ isDegrade: boolean;
3495
+ waitingTimeOut: number;
3496
+ needAutoBitrate: boolean;
3497
+ startPreloadMinBuffer: number;
3498
+ startPreloadControl: boolean;
3499
+ maxBufferLength: number;
3500
+ minBufferLength: number;
3501
+ removeBufferLen: number;
3502
+ preloadMaxCacheCount: number;
3503
+ startPreloadMinPosTime: number;
3504
+ resumePlayWaterLevel: number;
3505
+ onProcessMinLen: number;
3506
+ needPreloadCheck: boolean;
3507
+ forceVideoPlay: boolean;
3508
+ segmentMinDuration: number;
3509
+ timerInWorker: boolean;
3510
+ tickInSeconds: number;
3511
+ fixEditListOffset: boolean;
3512
+ audioGroupingStrategy: number;
3513
+ noPreloadAddBufferLen: number;
3514
+ loadRangeType: string;
3515
+ };
3516
+ private initUmdLoader;
3517
+ private _register;
3518
+ register(config: Partial<IPreloadConfigOptions>): Promise<any>;
3519
+ addList(preloadList: IPreloadData[]): Promise<void>;
3520
+ updateConfig(config: Partial<IPreloadConfig>): Promise<void>;
3521
+ attachPlayer(player: any): Promise<void>;
3522
+ removeAll(): Promise<any>;
3523
+ removeAllPreloadTask(): Promise<any>;
3524
+ }
3166
3525
  /**
3167
3526
  * @hidden
3168
3527
  */
@@ -3196,7 +3555,7 @@ declare class VePlayer {
3196
3555
  * @type {*}
3197
3556
  * @memberof VePlayer
3198
3557
  */
3199
- mountingDom: any;
3558
+ mountingDom: Element;
3200
3559
  /** {zh}
3201
3560
  * @hidden
3202
3561
  *
@@ -3296,6 +3655,7 @@ declare class VePlayer {
3296
3655
  * @hidden
3297
3656
  */
3298
3657
  static veStrategy: typeof VeStrategy;
3658
+ static preloader: Preloader;
3299
3659
  /**
3300
3660
  * @brief SDK 版本
3301
3661
  * @type {*}
@@ -3412,6 +3772,12 @@ declare class VePlayer {
3412
3772
  * @memberof VePlayer
3413
3773
  */
3414
3774
  renderPoster(): void;
3775
+ /**
3776
+ * @brief 获取西瓜的definition的配置,用于在创建player或者在playNext()时传入definition,
3777
+ * 以用来将playerData的当前清晰度列表数据与player.config.definition的数据进行同步
3778
+ * @private
3779
+ */
3780
+ private getDefinitionConfig;
3415
3781
  /** {zh}
3416
3782
  * @hidden
3417
3783
  *
@@ -3651,6 +4017,21 @@ declare class VePlayer {
3651
4017
  * @memberof VePlayer
3652
4018
  */
3653
4019
  setH265SoftPlayList(): void;
4020
+ /** {zh}
4021
+ * @brief 切换清晰度
4022
+ * @param definition 清晰度,如果在vid播放中有映射的清晰度,则对应映射之后的清晰度
4023
+ * @notes 如果传的清晰度不存在,则不处理。可以通过api: getDefinitionList()获取当前的清晰度列表
4024
+ */
4025
+ changeDefinition(definition: string): void;
4026
+ /** {zh}
4027
+ * @brief 获取当前的清晰度列表,列表项中包含definition、url和selected,selected为true时表示当前被选中的清晰度
4028
+ */
4029
+ getDefinitionList(): Array<{
4030
+ definition: string;
4031
+ url: IUrl;
4032
+ selected: boolean;
4033
+ [propName: string]: any;
4034
+ }>;
3654
4035
  /** {zh}
3655
4036
  * @brief 初始化多语言词典
3656
4037
  *
@@ -4094,73 +4475,6 @@ export declare class Subtitle extends Plugin {
4094
4475
  destroy(): void;
4095
4476
  render(): string;
4096
4477
  }
4097
- export interface WatermarkConfig {
4098
- enable: boolean;
4099
- content: string;
4100
- displayType: 0 | 1 | 2;
4101
- fontSize: number | string;
4102
- fontColor: string;
4103
- opacity: number;
4104
- tickerSpeed?: "SLOW" | "MODERATE" | "FAST";
4105
- fontFamily?: string;
4106
- top?: number;
4107
- left?: number;
4108
- bottom?: number;
4109
- right?: number;
4110
- }
4111
- export declare class DynamicWatermarkPlugin extends Plugin {
4112
- private wm;
4113
- static get pluginName(): string;
4114
- static get defaultConfig(): WatermarkConfig & {
4115
- position: string;
4116
- };
4117
- constructor(props: any);
4118
- afterCreate(): void;
4119
- start(): void;
4120
- pause(): void;
4121
- resume(): void;
4122
- resize(): void;
4123
- _initWatermark(): void;
4124
- destroy(): void;
4125
- render(): string | HTMLElement;
4126
- }
4127
- export declare class DefinitionDemotePlugin extends Plugin {
4128
- static get pluginName(): string;
4129
- waitings: number[];
4130
- timer: any;
4131
- longWaitingEmitTime: number;
4132
- waitingStartTime: number;
4133
- playerData: any;
4134
- isNeedShowTips: boolean;
4135
- static get defaultConfig(): {
4136
- oftenWaitingCount: number;
4137
- oftenWaitingTime: number;
4138
- longWaitingTime: number;
4139
- isNeedAutoDemote: boolean;
4140
- demotePriority: any[];
4141
- };
4142
- constructor(args: any);
4143
- registerLanguageTexts(): {
4144
- definition_demote_txt: {
4145
- jp: string;
4146
- en: string;
4147
- zh: string;
4148
- "zh-hk": string;
4149
- };
4150
- };
4151
- afterCreate(): void;
4152
- bindCtx(): void;
4153
- bindEvents(): void;
4154
- _waiting(): void;
4155
- _count(): void;
4156
- _time(): void;
4157
- _clearTime(): void;
4158
- clearState(): void;
4159
- demote(): void;
4160
- changeUrl(url: any): void;
4161
- showToast(definition: any): void;
4162
- destroy(): void;
4163
- }
4164
4478
  export declare class TimeShiftPlugin extends Plugin {
4165
4479
  static get pluginName(): string;
4166
4480
  static get defaultConfig(): {
@@ -4273,54 +4587,6 @@ export declare class MirrorPlugin extends Plugin {
4273
4587
  destroy(): void;
4274
4588
  render(): string;
4275
4589
  }
4276
- declare class ToastPlugin extends Plugin {
4277
- static get pluginName(): string;
4278
- static get defaultConfig(): {
4279
- index: number;
4280
- };
4281
- constructor(args: any);
4282
- private toastNumber;
4283
- private toastMaps;
4284
- beforePlayerInit(): void;
4285
- afterPlayerInit(): void;
4286
- afterCreate(): void;
4287
- destroy(): void;
4288
- add(content: string | HTMLElement, duration?: number, isNeedCloseBt?: boolean): number;
4289
- remove(id: number): void;
4290
- renderToast(content: string | HTMLElement, isNeedCloseBt: any, id: any): HTMLElement;
4291
- render(): string;
4292
- }
4293
- export declare class MemoryPlay extends Plugin {
4294
- static get pluginName(): string;
4295
- static get defaultConfig(): IMemoryPlayConfig;
4296
- startTime: number;
4297
- saveTimeFun: (id: number | string, time: number) => unknown;
4298
- getTimeFun: (id: number | string) => number | Promise<number>;
4299
- memoryId: number | string;
4300
- canJump: boolean;
4301
- constructor(args: any);
4302
- registerLanguageTexts(): {
4303
- preText: {
4304
- jp: string;
4305
- en: string;
4306
- zh: string;
4307
- "zh-hk": string;
4308
- };
4309
- };
4310
- children(): {
4311
- toast: typeof ToastPlugin;
4312
- };
4313
- afterCreate(): void;
4314
- beforePlayerInit(): Promise<void>;
4315
- getTime(): Promise<void>;
4316
- saveTime(): void;
4317
- visibilitychangeCallback(): void;
4318
- setSave(): void;
4319
- showToast(): void;
4320
- saveTimeByStorage(memoryId: string, time: number): void;
4321
- getTimeByStorage(memoryId: string): string;
4322
- destroy(): void;
4323
- }
4324
4590
  export declare type InfoItem = {
4325
4591
  key: string;
4326
4592
  label: string;