@jxstjh/jhvideo
Version:
HTML5 jhvideo base on MPEG2-TS Stream Player
207 lines • 6.41 kB
JavaScript
import { Decoder, tools, Reader } from './EBML.js';
// Generate four random hex digits.
function S4() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
;
// Generate a pseudo-GUID by concatenating random hexadecimal.
export var guid = function () {
return (S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4());
};
// 开启横屏
function setOrientation() {
if ("orientation" in screen) {
screen.orientation.lock("landscape-primary");
}
}
// 关闭横屏
function unsetOrientation() {
if ("orientation" in screen) {
screen.orientation.lock("portrait-primary");
}
}
// 全屏工具方法
export var openFullscreen = function (element, isMobile) {
if (element.requestFullscreen) {
element.requestFullscreen();
isMobile && setOrientation();
return;
}
else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
isMobile && setOrientation();
return;
}
else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
isMobile && setOrientation();
return;
}
else if (element.webkitRequestFullscreen) {
element.webkitRequestFullScreen();
isMobile && setOrientation();
return;
}
};
//退出全屏方法
export var exitFullScreen = function (isMobile) {
if (document.exitFullscreen) {
document.exitFullscreen();
isMobile && unsetOrientation();
return;
}
else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
isMobile && unsetOrientation();
return;
}
else if (document.msExitFullscreen) {
document.msExiFullscreen();
isMobile && unsetOrientation();
return;
}
else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
isMobile && unsetOrientation();
return;
}
else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
isMobile && unsetOrientation();
return;
}
};
export var filterAisleIdChart = function (aisleId) {
var arr = aisleId.split('#');
if (arr.length > 1) {
return arr[0];
}
else {
return aisleId;
}
};
export var replaceStreamNO = function (channel, streamNo) {
streamNo = Number(streamNo);
channel = String(channel);
var reg = new RegExp('#[0-9]');
var metched = reg.test(channel);
if (metched) {
return channel.replace(reg, "#".concat(streamNo));
}
else {
return channel + "#".concat(streamNo);
}
};
// 获取当前格式化时间字符串
export var getNowDate = function () {
var date = new Date();
var Y = date.getFullYear();
var M = date.getMonth() + 1;
var D = date.getDate();
M = M < 10 ? "0".concat(M) : M;
D = D < 10 ? "0".concat(D) : D;
var H = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
return "".concat(Y).concat(M).concat(D).concat(H).concat(m).concat(s);
};
// 获取当前格式化时间字符串
export var getDateStrBySize = function (data, size) {
var date = new Date(data);
var Y = date.getFullYear();
var M = date.getMonth() + 1;
var D = date.getDate();
M = M < 10 ? "0".concat(M) : M;
D = D < 10 ? "0".concat(D) : D;
var H = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
H = H < 10 ? "0".concat(H) : H;
m = m < 10 ? "0".concat(m) : m;
s = s < 10 ? "0".concat(s) : s;
switch (size) {
case 'xs':
return "".concat(H, ":").concat(m);
case 'sm':
return "".concat(H, ":").concat(m);
case 'md':
return "".concat(M, "-").concat(D, " ").concat(H, ":").concat(m);
case 'lg':
return "".concat(Y, "-").concat(M, "-").concat(D, " ").concat(H, ":").concat(m);
default:
}
};
export var formatStrDate = function (data) {
var d = new Date(data);
var Y = d.getFullYear();
var M = d.getMonth() + 1;
var D = d.getDate();
M = M < 10 ? "0".concat(M) : M;
D = D < 10 ? "0".concat(D) : D;
var H = d.getHours();
var m = d.getMinutes();
var s = d.getSeconds();
H = H < 10 ? "0".concat(H) : H;
m = m < 10 ? "0".concat(m) : m;
s = s < 10 ? "0".concat(s) : s;
return "".concat(Y, "-").concat(M, "-").concat(D, " ").concat(H, ":").concat(m, ":").concat(s, ".000");
};
// 时间轴循环方法
export var throttle = function (func, wait, opts) {
if (wait === void 0) { wait = 16; }
if (opts === void 0) { opts = { noStart: false, noEnd: false }; }
var context, args, result;
var timeout = null;
var previous = 0;
var later = function () {
previous = opts.noStart ? 0 : +new Date();
timeout = null;
result = func.apply(context, args);
if (!timeout) {
context = args = null;
}
};
return function () {
var now = +new Date();
if (!previous && opts.noStart) {
previous = now;
}
var remaining = wait - (now - previous);
context = this;
args = arguments;
if (remaining <= 0 || remaining > wait) {
clearTimeout(timeout);
timeout = null;
previous = now;
result = func.apply(context, args);
if (!timeout) {
context = args = null;
}
}
else if (!timeout && !opts.noEnd) {
timeout = setTimeout(later, remaining);
}
return result;
};
};
export function getSeekableBlob(inputBlob, mimeType, callback) {
var reader = new Reader();
var decoder = new Decoder();
var tool = tools;
var fileReader = new FileReader();
fileReader.onload = function (e) {
var ebmlElms = decoder.decode(this.result);
ebmlElms.forEach(function (element) {
reader.read(element);
});
reader.stop();
var refinedMetadataBuf = tool.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues);
var body = this.result.slice(reader.metadataSize);
var newBlob = new Blob([refinedMetadataBuf, body], {
type: mimeType
});
callback(newBlob);
};
fileReader.readAsArrayBuffer(inputBlob);
}
//# sourceMappingURL=utils.js.map