@livepeer-frameworks/player-core 0.0.3
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/dist/cjs/index.js +19493 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/esm/index.js +19398 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/player.css +2140 -0
- package/dist/types/core/ABRController.d.ts +164 -0
- package/dist/types/core/CodecUtils.d.ts +54 -0
- package/dist/types/core/Disposable.d.ts +61 -0
- package/dist/types/core/EventEmitter.d.ts +73 -0
- package/dist/types/core/GatewayClient.d.ts +144 -0
- package/dist/types/core/InteractionController.d.ts +121 -0
- package/dist/types/core/LiveDurationProxy.d.ts +102 -0
- package/dist/types/core/MetaTrackManager.d.ts +220 -0
- package/dist/types/core/MistReporter.d.ts +163 -0
- package/dist/types/core/MistSignaling.d.ts +148 -0
- package/dist/types/core/PlayerController.d.ts +665 -0
- package/dist/types/core/PlayerInterface.d.ts +230 -0
- package/dist/types/core/PlayerManager.d.ts +182 -0
- package/dist/types/core/PlayerRegistry.d.ts +27 -0
- package/dist/types/core/QualityMonitor.d.ts +184 -0
- package/dist/types/core/ScreenWakeLockManager.d.ts +70 -0
- package/dist/types/core/SeekingUtils.d.ts +142 -0
- package/dist/types/core/StreamStateClient.d.ts +108 -0
- package/dist/types/core/SubtitleManager.d.ts +111 -0
- package/dist/types/core/TelemetryReporter.d.ts +79 -0
- package/dist/types/core/TimeFormat.d.ts +97 -0
- package/dist/types/core/TimerManager.d.ts +83 -0
- package/dist/types/core/UrlUtils.d.ts +81 -0
- package/dist/types/core/detector.d.ts +149 -0
- package/dist/types/core/index.d.ts +49 -0
- package/dist/types/core/scorer.d.ts +167 -0
- package/dist/types/core/selector.d.ts +9 -0
- package/dist/types/index.d.ts +45 -0
- package/dist/types/lib/utils.d.ts +2 -0
- package/dist/types/players/DashJsPlayer.d.ts +102 -0
- package/dist/types/players/HlsJsPlayer.d.ts +70 -0
- package/dist/types/players/MewsWsPlayer/SourceBufferManager.d.ts +119 -0
- package/dist/types/players/MewsWsPlayer/WebSocketManager.d.ts +60 -0
- package/dist/types/players/MewsWsPlayer/index.d.ts +220 -0
- package/dist/types/players/MewsWsPlayer/types.d.ts +89 -0
- package/dist/types/players/MistPlayer.d.ts +25 -0
- package/dist/types/players/MistWebRTCPlayer/index.d.ts +133 -0
- package/dist/types/players/NativePlayer.d.ts +143 -0
- package/dist/types/players/VideoJsPlayer.d.ts +59 -0
- package/dist/types/players/WebCodecsPlayer/JitterBuffer.d.ts +118 -0
- package/dist/types/players/WebCodecsPlayer/LatencyProfiles.d.ts +64 -0
- package/dist/types/players/WebCodecsPlayer/RawChunkParser.d.ts +63 -0
- package/dist/types/players/WebCodecsPlayer/SyncController.d.ts +174 -0
- package/dist/types/players/WebCodecsPlayer/WebSocketController.d.ts +164 -0
- package/dist/types/players/WebCodecsPlayer/index.d.ts +149 -0
- package/dist/types/players/WebCodecsPlayer/polyfills/MediaStreamTrackGenerator.d.ts +105 -0
- package/dist/types/players/WebCodecsPlayer/types.d.ts +395 -0
- package/dist/types/players/WebCodecsPlayer/worker/decoder.worker.d.ts +13 -0
- package/dist/types/players/WebCodecsPlayer/worker/types.d.ts +197 -0
- package/dist/types/players/index.d.ts +14 -0
- package/dist/types/styles/index.d.ts +11 -0
- package/dist/types/types.d.ts +363 -0
- package/dist/types/vanilla/FrameWorksPlayer.d.ts +143 -0
- package/dist/types/vanilla/index.d.ts +19 -0
- package/dist/workers/decoder.worker.js +989 -0
- package/dist/workers/decoder.worker.js.map +1 -0
- package/package.json +80 -0
- package/src/core/ABRController.ts +550 -0
- package/src/core/CodecUtils.ts +257 -0
- package/src/core/Disposable.ts +120 -0
- package/src/core/EventEmitter.ts +113 -0
- package/src/core/GatewayClient.ts +439 -0
- package/src/core/InteractionController.ts +712 -0
- package/src/core/LiveDurationProxy.ts +270 -0
- package/src/core/MetaTrackManager.ts +753 -0
- package/src/core/MistReporter.ts +543 -0
- package/src/core/MistSignaling.ts +346 -0
- package/src/core/PlayerController.ts +2829 -0
- package/src/core/PlayerInterface.ts +432 -0
- package/src/core/PlayerManager.ts +900 -0
- package/src/core/PlayerRegistry.ts +149 -0
- package/src/core/QualityMonitor.ts +597 -0
- package/src/core/ScreenWakeLockManager.ts +163 -0
- package/src/core/SeekingUtils.ts +364 -0
- package/src/core/StreamStateClient.ts +457 -0
- package/src/core/SubtitleManager.ts +297 -0
- package/src/core/TelemetryReporter.ts +308 -0
- package/src/core/TimeFormat.ts +205 -0
- package/src/core/TimerManager.ts +209 -0
- package/src/core/UrlUtils.ts +179 -0
- package/src/core/detector.ts +382 -0
- package/src/core/index.ts +140 -0
- package/src/core/scorer.ts +553 -0
- package/src/core/selector.ts +16 -0
- package/src/global.d.ts +11 -0
- package/src/index.ts +75 -0
- package/src/lib/utils.ts +6 -0
- package/src/players/DashJsPlayer.ts +642 -0
- package/src/players/HlsJsPlayer.ts +483 -0
- package/src/players/MewsWsPlayer/SourceBufferManager.ts +572 -0
- package/src/players/MewsWsPlayer/WebSocketManager.ts +241 -0
- package/src/players/MewsWsPlayer/index.ts +1065 -0
- package/src/players/MewsWsPlayer/types.ts +106 -0
- package/src/players/MistPlayer.ts +188 -0
- package/src/players/MistWebRTCPlayer/index.ts +703 -0
- package/src/players/NativePlayer.ts +820 -0
- package/src/players/VideoJsPlayer.ts +643 -0
- package/src/players/WebCodecsPlayer/JitterBuffer.ts +299 -0
- package/src/players/WebCodecsPlayer/LatencyProfiles.ts +151 -0
- package/src/players/WebCodecsPlayer/RawChunkParser.ts +151 -0
- package/src/players/WebCodecsPlayer/SyncController.ts +456 -0
- package/src/players/WebCodecsPlayer/WebSocketController.ts +564 -0
- package/src/players/WebCodecsPlayer/index.ts +1650 -0
- package/src/players/WebCodecsPlayer/polyfills/MediaStreamTrackGenerator.ts +379 -0
- package/src/players/WebCodecsPlayer/types.ts +542 -0
- package/src/players/WebCodecsPlayer/worker/decoder.worker.ts +1360 -0
- package/src/players/WebCodecsPlayer/worker/types.ts +276 -0
- package/src/players/index.ts +22 -0
- package/src/styles/animations.css +21 -0
- package/src/styles/index.ts +52 -0
- package/src/styles/player.css +2126 -0
- package/src/styles/tailwind.css +1015 -0
- package/src/types.ts +421 -0
- package/src/vanilla/FrameWorksPlayer.ts +367 -0
- package/src/vanilla/index.ts +22 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Player Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registration of all available player implementations
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { PlayerManager } from './PlayerManager';
|
|
8
|
+
import type { IPlayer } from './PlayerInterface';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Shared registration state per manager instance. Ensures that we only
|
|
12
|
+
* dynamically import and attach transport adapters once per manager.
|
|
13
|
+
*/
|
|
14
|
+
const managerRegistrationPromises = new WeakMap<PlayerManager, Promise<void>>();
|
|
15
|
+
|
|
16
|
+
async function registerPlayersForManager(manager: PlayerManager): Promise<void> {
|
|
17
|
+
console.log('[PlayerRegistry] registerPlayersForManager starting...');
|
|
18
|
+
if (manager.getRegisteredPlayers().length > 0) {
|
|
19
|
+
console.log('[PlayerRegistry] Players already registered');
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
console.log('[PlayerRegistry] Dynamically importing player modules...');
|
|
24
|
+
const [
|
|
25
|
+
nativeModule,
|
|
26
|
+
videoModule,
|
|
27
|
+
hlsModule,
|
|
28
|
+
dashModule,
|
|
29
|
+
mistModule,
|
|
30
|
+
mewsModule,
|
|
31
|
+
mistWebRTCModule,
|
|
32
|
+
webCodecsModule
|
|
33
|
+
] = await Promise.all([
|
|
34
|
+
import('../players/NativePlayer'),
|
|
35
|
+
import('../players/VideoJsPlayer'),
|
|
36
|
+
import('../players/HlsJsPlayer'),
|
|
37
|
+
import('../players/DashJsPlayer'),
|
|
38
|
+
import('../players/MistPlayer'),
|
|
39
|
+
import('../players/MewsWsPlayer'),
|
|
40
|
+
import('../players/MistWebRTCPlayer'),
|
|
41
|
+
import('../players/WebCodecsPlayer')
|
|
42
|
+
]);
|
|
43
|
+
|
|
44
|
+
console.log('[PlayerRegistry] All player modules imported, instantiating...');
|
|
45
|
+
const instantiatedPlayers: IPlayer[] = [
|
|
46
|
+
new nativeModule.NativePlayerImpl(),
|
|
47
|
+
new webCodecsModule.WebCodecsPlayerImpl(), // Priority 1 - lowest latency
|
|
48
|
+
new mistWebRTCModule.MistWebRTCPlayerImpl(), // Priority 2
|
|
49
|
+
new videoModule.VideoJsPlayerImpl(),
|
|
50
|
+
new hlsModule.HlsJsPlayerImpl(),
|
|
51
|
+
new dashModule.DashJsPlayerImpl(),
|
|
52
|
+
new mistModule.MistPlayerImpl(),
|
|
53
|
+
new mewsModule.MewsWsPlayerImpl()
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
for (const player of instantiatedPlayers) {
|
|
57
|
+
const alreadyRegistered = manager
|
|
58
|
+
.getRegisteredPlayers()
|
|
59
|
+
.some(existing => existing.capability.shortname === player.capability.shortname);
|
|
60
|
+
|
|
61
|
+
if (!alreadyRegistered) {
|
|
62
|
+
manager.registerPlayer(player);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
console.log(`[PlayerRegistry] Registration complete. ${manager.getRegisteredPlayers().length} players registered.`);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function ensurePlayersRegistered(manager: PlayerManager = globalPlayerManager): Promise<void> {
|
|
69
|
+
console.log('[PlayerRegistry] ensurePlayersRegistered called');
|
|
70
|
+
if (manager.getRegisteredPlayers().length > 0) {
|
|
71
|
+
console.log('[PlayerRegistry] Already registered, returning');
|
|
72
|
+
return Promise.resolve();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const existing = managerRegistrationPromises.get(manager);
|
|
76
|
+
if (existing) {
|
|
77
|
+
console.log('[PlayerRegistry] Using existing registration promise');
|
|
78
|
+
return existing;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
console.log('[PlayerRegistry] Starting new registration...');
|
|
82
|
+
const registrationPromise = registerPlayersForManager(manager).catch(error => {
|
|
83
|
+
console.error('[PlayerRegistry] Registration failed:', error);
|
|
84
|
+
managerRegistrationPromises.delete(manager);
|
|
85
|
+
throw error;
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
managerRegistrationPromises.set(manager, registrationPromise);
|
|
89
|
+
return registrationPromise;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const originalInitialize = PlayerManager.prototype.initializePlayer;
|
|
93
|
+
PlayerManager.prototype.initializePlayer = async function (...args: Parameters<PlayerManager['initializePlayer']>) {
|
|
94
|
+
console.log('[PlayerRegistry] initializePlayer wrapper - calling ensurePlayersRegistered...');
|
|
95
|
+
await ensurePlayersRegistered(this);
|
|
96
|
+
console.log('[PlayerRegistry] ensurePlayersRegistered done, calling original initializePlayer...');
|
|
97
|
+
return originalInitialize.apply(this, args);
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Global PlayerManager instance with deferred registration
|
|
102
|
+
*/
|
|
103
|
+
const isDev = (() => {
|
|
104
|
+
try {
|
|
105
|
+
// In browser builds, process may be undefined; guard access
|
|
106
|
+
// @ts-ignore
|
|
107
|
+
return typeof process !== 'undefined' && process && process.env && process.env.NODE_ENV === 'development';
|
|
108
|
+
} catch {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
})();
|
|
112
|
+
|
|
113
|
+
export const globalPlayerManager = new PlayerManager({
|
|
114
|
+
debug: isDev,
|
|
115
|
+
autoFallback: true,
|
|
116
|
+
maxFallbackAttempts: 3
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Register all available players (async for backwards compatibility)
|
|
121
|
+
*/
|
|
122
|
+
export async function registerAllPlayers(manager: PlayerManager = globalPlayerManager): Promise<void> {
|
|
123
|
+
await ensurePlayersRegistered(manager);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Create a new PlayerManager instance with all players registered
|
|
128
|
+
*/
|
|
129
|
+
export function createPlayerManager(options?: ConstructorParameters<typeof PlayerManager>[0]): PlayerManager {
|
|
130
|
+
const manager = new PlayerManager(options);
|
|
131
|
+
ensurePlayersRegistered(manager).catch(error => {
|
|
132
|
+
if (isDev) {
|
|
133
|
+
console.warn('Player registration failed:', error);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
return manager;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Export individual player classes for direct use
|
|
141
|
+
*/
|
|
142
|
+
export { NativePlayerImpl, DirectPlaybackPlayerImpl } from '../players/NativePlayer';
|
|
143
|
+
export { HlsJsPlayerImpl } from '../players/HlsJsPlayer';
|
|
144
|
+
export { DashJsPlayerImpl } from '../players/DashJsPlayer';
|
|
145
|
+
export { VideoJsPlayerImpl } from '../players/VideoJsPlayer';
|
|
146
|
+
export { MistPlayerImpl } from '../players/MistPlayer';
|
|
147
|
+
export { MewsWsPlayerImpl } from '../players/MewsWsPlayer';
|
|
148
|
+
export { MistWebRTCPlayerImpl } from '../players/MistWebRTCPlayer';
|
|
149
|
+
export { WebCodecsPlayerImpl } from '../players/WebCodecsPlayer';
|