ps-tcplayer
Version:
Tencent Cloud Player component with Vue2/Vue3 compatibility
1,281 lines (1,280 loc) • 532 kB
JavaScript
"undefined" != typeof window && function(e, t) {
"object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.Hls = t() : e.Hls = t()
}(this, (function() {
return function(e) {
var t = {};
function r(i) {
if (t[i])
return t[i].exports;
var a = t[i] = {
i: i,
l: !1,
exports: {}
};
return e[i].call(a.exports, a, a.exports, r),
a.l = !0,
a.exports
}
return r.m = e,
r.c = t,
r.d = function(e, t, i) {
r.o(e, t) || Object.defineProperty(e, t, {
enumerable: !0,
get: i
})
}
,
r.r = function(e) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
}),
Object.defineProperty(e, "__esModule", {
value: !0
})
}
,
r.t = function(e, t) {
if (1 & t && (e = r(e)),
8 & t)
return e;
if (4 & t && "object" == typeof e && e && e.__esModule)
return e;
var i = Object.create(null);
if (r.r(i),
Object.defineProperty(i, "default", {
enumerable: !0,
value: e
}),
2 & t && "string" != typeof e)
for (var a in e)
r.d(i, a, function(t) {
return e[t]
}
.bind(null, a));
return i
}
,
r.n = function(e) {
var t = e && e.__esModule ? function() {
return e.default
}
: function() {
return e
}
;
return r.d(t, "a", t),
t
}
,
r.o = function(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
}
,
r.p = "/dist/",
r(r.s = 14)
}([function(e, t, r) {
"use strict";
r.d(t, "a", (function() {
return d
}
)),
r.d(t, "b", (function() {
return c
}
));
var i = r(5);
function a() {}
var n = {
trace: a,
debug: a,
log: a,
warn: a,
info: a,
error: a
}
, s = n;
function o(e, t) {
return t = "[" + e + "] > " + t
}
var l = Object(i.a)();
function u(e) {
var t = l.console[e];
return t ? function() {
for (var r = arguments.length, i = new Array(r), a = 0; a < r; a++)
i[a] = arguments[a];
i[0] && (i[0] = o(e, i[0])),
t.apply(l.console, i)
}
: a
}
var d = function(e) {
if (l.console && !0 === e || "object" == typeof e) {
!function(e) {
for (var t = arguments.length, r = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++)
r[i - 1] = arguments[i];
r.forEach((function(t) {
s[t] = e[t] ? e[t].bind(e) : u(t)
}
))
}(e, "debug", "log", "info", "warn", "error");
try {
s.log()
} catch (e) {
s = n
}
} else
s = n
}
, c = s
}
, function(e, t, r) {
"use strict";
t.a = {
MEDIA_ATTACHING: "hlsMediaAttaching",
MEDIA_ATTACHED: "hlsMediaAttached",
MEDIA_DETACHING: "hlsMediaDetaching",
MEDIA_DETACHED: "hlsMediaDetached",
BUFFER_RESET: "hlsBufferReset",
BUFFER_CODECS: "hlsBufferCodecs",
BUFFER_CREATED: "hlsBufferCreated",
BUFFER_APPENDING: "hlsBufferAppending",
BUFFER_APPENDED: "hlsBufferAppended",
BUFFER_EOS: "hlsBufferEos",
BUFFER_FLUSHING: "hlsBufferFlushing",
BUFFER_FLUSHED: "hlsBufferFlushed",
MANIFEST_LOADING: "hlsManifestLoading",
MANIFEST_LOADED: "hlsManifestLoaded",
MANIFEST_PARSED: "hlsManifestParsed",
LEVEL_SWITCHING: "hlsLevelSwitching",
LEVEL_SWITCHED: "hlsLevelSwitched",
LEVEL_LOADING: "hlsLevelLoading",
LEVEL_LOADED: "hlsLevelLoaded",
LEVEL_UPDATED: "hlsLevelUpdated",
LEVEL_PTS_UPDATED: "hlsLevelPtsUpdated",
AUDIO_TRACKS_UPDATED: "hlsAudioTracksUpdated",
AUDIO_TRACK_SWITCHING: "hlsAudioTrackSwitching",
AUDIO_TRACK_SWITCHED: "hlsAudioTrackSwitched",
AUDIO_TRACK_LOADING: "hlsAudioTrackLoading",
AUDIO_TRACK_LOADED: "hlsAudioTrackLoaded",
SUBTITLE_TRACKS_UPDATED: "hlsSubtitleTracksUpdated",
SUBTITLE_TRACK_SWITCH: "hlsSubtitleTrackSwitch",
SUBTITLE_TRACK_LOADING: "hlsSubtitleTrackLoading",
SUBTITLE_TRACK_LOADED: "hlsSubtitleTrackLoaded",
SUBTITLE_FRAG_PROCESSED: "hlsSubtitleFragProcessed",
INIT_PTS_FOUND: "hlsInitPtsFound",
FRAG_LOADING: "hlsFragLoading",
FRAG_LOAD_PROGRESS: "hlsFragLoadProgress",
FRAG_LOAD_EMERGENCY_ABORTED: "hlsFragLoadEmergencyAborted",
FRAG_LOADED: "hlsFragLoaded",
FRAG_DECRYPTED: "hlsFragDecrypted",
FRAG_PARSING_INIT_SEGMENT: "hlsFragParsingInitSegment",
FRAG_PARSING_USERDATA: "hlsFragParsingUserdata",
FRAG_PARSING_METADATA: "hlsFragParsingMetadata",
FRAG_PARSING_DATA: "hlsFragParsingData",
FRAG_PARSED: "hlsFragParsed",
FRAG_BUFFERED: "hlsFragBuffered",
FRAG_CHANGED: "hlsFragChanged",
FPS_DROP: "hlsFpsDrop",
FPS_DROP_LEVEL_CAPPING: "hlsFpsDropLevelCapping",
ERROR: "hlsError",
DESTROYING: "hlsDestroying",
KEY_LOADING: "hlsKeyLoading",
KEY_LOADED: "hlsKeyLoaded",
STREAM_STATE_TRANSITION: "hlsStreamStateTransition",
LIVE_BACK_BUFFER_REACHED: "hlsLiveBackBufferReached"
}
}
, function(e, t, r) {
"use strict";
var i, a;
r.d(t, "b", (function() {
return i
}
)),
r.d(t, "a", (function() {
return a
}
)),
function(e) {
e.NETWORK_ERROR = "networkError",
e.MEDIA_ERROR = "mediaError",
e.KEY_SYSTEM_ERROR = "keySystemError",
e.MUX_ERROR = "muxError",
e.OTHER_ERROR = "otherError"
}(i || (i = {})),
function(e) {
e.KEY_SYSTEM_NO_KEYS = "keySystemNoKeys",
e.KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess",
e.KEY_SYSTEM_NO_SESSION = "keySystemNoSession",
e.KEY_SYSTEM_LICENSE_REQUEST_FAILED = "keySystemLicenseRequestFailed",
e.KEY_SYSTEM_NO_INIT_DATA = "keySystemNoInitData",
e.MANIFEST_LOAD_ERROR = "manifestLoadError",
e.MANIFEST_LOAD_TIMEOUT = "manifestLoadTimeOut",
e.MANIFEST_PARSING_ERROR = "manifestParsingError",
e.MANIFEST_INCOMPATIBLE_CODECS_ERROR = "manifestIncompatibleCodecsError",
e.LEVEL_LOAD_ERROR = "levelLoadError",
e.LEVEL_LOAD_TIMEOUT = "levelLoadTimeOut",
e.LEVEL_SWITCH_ERROR = "levelSwitchError",
e.AUDIO_TRACK_LOAD_ERROR = "audioTrackLoadError",
e.AUDIO_TRACK_LOAD_TIMEOUT = "audioTrackLoadTimeOut",
e.FRAG_LOAD_ERROR = "fragLoadError",
e.FRAG_LOAD_TIMEOUT = "fragLoadTimeOut",
e.FRAG_DECRYPT_ERROR = "fragDecryptError",
e.FRAG_PARSING_ERROR = "fragParsingError",
e.REMUX_ALLOC_ERROR = "remuxAllocError",
e.KEY_LOAD_ERROR = "keyLoadError",
e.KEY_LOAD_TIMEOUT = "keyLoadTimeOut",
e.BUFFER_ADD_CODEC_ERROR = "bufferAddCodecError",
e.BUFFER_APPEND_ERROR = "bufferAppendError",
e.BUFFER_APPENDING_ERROR = "bufferAppendingError",
e.BUFFER_STALLED_ERROR = "bufferStalledError",
e.BUFFER_FULL_ERROR = "bufferFullError",
e.BUFFER_SEEK_OVER_HOLE = "bufferSeekOverHole",
e.BUFFER_NUDGE_ON_STALL = "bufferNudgeOnStall",
e.INTERNAL_EXCEPTION = "internalException"
}(a || (a = {}))
}
, function(e, t, r) {
"use strict";
r.d(t, "a", (function() {
return i
}
));
var i = Number.isFinite || function(e) {
return "number" == typeof e && isFinite(e)
}
}
, function(e, t, r) {
"use strict";
r.d(t, "b", (function() {
return o
}
));
var i, a = r(5), n = function() {
function e() {}
return e.isHeader = function(e, t) {
return t + 10 <= e.length && 73 === e[t] && 68 === e[t + 1] && 51 === e[t + 2] && e[t + 3] < 255 && e[t + 4] < 255 && e[t + 6] < 128 && e[t + 7] < 128 && e[t + 8] < 128 && e[t + 9] < 128
}
,
e.isFooter = function(e, t) {
return t + 10 <= e.length && 51 === e[t] && 68 === e[t + 1] && 73 === e[t + 2] && e[t + 3] < 255 && e[t + 4] < 255 && e[t + 6] < 128 && e[t + 7] < 128 && e[t + 8] < 128 && e[t + 9] < 128
}
,
e.getID3Data = function(t, r) {
for (var i = r, a = 0; e.isHeader(t, r); ) {
a += 10,
a += e._readSize(t, r + 6),
e.isFooter(t, r + 10) && (a += 10),
r += a
}
if (a > 0)
return t.subarray(i, i + a)
}
,
e._readSize = function(e, t) {
var r = 0;
return r = (127 & e[t]) << 21,
r |= (127 & e[t + 1]) << 14,
r |= (127 & e[t + 2]) << 7,
r |= 127 & e[t + 3]
}
,
e.getTimeStamp = function(t) {
for (var r = e.getID3Frames(t), i = 0; i < r.length; i++) {
var a = r[i];
if (e.isTimeStampFrame(a))
return e._readTimeStamp(a)
}
}
,
e.isTimeStampFrame = function(e) {
return e && "PRIV" === e.key && "com.apple.streaming.transportStreamTimestamp" === e.info
}
,
e._getFrameData = function(t) {
var r = String.fromCharCode(t[0], t[1], t[2], t[3])
, i = e._readSize(t, 4);
return {
type: r,
size: i,
data: t.subarray(10, 10 + i)
}
}
,
e.getID3Frames = function(t) {
for (var r = 0, i = []; e.isHeader(t, r); ) {
for (var a = e._readSize(t, r + 6), n = (r += 10) + a; r + 8 < n; ) {
var s = e._getFrameData(t.subarray(r))
, o = e._decodeFrame(s);
o && i.push(o),
r += s.size + 10
}
e.isFooter(t, r) && (r += 10)
}
return i
}
,
e._decodeFrame = function(t) {
return "PRIV" === t.type ? e._decodePrivFrame(t) : "T" === t.type[0] ? e._decodeTextFrame(t) : "W" === t.type[0] ? e._decodeURLFrame(t) : void 0
}
,
e._readTimeStamp = function(e) {
if (8 === e.data.byteLength) {
var t = new Uint8Array(e.data)
, r = 1 & t[3]
, i = (t[4] << 23) + (t[5] << 15) + (t[6] << 7) + t[7];
return i /= 45,
r && (i += 47721858.84),
Math.round(i)
}
}
,
e._decodePrivFrame = function(t) {
if (!(t.size < 2)) {
var r = e._utf8ArrayToStr(t.data, !0)
, i = new Uint8Array(t.data.subarray(r.length + 1));
return {
key: t.type,
info: r,
data: i.buffer
}
}
}
,
e._decodeTextFrame = function(t) {
if (!(t.size < 2)) {
if ("TXXX" === t.type) {
var r = 1
, i = e._utf8ArrayToStr(t.data.subarray(r), !0);
r += i.length + 1;
var a = e._utf8ArrayToStr(t.data.subarray(r));
return {
key: t.type,
info: i,
data: a
}
}
var n = e._utf8ArrayToStr(t.data.subarray(1));
return {
key: t.type,
data: n
}
}
}
,
e._decodeURLFrame = function(t) {
if ("WXXX" === t.type) {
if (t.size < 2)
return;
var r = 1
, i = e._utf8ArrayToStr(t.data.subarray(r));
r += i.length + 1;
var a = e._utf8ArrayToStr(t.data.subarray(r));
return {
key: t.type,
info: i,
data: a
}
}
var n = e._utf8ArrayToStr(t.data);
return {
key: t.type,
data: n
}
}
,
e._utf8ArrayToStr = function(e, t) {
void 0 === t && (t = !1);
var r = s();
if (r) {
var i = r.decode(e);
if (t) {
var a = i.indexOf("\0");
return -1 !== a ? i.substring(0, a) : i
}
return i.replace(/\0/g, "")
}
for (var n, o, l, u = e.length, d = "", c = 0; c < u; ) {
if (0 === (n = e[c++]) && t)
return d;
if (0 !== n && 3 !== n)
switch (n >> 4) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
d += String.fromCharCode(n);
break;
case 12:
case 13:
o = e[c++],
d += String.fromCharCode((31 & n) << 6 | 63 & o);
break;
case 14:
o = e[c++],
l = e[c++],
d += String.fromCharCode((15 & n) << 12 | (63 & o) << 6 | (63 & l) << 0)
}
}
return d
}
,
e
}();
function s() {
var e = Object(a.a)();
return i || void 0 === e.TextDecoder || (i = new e.TextDecoder("utf-8")),
i
}
var o = n._utf8ArrayToStr;
t.a = n
}
, function(e, t, r) {
"use strict";
function i() {
return "undefined" == typeof window ? self : window
}
r.d(t, "a", (function() {
return i
}
))
}
, function(e, t, r) {
var i, a, n, s, o;
i = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/\?#]*\/)*.*?)??(;.*?)?(\?.*?)?(#.*?)?$/,
a = /^([^\/?#]*)(.*)$/,
n = /(?:\/|^)\.(?=\/)/g,
s = /(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g,
o = {
buildAbsoluteURL: function(e, t, r) {
if (r = r || {},
e = e.trim(),
!(t = t.trim())) {
if (!r.alwaysNormalize)
return e;
var i = o.parseURL(e);
if (!i)
throw new Error("Error trying to parse base URL.");
return i.path = o.normalizePath(i.path),
o.buildURLFromParts(i)
}
var n = o.parseURL(t);
if (!n)
throw new Error("Error trying to parse relative URL.");
if (n.scheme)
return r.alwaysNormalize ? (n.path = o.normalizePath(n.path),
o.buildURLFromParts(n)) : t;
var s = o.parseURL(e);
if (!s)
throw new Error("Error trying to parse base URL.");
if (!s.netLoc && s.path && "/" !== s.path[0]) {
var l = a.exec(s.path);
s.netLoc = l[1],
s.path = l[2]
}
s.netLoc && !s.path && (s.path = "/");
var u = {
scheme: s.scheme,
netLoc: n.netLoc,
path: null,
params: n.params,
query: n.query,
fragment: n.fragment
};
if (!n.netLoc && (u.netLoc = s.netLoc,
"/" !== n.path[0]))
if (n.path) {
var d = s.path
, c = d.substring(0, d.lastIndexOf("/") + 1) + n.path;
u.path = o.normalizePath(c)
} else
u.path = s.path,
n.params || (u.params = s.params,
n.query || (u.query = s.query));
return null === u.path && (u.path = r.alwaysNormalize ? o.normalizePath(n.path) : n.path),
o.buildURLFromParts(u)
},
parseURL: function(e) {
var t = i.exec(e);
return t ? {
scheme: t[1] || "",
netLoc: t[2] || "",
path: t[3] || "",
params: t[4] || "",
query: t[5] || "",
fragment: t[6] || ""
} : null
},
normalizePath: function(e) {
for (e = e.split("").reverse().join("").replace(n, ""); e.length !== (e = e.replace(s, "")).length; )
;
return e.split("").reverse().join("")
},
buildURLFromParts: function(e) {
return e.scheme + e.netLoc + e.path + e.params + e.query + e.fragment
}
},
e.exports = o
}
, function(e, t, r) {
"use strict";
var i = function() {
function e(e, t) {
this.subtle = e,
this.aesIV = t
}
return e.prototype.decrypt = function(e, t) {
return this.subtle.decrypt({
name: "AES-CBC",
iv: this.aesIV
}, t, e)
}
,
e
}()
, a = function() {
function e(e, t) {
this.subtle = e,
this.key = t
}
return e.prototype.expandKey = function() {
return this.subtle.importKey("raw", this.key, {
name: "AES-CBC"
}, !1, ["encrypt", "decrypt"])
}
,
e
}();
var n = function() {
function e() {
this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)],
this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)],
this.sBox = new Uint32Array(256),
this.invSBox = new Uint32Array(256),
this.key = new Uint32Array(0),
this.initTable()
}
var t = e.prototype;
return t.uint8ArrayToUint32Array_ = function(e) {
for (var t = new DataView(e), r = new Uint32Array(4), i = 0; i < 4; i++)
r[i] = t.getUint32(4 * i);
return r
}
,
t.initTable = function() {
var e = this.sBox
, t = this.invSBox
, r = this.subMix
, i = r[0]
, a = r[1]
, n = r[2]
, s = r[3]
, o = this.invSubMix
, l = o[0]
, u = o[1]
, d = o[2]
, c = o[3]
, h = new Uint32Array(256)
, f = 0
, g = 0
, p = 0;
for (p = 0; p < 256; p++)
h[p] = p < 128 ? p << 1 : p << 1 ^ 283;
for (p = 0; p < 256; p++) {
var v = g ^ g << 1 ^ g << 2 ^ g << 3 ^ g << 4;
v = v >>> 8 ^ 255 & v ^ 99,
e[f] = v,
t[v] = f;
var m = h[f]
, y = h[m]
, b = h[y]
, T = 257 * h[v] ^ 16843008 * v;
i[f] = T << 24 | T >>> 8,
a[f] = T << 16 | T >>> 16,
n[f] = T << 8 | T >>> 24,
s[f] = T,
T = 16843009 * b ^ 65537 * y ^ 257 * m ^ 16843008 * f,
l[v] = T << 24 | T >>> 8,
u[v] = T << 16 | T >>> 16,
d[v] = T << 8 | T >>> 24,
c[v] = T,
f ? (f = m ^ h[h[h[b ^ m]]],
g ^= h[h[g]]) : f = g = 1
}
}
,
t.expandKey = function(e) {
for (var t = this.uint8ArrayToUint32Array_(e), r = !0, i = 0; i < t.length && r; )
r = t[i] === this.key[i],
i++;
if (!r) {
this.key = t;
var a = this.keySize = t.length;
if (4 !== a && 6 !== a && 8 !== a)
throw new Error("Invalid aes key size=" + a);
var n, s, o, l, u = this.ksRows = 4 * (a + 6 + 1), d = this.keySchedule = new Uint32Array(u), c = this.invKeySchedule = new Uint32Array(u), h = this.sBox, f = this.rcon, g = this.invSubMix, p = g[0], v = g[1], m = g[2], y = g[3];
for (n = 0; n < u; n++)
n < a ? o = d[n] = t[n] : (l = o,
n % a == 0 ? (l = h[(l = l << 8 | l >>> 24) >>> 24] << 24 | h[l >>> 16 & 255] << 16 | h[l >>> 8 & 255] << 8 | h[255 & l],
l ^= f[n / a | 0] << 24) : a > 6 && n % a == 4 && (l = h[l >>> 24] << 24 | h[l >>> 16 & 255] << 16 | h[l >>> 8 & 255] << 8 | h[255 & l]),
d[n] = o = (d[n - a] ^ l) >>> 0);
for (s = 0; s < u; s++)
n = u - s,
l = 3 & s ? d[n] : d[n - 4],
c[s] = s < 4 || n <= 4 ? l : p[h[l >>> 24]] ^ v[h[l >>> 16 & 255]] ^ m[h[l >>> 8 & 255]] ^ y[h[255 & l]],
c[s] = c[s] >>> 0
}
}
,
t.networkToHostOrderSwap = function(e) {
return e << 24 | (65280 & e) << 8 | (16711680 & e) >> 8 | e >>> 24
}
,
t.decrypt = function(e, t, r, i) {
for (var a, n, s, o, l, u, d, c, h, f, g, p, v, m, y, b, T, E = this.keySize + 6, S = this.invKeySchedule, _ = this.invSBox, A = this.invSubMix, R = A[0], w = A[1], k = A[2], L = A[3], D = this.uint8ArrayToUint32Array_(r), C = D[0], I = D[1], O = D[2], x = D[3], P = new Int32Array(e), M = new Int32Array(P.length), F = this.networkToHostOrderSwap; t < P.length; ) {
for (h = F(P[t]),
f = F(P[t + 1]),
g = F(P[t + 2]),
p = F(P[t + 3]),
l = h ^ S[0],
u = p ^ S[1],
d = g ^ S[2],
c = f ^ S[3],
v = 4,
m = 1; m < E; m++)
a = R[l >>> 24] ^ w[u >> 16 & 255] ^ k[d >> 8 & 255] ^ L[255 & c] ^ S[v],
n = R[u >>> 24] ^ w[d >> 16 & 255] ^ k[c >> 8 & 255] ^ L[255 & l] ^ S[v + 1],
s = R[d >>> 24] ^ w[c >> 16 & 255] ^ k[l >> 8 & 255] ^ L[255 & u] ^ S[v + 2],
o = R[c >>> 24] ^ w[l >> 16 & 255] ^ k[u >> 8 & 255] ^ L[255 & d] ^ S[v + 3],
l = a,
u = n,
d = s,
c = o,
v += 4;
a = _[l >>> 24] << 24 ^ _[u >> 16 & 255] << 16 ^ _[d >> 8 & 255] << 8 ^ _[255 & c] ^ S[v],
n = _[u >>> 24] << 24 ^ _[d >> 16 & 255] << 16 ^ _[c >> 8 & 255] << 8 ^ _[255 & l] ^ S[v + 1],
s = _[d >>> 24] << 24 ^ _[c >> 16 & 255] << 16 ^ _[l >> 8 & 255] << 8 ^ _[255 & u] ^ S[v + 2],
o = _[c >>> 24] << 24 ^ _[l >> 16 & 255] << 16 ^ _[u >> 8 & 255] << 8 ^ _[255 & d] ^ S[v + 3],
v += 3,
M[t] = F(a ^ C),
M[t + 1] = F(o ^ I),
M[t + 2] = F(s ^ O),
M[t + 3] = F(n ^ x),
C = h,
I = f,
O = g,
x = p,
t += 4
}
return i ? (y = M.buffer,
b = y.byteLength,
(T = b && new DataView(y).getUint8(b - 1)) ? y.slice(0, b - T) : y) : M.buffer
}
,
t.destroy = function() {
this.key = void 0,
this.keySize = void 0,
this.ksRows = void 0,
this.sBox = void 0,
this.invSBox = void 0,
this.subMix = void 0,
this.invSubMix = void 0,
this.keySchedule = void 0,
this.invKeySchedule = void 0,
this.rcon = void 0
}
,
e
}()
, s = r(2)
, o = r(0)
, l = r(1)
, u = r(5)
, d = Object(u.a)()
, c = function() {
function e(e, t, r) {
var i = (void 0 === r ? {} : r).removePKCS7Padding
, a = void 0 === i || i;
if (this.logEnabled = !0,
this.observer = e,
this.config = t,
this.removePKCS7Padding = a,
a)
try {
var n = d.crypto;
n && (this.subtle = n.subtle || n.webkitSubtle)
} catch (e) {}
this.disableWebCrypto = !this.subtle
}
var t = e.prototype;
return t.isSync = function() {
return this.disableWebCrypto && this.config.enableSoftwareAES
}
,
t.decrypt = function(e, t, r, s) {
var l = this;
if (this.disableWebCrypto && this.config.enableSoftwareAES) {
this.logEnabled && (o.b.log("JS AES decrypt"),
this.logEnabled = !1);
var u = this.decryptor;
u || (this.decryptor = u = new n),
u.expandKey(t),
s(u.decrypt(e, 0, r, this.removePKCS7Padding))
} else {
this.logEnabled && (o.b.log("WebCrypto AES decrypt"),
this.logEnabled = !1);
var d = this.subtle;
this.key !== t && (this.key = t,
this.fastAesKey = new a(d,t)),
this.fastAesKey.expandKey().then((function(a) {
new i(d,r).decrypt(e, a).catch((function(i) {
l.onWebCryptoError(i, e, t, r, s)
}
)).then((function(e) {
s(e)
}
))
}
)).catch((function(i) {
l.onWebCryptoError(i, e, t, r, s)
}
))
}
}
,
t.onWebCryptoError = function(e, t, r, i, a) {
this.config.enableSoftwareAES ? (o.b.log("WebCrypto Error, disable WebCrypto API"),
this.disableWebCrypto = !0,
this.logEnabled = !0,
this.decrypt(t, r, i, a)) : (o.b.error("decrypting error : " + e.message),
this.observer.trigger(l.a.ERROR, {
type: s.b.MEDIA_ERROR,
details: s.a.FRAG_DECRYPT_ERROR,
fatal: !0,
reason: e.message
}))
}
,
t.destroy = function() {
var e = this.decryptor;
e && (e.destroy(),
this.decryptor = void 0)
}
,
e
}();
t.a = c
}
, function(e, t, r) {
"use strict";
var i = Object.prototype.hasOwnProperty
, a = "~";
function n() {}
function s(e, t, r) {
this.fn = e,
this.context = t,
this.once = r || !1
}
function o(e, t, r, i, n) {
if ("function" != typeof r)
throw new TypeError("The listener must be a function");
var o = new s(r,i || e,n)
, l = a ? a + t : t;
return e._events[l] ? e._events[l].fn ? e._events[l] = [e._events[l], o] : e._events[l].push(o) : (e._events[l] = o,
e._eventsCount++),
e
}
function l(e, t) {
0 == --e._eventsCount ? e._events = new n : delete e._events[t]
}
function u() {
this._events = new n,
this._eventsCount = 0
}
Object.create && (n.prototype = Object.create(null),
(new n).__proto__ || (a = !1)),
u.prototype.eventNames = function() {
var e, t, r = [];
if (0 === this._eventsCount)
return r;
for (t in e = this._events)
i.call(e, t) && r.push(a ? t.slice(1) : t);
return Object.getOwnPropertySymbols ? r.concat(Object.getOwnPropertySymbols(e)) : r
}
,
u.prototype.listeners = function(e) {
var t = a ? a + e : e
, r = this._events[t];
if (!r)
return [];
if (r.fn)
return [r.fn];
for (var i = 0, n = r.length, s = new Array(n); i < n; i++)
s[i] = r[i].fn;
return s
}
,
u.prototype.listenerCount = function(e) {
var t = a ? a + e : e
, r = this._events[t];
return r ? r.fn ? 1 : r.length : 0
}
,
u.prototype.emit = function(e, t, r, i, n, s) {
var o = a ? a + e : e;
if (!this._events[o])
return !1;
var l, u, d = this._events[o], c = arguments.length;
if (d.fn) {
switch (d.once && this.removeListener(e, d.fn, void 0, !0),
c) {
case 1:
return d.fn.call(d.context),
!0;
case 2:
return d.fn.call(d.context, t),
!0;
case 3:
return d.fn.call(d.context, t, r),
!0;
case 4:
return d.fn.call(d.context, t, r, i),
!0;
case 5:
return d.fn.call(d.context, t, r, i, n),
!0;
case 6:
return d.fn.call(d.context, t, r, i, n, s),
!0
}
for (u = 1,
l = new Array(c - 1); u < c; u++)
l[u - 1] = arguments[u];
d.fn.apply(d.context, l)
} else {
var h, f = d.length;
for (u = 0; u < f; u++)
switch (d[u].once && this.removeListener(e, d[u].fn, void 0, !0),
c) {
case 1:
d[u].fn.call(d[u].context);
break;
case 2:
d[u].fn.call(d[u].context, t);
break;
case 3:
d[u].fn.call(d[u].context, t, r);
break;
case 4:
d[u].fn.call(d[u].context, t, r, i);
break;
default:
if (!l)
for (h = 1,
l = new Array(c - 1); h < c; h++)
l[h - 1] = arguments[h];
d[u].fn.apply(d[u].context, l)
}
}
return !0
}
,
u.prototype.on = function(e, t, r) {
return o(this, e, t, r, !1)
}
,
u.prototype.once = function(e, t, r) {
return o(this, e, t, r, !0)
}
,
u.prototype.removeListener = function(e, t, r, i) {
var n = a ? a + e : e;
if (!this._events[n])
return this;
if (!t)
return l(this, n),
this;
var s = this._events[n];
if (s.fn)
s.fn !== t || i && !s.once || r && s.context !== r || l(this, n);
else {
for (var o = 0, u = [], d = s.length; o < d; o++)
(s[o].fn !== t || i && !s[o].once || r && s[o].context !== r) && u.push(s[o]);
u.length ? this._events[n] = 1 === u.length ? u[0] : u : l(this, n)
}
return this
}
,
u.prototype.removeAllListeners = function(e) {
var t;
return e ? (t = a ? a + e : e,
this._events[t] && l(this, t)) : (this._events = new n,
this._eventsCount = 0),
this
}
,
u.prototype.off = u.prototype.removeListener,
u.prototype.addListener = u.prototype.on,
u.prefixed = a,
u.EventEmitter = u,
e.exports = u
}
, function(e, t, r) {
"use strict";
var i = r(1)
, a = r(2)
, n = r(7)
, s = r(3)
, o = r(0)
, l = r(5);
function u(e, t) {
return 255 === e[t] && 240 == (246 & e[t + 1])
}
function d(e, t) {
return 1 & e[t + 1] ? 7 : 9
}
function c(e, t) {
return (3 & e[t + 3]) << 11 | e[t + 4] << 3 | (224 & e[t + 5]) >>> 5
}
function h(e, t) {
return !!(t + 1 < e.length && u(e, t))
}
function f(e, t) {
if (h(e, t)) {
var r = d(e, t);
t + 5 < e.length && (r = c(e, t));
var i = t + r;
if (i === e.length || i + 1 < e.length && u(e, i))
return !0
}
return !1
}
function g(e, t, r, n, s) {
if (!e.samplerate) {
var l = function(e, t, r, n) {
var s, l, u, d, c, h = navigator.userAgent.toLowerCase(), f = n, g = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];
if (s = 1 + ((192 & t[r + 2]) >>> 6),
!((l = (60 & t[r + 2]) >>> 2) > g.length - 1))
return d = (1 & t[r + 2]) << 2,
d |= (192 & t[r + 3]) >>> 6,
o.b.log("manifest codec:" + n + ",ADTS data:type:" + s + ",sampleingIndex:" + l + "[" + g[l] + "Hz],channelConfig:" + d),
/firefox/i.test(h) ? l >= 6 ? (s = 5,
c = new Array(4),
u = l - 3) : (s = 2,
c = new Array(2),
u = l) : -1 !== h.indexOf("android") ? (s = 2,
c = new Array(2),
u = l) : (s = 5,
c = new Array(4),
n && (-1 !== n.indexOf("mp4a.40.29") || -1 !== n.indexOf("mp4a.40.5")) || !n && l >= 6 ? u = l - 3 : ((n && -1 !== n.indexOf("mp4a.40.2") && (l >= 6 && 1 === d || /vivaldi/i.test(h)) || !n && 1 === d) && (s = 2,
c = new Array(2)),
u = l)),
c[0] = s << 3,
c[0] |= (14 & l) >> 1,
c[1] |= (1 & l) << 7,
c[1] |= d << 3,
5 === s && (c[1] |= (14 & u) >> 1,
c[2] = (1 & u) << 7,
c[2] |= 8,
c[3] = 0),
{
config: c,
samplerate: g[l],
channelCount: d,
codec: "mp4a.40." + s,
manifestCodec: f
};
e.trigger(i.a.ERROR, {
type: a.b.MEDIA_ERROR,
details: a.a.FRAG_PARSING_ERROR,
fatal: !0,
reason: "invalid ADTS sampling index:" + l
})
}(t, r, n, s);
e.config = l.config,
e.samplerate = l.samplerate,
e.channelCount = l.channelCount,
e.codec = l.codec,
e.manifestCodec = l.manifestCodec,
o.b.log("parsed codec:" + e.codec + ",rate:" + l.samplerate + ",nb channel:" + l.channelCount)
}
}
function p(e) {
return 9216e4 / e
}
function v(e, t, r, i, a) {
var n = function(e, t, r, i, a) {
var n, s, o = e.length;
if (n = d(e, t),
s = c(e, t),
(s -= n) > 0 && t + n + s <= o)
return {
headerLength: n,
frameLength: s,
stamp: r + i * a
}
}(t, r, i, a, p(e.samplerate));
if (n) {
var s = n.stamp
, o = n.headerLength
, l = n.frameLength
, u = {
unit: t.subarray(r + o, r + o + l),
pts: s,
dts: s
};
return e.samples.push(u),
{
sample: u,
length: l + o
}
}
}
var m = r(4)
, y = function() {
function e(e, t, r) {
this.observer = e,
this.config = r,
this.remuxer = t
}
var t = e.prototype;
return t.resetInitSegment = function(e, t, r, i) {
this._audioTrack = {
container: "audio/adts",
type: "audio",
id: 0,
sequenceNumber: 0,
isAAC: !0,
samples: [],
len: 0,
manifestCodec: t,
duration: i,
inputTimeScale: 9e4
}
}
,
t.resetTimeStamp = function() {}
,
e.probe = function(e) {
if (!e)
return !1;
for (var t = (m.a.getID3Data(e, 0) || []).length, r = e.length; t < r; t++)
if (f(e, t))
return o.b.log("ADTS sync word found !"),
!0;
return !1
}
,
t.append = function(e, t, r, i) {
for (var a = this._audioTrack, n = m.a.getID3Data(e, 0) || [], l = m.a.getTimeStamp(n), u = Object(s.a)(l) ? 90 * l : 9e4 * t, d = 0, c = u, f = e.length, p = n.length, y = [{
pts: c,
dts: c,
data: n
}]; p < f - 1; )
if (h(e, p) && p + 5 < f) {
g(a, this.observer, e, p, a.manifestCodec);
var b = v(a, e, p, u, d);
if (!b) {
o.b.log("Unable to parse AAC frame");
break
}
p += b.length,
c = b.sample.pts,
d++
} else
m.a.isHeader(e, p) ? (n = m.a.getID3Data(e, p),
y.push({
pts: c,
dts: c,
data: n
}),
p += n.length) : p++;
this.remuxer.remux(a, {
samples: []
}, {
samples: y,
inputTimeScale: 9e4
}, {
samples: []
}, t, r, i)
}
,
t.destroy = function() {}
,
e
}()
, b = r(10)
, T = {
BitratesMap: [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
SamplingRateMap: [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3],
SamplesCoefficients: [[0, 72, 144, 12], [0, 0, 0, 0], [0, 72, 144, 12], [0, 144, 144, 12]],
BytesInSlot: [0, 1, 1, 4],
appendFrame: function(e, t, r, i, a) {
if (!(r + 24 > t.length)) {
var n = this.parseHeader(t, r);
if (n && r + n.frameLength <= t.length) {
var s = i + a * (9e4 * n.samplesPerFrame / n.sampleRate)
, o = {
unit: t.subarray(r, r + n.frameLength),
pts: s,
dts: s
};
return e.config = [],
e.channelCount = n.channelCount,
e.samplerate = n.sampleRate,
e.samples.push(o),
{
sample: o,
length: n.frameLength
}
}
}
},
parseHeader: function(e, t) {
var r = e[t + 1] >> 3 & 3
, i = e[t + 1] >> 1 & 3
, a = e[t + 2] >> 4 & 15
, n = e[t + 2] >> 2 & 3
, s = e[t + 2] >> 1 & 1;
if (1 !== r && 0 !== a && 15 !== a && 3 !== n) {
var o = 3 === r ? 3 - i : 3 === i ? 3 : 4
, l = 1e3 * T.BitratesMap[14 * o + a - 1]
, u = 3 === r ? 0 : 2 === r ? 1 : 2
, d = T.SamplingRateMap[3 * u + n]
, c = e[t + 3] >> 6 == 3 ? 1 : 2
, h = T.SamplesCoefficients[r][i]
, f = T.BytesInSlot[i]
, g = 8 * h * f;
return {
sampleRate: d,
channelCount: c,
frameLength: parseInt(h * l / d + s, 10) * f,
samplesPerFrame: g
}
}
},
isHeaderPattern: function(e, t) {
return 255 === e[t] && 224 == (224 & e[t + 1]) && 0 != (6 & e[t + 1])
},
isHeader: function(e, t) {
return !!(t + 1 < e.length && this.isHeaderPattern(e, t))
},
probe: function(e, t) {
if (t + 1 < e.length && this.isHeaderPattern(e, t)) {
var r = this.parseHeader(e, t)
, i = 4;
r && r.frameLength && (i = r.frameLength);
var a = t + i;
if (a === e.length || a + 1 < e.length && this.isHeaderPattern(e, a))
return !0
}
return !1
}
}
, E = T
, S = function() {
function e(e) {
this.data = e,
this.bytesAvailable = e.byteLength,
this.word = 0,
this.bitsAvailable = 0
}
var t = e.prototype;
return t.loadWord = function() {
var e = this.data
, t = this.bytesAvailable
, r = e.byteLength - t
, i = new Uint8Array(4)
, a = Math.min(4, t);
if (0 === a)
throw new Error("no bytes available");
i.set(e.subarray(r, r + a)),
this.word = new DataView(i.buffer).getUint32(0),
this.bitsAvailable = 8 * a,
this.bytesAvailable -= a
}
,
t.skipBits = function(e) {
var t;
this.bitsAvailable > e ? (this.word <<= e,
this.bitsAvailable -= e) : (e -= this.bitsAvailable,
e -= (t = e >> 3) >> 3,
this.bytesAvailable -= t,
this.loadWord(),
this.word <<= e,
this.bitsAvailable -= e)
}
,
t.readBits = function(e) {
var t = Math.min(this.bitsAvailable, e)
, r = this.word >>> 32 - t;
return e > 32 && o.b.error("Cannot read more than 32 bits at a time"),
this.bitsAvailable -= t,
this.bitsAvailable > 0 ? this.word <<= t : this.bytesAvailable > 0 && this.loadWord(),
(t = e - t) > 0 && this.bitsAvailable ? r << t | this.readBits(t) : r
}
,
t.skipLZ = function() {
var e;
for (e = 0; e < this.bitsAvailable; ++e)
if (0 != (this.word & 2147483648 >>> e))
return this.word <<= e,
this.bitsAvailable -= e,
e;
return this.loadWord(),
e + this.skipLZ()
}
,
t.skipUEG = function() {
this.skipBits(1 + this.skipLZ())
}
,
t.skipEG = function() {
this.skipBits(1 + this.skipLZ())
}
,
t.readUEG = function() {
var e = this.skipLZ();
return this.readBits(e + 1) - 1
}
,
t.readEG = function() {
var e = this.readUEG();
return 1 & e ? 1 + e >>> 1 : -1 * (e >>> 1)
}
,
t.readBoolean = function() {
return 1 === this.readBits(1)
}
,
t.readUByte = function() {
return this.readBits(8)
}
,
t.readUShort = function() {
return this.readBits(16)
}
,
t.readUInt = function() {
return this.readBits(32)
}
,
t.skipScalingList = function(e) {
var t, r = 8, i = 8;
for (t = 0; t < e; t++)
0 !== i && (i = (r + this.readEG() + 256) % 256),
r = 0 === i ? r : i
}
,
t.readSPS = function() {
var e, t, r, i, a, n, s, o = 0, l = 0, u = 0, d = 0, c = this.readUByte.bind(this), h = this.readBits.bind(this), f = this.readUEG.bind(this), g = this.readBoolean.bind(this), p = this.skipBits.bind(this), v = this.skipEG.bind(this), m = this.skipUEG.bind(this), y = this.skipScalingList.bind(this);
if (c(),
e = c(),
h(5),
p(3),
c(),