playron 1.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 +287 -0
- package/dist/Docs.d.ts +2 -0
- package/dist/Docs.d.ts.map +1 -0
- package/dist/ErrorManager-CDf_sFKX.cjs +1 -0
- package/dist/ErrorManager-i9WcRsWb.js +43 -0
- package/dist/Why.d.ts +2 -0
- package/dist/Why.d.ts.map +1 -0
- package/dist/components/PlayerConfig.d.ts +34 -0
- package/dist/components/PlayerConfig.d.ts.map +1 -0
- package/dist/components/PlayronControls.d.ts +26 -0
- package/dist/components/PlayronControls.d.ts.map +1 -0
- package/dist/components/PlayronPlayer.d.ts +37 -0
- package/dist/components/PlayronPlayer.d.ts.map +1 -0
- package/dist/components/SiteHeader.d.ts +6 -0
- package/dist/components/SiteHeader.d.ts.map +1 -0
- package/dist/constants/sample-intro-outro.d.ts +3 -0
- package/dist/constants/sample-intro-outro.d.ts.map +1 -0
- package/dist/constants/source.d.ts +2 -0
- package/dist/constants/source.d.ts.map +1 -0
- package/dist/constants/sports-events.d.ts +58 -0
- package/dist/constants/sports-events.d.ts.map +1 -0
- package/dist/context/PlayerContext.d.ts +3 -0
- package/dist/context/PlayerContext.d.ts.map +1 -0
- package/dist/context/PlayerMethodsContext.d.ts +63 -0
- package/dist/context/PlayerMethodsContext.d.ts.map +1 -0
- package/dist/context/PlayerProvider.d.ts +9 -0
- package/dist/context/PlayerProvider.d.ts.map +1 -0
- package/dist/context/PlayerStateContext.d.ts +4 -0
- package/dist/context/PlayerStateContext.d.ts.map +1 -0
- package/dist/context/PlayronContext.d.ts +100 -0
- package/dist/context/PlayronContext.d.ts.map +1 -0
- package/dist/context/SubtitleStyleContext.d.ts +22 -0
- package/dist/context/SubtitleStyleContext.d.ts.map +1 -0
- package/dist/core/ConfigManager.d.ts +78 -0
- package/dist/core/ConfigManager.d.ts.map +1 -0
- package/dist/core/ErrorManager.d.ts +22 -0
- package/dist/core/ErrorManager.d.ts.map +1 -0
- package/dist/core/EventBus.d.ts +32 -0
- package/dist/core/EventBus.d.ts.map +1 -0
- package/dist/core/PlayerCore.d.ts +170 -0
- package/dist/core/PlayerCore.d.ts.map +1 -0
- package/dist/core/PlayronEventEmitter.d.ts +162 -0
- package/dist/core/PlayronEventEmitter.d.ts.map +1 -0
- package/dist/core/PluginSystem.d.ts +111 -0
- package/dist/core/PluginSystem.d.ts.map +1 -0
- package/dist/core/StallDetector.d.ts +27 -0
- package/dist/core/StallDetector.d.ts.map +1 -0
- package/dist/core/StateManager.d.ts +90 -0
- package/dist/core/StateManager.d.ts.map +1 -0
- package/dist/core/VideoEngine.d.ts +92 -0
- package/dist/core/VideoEngine.d.ts.map +1 -0
- package/dist/core/adaptive/StreamDetector.d.ts +73 -0
- package/dist/core/adaptive/StreamDetector.d.ts.map +1 -0
- package/dist/core/drm/DrmCapabilityProbe.d.ts +13 -0
- package/dist/core/drm/DrmCapabilityProbe.d.ts.map +1 -0
- package/dist/core/network/index.d.ts +6 -0
- package/dist/core/network/index.d.ts.map +1 -0
- package/dist/core/streaming/DashEngine.d.ts +149 -0
- package/dist/core/streaming/DashEngine.d.ts.map +1 -0
- package/dist/core/streaming/HlsEngine.d.ts +168 -0
- package/dist/core/streaming/HlsEngine.d.ts.map +1 -0
- package/dist/core/streaming/SubtitleManager.d.ts +88 -0
- package/dist/core/streaming/SubtitleManager.d.ts.map +1 -0
- package/dist/core/streaming/ThumbnailManager.d.ts +44 -0
- package/dist/core/streaming/ThumbnailManager.d.ts.map +1 -0
- package/dist/core/streaming/index.d.ts +11 -0
- package/dist/core/streaming/index.d.ts.map +1 -0
- package/dist/core/streaming/parsers/WebVttParser.d.ts +56 -0
- package/dist/core/streaming/parsers/WebVttParser.d.ts.map +1 -0
- package/dist/hooks/useClickOutside.d.ts +4 -0
- package/dist/hooks/useClickOutside.d.ts.map +1 -0
- package/dist/hooks/useKeyboardControls.d.ts +20 -0
- package/dist/hooks/useKeyboardControls.d.ts.map +1 -0
- package/dist/hooks/useMobileGestures.d.ts +17 -0
- package/dist/hooks/useMobileGestures.d.ts.map +1 -0
- package/dist/hooks/useMouseActivity.d.ts +10 -0
- package/dist/hooks/useMouseActivity.d.ts.map +1 -0
- package/dist/hooks/usePlayer.d.ts +6 -0
- package/dist/hooks/usePlayer.d.ts.map +1 -0
- package/dist/hooks/usePlayerMethods.d.ts +6 -0
- package/dist/hooks/usePlayerMethods.d.ts.map +1 -0
- package/dist/hooks/usePlayerState.d.ts +11 -0
- package/dist/hooks/usePlayerState.d.ts.map +1 -0
- package/dist/index.d.ts +99 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/layout/ControlsContainer.d.ts +9 -0
- package/dist/layout/ControlsContainer.d.ts.map +1 -0
- package/dist/layout/ControlsContainer.responsive.d.ts +8 -0
- package/dist/layout/ControlsContainer.responsive.d.ts.map +1 -0
- package/dist/layout/SeekBarContainer.d.ts +16 -0
- package/dist/layout/SeekBarContainer.d.ts.map +1 -0
- package/dist/playron.cjs.js +248 -0
- package/dist/playron.css +1 -0
- package/dist/playron.es.js +47631 -0
- package/dist/plugins/AdPlugin.d.ts +8 -0
- package/dist/plugins/AdPlugin.d.ts.map +1 -0
- package/dist/plugins/AnalyticsPlugin.d.ts +50 -0
- package/dist/plugins/AnalyticsPlugin.d.ts.map +1 -0
- package/dist/plugins/PluginManager.d.ts +2 -0
- package/dist/plugins/PluginManager.d.ts.map +1 -0
- package/dist/plugins/SocialPlugin.d.ts +2 -0
- package/dist/plugins/SocialPlugin.d.ts.map +1 -0
- package/dist/plugins/ads/AdManager.d.ts +79 -0
- package/dist/plugins/ads/AdManager.d.ts.map +1 -0
- package/dist/plugins/ads/AdPlayer.d.ts +33 -0
- package/dist/plugins/ads/AdPlayer.d.ts.map +1 -0
- package/dist/plugins/ads/AdTracker.d.ts +34 -0
- package/dist/plugins/ads/AdTracker.d.ts.map +1 -0
- package/dist/plugins/ads/VASTParser.d.ts +52 -0
- package/dist/plugins/ads/VASTParser.d.ts.map +1 -0
- package/dist/plugins/ads/VMAPParser.d.ts +31 -0
- package/dist/plugins/ads/VMAPParser.d.ts.map +1 -0
- package/dist/plugins/ads/types.d.ts +108 -0
- package/dist/plugins/ads/types.d.ts.map +1 -0
- package/dist/poster.png +0 -0
- package/dist/test-ad.xml +37 -0
- package/dist/test-vmap.xml +30 -0
- package/dist/types/analytics.d.ts +86 -0
- package/dist/types/analytics.d.ts.map +1 -0
- package/dist/types/chapters.types.d.ts +17 -0
- package/dist/types/chapters.types.d.ts.map +1 -0
- package/dist/types/config.d.ts +23 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.types.d.ts +244 -0
- package/dist/types/config.types.d.ts.map +1 -0
- package/dist/types/controlbar.types.d.ts +5 -0
- package/dist/types/controlbar.types.d.ts.map +1 -0
- package/dist/types/drm.types.d.ts +163 -0
- package/dist/types/drm.types.d.ts.map +1 -0
- package/dist/types/events.d.ts +36 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/extended.types.d.ts +85 -0
- package/dist/types/extended.types.d.ts.map +1 -0
- package/dist/types/manifest.types.d.ts +297 -0
- package/dist/types/manifest.types.d.ts.map +1 -0
- package/dist/types/playbutton.types.d.ts +2 -0
- package/dist/types/playbutton.types.d.ts.map +1 -0
- package/dist/types/player.types.d.ts +13 -0
- package/dist/types/player.types.d.ts.map +1 -0
- package/dist/types/seekbar.types.d.ts +5 -0
- package/dist/types/seekbar.types.d.ts.map +1 -0
- package/dist/types/streaming.types.d.ts +168 -0
- package/dist/types/streaming.types.d.ts.map +1 -0
- package/dist/types/timeline.types.d.ts +46 -0
- package/dist/types/timeline.types.d.ts.map +1 -0
- package/dist/types/video-events.d.ts +51 -0
- package/dist/types/video-events.d.ts.map +1 -0
- package/dist/ui/Common/BufferingIndicator.d.ts +2 -0
- package/dist/ui/Common/BufferingIndicator.d.ts.map +1 -0
- package/dist/ui/Common/ControlBar.d.ts +3 -0
- package/dist/ui/Common/ControlBar.d.ts.map +1 -0
- package/dist/ui/Common/ControlBar.responsive.d.ts +3 -0
- package/dist/ui/Common/ControlBar.responsive.d.ts.map +1 -0
- package/dist/ui/Common/Dropdown/Dropdown.d.ts +14 -0
- package/dist/ui/Common/Dropdown/Dropdown.d.ts.map +1 -0
- package/dist/ui/Common/Dropdown/DropdownItem.d.ts +11 -0
- package/dist/ui/Common/Dropdown/DropdownItem.d.ts.map +1 -0
- package/dist/ui/Common/Dropdown/DropdownPanel.d.ts +9 -0
- package/dist/ui/Common/Dropdown/DropdownPanel.d.ts.map +1 -0
- package/dist/ui/Common/Dropdown/DropdownTrigger.d.ts +7 -0
- package/dist/ui/Common/Dropdown/DropdownTrigger.d.ts.map +1 -0
- package/dist/ui/Common/LoadingSpinner.d.ts +6 -0
- package/dist/ui/Common/LoadingSpinner.d.ts.map +1 -0
- package/dist/ui/Common/Overlay.d.ts +11 -0
- package/dist/ui/Common/Overlay.d.ts.map +1 -0
- package/dist/ui/Common/SeekBar.d.ts +15 -0
- package/dist/ui/Common/SeekBar.d.ts.map +1 -0
- package/dist/ui/Common/SeekBar.responsive.d.ts +10 -0
- package/dist/ui/Common/SeekBar.responsive.d.ts.map +1 -0
- package/dist/ui/Common/TimeDisplay.d.ts +2 -0
- package/dist/ui/Common/TimeDisplay.d.ts.map +1 -0
- package/dist/ui/Common/TimelineMarker.d.ts +11 -0
- package/dist/ui/Common/TimelineMarker.d.ts.map +1 -0
- package/dist/ui/Common/Tooltip.d.ts +2 -0
- package/dist/ui/Common/Tooltip.d.ts.map +1 -0
- package/dist/ui/Common/VolumePanel.d.ts +2 -0
- package/dist/ui/Common/VolumePanel.d.ts.map +1 -0
- package/dist/ui/Controls/AudioTrackSelector.d.ts +2 -0
- package/dist/ui/Controls/AudioTrackSelector.d.ts.map +1 -0
- package/dist/ui/Controls/CaptionsButton.d.ts +2 -0
- package/dist/ui/Controls/CaptionsButton.d.ts.map +1 -0
- package/dist/ui/Controls/CastButton.d.ts +17 -0
- package/dist/ui/Controls/CastButton.d.ts.map +1 -0
- package/dist/ui/Controls/DownloadButton.d.ts +2 -0
- package/dist/ui/Controls/DownloadButton.d.ts.map +1 -0
- package/dist/ui/Controls/EpisodeSelector.d.ts +2 -0
- package/dist/ui/Controls/EpisodeSelector.d.ts.map +1 -0
- package/dist/ui/Controls/FullscreenButton.d.ts +5 -0
- package/dist/ui/Controls/FullscreenButton.d.ts.map +1 -0
- package/dist/ui/Controls/JumpToLiveButton.d.ts +2 -0
- package/dist/ui/Controls/JumpToLiveButton.d.ts.map +1 -0
- package/dist/ui/Controls/LiveLatencyDisplay.d.ts +2 -0
- package/dist/ui/Controls/LiveLatencyDisplay.d.ts.map +1 -0
- package/dist/ui/Controls/MuteButton.d.ts +5 -0
- package/dist/ui/Controls/MuteButton.d.ts.map +1 -0
- package/dist/ui/Controls/NextEpisodeButton.d.ts +7 -0
- package/dist/ui/Controls/NextEpisodeButton.d.ts.map +1 -0
- package/dist/ui/Controls/PipButton.d.ts +5 -0
- package/dist/ui/Controls/PipButton.d.ts.map +1 -0
- package/dist/ui/Controls/PlayButton.d.ts +5 -0
- package/dist/ui/Controls/PlayButton.d.ts.map +1 -0
- package/dist/ui/Controls/PlaybackSpeedSelector.d.ts +2 -0
- package/dist/ui/Controls/PlaybackSpeedSelector.d.ts.map +1 -0
- package/dist/ui/Controls/PlaylistButton.d.ts +2 -0
- package/dist/ui/Controls/PlaylistButton.d.ts.map +1 -0
- package/dist/ui/Controls/QualitySelector.d.ts +2 -0
- package/dist/ui/Controls/QualitySelector.d.ts.map +1 -0
- package/dist/ui/Controls/SeekBar.d.ts +2 -0
- package/dist/ui/Controls/SeekBar.d.ts.map +1 -0
- package/dist/ui/Controls/SeekBarProgress.d.ts +2 -0
- package/dist/ui/Controls/SeekBarProgress.d.ts.map +1 -0
- package/dist/ui/Controls/SettingsButton.d.ts +2 -0
- package/dist/ui/Controls/SettingsButton.d.ts.map +1 -0
- package/dist/ui/Controls/SettingsPanel.d.ts +17 -0
- package/dist/ui/Controls/SettingsPanel.d.ts.map +1 -0
- package/dist/ui/Controls/SkipBackwardButton.d.ts +6 -0
- package/dist/ui/Controls/SkipBackwardButton.d.ts.map +1 -0
- package/dist/ui/Controls/SkipForwardButton.d.ts +6 -0
- package/dist/ui/Controls/SkipForwardButton.d.ts.map +1 -0
- package/dist/ui/Controls/SkipIntroButton.d.ts +7 -0
- package/dist/ui/Controls/SkipIntroButton.d.ts.map +1 -0
- package/dist/ui/Controls/SubtitleOverlay.d.ts +6 -0
- package/dist/ui/Controls/SubtitleOverlay.d.ts.map +1 -0
- package/dist/ui/Controls/SubtitlesMenu.d.ts +2 -0
- package/dist/ui/Controls/SubtitlesMenu.d.ts.map +1 -0
- package/dist/ui/Controls/TheaterModeButton.d.ts +2 -0
- package/dist/ui/Controls/TheaterModeButton.d.ts.map +1 -0
- package/dist/ui/Controls/TimeDisplay.d.ts +5 -0
- package/dist/ui/Controls/TimeDisplay.d.ts.map +1 -0
- package/dist/ui/Controls/VolumeControl.d.ts +2 -0
- package/dist/ui/Controls/VolumeControl.d.ts.map +1 -0
- package/dist/ui/Controls/VolumeSlider.d.ts +2 -0
- package/dist/ui/Controls/VolumeSlider.d.ts.map +1 -0
- package/dist/ui/Overlay/ContextMenu.d.ts +17 -0
- package/dist/ui/Overlay/ContextMenu.d.ts.map +1 -0
- package/dist/ui/Overlay/EndCard.d.ts +11 -0
- package/dist/ui/Overlay/EndCard.d.ts.map +1 -0
- package/dist/ui/Overlay/ErrorOverlay.d.ts +13 -0
- package/dist/ui/Overlay/ErrorOverlay.d.ts.map +1 -0
- package/dist/ui/Overlay/GestureHintOverlay.d.ts +14 -0
- package/dist/ui/Overlay/GestureHintOverlay.d.ts.map +1 -0
- package/dist/ui/Overlay/KeyboardShortcutsOverlay.d.ts +7 -0
- package/dist/ui/Overlay/KeyboardShortcutsOverlay.d.ts.map +1 -0
- package/dist/ui/Overlay/VideoOverlay.d.ts +9 -0
- package/dist/ui/Overlay/VideoOverlay.d.ts.map +1 -0
- package/dist/ui/Player.d.ts +19 -0
- package/dist/ui/Player.d.ts.map +1 -0
- package/dist/vite.svg +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { PlayerCore } from './PlayerCore';
|
|
2
|
+
import { VirtusEventType } from './PlayronEventEmitter';
|
|
3
|
+
/**
|
|
4
|
+
* Plugin interface
|
|
5
|
+
*/
|
|
6
|
+
export interface VirtusPlugin {
|
|
7
|
+
/** Unique plugin name */
|
|
8
|
+
name: string;
|
|
9
|
+
/** Plugin version */
|
|
10
|
+
version: string;
|
|
11
|
+
/** Plugin description */
|
|
12
|
+
description?: string;
|
|
13
|
+
/** Plugin dependencies (other plugin names) */
|
|
14
|
+
dependencies?: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Install plugin
|
|
17
|
+
* Called when plugin is registered
|
|
18
|
+
*/
|
|
19
|
+
install: (player: PlayerCore, config?: any) => void | Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Uninstall plugin
|
|
22
|
+
* Called when plugin is removed or player is destroyed
|
|
23
|
+
*/
|
|
24
|
+
uninstall?: () => void | Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Plugin Manager
|
|
28
|
+
* Manages plugin lifecycle and dependencies
|
|
29
|
+
*/
|
|
30
|
+
export declare class PluginManager {
|
|
31
|
+
private player;
|
|
32
|
+
private plugins;
|
|
33
|
+
private installed;
|
|
34
|
+
constructor(player: PlayerCore);
|
|
35
|
+
/**
|
|
36
|
+
* Register a plugin
|
|
37
|
+
*/
|
|
38
|
+
register(plugin: VirtusPlugin, config?: any): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Unregister a plugin
|
|
41
|
+
*/
|
|
42
|
+
unregister(pluginName: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Get plugin by name
|
|
45
|
+
*/
|
|
46
|
+
get(pluginName: string): VirtusPlugin | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Check if plugin is installed
|
|
49
|
+
*/
|
|
50
|
+
has(pluginName: string): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Get all installed plugins
|
|
53
|
+
*/
|
|
54
|
+
getAll(): VirtusPlugin[];
|
|
55
|
+
/**
|
|
56
|
+
* Uninstall all plugins
|
|
57
|
+
*/
|
|
58
|
+
uninstallAll(): Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Skip Intro/Outro Plugin
|
|
62
|
+
*/
|
|
63
|
+
export declare function createSkipIntroPlugin(config: {
|
|
64
|
+
intro?: {
|
|
65
|
+
start: number;
|
|
66
|
+
end: number;
|
|
67
|
+
};
|
|
68
|
+
outro?: {
|
|
69
|
+
start: number;
|
|
70
|
+
end: number;
|
|
71
|
+
};
|
|
72
|
+
}): VirtusPlugin;
|
|
73
|
+
/**
|
|
74
|
+
* Chapters Plugin
|
|
75
|
+
*/
|
|
76
|
+
export declare function createChaptersPlugin(chapters: Array<{
|
|
77
|
+
id: string;
|
|
78
|
+
title: string;
|
|
79
|
+
startTime: number;
|
|
80
|
+
endTime?: number;
|
|
81
|
+
}>): VirtusPlugin;
|
|
82
|
+
/**
|
|
83
|
+
* Analytics Plugin
|
|
84
|
+
*/
|
|
85
|
+
export declare function createAnalyticsPlugin(config: {
|
|
86
|
+
trackingId: string;
|
|
87
|
+
endpoint?: string;
|
|
88
|
+
events?: VirtusEventType[];
|
|
89
|
+
}): VirtusPlugin;
|
|
90
|
+
/**
|
|
91
|
+
* Keyboard Shortcuts Plugin
|
|
92
|
+
*/
|
|
93
|
+
export declare function createKeyboardShortcutsPlugin(_config?: {
|
|
94
|
+
shortcuts?: {
|
|
95
|
+
play?: string;
|
|
96
|
+
mute?: string;
|
|
97
|
+
fullscreen?: string;
|
|
98
|
+
skipForward?: string;
|
|
99
|
+
skipBackward?: string;
|
|
100
|
+
volumeUp?: string;
|
|
101
|
+
volumeDown?: string;
|
|
102
|
+
};
|
|
103
|
+
}): VirtusPlugin;
|
|
104
|
+
/**
|
|
105
|
+
* Auto Quality Plugin
|
|
106
|
+
*/
|
|
107
|
+
export declare function createAutoQualityPlugin(_config?: {
|
|
108
|
+
minBandwidth?: number;
|
|
109
|
+
maxBandwidth?: number;
|
|
110
|
+
}): VirtusPlugin;
|
|
111
|
+
//# sourceMappingURL=PluginSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSystem.d.ts","sourceRoot":"","sources":["../../src/core/PluginSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { PlayronEventEmitter } from './PlayronEventEmitter';
|
|
2
|
+
export interface StallDetectorOptions {
|
|
3
|
+
/** Poll interval in ms (default: 500) */
|
|
4
|
+
pollInterval?: number;
|
|
5
|
+
/** Seconds of no-progress before first recovery attempt (default: 3) */
|
|
6
|
+
stallThreshold?: number;
|
|
7
|
+
/** Called when quality downgrade is needed (attempt 3) */
|
|
8
|
+
onQualityDowngrade?: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare class StallDetector {
|
|
11
|
+
private video;
|
|
12
|
+
private events;
|
|
13
|
+
private options;
|
|
14
|
+
private timer;
|
|
15
|
+
private lastTime;
|
|
16
|
+
private stallDuration;
|
|
17
|
+
private attempts;
|
|
18
|
+
private isRunning;
|
|
19
|
+
constructor(video: HTMLVideoElement, events: PlayronEventEmitter, options?: StallDetectorOptions);
|
|
20
|
+
start(): void;
|
|
21
|
+
stop(): void;
|
|
22
|
+
destroy(): void;
|
|
23
|
+
private reset;
|
|
24
|
+
private tick;
|
|
25
|
+
private recover;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=StallDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StallDetector.d.ts","sourceRoot":"","sources":["../../src/core/StallDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAEb;IAEF,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAS;gBAGxB,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE,oBAAyB;IAWpC,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI;IASZ,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,IAAI;IAkDZ,OAAO,CAAC,OAAO;CAqChB"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { PlayerState } from '../types/config';
|
|
2
|
+
export declare class StateManager {
|
|
3
|
+
private state;
|
|
4
|
+
private listeners;
|
|
5
|
+
private history;
|
|
6
|
+
private maxHistorySize;
|
|
7
|
+
constructor(initialState?: Partial<PlayerState>);
|
|
8
|
+
/**
|
|
9
|
+
* Başlangıç durumunu oluştur
|
|
10
|
+
*/
|
|
11
|
+
private getInitialState;
|
|
12
|
+
/**
|
|
13
|
+
* Durumu güncelle
|
|
14
|
+
*/
|
|
15
|
+
updateState(updates: Partial<PlayerState>): void;
|
|
16
|
+
/**
|
|
17
|
+
* Mevcut durumu döndür
|
|
18
|
+
*/
|
|
19
|
+
getState(): PlayerState;
|
|
20
|
+
/**
|
|
21
|
+
* Belirli bir durum değerini al
|
|
22
|
+
*/
|
|
23
|
+
get<K extends keyof PlayerState>(key: K): PlayerState[K];
|
|
24
|
+
/**
|
|
25
|
+
* Belirli bir durum değerini ayarla
|
|
26
|
+
*/
|
|
27
|
+
set<K extends keyof PlayerState>(key: K, value: PlayerState[K]): void;
|
|
28
|
+
/**
|
|
29
|
+
* Durum değişiklik dinleyicisi ekle
|
|
30
|
+
*/
|
|
31
|
+
subscribe(callback: (state: PlayerState) => void): void;
|
|
32
|
+
/**
|
|
33
|
+
* Durum değişiklik dinleyicisini kaldır
|
|
34
|
+
*/
|
|
35
|
+
unsubscribe(callback: (state: PlayerState) => void): void;
|
|
36
|
+
/**
|
|
37
|
+
* Durum değişikliklerini bildir
|
|
38
|
+
*/
|
|
39
|
+
private notifyListeners;
|
|
40
|
+
/**
|
|
41
|
+
* Durumu geçmişe ekle
|
|
42
|
+
*/
|
|
43
|
+
private addToHistory;
|
|
44
|
+
/**
|
|
45
|
+
* Önceki duruma geri dön
|
|
46
|
+
*/
|
|
47
|
+
undo(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Durumu sıfırla
|
|
50
|
+
*/
|
|
51
|
+
reset(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Durumu belirli bir değere ayarla
|
|
54
|
+
*/
|
|
55
|
+
setState(newState: PlayerState): void;
|
|
56
|
+
/**
|
|
57
|
+
* Durum geçmişini temizle
|
|
58
|
+
*/
|
|
59
|
+
clearHistory(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Durum geçmişini döndür
|
|
62
|
+
*/
|
|
63
|
+
getHistory(): PlayerState[];
|
|
64
|
+
/**
|
|
65
|
+
* Belirli bir durumda olup olmadığını kontrol et
|
|
66
|
+
*/
|
|
67
|
+
isInState(predicate: (state: PlayerState) => boolean): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Durum değişikliklerini filtrele
|
|
70
|
+
*/
|
|
71
|
+
subscribeToChanges<K extends keyof PlayerState>(keys: K[], callback: (changes: Pick<PlayerState, K>) => void): void;
|
|
72
|
+
/**
|
|
73
|
+
* Durumu snapshot olarak al
|
|
74
|
+
*/
|
|
75
|
+
createSnapshot(): PlayerState;
|
|
76
|
+
/**
|
|
77
|
+
* Snapshot'tan durumu geri yükle
|
|
78
|
+
*/
|
|
79
|
+
restoreFromSnapshot(snapshot: PlayerState): void;
|
|
80
|
+
/**
|
|
81
|
+
* Durum istatistiklerini döndür
|
|
82
|
+
*/
|
|
83
|
+
getStats(): {
|
|
84
|
+
totalListeners: number;
|
|
85
|
+
historySize: number;
|
|
86
|
+
maxHistorySize: number;
|
|
87
|
+
lastUpdate: Date;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=StateManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StateManager.d.ts","sourceRoot":"","sources":["../../src/core/StateManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,cAAc,CAAc;gBAExB,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAI/C;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAWhD;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAIxD;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAIrE;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAIvD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAOzD;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,IAAI,IAAI,OAAO;IAef;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAOrC;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,UAAU,IAAI,WAAW,EAAE;IAI3B;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,GAAG,OAAO;IAI9D;;OAEG;IACH,kBAAkB,CAAC,CAAC,SAAS,MAAM,WAAW,EAC5C,IAAI,EAAE,CAAC,EAAE,EACT,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,IAAI,GAChD,IAAI;IAwBP;;OAEG;IACH,cAAc,IAAI,WAAW;IAI7B;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAIhD;;OAEG;IACH,QAAQ,IAAI;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,IAAI,CAAC;KAClB;CAQF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export declare class VideoEngine {
|
|
2
|
+
private videoElement;
|
|
3
|
+
private isPlaying;
|
|
4
|
+
private isMuted;
|
|
5
|
+
private volume;
|
|
6
|
+
private playbackRate;
|
|
7
|
+
private currentTime;
|
|
8
|
+
private duration;
|
|
9
|
+
constructor(videoElement: HTMLVideoElement);
|
|
10
|
+
/**
|
|
11
|
+
* Video element'inin native event'lerini dinle
|
|
12
|
+
*/
|
|
13
|
+
private setupEventListeners;
|
|
14
|
+
/**
|
|
15
|
+
* Video'yu başlat
|
|
16
|
+
*/
|
|
17
|
+
private initializeVideo;
|
|
18
|
+
/**
|
|
19
|
+
* Play event'ini gönder
|
|
20
|
+
*/
|
|
21
|
+
private emitPlayEvent;
|
|
22
|
+
/**
|
|
23
|
+
* Pause event'ini gönder
|
|
24
|
+
*/
|
|
25
|
+
private emitPauseEvent;
|
|
26
|
+
/**
|
|
27
|
+
* Volume change event'ini gönder
|
|
28
|
+
*/
|
|
29
|
+
private emitVolumeChangeEvent;
|
|
30
|
+
/**
|
|
31
|
+
* Mute event'ini gönder
|
|
32
|
+
*/
|
|
33
|
+
private emitMuteEvent;
|
|
34
|
+
/**
|
|
35
|
+
* Video'yu oynat
|
|
36
|
+
*/
|
|
37
|
+
play(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Video'yu duraklat
|
|
40
|
+
*/
|
|
41
|
+
pause(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Video'yu sessize al/aç
|
|
44
|
+
*/
|
|
45
|
+
toggleMute(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Ses seviyesini ayarla
|
|
48
|
+
*/
|
|
49
|
+
setVolume(volume: number): void;
|
|
50
|
+
/**
|
|
51
|
+
* Belirli bir zamana git
|
|
52
|
+
*/
|
|
53
|
+
seekTo(time: number): void;
|
|
54
|
+
/**
|
|
55
|
+
* Oynatma hızını ayarla
|
|
56
|
+
*/
|
|
57
|
+
setPlaybackRate(rate: number): void;
|
|
58
|
+
/**
|
|
59
|
+
* Video source'unu değiştir
|
|
60
|
+
*/
|
|
61
|
+
setSource(src: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Video poster'ını ayarla
|
|
64
|
+
*/
|
|
65
|
+
setPoster(poster: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* Video boyutlarını ayarla
|
|
68
|
+
*/
|
|
69
|
+
setDimensions(width: number | string, height: number | string): void;
|
|
70
|
+
/**
|
|
71
|
+
* Mevcut durumu döndür
|
|
72
|
+
*/
|
|
73
|
+
getState(): {
|
|
74
|
+
isPlaying: boolean;
|
|
75
|
+
isMuted: boolean;
|
|
76
|
+
volume: number;
|
|
77
|
+
playbackRate: number;
|
|
78
|
+
currentTime: number;
|
|
79
|
+
duration: number;
|
|
80
|
+
src: string;
|
|
81
|
+
poster: string;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Video element'ini döndür
|
|
85
|
+
*/
|
|
86
|
+
getVideoElement(): HTMLVideoElement | null;
|
|
87
|
+
/**
|
|
88
|
+
* VideoEngine'ı temizle
|
|
89
|
+
*/
|
|
90
|
+
destroy(): void;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=VideoEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoEngine.d.ts","sourceRoot":"","sources":["../../src/core/VideoEngine.ts"],"names":[],"mappings":"AAKA,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAa;gBAEjB,YAAY,EAAE,gBAAgB;IAM1C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2D3B;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK1B;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMnC;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/B;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMpE;;OAEG;IACH,QAAQ;;;;;;;;;;IAaR;;OAEG;IACH,eAAe,IAAI,gBAAgB,GAAG,IAAI;IAI1C;;OAEG;IACH,OAAO,IAAI,IAAI;CAWhB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stream Type Detector
|
|
3
|
+
* Automatically detects if a stream is VOD or LIVE by analyzing the manifest
|
|
4
|
+
*/
|
|
5
|
+
export type StreamType = 'vod' | 'live' | 'unknown';
|
|
6
|
+
export interface StreamInfo {
|
|
7
|
+
type: StreamType;
|
|
8
|
+
protocol: 'hls' | 'dash' | 'progressive' | 'unknown';
|
|
9
|
+
isDynamic: boolean;
|
|
10
|
+
hasDVR: boolean;
|
|
11
|
+
targetDuration?: number;
|
|
12
|
+
mediaSequence?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Pre-check capability.
|
|
15
|
+
* True if basic codecs (avc1/mp4a) are supported, preventing full playback engine load if not.
|
|
16
|
+
*/
|
|
17
|
+
isEngineSupported: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare class StreamDetector {
|
|
20
|
+
/**
|
|
21
|
+
* Main detection method
|
|
22
|
+
* Fetches and analyzes manifest to determine stream type
|
|
23
|
+
*/
|
|
24
|
+
detectStream(url: string): Promise<StreamInfo>;
|
|
25
|
+
/**
|
|
26
|
+
* Pre-check basic browser capability using MediaSource.isTypeSupported
|
|
27
|
+
* to quickly determine if we should fall back to an external library.
|
|
28
|
+
*/
|
|
29
|
+
private preCheckCapability;
|
|
30
|
+
/**
|
|
31
|
+
* Detect protocol from URL
|
|
32
|
+
*/
|
|
33
|
+
private detectProtocol;
|
|
34
|
+
/**
|
|
35
|
+
* Detect HLS stream type
|
|
36
|
+
*/
|
|
37
|
+
private detectHLS;
|
|
38
|
+
/**
|
|
39
|
+
* Detect DASH stream type
|
|
40
|
+
*/
|
|
41
|
+
private detectDASH;
|
|
42
|
+
/**
|
|
43
|
+
* Progressive download (MP4, WebM, etc.)
|
|
44
|
+
* Always VOD
|
|
45
|
+
*/
|
|
46
|
+
private detectProgressive;
|
|
47
|
+
/**
|
|
48
|
+
* Fetch manifest from URL
|
|
49
|
+
*/
|
|
50
|
+
private fetchManifest;
|
|
51
|
+
/**
|
|
52
|
+
* Extract #EXT-X-TARGETDURATION
|
|
53
|
+
*/
|
|
54
|
+
private extractTargetDuration;
|
|
55
|
+
/**
|
|
56
|
+
* Extract #EXT-X-MEDIA-SEQUENCE
|
|
57
|
+
*/
|
|
58
|
+
private extractMediaSequence;
|
|
59
|
+
/**
|
|
60
|
+
* Quick sync detection (without fetching)
|
|
61
|
+
* Useful for initial UI setup
|
|
62
|
+
*/
|
|
63
|
+
quickDetect(url: string): {
|
|
64
|
+
type: StreamType;
|
|
65
|
+
protocol: 'hls' | 'dash' | 'progressive' | 'unknown';
|
|
66
|
+
isEngineSupported: boolean;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Singleton instance
|
|
71
|
+
*/
|
|
72
|
+
export declare const streamDetector: StreamDetector;
|
|
73
|
+
//# sourceMappingURL=StreamDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamDetector.d.ts","sourceRoot":"","sources":["../../../src/core/adaptive/StreamDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IACrD,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,cAAc;IACzB;;;OAGG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyBpD;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;YACW,SAAS;IAkDvB;;OAEG;YACW,UAAU;IAqBxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;YACW,aAAa;IAe3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE;CAWjI;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DrmCapabilityProbe — browser EME (Encrypted Media Extensions) capability detection.
|
|
3
|
+
* Uses requestMediaKeySystemAccess to check which DRM systems the current browser supports.
|
|
4
|
+
*/
|
|
5
|
+
export interface DrmCapabilities {
|
|
6
|
+
widevine: boolean;
|
|
7
|
+
fairplay: boolean;
|
|
8
|
+
playready: boolean;
|
|
9
|
+
clearkey: boolean;
|
|
10
|
+
preferredSystem: 'widevine' | 'fairplay' | 'playready' | 'clearkey' | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function probeDrmCapabilities(): Promise<DrmCapabilities>;
|
|
13
|
+
//# sourceMappingURL=DrmCapabilityProbe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrmCapabilityProbe.d.ts","sourceRoot":"","sources":["../../../src/core/drm/DrmCapabilityProbe.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;CAC5E;AA2BD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,eAAe,CAAC,CA0BrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/network/index.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { QualityLevel } from '../../types/streaming.types';
|
|
2
|
+
import { PlayerConfig } from '../../types/config.types';
|
|
3
|
+
export interface DashEngineConfig {
|
|
4
|
+
/** Kaynak yüklendiğinde otomatik başlat. Varsayılan: true */
|
|
5
|
+
autoStart?: boolean;
|
|
6
|
+
/** Buffer'da tutulacak maksimum saniye (önde). Varsayılan: 30 */
|
|
7
|
+
maxBufferAhead?: number;
|
|
8
|
+
/** Düşük gecikme modu. Varsayılan: false */
|
|
9
|
+
lowLatency?: boolean;
|
|
10
|
+
/** Debug log'larını aç. Varsayılan: false */
|
|
11
|
+
debug?: boolean;
|
|
12
|
+
/** DRM konfigürasyonu — Widevine / PlayReady lisans sunucusu bilgileri */
|
|
13
|
+
drmConfig?: PlayerConfig['drm'];
|
|
14
|
+
}
|
|
15
|
+
/** DashEngine'in emit ettiği olayların tip eşlemesi */
|
|
16
|
+
interface DashEngineEventMap {
|
|
17
|
+
'quality-changed': {
|
|
18
|
+
quality: QualityLevel;
|
|
19
|
+
};
|
|
20
|
+
'audio-track-changed': {
|
|
21
|
+
trackId: string;
|
|
22
|
+
};
|
|
23
|
+
'subtitle-track-changed': {
|
|
24
|
+
language: string | null;
|
|
25
|
+
};
|
|
26
|
+
'error': {
|
|
27
|
+
error: {
|
|
28
|
+
code: string;
|
|
29
|
+
message: string;
|
|
30
|
+
fatal: boolean;
|
|
31
|
+
details?: unknown;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
'state-change': {
|
|
35
|
+
state: 'buffering' | 'playing' | 'paused' | 'idle';
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
type DashEngineListener<K extends keyof DashEngineEventMap> = (data: DashEngineEventMap[K]) => void;
|
|
39
|
+
export declare class DashEngine {
|
|
40
|
+
private player;
|
|
41
|
+
private readonly videoElement;
|
|
42
|
+
private readonly config;
|
|
43
|
+
private readonly listeners;
|
|
44
|
+
private destroyed;
|
|
45
|
+
private activeSubtitleLanguage;
|
|
46
|
+
private readonly onPlaying;
|
|
47
|
+
private readonly onPause;
|
|
48
|
+
private readonly onWaiting;
|
|
49
|
+
constructor(videoElement: HTMLVideoElement, config?: DashEngineConfig);
|
|
50
|
+
/**
|
|
51
|
+
* DASH manifestini yükle ve oynatmayı hazırla.
|
|
52
|
+
*/
|
|
53
|
+
load(url: string): Promise<void>;
|
|
54
|
+
private applyDrmConfig;
|
|
55
|
+
private setupDashListeners;
|
|
56
|
+
/** Video element native olaylarına abone ol */
|
|
57
|
+
private attachVideoListeners;
|
|
58
|
+
/** Video element native olaylarından ayrıl */
|
|
59
|
+
private detachVideoListeners;
|
|
60
|
+
/**
|
|
61
|
+
* Tüm kalite seviyelerini döndür. İlk eleman her zaman "Auto" seviyesidir.
|
|
62
|
+
*/
|
|
63
|
+
getQualities(): QualityLevel[];
|
|
64
|
+
/**
|
|
65
|
+
* Aktif kalite seviyesini döndür.
|
|
66
|
+
*/
|
|
67
|
+
getCurrentQuality(): QualityLevel | null;
|
|
68
|
+
/**
|
|
69
|
+
* Manuel kalite seçimi.
|
|
70
|
+
* qualityId: representation index'i string olarak ("0", "1", "2" gibi).
|
|
71
|
+
* "auto" geçilirse ABR aktifleşir.
|
|
72
|
+
*/
|
|
73
|
+
setQuality(qualityId: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* ABR (Adaptive Bitrate) modunu etkinleştir.
|
|
76
|
+
*/
|
|
77
|
+
enableAutoQuality(): void;
|
|
78
|
+
/**
|
|
79
|
+
* Manifest'teki tüm ses izlerini döndür.
|
|
80
|
+
*/
|
|
81
|
+
getAudioTracks(): Array<{
|
|
82
|
+
id: string;
|
|
83
|
+
label: string;
|
|
84
|
+
language: string;
|
|
85
|
+
}>;
|
|
86
|
+
/**
|
|
87
|
+
* Aktif ses izi ID'sini döndür.
|
|
88
|
+
*/
|
|
89
|
+
getActiveAudioTrackId(): string;
|
|
90
|
+
/**
|
|
91
|
+
* Ses izini değiştir (dublaj seçimi).
|
|
92
|
+
* trackId: ses izi index'i string olarak.
|
|
93
|
+
*/
|
|
94
|
+
setAudioTrack(trackId: string): void;
|
|
95
|
+
/**
|
|
96
|
+
* Manifest'teki tüm altyazı izlerini döndür.
|
|
97
|
+
*/
|
|
98
|
+
getSubtitleTracks(): Array<{
|
|
99
|
+
language: string;
|
|
100
|
+
label: string;
|
|
101
|
+
url: string;
|
|
102
|
+
}>;
|
|
103
|
+
/**
|
|
104
|
+
* Altyazı izini değiştir. null → altyazıyı kapat.
|
|
105
|
+
*/
|
|
106
|
+
setSubtitleTrack(language: string | null): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Aktif altyazı dilini döndür (veya null).
|
|
109
|
+
*/
|
|
110
|
+
getActiveSubtitleLanguage(): string | null;
|
|
111
|
+
/**
|
|
112
|
+
* CEA-608/708 altyazı overlay bağla. dashjs kendi textTracks API'sini kullanır.
|
|
113
|
+
*/
|
|
114
|
+
attachCaptions(_container: HTMLElement): void;
|
|
115
|
+
/**
|
|
116
|
+
* WebVTT / TTML altyazı overlay bağla.
|
|
117
|
+
*/
|
|
118
|
+
attachSubtitles(_container: HTMLElement): void;
|
|
119
|
+
/**
|
|
120
|
+
* Stream canlı (LIVE) mı?
|
|
121
|
+
*/
|
|
122
|
+
isLiveStream(): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Live edge zamanını saniye cinsinden döndür.
|
|
125
|
+
*/
|
|
126
|
+
getLiveEdgeTime(): number;
|
|
127
|
+
/**
|
|
128
|
+
* Canlı yayın kenarına atla (en düşük gecikme).
|
|
129
|
+
*/
|
|
130
|
+
seekToLiveEdge(): void;
|
|
131
|
+
/**
|
|
132
|
+
* DVR aralığını döndür. VOD veya DVR yoksa null.
|
|
133
|
+
*/
|
|
134
|
+
getDVRRange(): {
|
|
135
|
+
start: number;
|
|
136
|
+
end: number;
|
|
137
|
+
} | null;
|
|
138
|
+
on<K extends keyof DashEngineEventMap>(event: K, callback: DashEngineListener<K>): void;
|
|
139
|
+
off<K extends keyof DashEngineEventMap>(event: K, callback: DashEngineListener<K>): void;
|
|
140
|
+
private emit;
|
|
141
|
+
/** dashjs Representation → QualityLevel dönüşümü */
|
|
142
|
+
private mapRepresentationToQuality;
|
|
143
|
+
/**
|
|
144
|
+
* DASH engine'i tamamen temizle. Tüm olayları ve referansları kaldır.
|
|
145
|
+
*/
|
|
146
|
+
destroy(): Promise<void>;
|
|
147
|
+
}
|
|
148
|
+
export {};
|
|
149
|
+
//# sourceMappingURL=DashEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashEngine.d.ts","sourceRoot":"","sources":["../../../src/core/streaming/DashEngine.ts"],"names":[],"mappings":"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"}
|