unified-video-framework 1.4.419 → 1.4.421
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 +1 -1
- package/packages/web/dist/WebPlayer.d.ts +2 -0
- package/packages/web/dist/WebPlayer.d.ts.map +1 -1
- package/packages/web/dist/WebPlayer.js +35 -49
- package/packages/web/dist/WebPlayer.js.map +1 -1
- package/packages/web/dist/drm/DRMManager.d.ts.map +1 -1
- package/packages/web/dist/drm/DRMManager.js +3 -0
- package/packages/web/dist/drm/DRMManager.js.map +1 -1
- package/packages/web/dist/drm/systems/WidevineDRM.d.ts.map +1 -1
- package/packages/web/dist/drm/systems/WidevineDRM.js +18 -1
- package/packages/web/dist/drm/systems/WidevineDRM.js.map +1 -1
- package/packages/web/dist/drm/types/DRMTypes.d.ts +1 -0
- package/packages/web/dist/drm/types/DRMTypes.d.ts.map +1 -1
- package/packages/web/dist/drm/types/DRMTypes.js +1 -0
- package/packages/web/dist/drm/types/DRMTypes.js.map +1 -1
- package/packages/web/src/WebPlayer.ts +46 -63
- package/packages/web/src/drm/DRMManager.ts +9 -0
- package/packages/web/src/drm/systems/WidevineDRM.ts +21 -1
- package/packages/web/src/drm/types/DRMTypes.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DRMManager.d.ts","sourceRoot":"","sources":["../../src/drm/DRMManager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAqB,aAAa,EAA2C,MAAM,kBAAkB,CAAC;AAS7G,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,KAAK,CAAkB;gBAEnB,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAE,OAAe;IAU/E,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"DRMManager.d.ts","sourceRoot":"","sources":["../../src/drm/DRMManager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAqB,aAAa,EAA2C,MAAM,kBAAkB,CAAC;AAS7G,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,KAAK,CAAkB;gBAEnB,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAE,OAAe;IAU/E,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAmE1C,YAAY,IAAI,GAAG;IAWnB,qBAAqB,IAAI,GAAG;IAWtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,GAAG;CAKZ"}
|
|
@@ -18,6 +18,9 @@ export class DRMManager {
|
|
|
18
18
|
async initialize() {
|
|
19
19
|
try {
|
|
20
20
|
this.log('Initializing DRM system...');
|
|
21
|
+
if (typeof window !== 'undefined' && !window.isSecureContext) {
|
|
22
|
+
throw DRMErrorHandler.createError(DRMErrorCode.SECURE_CONTEXT_REQUIRED, 'DRM requires a secure context (HTTPS or localhost). Please ensure your site is running over HTTPS.', true);
|
|
23
|
+
}
|
|
21
24
|
const capabilities = await this.browserDetector.detectCapabilities();
|
|
22
25
|
this.log('Browser DRM capabilities:', capabilities);
|
|
23
26
|
const drmType = this.selectDRMType(capabilities);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DRMManager.js","sourceRoot":"","sources":["../../src/drm/DRMManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DRMManager.js","sourceRoot":"","sources":["../../src/drm/DRMManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidevineDRM.d.ts","sourceRoot":"","sources":["../../../src/drm/systems/WidevineDRM.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,qBAAa,WAAY,SAAQ,OAAO;IAChC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BjC,YAAY,IAAI,MAAM;IAItB,YAAY,IAAI,GAAG;
|
|
1
|
+
{"version":3,"file":"WidevineDRM.d.ts","sourceRoot":"","sources":["../../../src/drm/systems/WidevineDRM.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,qBAAa,WAAY,SAAQ,OAAO;IAChC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BjC,YAAY,IAAI,MAAM;IAItB,YAAY,IAAI,GAAG;IAmCnB,qBAAqB,IAAI,GAAG;IAsB5B,OAAO,CAAC,yBAAyB;CAsBlC"}
|
|
@@ -21,15 +21,32 @@ export class WidevineDRM extends BaseDRM {
|
|
|
21
21
|
}
|
|
22
22
|
getHLSConfig() {
|
|
23
23
|
this.log('Generating HLS.js config for Widevine');
|
|
24
|
+
const licenseUrl = this.config.licenseUrl || this.config.widevineOptions?.licenseUrl;
|
|
24
25
|
return {
|
|
25
26
|
emeEnabled: true,
|
|
26
27
|
drmSystems: {
|
|
27
28
|
[this.getKeySystem()]: {
|
|
28
|
-
licenseUrl:
|
|
29
|
+
licenseUrl: licenseUrl,
|
|
29
30
|
serverCertificate: this.config.widevineOptions?.serverCertificate,
|
|
30
31
|
},
|
|
31
32
|
},
|
|
32
33
|
requestMediaKeySystemAccessFunc: navigator.requestMediaKeySystemAccess.bind(navigator),
|
|
34
|
+
licenseRequestCallback: (type, data) => {
|
|
35
|
+
this.log(`HLS.js license request callback: ${type}`);
|
|
36
|
+
if (!licenseUrl) {
|
|
37
|
+
return Promise.reject(new Error('Widevine license URL not provided'));
|
|
38
|
+
}
|
|
39
|
+
return this.licenseHandler.requestLicense({
|
|
40
|
+
url: licenseUrl,
|
|
41
|
+
method: 'POST',
|
|
42
|
+
headers: {
|
|
43
|
+
'Content-Type': 'application/octet-stream',
|
|
44
|
+
...this.config.headers,
|
|
45
|
+
},
|
|
46
|
+
body: data,
|
|
47
|
+
responseType: 'arraybuffer',
|
|
48
|
+
}).then(response => response.license);
|
|
49
|
+
}
|
|
33
50
|
};
|
|
34
51
|
}
|
|
35
52
|
getDashProtectionData() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidevineDRM.js","sourceRoot":"","sources":["../../../src/drm/systems/WidevineDRM.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,OAAO,WAAY,SAAQ,OAAO;IACtC,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAIzC,IAAI;YACF,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,2BAA2B,CACjE,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,yBAAyB,EAAE,CACjC,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG,MAAM,eAAe,CAAC,eAAe,EAAE,CAAC;SAK1D;QAAC,OAAO,KAAU,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,eAAe,CAAC,WAAW,CAC/B,YAAY,CAAC,wBAAwB,EACrC,sCAAsC,EACtC,IAAI,EACJ,KAAK,CACN,CAAC;SACH;QAED,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACvC,CAAC;IAED,YAAY;QACV,OAAO,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY;QACV,IAAI,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAElD,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE;gBACV,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;oBACrB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"WidevineDRM.js","sourceRoot":"","sources":["../../../src/drm/systems/WidevineDRM.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,6 +53,7 @@ export declare enum DRMErrorCode {
|
|
|
53
53
|
LICENSE_INVALID = "DRM_LICENSE_INVALID",
|
|
54
54
|
CONFIGURATION_ERROR = "DRM_CONFIGURATION_ERROR",
|
|
55
55
|
NETWORK_ERROR = "DRM_NETWORK_ERROR",
|
|
56
|
+
SECURE_CONTEXT_REQUIRED = "DRM_SECURE_CONTEXT_REQUIRED",
|
|
56
57
|
TIMEOUT = "DRM_TIMEOUT"
|
|
57
58
|
}
|
|
58
59
|
export declare const KEY_SYSTEMS: Record<DRMType, string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DRMTypes.d.ts","sourceRoot":"","sources":["../../../src/drm/types/DRMTypes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAI9D,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAElD,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAGxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,WAAW,CAAC,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAGF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B;AAGD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,YAAY,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB;AAGD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;CACtB;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAGD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED,oBAAY,YAAY;IACtB,mBAAmB,4BAA4B;IAC/C,uBAAuB,gCAAgC;IACvD,sBAAsB,+BAA+B;IACrD,wBAAwB,iCAAiC;IACzD,0BAA0B,mCAAmC;IAC7D,uBAAuB,gCAAgC;IACvD,eAAe,wBAAwB;IACvC,mBAAmB,4BAA4B;IAC/C,aAAa,sBAAsB;IACnC,OAAO,gBAAgB;CACxB;AAGD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAKjD,CAAC"}
|
|
1
|
+
{"version":3,"file":"DRMTypes.d.ts","sourceRoot":"","sources":["../../../src/drm/types/DRMTypes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAI9D,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAElD,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAGxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,WAAW,CAAC,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAGF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B;AAGD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,YAAY,EAAE,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB;AAGD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;CACtB;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAGD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED,oBAAY,YAAY;IACtB,mBAAmB,4BAA4B;IAC/C,uBAAuB,gCAAgC;IACvD,sBAAsB,+BAA+B;IACrD,wBAAwB,iCAAiC;IACzD,0BAA0B,mCAAmC;IAC7D,uBAAuB,gCAAgC;IACvD,eAAe,wBAAwB;IACvC,mBAAmB,4BAA4B;IAC/C,aAAa,sBAAsB;IACnC,uBAAuB,gCAAgC;IACvD,OAAO,gBAAgB;CACxB;AAGD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAKjD,CAAC"}
|
|
@@ -10,6 +10,7 @@ export var DRMErrorCode;
|
|
|
10
10
|
DRMErrorCode["LICENSE_INVALID"] = "DRM_LICENSE_INVALID";
|
|
11
11
|
DRMErrorCode["CONFIGURATION_ERROR"] = "DRM_CONFIGURATION_ERROR";
|
|
12
12
|
DRMErrorCode["NETWORK_ERROR"] = "DRM_NETWORK_ERROR";
|
|
13
|
+
DRMErrorCode["SECURE_CONTEXT_REQUIRED"] = "DRM_SECURE_CONTEXT_REQUIRED";
|
|
13
14
|
DRMErrorCode["TIMEOUT"] = "DRM_TIMEOUT";
|
|
14
15
|
})(DRMErrorCode || (DRMErrorCode = {}));
|
|
15
16
|
export const KEY_SYSTEMS = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DRMTypes.js","sourceRoot":"","sources":["../../../src/drm/types/DRMTypes.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAkE7D,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"DRMTypes.js","sourceRoot":"","sources":["../../../src/drm/types/DRMTypes.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAkE7D,MAAM,CAAN,IAAY,YAYX;AAZD,WAAY,YAAY;IACtB,+DAA+C,CAAA;IAC/C,uEAAuD,CAAA;IACvD,qEAAqD,CAAA;IACrD,yEAAyD,CAAA;IACzD,6EAA6D,CAAA;IAC7D,uEAAuD,CAAA;IACvD,uDAAuC,CAAA;IACvC,+DAA+C,CAAA;IAC/C,mDAAmC,CAAA;IACnC,uEAAuD,CAAA;IACvD,uCAAuB,CAAA;AACzB,CAAC,EAZW,YAAY,KAAZ,YAAY,QAYvB;AAGD,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,oBAAoB,CAAC;IAC9C,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,yBAAyB,EAAE,wCAAwC,CAAC;IAC9F,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,mBAAmB,EAAE,eAAe,CAAC;IAC9D,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,CAAC;CACtE,CAAC"}
|
|
@@ -146,6 +146,7 @@ export class WebPlayer extends BasePlayer {
|
|
|
146
146
|
private hasAppliedStartTime: boolean = false;
|
|
147
147
|
private coreChapterManager: CoreChapterManager | null = null;
|
|
148
148
|
private chapterConfig: ChapterConfig = { enabled: false };
|
|
149
|
+
private _drmManager: any | null = null;
|
|
149
150
|
|
|
150
151
|
// Quality filter
|
|
151
152
|
private qualityFilter: any = null;
|
|
@@ -747,10 +748,45 @@ export class WebPlayer extends BasePlayer {
|
|
|
747
748
|
}
|
|
748
749
|
}
|
|
749
750
|
|
|
751
|
+
/**
|
|
752
|
+
* Initialize DRM if configured
|
|
753
|
+
*/
|
|
754
|
+
private async initializeDRM(): Promise<void> {
|
|
755
|
+
if (!this.source?.drm) {
|
|
756
|
+
return;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
try {
|
|
760
|
+
this.debugLog('🔍 Initializing universal DRM manager...');
|
|
761
|
+
const { DRMManager } = await import('./drm/DRMManager');
|
|
762
|
+
this._drmManager = new DRMManager(this.video!, this.source.drm as any, this.config.debug);
|
|
763
|
+
|
|
764
|
+
const initResult = await this._drmManager.initialize();
|
|
765
|
+
|
|
766
|
+
if (!initResult.success) {
|
|
767
|
+
throw initResult.error || new Error('DRM initialization failed');
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
this.debugLog(`✅ Universal DRM initialized: ${initResult.drmType} (${initResult.keySystem})`);
|
|
771
|
+
} catch (error: any) {
|
|
772
|
+
this.handleError({
|
|
773
|
+
code: 'DRM_ERROR',
|
|
774
|
+
message: `Failed to initialize DRM: ${error.message || error}`,
|
|
775
|
+
type: 'drm',
|
|
776
|
+
fatal: true,
|
|
777
|
+
details: error
|
|
778
|
+
});
|
|
779
|
+
throw error;
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
|
|
750
783
|
/**
|
|
751
784
|
* Load a video source (main or fallback)
|
|
752
785
|
*/
|
|
753
786
|
private async loadVideoSource(url: string, sourceType: string, source: any): Promise<void> {
|
|
787
|
+
// Initialize DRM if present
|
|
788
|
+
await this.initializeDRM();
|
|
789
|
+
|
|
754
790
|
switch (sourceType) {
|
|
755
791
|
case 'hls':
|
|
756
792
|
await this.loadHLS(url);
|
|
@@ -1019,38 +1055,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
1019
1055
|
this.debugLog(`⏩ HLS startPosition set to: ${this.config.startTime}s (continue watching)`);
|
|
1020
1056
|
}
|
|
1021
1057
|
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
const drmManager = new DRMManager(this.video!, this.source.drm as any, this.config.debug);
|
|
1028
|
-
|
|
1029
|
-
this.debugLog('Initializing DRM for HLS...');
|
|
1030
|
-
const initResult = await drmManager.initialize();
|
|
1031
|
-
|
|
1032
|
-
if (!initResult.success) {
|
|
1033
|
-
throw initResult.error || new Error('DRM initialization failed');
|
|
1034
|
-
}
|
|
1035
|
-
|
|
1036
|
-
// Merge DRM config into HLS config
|
|
1037
|
-
const drmConfig = drmManager.getHLSConfig();
|
|
1038
|
-
Object.assign(hlsConfig, drmConfig);
|
|
1039
|
-
|
|
1040
|
-
this.debugLog(`✅ HLS DRM configured: ${initResult.drmType} (${initResult.keySystem})`);
|
|
1041
|
-
|
|
1042
|
-
// Store for cleanup
|
|
1043
|
-
(this as any)._drmManager = drmManager;
|
|
1044
|
-
} catch (error: any) {
|
|
1045
|
-
this.handleError({
|
|
1046
|
-
code: 'DRM_ERROR',
|
|
1047
|
-
message: `Failed to initialize DRM: ${error.message || error}`,
|
|
1048
|
-
type: 'drm',
|
|
1049
|
-
fatal: true,
|
|
1050
|
-
details: error
|
|
1051
|
-
});
|
|
1052
|
-
throw error;
|
|
1053
|
-
}
|
|
1058
|
+
// Use centrally initialized DRM if present
|
|
1059
|
+
if (this._drmManager) {
|
|
1060
|
+
const drmConfig = this._drmManager.getHLSConfig();
|
|
1061
|
+
Object.assign(hlsConfig, drmConfig);
|
|
1062
|
+
this.debugLog(`✅ HLS DRM integrated from universal manager`);
|
|
1054
1063
|
}
|
|
1055
1064
|
|
|
1056
1065
|
this.hls = new window.Hls(hlsConfig);
|
|
@@ -1142,37 +1151,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
1142
1151
|
// The seek will be applied at canplay event when stream is ready
|
|
1143
1152
|
}
|
|
1144
1153
|
|
|
1145
|
-
//
|
|
1146
|
-
if (this.
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
this.debugLog('Initializing DRM for DASH...');
|
|
1152
|
-
const initResult = await drmManager.initialize();
|
|
1153
|
-
|
|
1154
|
-
if (!initResult.success) {
|
|
1155
|
-
throw initResult.error || new Error('DRM initialization failed');
|
|
1156
|
-
}
|
|
1157
|
-
|
|
1158
|
-
// Set protection data for dash.js
|
|
1159
|
-
const protectionData = drmManager.getDashProtectionData();
|
|
1160
|
-
this.dash.setProtectionData(protectionData);
|
|
1161
|
-
|
|
1162
|
-
this.debugLog(`✅ DASH DRM configured: ${initResult.drmType} (${initResult.keySystem})`);
|
|
1163
|
-
|
|
1164
|
-
// Store for cleanup
|
|
1165
|
-
(this as any)._drmManager = drmManager;
|
|
1166
|
-
} catch (error: any) {
|
|
1167
|
-
this.handleError({
|
|
1168
|
-
code: 'DRM_ERROR',
|
|
1169
|
-
message: `Failed to initialize DRM: ${error.message || error}`,
|
|
1170
|
-
type: 'drm',
|
|
1171
|
-
fatal: true,
|
|
1172
|
-
details: error
|
|
1173
|
-
});
|
|
1174
|
-
throw error;
|
|
1175
|
-
}
|
|
1154
|
+
// Use centrally initialized DRM if present
|
|
1155
|
+
if (this._drmManager) {
|
|
1156
|
+
const protectionData = this._drmManager.getDashProtectionData();
|
|
1157
|
+
this.dash.setProtectionData(protectionData);
|
|
1158
|
+
this.debugLog(`✅ DASH DRM integrated from universal manager`);
|
|
1176
1159
|
}
|
|
1177
1160
|
|
|
1178
1161
|
this.dash.initialize(this.video, url, this.config.autoPlay);
|
|
@@ -36,6 +36,15 @@ export class DRMManager {
|
|
|
36
36
|
try {
|
|
37
37
|
this.log('Initializing DRM system...');
|
|
38
38
|
|
|
39
|
+
// Check for secure context - EME requires HTTPS or localhost
|
|
40
|
+
if (typeof window !== 'undefined' && !window.isSecureContext) {
|
|
41
|
+
throw DRMErrorHandler.createError(
|
|
42
|
+
DRMErrorCode.SECURE_CONTEXT_REQUIRED,
|
|
43
|
+
'DRM requires a secure context (HTTPS or localhost). Please ensure your site is running over HTTPS.',
|
|
44
|
+
true
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
39
48
|
// Detect browser capabilities
|
|
40
49
|
const capabilities = await this.browserDetector.detectCapabilities();
|
|
41
50
|
this.log('Browser DRM capabilities:', capabilities);
|
|
@@ -47,15 +47,35 @@ export class WidevineDRM extends BaseDRM {
|
|
|
47
47
|
getHLSConfig(): any {
|
|
48
48
|
this.log('Generating HLS.js config for Widevine');
|
|
49
49
|
|
|
50
|
+
const licenseUrl = this.config.licenseUrl || this.config.widevineOptions?.licenseUrl;
|
|
51
|
+
|
|
50
52
|
return {
|
|
51
53
|
emeEnabled: true,
|
|
52
54
|
drmSystems: {
|
|
53
55
|
[this.getKeySystem()]: {
|
|
54
|
-
licenseUrl:
|
|
56
|
+
licenseUrl: licenseUrl,
|
|
55
57
|
serverCertificate: this.config.widevineOptions?.serverCertificate,
|
|
56
58
|
},
|
|
57
59
|
},
|
|
58
60
|
requestMediaKeySystemAccessFunc: navigator.requestMediaKeySystemAccess.bind(navigator),
|
|
61
|
+
licenseRequestCallback: (type: string, data: ArrayBuffer): Promise<ArrayBuffer> => {
|
|
62
|
+
this.log(`HLS.js license request callback: ${type}`);
|
|
63
|
+
|
|
64
|
+
if (!licenseUrl) {
|
|
65
|
+
return Promise.reject(new Error('Widevine license URL not provided'));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return this.licenseHandler.requestLicense({
|
|
69
|
+
url: licenseUrl,
|
|
70
|
+
method: 'POST',
|
|
71
|
+
headers: {
|
|
72
|
+
'Content-Type': 'application/octet-stream',
|
|
73
|
+
...this.config.headers,
|
|
74
|
+
},
|
|
75
|
+
body: data,
|
|
76
|
+
responseType: 'arraybuffer',
|
|
77
|
+
}).then(response => response.license);
|
|
78
|
+
}
|
|
59
79
|
};
|
|
60
80
|
}
|
|
61
81
|
|