123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- function getBrowser() {
- const UserAgent = window.navigator.userAgent.toLowerCase() || '';
- let browserInfo = {
- type: '',
- version: ''
- };
- var browserArray = {
- IE: window.ActiveXObject || "ActiveXObject" in window, // IE
- Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器
- Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器
- Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器
- Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器
- Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器
- QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器
- WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器
- };
- // console.log(browserArray)
- for (let i in browserArray) {
- if (browserArray[i]) {
- let versions = '';
- if (i === 'IE') {
- const versionArray = UserAgent.match(/(msie\s|trident.*rv:)([\w.]+)/)
- if (versionArray && versionArray.length > 2) {
- versions = UserAgent.match(/(msie\s|trident.*rv:)([\w.]+)/)[2];
- }
- } else if (i === 'Chrome') {
- for (let mt in navigator.mimeTypes) {
- //检测是否是360浏览器(测试只有pc端的360才起作用)
- if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {
- i = '360';
- }
- }
- const versionArray = UserAgent.match(/chrome\/([\d.]+)/);
- if (versionArray && versionArray.length > 1) {
- versions = versionArray[1];
- }
- } else if (i === 'Firefox') {
- const versionArray = UserAgent.match(/firefox\/([\d.]+)/);
- if (versionArray && versionArray.length > 1) {
- versions = versionArray[1];
- }
- } else if (i === 'Opera') {
- const versionArray = UserAgent.match(/opera\/([\d.]+)/);
- if (versionArray && versionArray.length > 1) {
- versions = versionArray[1];
- }
- } else if (i === 'Safari') {
- const versionArray = UserAgent.match(/version\/([\d.]+)/);
- if (versionArray && versionArray.length > 1) {
- versions = versionArray[1];
- }
- } else if (i === 'Edge') {
- const versionArray = UserAgent.match(/edge\/([\d.]+)/);
- if (versionArray && versionArray.length > 1) {
- versions = versionArray[1];
- }
- } else if (i === 'QQBrowser') {
- const versionArray = UserAgent.match(/qqbrowser\/([\d.]+)/);
- if (versionArray && versionArray.length > 1) {
- versions = versionArray[1];
- }
- }
- browserInfo.type = i;
- browserInfo.version = parseInt(versions);
- }
- }
- return browserInfo;
- }
- function checkSupportMSEHevc() {
- return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="hev1.1.6.L123.b0"');
- }
- function checkSupportMSEH264() {
- return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.64002A"');
- }
- function checkSupportWCSHevc() {
- const browserInfo = getBrowser();
- return browserInfo.type.toLowerCase() === 'chrome' && browserInfo.version >= 107 && (location.protocol === 'https:' || location.hostname === 'localhost');
- }
- function checkSupportWCS() {
- return "VideoEncoder" in window;
- }
- function checkSupportWasm() {
- try {
- if (typeof window.WebAssembly === 'object' && typeof window.WebAssembly.instantiate === 'function') {
- const module = new window.WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));
- if (module instanceof window.WebAssembly.Module) {
- return new window.WebAssembly.Instance(module) instanceof window.WebAssembly.Instance;
- }
- }
- return false;
- } catch (e) {
- return false;
- }
- }
- function checkSupportSIMD() {
- return WebAssembly && WebAssembly.validate(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11]));
- }
- function supportSharedArrayBuffer() {
- try {
- new SharedArrayBuffer(1);
- return true;
- } catch (e) {
- return false;
- }
- }
- let support = document.getElementById('mseSupport');
- let notSupport = document.getElementById('mseNotSupport');
- if (support && notSupport) {
- if (checkSupportMSEHevc()) {
- support.style.display = 'inline-block'
- } else {
- notSupport.style.display = 'inline-block'
- }
- }
- let supportH264 = document.getElementById('mseSupport264');
- let notSupportH264 = document.getElementById('mseNotSupport264');
- if (supportH264 && notSupportH264) {
- if (checkSupportMSEH264()) {
- supportH264.style.display = 'inline-block'
- } else {
- notSupportH264.style.display = 'inline-block'
- }
- }
- let supportWcsHevc = document.getElementById('wcsSupport');
- let notSupportWcsHevc = document.getElementById('wcsNotSupport');
- if (supportWcsHevc && notSupportWcsHevc) {
- if (checkSupportWCSHevc()) {
- supportWcsHevc.style.display = 'inline-block';
- } else {
- notSupportWcsHevc.style.display = 'inline-block'
- }
- }
- let supportWcs = document.getElementById('wcsSupport264');
- let notSupportWcs = document.getElementById('wcsNotSupport264');
- if (supportWcs && notSupportWcs) {
- if (checkSupportWCS()) {
- supportWcs.style.display = 'inline-block';
- } else {
- notSupportWcs.style.display = 'inline-block'
- }
- }
- let wasmSupport = document.getElementById('wasmSupport');
- let wasmNotSupport = document.getElementById('wasmNotSupport');
- if (wasmSupport && wasmNotSupport) {
- if (checkSupportWasm()) {
- wasmSupport.style.display = 'inline-block';
- } else {
- wasmNotSupport.style.display = 'inline-block';
- }
- }
- let supportSimd = document.getElementById('simdSupport');
- let notSupportSimd = document.getElementById('simdNotSupport');
- if (supportSimd && notSupportSimd) {
- if (checkSupportSIMD()) {
- supportSimd.style.display = 'inline-block';
- } else {
- notSupportSimd.style.display = 'inline-block'
- }
- }
- let supportSimdMtSupport = document.getElementById('simdMtSupport');
- var notSupportSimdMtSupport = document.getElementById('simdMtNotSupport');
- if (supportSimdMtSupport) {
- if (supportSharedArrayBuffer()) {
- supportSimdMtSupport.style.display = 'inline-block';
- } else {
- notSupportSimdMtSupport.style.display = 'inline-block';
- }
- }
- function isMobile() {
- return (/iphone|ipad|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));
- }
- function isPad() {
- return (/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()));
- }
- const useVconsole = isMobile() || isPad()
- if (useVconsole && window.VConsole) {
- new window.VConsole();
- }
|