UNPKG

unified-video-framework

Version:

Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more

36 lines (33 loc) 1.27 kB
import { KEY_SYSTEMS, DRMCapabilities } from '../types/DRMTypes'; export class BrowserDetector { static async detectCapabilities(): Promise<DRMCapabilities> { const caps: DRMCapabilities = { widevine: false, fairplay: false, playready: false }; if (typeof navigator === 'undefined' || !navigator.requestMediaKeySystemAccess) { return caps; } const basicConfig: MediaKeySystemConfiguration[] = [{ initDataTypes: ['cenc'], videoCapabilities: [{ contentType: 'video/mp4; codecs="avc1.42E01E"' }], }]; const checks: Array<[keyof DRMCapabilities, string]> = [ ['widevine', KEY_SYSTEMS.WIDEVINE], ['playready', KEY_SYSTEMS.PLAYREADY], ]; for (const [key, system] of checks) { try { await navigator.requestMediaKeySystemAccess(system, basicConfig); caps[key] = true; } catch { /* not supported */ } } // FairPlay detection via WebKit if (typeof (window as any).WebKitMediaKeys !== 'undefined') { caps.fairplay = true; } return caps; } static isSafari(): boolean { if (typeof navigator === 'undefined') return false; const ua = navigator.userAgent; return /Safari/.test(ua) && !/Chrome/.test(ua); } }