Last active
September 24, 2021 08:49
-
-
Save serdaraglamis/a09a92ef24ea6c0cd9c2e14e19f32c95 to your computer and use it in GitHub Desktop.
TEST EME ON BROWSER
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// EME Check | |
var keySystems = { | |
widevine: ['com.widevine.alpha'], | |
playready: ['com.microsoft.playready', 'com.youtube.playready'], | |
clearkey: ['webkit-org.w3.clearkey', 'org.w3.clearkey'], | |
primetime: ['com.adobe.primetime', 'com.adobe.access'], | |
fairplay: ['com.apple.fairplay'] | |
}; | |
var keySystemsCount = (function () { | |
var count = 0; | |
for (keysys in keySystems) { | |
if (keySystems.hasOwnProperty(keysys)) { | |
count += keySystems[keysys].length; | |
} | |
} | |
return count; | |
})(); | |
var testVideoElement = document.createElement('video'); | |
var supportedSystems = []; | |
var unsupportedSystems = []; | |
var supportsEncryptedMediaExtension = function () { | |
if (!testVideoElement.mediaKeys) { | |
if (window.navigator.requestMediaKeySystemAccess) { | |
if (typeof window.navigator.requestMediaKeySystemAccess === 'function') { | |
console.log('found default EME'); | |
hasEME = true; | |
var isKeySystemSupported = function (keySystem) { | |
var config = [{ | |
"initDataTypes": ["cenc"], | |
"audioCapabilities": [{ | |
"contentType": "audio/mp4;codecs=\"mp4a.40.2\"" | |
}], | |
"videoCapabilities": [{ | |
"contentType": "video/mp4;codecs=\"avc1.42E01E\"" | |
}] | |
}]; | |
if (window.navigator.requestMediaKeySystemAccess) { | |
window.navigator.requestMediaKeySystemAccess(keySystem, config).then(function (keySystemAccess) { | |
supportedSystems.push(keySystem); | |
}).catch(function () { | |
unsupportedSystems.push(keySystem); | |
}); | |
} | |
}; | |
var keysys, dummy, i; | |
for (keysys in keySystems) { | |
if (keySystems.hasOwnProperty(keysys)) { | |
for (dummy in keySystems[keysys]) { | |
isKeySystemSupported(keySystems[keysys][dummy]); | |
} | |
} | |
} | |
} | |
} else if (window.MSMediaKeys) { | |
if (typeof window.MSMediaKeys === 'function') { | |
console.log('found MS-EME'); | |
hasEME = true; | |
var keysys, dummy, i; | |
for (keysys in keySystems) { | |
if (keySystems.hasOwnProperty(keysys)) { | |
for (dummy in keySystems[keysys]) { | |
if (MSMediaKeys.isTypeSupported(keySystems[keysys][dummy])) { | |
supportedSystems.push(keySystems[keysys][dummy]); | |
} else { | |
unsupportedSystems.push(keySystems[keysys][dummy]); | |
} | |
} | |
} | |
} | |
} | |
} else if (testVideoElement.webkitGenerateKeyRequest) { | |
if (typeof testVideoElement.webkitGenerateKeyRequest === 'function') { | |
console.log('found WebKit EME'); | |
hasEME = true; | |
var keysys, dummy, i; | |
for (keysys in keySystems) { | |
if (keySystems.hasOwnProperty(keysys)) { | |
for (dummy in keySystems[keysys]) { | |
if (testVideoElement.canPlayType('video/mp4', keySystems[keysys][dummy])) { | |
supportedSystems.push(keySystems[keysys][dummy]); | |
} else { | |
unsupportedSystems.push(keySystems[keysys][dummy]); | |
} | |
} | |
} | |
} | |
} | |
} else { | |
console.log('no supported EME implementation found'); | |
hasEME = false; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment