@video-lab/player-core 1.0.1 → 3.0.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/README.md +38 -20
- package/dist/index.cjs +1044 -569
- package/dist/index.d.cts +17 -6
- package/dist/index.d.mts +17 -6
- package/dist/index.mjs +1044 -569
- package/package.json +4 -4
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DanmakuItem, ErrorCode, HlsConfig, LocaleConfig, MediaMetadata, MediaSource, PlaybackContext, PlaybackKernel, PlayerConfig, PlayerError, PlayerEvent, SourceEntry, SubtitleTrack } from "@video-lab/protocol";
|
|
1
|
+
import { DanmakuItem, DeliveredPlayerEvent, ErrorCode, HlsConfig, LocaleConfig, MediaMetadata, MediaSource, PageFullscreenAdapter, PlaybackContext, PlaybackKernel, PlayerConfig, PlayerError, PlayerEvent, SourceEntry, SubtitleTrack } from "@video-lab/protocol";
|
|
2
2
|
//#region src/env.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* 运行环境探测。
|
|
@@ -75,12 +75,21 @@ declare function detectEnvFromGlobals(): Env;
|
|
|
75
75
|
interface CreatePlayerOptions {
|
|
76
76
|
/** 挂载容器 */
|
|
77
77
|
el: HTMLElement;
|
|
78
|
+
/** 宿主网页全屏布局;不经可序列化配置传递。 */
|
|
79
|
+
pageFullscreen?: PageFullscreenAdapter;
|
|
80
|
+
/** iframe 内部使用:等待宿主协商后开放入口。 */
|
|
81
|
+
pageFullscreenPending?: boolean;
|
|
78
82
|
config: PlayerConfig;
|
|
79
83
|
/**
|
|
80
84
|
* 事件回调。player-core 不做事件总线,只把 xgplayer 的事件映射成
|
|
81
85
|
* 契约事件后原样交出去——由 embed-app / react 包决定怎么分发。
|
|
82
86
|
*/
|
|
83
87
|
onEvent?: (event: PlayerEvent) => void;
|
|
88
|
+
/**
|
|
89
|
+
* 兼容的完整投递流。生产端在这里生成 session、时钟和序号;旧 `onEvent` 保持 raw
|
|
90
|
+
* `PlayerEvent` 形状不变。
|
|
91
|
+
*/
|
|
92
|
+
onDeliveredEvent?: (event: DeliveredPlayerEvent) => void;
|
|
84
93
|
/**
|
|
85
94
|
* 运行环境。不传就从当前浏览器探测。
|
|
86
95
|
* 测试时注入假的 UA 来验证平台分支(SourceRouter 就靠它)。
|
|
@@ -100,6 +109,10 @@ interface PlayerCoreHandle {
|
|
|
100
109
|
setMuted(muted: boolean): void;
|
|
101
110
|
setVolume(volume: number): void;
|
|
102
111
|
setPlaybackRate(rate: number): void;
|
|
112
|
+
/** 设置网页全屏,经宿主布局确认后完成。 */
|
|
113
|
+
setPageFullscreen(active: boolean): Promise<void>;
|
|
114
|
+
/** @internal iframe 桥应用宿主确认,不重新发起请求。 */
|
|
115
|
+
syncPageFullscreen(active: boolean, available: boolean): void;
|
|
103
116
|
/**
|
|
104
117
|
* 进入全屏。走 xgplayer 托管容器全屏(`player.getFullscreen()`),**不碰** video 原生
|
|
105
118
|
* `webkitEnterFullscreen` —— iOS 26 微信里后者是崩溃入口,已由 FullscreenGuardPlugin(P2,坑 #7)中和。
|
|
@@ -145,12 +158,10 @@ interface PlayerCoreHandle {
|
|
|
145
158
|
*/
|
|
146
159
|
load(source: MediaSource): Promise<void>;
|
|
147
160
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
161
|
+
* 请求统一恢复;在途调用合并并共享预算,不重建播放器或重置当前轮次。
|
|
162
|
+
* Promise 完成仅表示接受请求;播放恢复以 recovery/recovered 和 playablechange 为准。
|
|
150
163
|
*/
|
|
151
|
-
|
|
152
|
-
resetCounter?: boolean;
|
|
153
|
-
}): void;
|
|
164
|
+
retry(): Promise<void>;
|
|
154
165
|
/**
|
|
155
166
|
* 取**这一刻**的播放上下文快照(ADR-074)。
|
|
156
167
|
*
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DanmakuItem, ErrorCode, HlsConfig, LocaleConfig, MediaMetadata, MediaSource, PlaybackContext, PlaybackKernel, PlayerConfig, PlayerError, PlayerEvent, SourceEntry, SubtitleTrack } from "@video-lab/protocol";
|
|
1
|
+
import { DanmakuItem, DeliveredPlayerEvent, ErrorCode, HlsConfig, LocaleConfig, MediaMetadata, MediaSource, PageFullscreenAdapter, PlaybackContext, PlaybackKernel, PlayerConfig, PlayerError, PlayerEvent, SourceEntry, SubtitleTrack } from "@video-lab/protocol";
|
|
2
2
|
//#region src/env.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* 运行环境探测。
|
|
@@ -75,12 +75,21 @@ declare function detectEnvFromGlobals(): Env;
|
|
|
75
75
|
interface CreatePlayerOptions {
|
|
76
76
|
/** 挂载容器 */
|
|
77
77
|
el: HTMLElement;
|
|
78
|
+
/** 宿主网页全屏布局;不经可序列化配置传递。 */
|
|
79
|
+
pageFullscreen?: PageFullscreenAdapter;
|
|
80
|
+
/** iframe 内部使用:等待宿主协商后开放入口。 */
|
|
81
|
+
pageFullscreenPending?: boolean;
|
|
78
82
|
config: PlayerConfig;
|
|
79
83
|
/**
|
|
80
84
|
* 事件回调。player-core 不做事件总线,只把 xgplayer 的事件映射成
|
|
81
85
|
* 契约事件后原样交出去——由 embed-app / react 包决定怎么分发。
|
|
82
86
|
*/
|
|
83
87
|
onEvent?: (event: PlayerEvent) => void;
|
|
88
|
+
/**
|
|
89
|
+
* 兼容的完整投递流。生产端在这里生成 session、时钟和序号;旧 `onEvent` 保持 raw
|
|
90
|
+
* `PlayerEvent` 形状不变。
|
|
91
|
+
*/
|
|
92
|
+
onDeliveredEvent?: (event: DeliveredPlayerEvent) => void;
|
|
84
93
|
/**
|
|
85
94
|
* 运行环境。不传就从当前浏览器探测。
|
|
86
95
|
* 测试时注入假的 UA 来验证平台分支(SourceRouter 就靠它)。
|
|
@@ -100,6 +109,10 @@ interface PlayerCoreHandle {
|
|
|
100
109
|
setMuted(muted: boolean): void;
|
|
101
110
|
setVolume(volume: number): void;
|
|
102
111
|
setPlaybackRate(rate: number): void;
|
|
112
|
+
/** 设置网页全屏,经宿主布局确认后完成。 */
|
|
113
|
+
setPageFullscreen(active: boolean): Promise<void>;
|
|
114
|
+
/** @internal iframe 桥应用宿主确认,不重新发起请求。 */
|
|
115
|
+
syncPageFullscreen(active: boolean, available: boolean): void;
|
|
103
116
|
/**
|
|
104
117
|
* 进入全屏。走 xgplayer 托管容器全屏(`player.getFullscreen()`),**不碰** video 原生
|
|
105
118
|
* `webkitEnterFullscreen` —— iOS 26 微信里后者是崩溃入口,已由 FullscreenGuardPlugin(P2,坑 #7)中和。
|
|
@@ -145,12 +158,10 @@ interface PlayerCoreHandle {
|
|
|
145
158
|
*/
|
|
146
159
|
load(source: MediaSource): Promise<void>;
|
|
147
160
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
161
|
+
* 请求统一恢复;在途调用合并并共享预算,不重建播放器或重置当前轮次。
|
|
162
|
+
* Promise 完成仅表示接受请求;播放恢复以 recovery/recovered 和 playablechange 为准。
|
|
150
163
|
*/
|
|
151
|
-
|
|
152
|
-
resetCounter?: boolean;
|
|
153
|
-
}): void;
|
|
164
|
+
retry(): Promise<void>;
|
|
154
165
|
/**
|
|
155
166
|
* 取**这一刻**的播放上下文快照(ADR-074)。
|
|
156
167
|
*
|