@byteplus/veplayer 1.17.0-rc.8 → 1.17.0-rc.9

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 +55 -41
  2. package/index.min.js +2 -2
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -897,6 +897,35 @@ export declare class DefinitionDemotePlugin extends Plugin {
897
897
  showToast(definition: Stream): void;
898
898
  destroy(): void;
899
899
  }
900
+ /**
901
+ * 音轨选择选项。
902
+ * 对应 hls.js `AudioSelectionOption` 的所有字段,所有字段均可选。
903
+ * 用于 `switchAudioTrack()` 参数(配合 `id` 使用)以及 `audioPreference` 配置。
904
+ */
905
+ export interface AudioTrackOption {
906
+ lang?: string;
907
+ assocLang?: string;
908
+ characteristics?: string;
909
+ channels?: string;
910
+ name?: string;
911
+ audioCodec?: string;
912
+ groupId?: string;
913
+ default?: boolean;
914
+ [key: string]: unknown;
915
+ }
916
+ export interface AudioTrack extends AudioTrackOption {
917
+ id: number;
918
+ name: string;
919
+ default: boolean;
920
+ }
921
+ /**
922
+ * `getAudioTracks()` / `getCurrentAudioTrack()` 的返回项类型。
923
+ * 是 `switchAudioTrack()` 参数类型的子类型,可直接传入。
924
+ */
925
+ export interface AudioTrackInfo extends AudioTrack {
926
+ /** 是否为当前激活轨道。`getCurrentAudioTrack()` 返回时始终为 `true`。 */
927
+ selected: boolean;
928
+ }
900
929
  export interface IAudioTrackConfig {
901
930
  /** 控件在控制栏中的排列顺序,数值越小越靠左。@default 5 */
902
931
  index?: number;
@@ -3414,16 +3443,19 @@ export interface IPlayerConfig extends IPlayerOptions {
3414
3443
  */
3415
3444
  defaultDefinition?: string;
3416
3445
  /** {zh}
3417
- * @brief 起播默认音频轨道的语言代码(BCP-47,如 `"zh"`、`"en"`)。
3418
- * @notes HLS 流匹配 `audioTrack.lang`;iOS 原生播放匹配 `audioTrack.language`。
3419
- * 多条轨道语言相同时取第一条。未匹配到时沿用 manifest 默认轨道。
3446
+ * @brief 起播默认音轨偏好。字段与 `switchAudioTrack()` 参数一致,按需填写一个或多个字段进行匹配。
3447
+ * hls.js 路径下通过 `hls.setAudioOption()` 应用,支持跨清晰度自动持久化;
3448
+ * iOS 原生路径按 `lang` 字段匹配。未匹配到时沿用 manifest 默认轨道。
3420
3449
  * @default -
3421
3450
  */
3422
3451
  /** {en}
3423
- * @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.
3452
+ * @brief Default audio track preference at playback start. Accepts the same fields as
3453
+ * `switchAudioTrack()`. Applied via `hls.setAudioOption()` on the hls.js path (persists
3454
+ * across quality switches); matched by `lang` on the iOS native path.
3455
+ * Falls back to the manifest default when no match is found.
3424
3456
  * @default -
3425
3457
  */
3426
- defaultAudioLang?: string;
3458
+ audioPreference?: AudioTrackOption;
3427
3459
  /** {zh}
3428
3460
  * @brief 插件,可自行选择安装的插件,支持{@link https://h5player.bytedance.com/plugins/ 西瓜播放器插件}。
3429
3461
  * @default -
@@ -5549,8 +5581,15 @@ declare class VePlayer {
5549
5581
  * @memberof VePlayer
5550
5582
  */
5551
5583
  private _emitter;
5552
- /** 最近一次用户主动(或 defaultAudioLang)选中的音轨语言代码,用于清晰度切换后恢复音轨 */
5553
- private _lastSelectedAudioLang;
5584
+ /** 最近一次用户选择的音轨,用于清晰度切换后通过 setAudioOption 恢复音轨 */
5585
+ private _lastSelectedAudioTrack;
5586
+ /**
5587
+ * `_applyAudioPreference` 发起恢复时置 true,hls.js 随后触发的 hlsAudioTrackSwitched
5588
+ * 属于自动切轨,不应覆盖 `_lastSelectedAudioTrack`;事件触发后自动清除。
5589
+ * 使用 timeout 兜底,防止 hls.js 未触发事件时标志永久残留。
5590
+ */
5591
+ private _suppressAudioTrackMemory;
5592
+ private _suppressAudioTrackMemoryTimer;
5554
5593
  /** playNext 后置为 true,直到新视频首个 addtrack 到达前屏蔽旧视频 change 事件的干扰 */
5555
5594
  private _playNextPending;
5556
5595
  /**
@@ -5977,10 +6016,12 @@ declare class VePlayer {
5977
6016
  */
5978
6017
  /** @hidden 获取 HLS 实例(兼容加密和普通 HLS 插件) */
5979
6018
  private _getHlsInstance;
5980
- /** @hidden 在 HLS 音轨列表就绪或清晰度切换后,恢复上次选中的音轨;找不到时 fallback defaultAudioLang */
5981
- private _applyDefaultAudioLang;
5982
- /** @hidden 在 native AudioTrackList 就绪后,恢复上次选中的音轨;找不到时 fallback 到 defaultAudioLang */
5983
- private _applyDefaultAudioLangNative;
6019
+ /** @hidden 在 HLS 音轨列表就绪或清晰度切换后,恢复上次选中的音轨;找不到时应用 audioPreference 配置 */
6020
+ private _applyAudioPreference;
6021
+ private _setSuppressAudioTrackMemory;
6022
+ private _clearSuppressAudioTrackMemory;
6023
+ /** @hidden 在 native AudioTrackList 就绪后,恢复上次选中的音轨;找不到时 fallback 到 audioPreference */
6024
+ private _applyAudioPreferenceNative;
5984
6025
  private _offPlayerEvents;
5985
6026
  /** {zh}
5986
6027
  * @hidden 切换插件展示
@@ -6124,28 +6165,12 @@ declare class VePlayer {
6124
6165
  * @brief 获取音频轨道列表。HLS 流通过 hls.js 获取,iOS 原生播放通过 HTMLMediaElement.audioTracks 获取。
6125
6166
  * @notes 每项包含 `id`、`name`、`lang`、`channels`、`default`、`selected` 字段;轨道数量 ≤ 1 时返回空数组。
6126
6167
  */
6127
- getAudioTracks(): Array<{
6128
- id: string | number;
6129
- name: string;
6130
- lang?: string;
6131
- channels?: string;
6132
- default: boolean;
6133
- selected: boolean;
6134
- [key: string]: unknown;
6135
- }>;
6168
+ getAudioTracks(): AudioTrackInfo[];
6136
6169
  /** {zh}
6137
6170
  * @brief 获取当前激活的音频轨道。
6138
6171
  * @notes HLS 流通过 hls.js 获取,iOS 原生播放通过 HTMLMediaElement.audioTracks 获取;无激活轨道时返回 null。
6139
6172
  */
6140
- getCurrentAudioTrack(): {
6141
- id: string | number;
6142
- name: string;
6143
- lang?: string;
6144
- channels?: string;
6145
- default: boolean;
6146
- selected: boolean;
6147
- [key: string]: unknown;
6148
- } | null;
6173
+ getCurrentAudioTrack(): AudioTrackInfo | null;
6149
6174
  /** {zh}
6150
6175
  * @brief 切换音频轨道。
6151
6176
  * @param id 目标轨道的 id,可通过 `getAudioTracks()` 获取。
@@ -6154,18 +6179,7 @@ declare class VePlayer {
6154
6179
  * @notes 切换完成后会触发 `Events.AUDIO_TRACK_CHANGE` 事件;
6155
6180
  * 同时 PC 端和移动端音频轨道插件的选中状态会自动更新。
6156
6181
  */
6157
- switchAudioTrack(track: {
6158
- id: string | number;
6159
- lang?: string;
6160
- assocLang?: string;
6161
- characteristics?: string;
6162
- channels?: string;
6163
- name?: string;
6164
- audioCodec?: string;
6165
- groupId?: string;
6166
- default?: boolean;
6167
- [key: string]: unknown;
6168
- }): void;
6182
+ switchAudioTrack(track: AudioTrackInfo): void;
6169
6183
  /** {zh}
6170
6184
  * @brief 当前播放器命中预加载的情况
6171
6185
  * @type {{