unified-video-framework 1.4.247 → 1.4.249
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unified-video-framework",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.249",
|
|
4
4
|
"description": "Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more",
|
|
5
5
|
"main": "packages/core/dist/index.js",
|
|
6
6
|
"types": "packages/core/dist/index.d.ts",
|
|
@@ -109,10 +109,6 @@ export declare class WebPlayer extends BasePlayer {
|
|
|
109
109
|
private youtubePlayer;
|
|
110
110
|
private youtubePlayerReady;
|
|
111
111
|
private youtubeIframe;
|
|
112
|
-
private isYoutubePiPActive;
|
|
113
|
-
private youtubePiPContainer;
|
|
114
|
-
private youtubePiPOriginalParent;
|
|
115
|
-
private youtubePiPOriginalPosition;
|
|
116
112
|
private createYouTubePlayer;
|
|
117
113
|
private loadYouTubeAPI;
|
|
118
114
|
private waitForYouTubeAPI;
|
|
@@ -121,6 +117,10 @@ export declare class WebPlayer extends BasePlayer {
|
|
|
121
117
|
private updateYouTubeUI;
|
|
122
118
|
private onYouTubePlayerError;
|
|
123
119
|
private youtubeTimeTrackingInterval;
|
|
120
|
+
private youtubeAvailableQualities;
|
|
121
|
+
private youtubeCurrentQuality;
|
|
122
|
+
private extractYouTubeAvailableQualities;
|
|
123
|
+
private setYouTubeQuality;
|
|
124
124
|
private startYouTubeTimeTracking;
|
|
125
125
|
private updateYouTubeProgressBar;
|
|
126
126
|
protected loadScript(src: string): Promise<void>;
|
|
@@ -241,8 +241,6 @@ export declare class WebPlayer extends BasePlayer {
|
|
|
241
241
|
private setSpeed;
|
|
242
242
|
private setQualityByLabel;
|
|
243
243
|
private togglePiP;
|
|
244
|
-
private enterYoutubePiP;
|
|
245
|
-
private exitYoutubePiP;
|
|
246
244
|
private setupCastContextSafe;
|
|
247
245
|
private setupCastContext;
|
|
248
246
|
private enableCastRemoteControl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -93,11 +93,9 @@ export class WebPlayer extends BasePlayer {
|
|
|
93
93
|
this.youtubePlayer = null;
|
|
94
94
|
this.youtubePlayerReady = false;
|
|
95
95
|
this.youtubeIframe = null;
|
|
96
|
-
this.isYoutubePiPActive = false;
|
|
97
|
-
this.youtubePiPContainer = null;
|
|
98
|
-
this.youtubePiPOriginalParent = null;
|
|
99
|
-
this.youtubePiPOriginalPosition = '';
|
|
100
96
|
this.youtubeTimeTrackingInterval = null;
|
|
97
|
+
this.youtubeAvailableQualities = [];
|
|
98
|
+
this.youtubeCurrentQuality = null;
|
|
101
99
|
this.clickToUnmuteHandler = null;
|
|
102
100
|
}
|
|
103
101
|
debugLog(message, ...args) {
|
|
@@ -950,6 +948,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
950
948
|
if (this.config.muted) {
|
|
951
949
|
this.youtubePlayer.mute();
|
|
952
950
|
}
|
|
951
|
+
this.extractYouTubeAvailableQualities();
|
|
953
952
|
}
|
|
954
953
|
this.startYouTubeTimeTracking();
|
|
955
954
|
this.emit('onReady');
|
|
@@ -1036,6 +1035,87 @@ export class WebPlayer extends BasePlayer {
|
|
|
1036
1035
|
details: { errorCode }
|
|
1037
1036
|
});
|
|
1038
1037
|
}
|
|
1038
|
+
extractYouTubeAvailableQualities() {
|
|
1039
|
+
if (!this.youtubePlayer)
|
|
1040
|
+
return;
|
|
1041
|
+
try {
|
|
1042
|
+
const availableQualityLevels = this.youtubePlayer.getAvailableQualityLevels();
|
|
1043
|
+
this.debugLog('YouTube available quality levels:', availableQualityLevels);
|
|
1044
|
+
const qualityMap = {
|
|
1045
|
+
'hd1080': { label: '1080p', value: 'hd1080', height: 1080 },
|
|
1046
|
+
'hd720': { label: '720p', value: 'hd720', height: 720 },
|
|
1047
|
+
'large': { label: '480p', value: 'large', height: 480 },
|
|
1048
|
+
'medium': { label: '360p', value: 'medium', height: 360 },
|
|
1049
|
+
'small': { label: '240p', value: 'small', height: 240 },
|
|
1050
|
+
'tiny': { label: '144p', value: 'tiny', height: 144 },
|
|
1051
|
+
'auto': { label: 'Auto', value: 'auto', height: 0 }
|
|
1052
|
+
};
|
|
1053
|
+
this.youtubeAvailableQualities = [];
|
|
1054
|
+
availableQualityLevels.forEach((qualityLevel) => {
|
|
1055
|
+
if (qualityMap[qualityLevel]) {
|
|
1056
|
+
this.youtubeAvailableQualities.push(qualityMap[qualityLevel]);
|
|
1057
|
+
}
|
|
1058
|
+
});
|
|
1059
|
+
if (!this.youtubeAvailableQualities.find(q => q.value === 'auto')) {
|
|
1060
|
+
this.youtubeAvailableQualities.unshift({ label: 'Auto', value: 'auto', height: 0 });
|
|
1061
|
+
}
|
|
1062
|
+
this.debugLog('Mapped YouTube qualities:', this.youtubeAvailableQualities);
|
|
1063
|
+
try {
|
|
1064
|
+
const currentQuality = this.youtubePlayer.getPlaybackQuality();
|
|
1065
|
+
this.youtubeCurrentQuality = qualityMap[currentQuality] || qualityMap['auto'];
|
|
1066
|
+
this.debugLog('Current YouTube quality:', this.youtubeCurrentQuality);
|
|
1067
|
+
}
|
|
1068
|
+
catch (e) {
|
|
1069
|
+
this.debugWarn('Could not get current YouTube quality:', e);
|
|
1070
|
+
this.youtubeCurrentQuality = qualityMap['auto'];
|
|
1071
|
+
}
|
|
1072
|
+
this.updateSettingsMenu();
|
|
1073
|
+
}
|
|
1074
|
+
catch (error) {
|
|
1075
|
+
this.debugWarn('Could not extract YouTube qualities:', error);
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
setYouTubeQuality(qualityLevel) {
|
|
1079
|
+
if (!this.youtubePlayer)
|
|
1080
|
+
return;
|
|
1081
|
+
try {
|
|
1082
|
+
const qualityMap = {
|
|
1083
|
+
'hd1080': { label: '1080p', value: 'hd1080', height: 1080 },
|
|
1084
|
+
'hd720': { label: '720p', value: 'hd720', height: 720 },
|
|
1085
|
+
'large': { label: '480p', value: 'large', height: 480 },
|
|
1086
|
+
'medium': { label: '360p', value: 'medium', height: 360 },
|
|
1087
|
+
'small': { label: '240p', value: 'small', height: 240 },
|
|
1088
|
+
'tiny': { label: '144p', value: 'tiny', height: 144 },
|
|
1089
|
+
'auto': { label: 'Auto', value: 'auto', height: 0 }
|
|
1090
|
+
};
|
|
1091
|
+
this.debugLog('📊 Attempting to set YouTube quality to:', qualityLevel);
|
|
1092
|
+
this.youtubePlayer.setPlaybackQuality(qualityLevel);
|
|
1093
|
+
this.debugLog('✅ setPlaybackQuality called for:', qualityLevel);
|
|
1094
|
+
setTimeout(() => {
|
|
1095
|
+
try {
|
|
1096
|
+
const currentQuality = this.youtubePlayer.getPlaybackQuality();
|
|
1097
|
+
this.youtubeCurrentQuality = qualityMap[currentQuality] || qualityMap['auto'];
|
|
1098
|
+
this.debugLog('📊 Current quality after set:', currentQuality, '(', this.youtubeCurrentQuality?.label, ')');
|
|
1099
|
+
if (currentQuality === qualityLevel) {
|
|
1100
|
+
this.showNotification(`Quality changed to ${qualityMap[currentQuality]?.label || 'requested quality'}`);
|
|
1101
|
+
this.debugLog('✅ Quality successfully changed to:', qualityLevel);
|
|
1102
|
+
}
|
|
1103
|
+
else {
|
|
1104
|
+
this.showNotification(`Quality set to ${qualityMap[currentQuality]?.label || currentQuality} (YouTube optimized)`);
|
|
1105
|
+
this.debugLog('⚠️ Requested quality:', qualityLevel, '| Actual quality:', currentQuality, '(YouTube may have optimized)');
|
|
1106
|
+
}
|
|
1107
|
+
this.updateSettingsMenu();
|
|
1108
|
+
}
|
|
1109
|
+
catch (verifyError) {
|
|
1110
|
+
this.debugWarn('Could not verify YouTube quality:', verifyError);
|
|
1111
|
+
}
|
|
1112
|
+
}, 1000);
|
|
1113
|
+
}
|
|
1114
|
+
catch (error) {
|
|
1115
|
+
this.debugWarn('❌ Could not set YouTube quality:', error);
|
|
1116
|
+
this.showNotification('Quality control limited on YouTube');
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1039
1119
|
startYouTubeTimeTracking() {
|
|
1040
1120
|
if (this.youtubeTimeTrackingInterval) {
|
|
1041
1121
|
clearInterval(this.youtubeTimeTrackingInterval);
|
|
@@ -7852,10 +7932,10 @@ export class WebPlayer extends BasePlayer {
|
|
|
7852
7932
|
}
|
|
7853
7933
|
setQualityByLabel(quality) {
|
|
7854
7934
|
if (this.youtubePlayer && this.youtubePlayerReady) {
|
|
7855
|
-
this.
|
|
7935
|
+
this.setYouTubeQuality(quality);
|
|
7856
7936
|
document.querySelectorAll('.quality-option').forEach(option => {
|
|
7857
7937
|
option.classList.remove('active');
|
|
7858
|
-
if (option.dataset.quality ===
|
|
7938
|
+
if (option.dataset.quality === quality) {
|
|
7859
7939
|
option.classList.add('active');
|
|
7860
7940
|
}
|
|
7861
7941
|
});
|
|
@@ -7889,15 +7969,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
7889
7969
|
}
|
|
7890
7970
|
async togglePiP() {
|
|
7891
7971
|
try {
|
|
7892
|
-
if (this.youtubePlayer && this.youtubePlayerReady) {
|
|
7893
|
-
if (this.isYoutubePiPActive) {
|
|
7894
|
-
await this.exitYoutubePiP();
|
|
7895
|
-
}
|
|
7896
|
-
else {
|
|
7897
|
-
await this.enterYoutubePiP();
|
|
7898
|
-
}
|
|
7899
|
-
return;
|
|
7900
|
-
}
|
|
7901
7972
|
if (document.pictureInPictureElement) {
|
|
7902
7973
|
await this.exitPictureInPicture();
|
|
7903
7974
|
}
|
|
@@ -7909,116 +7980,6 @@ export class WebPlayer extends BasePlayer {
|
|
|
7909
7980
|
console.error('PiP toggle failed:', error);
|
|
7910
7981
|
}
|
|
7911
7982
|
}
|
|
7912
|
-
async enterYoutubePiP() {
|
|
7913
|
-
try {
|
|
7914
|
-
const playerWrapper = this.playerWrapper || this.container?.querySelector('.uvf-player-wrapper');
|
|
7915
|
-
if (!playerWrapper) {
|
|
7916
|
-
this.showNotification('Player container not found');
|
|
7917
|
-
return;
|
|
7918
|
-
}
|
|
7919
|
-
this.youtubePiPOriginalParent = playerWrapper.parentElement;
|
|
7920
|
-
this.youtubePiPOriginalPosition = playerWrapper.getAttribute('style') || '';
|
|
7921
|
-
this.youtubePiPContainer = document.createElement('div');
|
|
7922
|
-
this.youtubePiPContainer.id = 'youtube-pip-container';
|
|
7923
|
-
this.youtubePiPContainer.style.cssText = `
|
|
7924
|
-
position: fixed;
|
|
7925
|
-
bottom: 20px;
|
|
7926
|
-
right: 20px;
|
|
7927
|
-
width: 400px;
|
|
7928
|
-
height: 225px;
|
|
7929
|
-
z-index: 9999;
|
|
7930
|
-
background: #000;
|
|
7931
|
-
border: 2px solid rgba(255, 255, 255, 0.3);
|
|
7932
|
-
border-radius: 8px;
|
|
7933
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
|
|
7934
|
-
cursor: grab;
|
|
7935
|
-
overflow: hidden;
|
|
7936
|
-
`;
|
|
7937
|
-
let isDragging = false;
|
|
7938
|
-
let offset = { x: 0, y: 0 };
|
|
7939
|
-
this.youtubePiPContainer.addEventListener('mousedown', (e) => {
|
|
7940
|
-
if (e.target.closest('.youtube-pip-controls'))
|
|
7941
|
-
return;
|
|
7942
|
-
isDragging = true;
|
|
7943
|
-
offset.x = e.clientX - this.youtubePiPContainer.getBoundingClientRect().left;
|
|
7944
|
-
offset.y = e.clientY - this.youtubePiPContainer.getBoundingClientRect().top;
|
|
7945
|
-
this.youtubePiPContainer.style.cursor = 'grabbing';
|
|
7946
|
-
});
|
|
7947
|
-
document.addEventListener('mousemove', (e) => {
|
|
7948
|
-
if (!isDragging || !this.youtubePiPContainer)
|
|
7949
|
-
return;
|
|
7950
|
-
this.youtubePiPContainer.style.left = (e.clientX - offset.x) + 'px';
|
|
7951
|
-
this.youtubePiPContainer.style.top = (e.clientY - offset.y) + 'px';
|
|
7952
|
-
});
|
|
7953
|
-
document.addEventListener('mouseup', () => {
|
|
7954
|
-
isDragging = false;
|
|
7955
|
-
if (this.youtubePiPContainer)
|
|
7956
|
-
this.youtubePiPContainer.style.cursor = 'grab';
|
|
7957
|
-
});
|
|
7958
|
-
const closeBtn = document.createElement('button');
|
|
7959
|
-
closeBtn.className = 'youtube-pip-controls';
|
|
7960
|
-
closeBtn.innerHTML = '✕';
|
|
7961
|
-
closeBtn.style.cssText = `
|
|
7962
|
-
position: absolute;
|
|
7963
|
-
top: 8px;
|
|
7964
|
-
right: 8px;
|
|
7965
|
-
width: 32px;
|
|
7966
|
-
height: 32px;
|
|
7967
|
-
background: rgba(255, 255, 255, 0.2);
|
|
7968
|
-
border: none;
|
|
7969
|
-
color: white;
|
|
7970
|
-
font-size: 18px;
|
|
7971
|
-
border-radius: 4px;
|
|
7972
|
-
cursor: pointer;
|
|
7973
|
-
z-index: 10000;
|
|
7974
|
-
transition: background 0.2s;
|
|
7975
|
-
`;
|
|
7976
|
-
closeBtn.addEventListener('hover', () => {
|
|
7977
|
-
closeBtn.style.background = 'rgba(255, 255, 255, 0.4)';
|
|
7978
|
-
});
|
|
7979
|
-
closeBtn.addEventListener('click', async () => {
|
|
7980
|
-
await this.exitYoutubePiP();
|
|
7981
|
-
});
|
|
7982
|
-
this.youtubePiPContainer.appendChild(playerWrapper);
|
|
7983
|
-
this.youtubePiPContainer.appendChild(closeBtn);
|
|
7984
|
-
document.body.appendChild(this.youtubePiPContainer);
|
|
7985
|
-
playerWrapper.style.width = '100%';
|
|
7986
|
-
playerWrapper.style.height = '100%';
|
|
7987
|
-
this.isYoutubePiPActive = true;
|
|
7988
|
-
this.showNotification('PiP mode active (drag to move)');
|
|
7989
|
-
this.debugLog('YouTube PiP mode enabled');
|
|
7990
|
-
}
|
|
7991
|
-
catch (error) {
|
|
7992
|
-
this.debugError('Failed to enter YouTube PiP:', error);
|
|
7993
|
-
this.showNotification('PiP mode failed');
|
|
7994
|
-
}
|
|
7995
|
-
}
|
|
7996
|
-
async exitYoutubePiP() {
|
|
7997
|
-
try {
|
|
7998
|
-
if (!this.youtubePiPContainer || !this.youtubePiPOriginalParent) {
|
|
7999
|
-
return;
|
|
8000
|
-
}
|
|
8001
|
-
const playerWrapper = this.playerWrapper || this.container?.querySelector('.uvf-player-wrapper');
|
|
8002
|
-
if (playerWrapper) {
|
|
8003
|
-
if (this.youtubePiPOriginalPosition) {
|
|
8004
|
-
playerWrapper.setAttribute('style', this.youtubePiPOriginalPosition);
|
|
8005
|
-
}
|
|
8006
|
-
else {
|
|
8007
|
-
playerWrapper.removeAttribute('style');
|
|
8008
|
-
}
|
|
8009
|
-
this.youtubePiPOriginalParent.appendChild(playerWrapper);
|
|
8010
|
-
}
|
|
8011
|
-
this.youtubePiPContainer.remove();
|
|
8012
|
-
this.youtubePiPContainer = null;
|
|
8013
|
-
this.youtubePiPOriginalParent = null;
|
|
8014
|
-
this.isYoutubePiPActive = false;
|
|
8015
|
-
this.showNotification('PiP mode closed');
|
|
8016
|
-
this.debugLog('YouTube PiP mode disabled');
|
|
8017
|
-
}
|
|
8018
|
-
catch (error) {
|
|
8019
|
-
this.debugError('Failed to exit YouTube PiP:', error);
|
|
8020
|
-
}
|
|
8021
|
-
}
|
|
8022
7983
|
setupCastContextSafe() {
|
|
8023
7984
|
try {
|
|
8024
7985
|
const castNs = window.cast;
|
|
@@ -8278,7 +8239,10 @@ export class WebPlayer extends BasePlayer {
|
|
|
8278
8239
|
</div>`;
|
|
8279
8240
|
}
|
|
8280
8241
|
if (this.settingsConfig.quality && this.availableQualities.length > 0) {
|
|
8281
|
-
const
|
|
8242
|
+
const qualityForDisplay = this.youtubePlayer && this.youtubePlayerReady && this.youtubeCurrentQuality
|
|
8243
|
+
? this.youtubeCurrentQuality.value
|
|
8244
|
+
: this.currentQuality;
|
|
8245
|
+
const currentQuality = this.availableQualities.find(q => q.value === qualityForDisplay);
|
|
8282
8246
|
const currentQualityLabel = currentQuality ? currentQuality.label : 'Auto';
|
|
8283
8247
|
menuHTML += `
|
|
8284
8248
|
<div class="uvf-accordion-item">
|
|
@@ -8296,7 +8260,10 @@ export class WebPlayer extends BasePlayer {
|
|
|
8296
8260
|
</div>
|
|
8297
8261
|
<div class="uvf-accordion-content" data-section="quality">`;
|
|
8298
8262
|
this.availableQualities.forEach(quality => {
|
|
8299
|
-
const
|
|
8263
|
+
const qualityValue = this.youtubePlayer && this.youtubePlayerReady && this.youtubeCurrentQuality
|
|
8264
|
+
? this.youtubeCurrentQuality.value
|
|
8265
|
+
: this.currentQuality;
|
|
8266
|
+
const isActive = quality.value === qualityValue ? 'active' : '';
|
|
8300
8267
|
const isPremium = this.isQualityPremium(quality);
|
|
8301
8268
|
const isLocked = isPremium && !this.isPremiumUser();
|
|
8302
8269
|
const qualityHeight = quality.height || 0;
|
|
@@ -8348,7 +8315,15 @@ export class WebPlayer extends BasePlayer {
|
|
|
8348
8315
|
detectAvailableQualities() {
|
|
8349
8316
|
this.availableQualities = [{ value: 'auto', label: 'Auto' }];
|
|
8350
8317
|
let detectedQualities = [];
|
|
8351
|
-
if (this.
|
|
8318
|
+
if (this.youtubePlayer && this.youtubePlayerReady && this.youtubeAvailableQualities.length > 0) {
|
|
8319
|
+
detectedQualities = this.youtubeAvailableQualities.map(q => ({
|
|
8320
|
+
value: q.value,
|
|
8321
|
+
label: q.label,
|
|
8322
|
+
height: q.height
|
|
8323
|
+
}));
|
|
8324
|
+
this.debugLog('Using YouTube qualities:', detectedQualities);
|
|
8325
|
+
}
|
|
8326
|
+
else if (this.hls && this.hls.levels) {
|
|
8352
8327
|
this.hls.levels.forEach((level, index) => {
|
|
8353
8328
|
if (level.height) {
|
|
8354
8329
|
detectedQualities.push({
|
|
@@ -8593,6 +8568,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
8593
8568
|
}
|
|
8594
8569
|
setQualityFromSettings(quality) {
|
|
8595
8570
|
this.currentQuality = quality;
|
|
8571
|
+
if (this.youtubePlayer && this.youtubePlayerReady) {
|
|
8572
|
+
this.setYouTubeQuality(quality);
|
|
8573
|
+
this.debugLog(`YouTube quality set to ${quality}`);
|
|
8574
|
+
return;
|
|
8575
|
+
}
|
|
8596
8576
|
if (quality === 'auto') {
|
|
8597
8577
|
if (this.hls) {
|
|
8598
8578
|
if (this.qualityFilter) {
|