Yolov/static/flv.min.js

6503 lines
324 KiB
JavaScript

!function(e, t) {
"object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.flvjs = t() : e.flvjs = t()
}(self, (function() {
return function() {
var e = {
264: function(e, t, i) {
/*!
* @overview es6-promise - a tiny implementation of Promises/A+.
* @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
* @license Licensed under MIT license
* See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
* @version v4.2.8+1e68dce6
*/
e.exports = function() {
"use strict";
function e(e) {
var t = typeof e;
return null !== e && ("object" === t || "function" === t)
}
function t(e) {
return "function" == typeof e
}
var n = Array.isArray ? Array.isArray : function(e) {
return "[object Array]" === Object.prototype.toString.call(e)
}
, r = 0
, s = void 0
, o = void 0
, a = function(e, t) {
b[r] = e,
b[r + 1] = t,
2 === (r += 2) && (o ? o(E) : A())
};
function h(e) {
o = e
}
function u(e) {
a = e
}
var l = "undefined" != typeof window ? window : void 0
, d = l || {}
, c = d.MutationObserver || d.WebKitMutationObserver
, f = "undefined" == typeof self && "undefined" != typeof process && "[object process]" === {}.toString.call(process)
, _ = "undefined" != typeof Uint8ClampedArray && "undefined" != typeof importScripts && "undefined" != typeof MessageChannel;
function p() {
return function() {
return process.nextTick(E)
}
}
function m() {
return void 0 !== s ? function() {
s(E)
}
: y()
}
function g() {
var e = 0
, t = new c(E)
, i = document.createTextNode("");
return t.observe(i, {
characterData: !0
}),
function() {
i.data = e = ++e % 2
}
}
function v() {
var e = new MessageChannel;
return e.port1.onmessage = E,
function() {
return e.port2.postMessage(0)
}
}
function y() {
var e = setTimeout;
return function() {
return e(E, 1)
}
}
var b = new Array(1e3);
function E() {
for (var e = 0; e < r; e += 2)
(0,
b[e])(b[e + 1]),
b[e] = void 0,
b[e + 1] = void 0;
r = 0
}
function S() {
try {
var e = Function("return this")().require("vertx");
return s = e.runOnLoop || e.runOnContext,
m()
} catch (e) {
return y()
}
}
var A = void 0;
function L(e, t) {
var i = this
, n = new this.constructor(O);
void 0 === n[w] && W(n);
var r = i._state;
if (r) {
var s = arguments[r - 1];
a((function() {
return V(r, n, s, i._result)
}
))
} else
G(i, n, e, t);
return n
}
function R(e) {
var t = this;
if (e && "object" == typeof e && e.constructor === t)
return e;
var i = new t(O);
return U(i, e),
i
}
A = f ? p() : c ? g() : _ ? v() : void 0 === l ? S() : y();
var w = Math.random().toString(36).substring(2);
function O() {}
var T = void 0
, C = 1
, k = 2;
function D() {
return new TypeError("You cannot resolve a promise with itself")
}
function I() {
return new TypeError("A promises callback cannot return that same promise.")
}
function M(e, t, i, n) {
try {
e.call(t, i, n)
} catch (e) {
return e
}
}
function B(e, t, i) {
a((function(e) {
var n = !1
, r = M(i, t, (function(i) {
n || (n = !0,
t !== i ? U(e, i) : Z(e, i))
}
), (function(t) {
n || (n = !0,
F(e, t))
}
), "Settle: " + (e._label || " unknown promise"));
!n && r && (n = !0,
F(e, r))
}
), e)
}
function x(e, t) {
t._state === C ? Z(e, t._result) : t._state === k ? F(e, t._result) : G(t, void 0, (function(t) {
return U(e, t)
}
), (function(t) {
return F(e, t)
}
))
}
function P(e, i, n) {
i.constructor === e.constructor && n === L && i.constructor.resolve === R ? x(e, i) : void 0 === n ? Z(e, i) : t(n) ? B(e, i, n) : Z(e, i)
}
function U(t, i) {
if (t === i)
F(t, D());
else if (e(i)) {
var n = void 0;
try {
n = i.then
} catch (e) {
return void F(t, e)
}
P(t, i, n)
} else
Z(t, i)
}
function N(e) {
e._onerror && e._onerror(e._result),
j(e)
}
function Z(e, t) {
e._state === T && (e._result = t,
e._state = C,
0 !== e._subscribers.length && a(j, e))
}
function F(e, t) {
e._state === T && (e._state = k,
e._result = t,
a(N, e))
}
function G(e, t, i, n) {
var r = e._subscribers
, s = r.length;
e._onerror = null,
r[s] = t,
r[s + C] = i,
r[s + k] = n,
0 === s && e._state && a(j, e)
}
function j(e) {
var t = e._subscribers
, i = e._state;
if (0 !== t.length) {
for (var n = void 0, r = void 0, s = e._result, o = 0; o < t.length; o += 3)
n = t[o],
r = t[o + i],
n ? V(i, n, r, s) : r(s);
e._subscribers.length = 0
}
}
function V(e, i, n, r) {
var s = t(n)
, o = void 0
, a = void 0
, h = !0;
if (s) {
try {
o = n(r)
} catch (e) {
h = !1,
a = e
}
if (i === o)
return void F(i, I())
} else
o = r;
i._state !== T || (s && h ? U(i, o) : !1 === h ? F(i, a) : e === C ? Z(i, o) : e === k && F(i, o))
}
function z(e, t) {
try {
t((function(t) {
U(e, t)
}
), (function(t) {
F(e, t)
}
))
} catch (t) {
F(e, t)
}
}
var K = 0;
function H() {
return K++
}
function W(e) {
e[w] = K++,
e._state = void 0,
e._result = void 0,
e._subscribers = []
}
function q() {
return new Error("Array Methods must be provided an Array")
}
var Y = function() {
function e(e, t) {
this._instanceConstructor = e,
this.promise = new e(O),
this.promise[w] || W(this.promise),
n(t) ? (this.length = t.length,
this._remaining = t.length,
this._result = new Array(this.length),
0 === this.length ? Z(this.promise, this._result) : (this.length = this.length || 0,
this._enumerate(t),
0 === this._remaining && Z(this.promise, this._result))) : F(this.promise, q())
}
return e.prototype._enumerate = function(e) {
for (var t = 0; this._state === T && t < e.length; t++)
this._eachEntry(e[t], t)
}
,
e.prototype._eachEntry = function(e, t) {
var i = this._instanceConstructor
, n = i.resolve;
if (n === R) {
var r = void 0
, s = void 0
, o = !1;
try {
r = e.then
} catch (e) {
o = !0,
s = e
}
if (r === L && e._state !== T)
this._settledAt(e._state, t, e._result);
else if ("function" != typeof r)
this._remaining--,
this._result[t] = e;
else if (i === te) {
var a = new i(O);
o ? F(a, s) : P(a, e, r),
this._willSettleAt(a, t)
} else
this._willSettleAt(new i((function(t) {
return t(e)
}
)), t)
} else
this._willSettleAt(n(e), t)
}
,
e.prototype._settledAt = function(e, t, i) {
var n = this.promise;
n._state === T && (this._remaining--,
e === k ? F(n, i) : this._result[t] = i),
0 === this._remaining && Z(n, this._result)
}
,
e.prototype._willSettleAt = function(e, t) {
var i = this;
G(e, void 0, (function(e) {
return i._settledAt(C, t, e)
}
), (function(e) {
return i._settledAt(k, t, e)
}
))
}
,
e
}();
function X(e) {
return new Y(this,e).promise
}
function J(e) {
var t = this;
return n(e) ? new t((function(i, n) {
for (var r = e.length, s = 0; s < r; s++)
t.resolve(e[s]).then(i, n)
}
)) : new t((function(e, t) {
return t(new TypeError("You must pass an array to race."))
}
))
}
function Q(e) {
var t = new this(O);
return F(t, e),
t
}
function $() {
throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")
}
function ee() {
throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")
}
var te = function() {
function e(t) {
this[w] = H(),
this._result = this._state = void 0,
this._subscribers = [],
O !== t && ("function" != typeof t && $(),
this instanceof e ? z(this, t) : ee())
}
return e.prototype.catch = function(e) {
return this.then(null, e)
}
,
e.prototype.finally = function(e) {
var i = this
, n = i.constructor;
return t(e) ? i.then((function(t) {
return n.resolve(e()).then((function() {
return t
}
))
}
), (function(t) {
return n.resolve(e()).then((function() {
throw t
}
))
}
)) : i.then(e, e)
}
,
e
}();
function ie() {
var e = void 0;
if (void 0 !== i.g)
e = i.g;
else if ("undefined" != typeof self)
e = self;
else
try {
e = Function("return this")()
} catch (e) {
throw new Error("polyfill failed because global object is unavailable in this environment")
}
var t = e.Promise;
if (t) {
var n = null;
try {
n = Object.prototype.toString.call(t.resolve())
} catch (e) {}
if ("[object Promise]" === n && !t.cast)
return
}
e.Promise = te
}
return te.prototype.then = L,
te.all = X,
te.race = J,
te.resolve = R,
te.reject = Q,
te._setScheduler = h,
te._setAsap = u,
te._asap = a,
te.polyfill = ie,
te.Promise = te,
te
}()
},
716: function(e) {
"use strict";
var t, i = "object" == typeof Reflect ? Reflect : null, n = i && "function" == typeof i.apply ? i.apply : function(e, t, i) {
return Function.prototype.apply.call(e, t, i)
}
;
t = i && "function" == typeof i.ownKeys ? i.ownKeys : Object.getOwnPropertySymbols ? function(e) {
return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))
}
: function(e) {
return Object.getOwnPropertyNames(e)
}
;
var r = Number.isNaN || function(e) {
return e != e
}
;
function s() {
s.init.call(this)
}
e.exports = s,
e.exports.once = function(e, t) {
return new Promise((function(i, n) {
function r(i) {
e.removeListener(t, s),
n(i)
}
function s() {
"function" == typeof e.removeListener && e.removeListener("error", r),
i([].slice.call(arguments))
}
p(e, t, s, {
once: !0
}),
"error" !== t && function(e, t, i) {
"function" == typeof e.on && p(e, "error", t, i)
}(e, r, {
once: !0
})
}
))
}
,
s.EventEmitter = s,
s.prototype._events = void 0,
s.prototype._eventsCount = 0,
s.prototype._maxListeners = void 0;
var o = 10;
function a(e) {
if ("function" != typeof e)
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e)
}
function h(e) {
return void 0 === e._maxListeners ? s.defaultMaxListeners : e._maxListeners
}
function u(e, t, i, n) {
var r, s, o, u;
if (a(i),
void 0 === (s = e._events) ? (s = e._events = Object.create(null),
e._eventsCount = 0) : (void 0 !== s.newListener && (e.emit("newListener", t, i.listener ? i.listener : i),
s = e._events),
o = s[t]),
void 0 === o)
o = s[t] = i,
++e._eventsCount;
else if ("function" == typeof o ? o = s[t] = n ? [i, o] : [o, i] : n ? o.unshift(i) : o.push(i),
(r = h(e)) > 0 && o.length > r && !o.warned) {
o.warned = !0;
var l = new Error("Possible EventEmitter memory leak detected. " + o.length + " " + String(t) + " listeners added. Use emitter.setMaxListeners() to increase limit");
l.name = "MaxListenersExceededWarning",
l.emitter = e,
l.type = t,
l.count = o.length,
u = l,
console && console.warn && console.warn(u)
}
return e
}
function l() {
if (!this.fired)
return this.target.removeListener(this.type, this.wrapFn),
this.fired = !0,
0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments)
}
function d(e, t, i) {
var n = {
fired: !1,
wrapFn: void 0,
target: e,
type: t,
listener: i
}
, r = l.bind(n);
return r.listener = i,
n.wrapFn = r,
r
}
function c(e, t, i) {
var n = e._events;
if (void 0 === n)
return [];
var r = n[t];
return void 0 === r ? [] : "function" == typeof r ? i ? [r.listener || r] : [r] : i ? function(e) {
for (var t = new Array(e.length), i = 0; i < t.length; ++i)
t[i] = e[i].listener || e[i];
return t
}(r) : _(r, r.length)
}
function f(e) {
var t = this._events;
if (void 0 !== t) {
var i = t[e];
if ("function" == typeof i)
return 1;
if (void 0 !== i)
return i.length
}
return 0
}
function _(e, t) {
for (var i = new Array(t), n = 0; n < t; ++n)
i[n] = e[n];
return i
}
function p(e, t, i, n) {
if ("function" == typeof e.on)
n.once ? e.once(t, i) : e.on(t, i);
else {
if ("function" != typeof e.addEventListener)
throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof e);
e.addEventListener(t, (function r(s) {
n.once && e.removeEventListener(t, r),
i(s)
}
))
}
}
Object.defineProperty(s, "defaultMaxListeners", {
enumerable: !0,
get: function() {
return o
},
set: function(e) {
if ("number" != typeof e || e < 0 || r(e))
throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e + ".");
o = e
}
}),
s.init = function() {
void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = Object.create(null),
this._eventsCount = 0),
this._maxListeners = this._maxListeners || void 0
}
,
s.prototype.setMaxListeners = function(e) {
if ("number" != typeof e || e < 0 || r(e))
throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e + ".");
return this._maxListeners = e,
this
}
,
s.prototype.getMaxListeners = function() {
return h(this)
}
,
s.prototype.emit = function(e) {
for (var t = [], i = 1; i < arguments.length; i++)
t.push(arguments[i]);
var r = "error" === e
, s = this._events;
if (void 0 !== s)
r = r && void 0 === s.error;
else if (!r)
return !1;
if (r) {
var o;
if (t.length > 0 && (o = t[0]),
o instanceof Error)
throw o;
var a = new Error("Unhandled error." + (o ? " (" + o.message + ")" : ""));
throw a.context = o,
a
}
var h = s[e];
if (void 0 === h)
return !1;
if ("function" == typeof h)
n(h, this, t);
else {
var u = h.length
, l = _(h, u);
for (i = 0; i < u; ++i)
n(l[i], this, t)
}
return !0
}
,
s.prototype.addListener = function(e, t) {
return u(this, e, t, !1)
}
,
s.prototype.on = s.prototype.addListener,
s.prototype.prependListener = function(e, t) {
return u(this, e, t, !0)
}
,
s.prototype.once = function(e, t) {
return a(t),
this.on(e, d(this, e, t)),
this
}
,
s.prototype.prependOnceListener = function(e, t) {
return a(t),
this.prependListener(e, d(this, e, t)),
this
}
,
s.prototype.removeListener = function(e, t) {
var i, n, r, s, o;
if (a(t),
void 0 === (n = this._events))
return this;
if (void 0 === (i = n[e]))
return this;
if (i === t || i.listener === t)
0 == --this._eventsCount ? this._events = Object.create(null) : (delete n[e],
n.removeListener && this.emit("removeListener", e, i.listener || t));
else if ("function" != typeof i) {
for (r = -1,
s = i.length - 1; s >= 0; s--)
if (i[s] === t || i[s].listener === t) {
o = i[s].listener,
r = s;
break
}
if (r < 0)
return this;
0 === r ? i.shift() : function(e, t) {
for (; t + 1 < e.length; t++)
e[t] = e[t + 1];
e.pop()
}(i, r),
1 === i.length && (n[e] = i[0]),
void 0 !== n.removeListener && this.emit("removeListener", e, o || t)
}
return this
}
,
s.prototype.off = s.prototype.removeListener,
s.prototype.removeAllListeners = function(e) {
var t, i, n;
if (void 0 === (i = this._events))
return this;
if (void 0 === i.removeListener)
return 0 === arguments.length ? (this._events = Object.create(null),
this._eventsCount = 0) : void 0 !== i[e] && (0 == --this._eventsCount ? this._events = Object.create(null) : delete i[e]),
this;
if (0 === arguments.length) {
var r, s = Object.keys(i);
for (n = 0; n < s.length; ++n)
"removeListener" !== (r = s[n]) && this.removeAllListeners(r);
return this.removeAllListeners("removeListener"),
this._events = Object.create(null),
this._eventsCount = 0,
this
}
if ("function" == typeof (t = i[e]))
this.removeListener(e, t);
else if (void 0 !== t)
for (n = t.length - 1; n >= 0; n--)
this.removeListener(e, t[n]);
return this
}
,
s.prototype.listeners = function(e) {
return c(this, e, !0)
}
,
s.prototype.rawListeners = function(e) {
return c(this, e, !1)
}
,
s.listenerCount = function(e, t) {
return "function" == typeof e.listenerCount ? e.listenerCount(t) : f.call(e, t)
}
,
s.prototype.listenerCount = f,
s.prototype.eventNames = function() {
return this._eventsCount > 0 ? t(this._events) : []
}
},
397: function(e, t, i) {
function n(e) {
var t = {};
function i(n) {
if (t[n])
return t[n].exports;
var r = t[n] = {
i: n,
l: !1,
exports: {}
};
return e[n].call(r.exports, r, r.exports, i),
r.l = !0,
r.exports
}
i.m = e,
i.c = t,
i.i = function(e) {
return e
}
,
i.d = function(e, t, n) {
i.o(e, t) || Object.defineProperty(e, t, {
configurable: !1,
enumerable: !0,
get: n
})
}
,
i.r = function(e) {
Object.defineProperty(e, "__esModule", {
value: !0
})
}
,
i.n = function(e) {
var t = e && e.__esModule ? function() {
return e.default
}
: function() {
return e
}
;
return i.d(t, "a", t),
t
}
,
i.o = function(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
}
,
i.p = "/",
i.oe = function(e) {
throw console.error(e),
e
}
;
var n = i(i.s = ENTRY_MODULE);
return n.default || n
}
var r = "[\\.|\\-|\\+|\\w|/|@]+"
, s = "\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)";
function o(e) {
return (e + "").replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&")
}
function a(e, t, n) {
var a = {};
a[n] = [];
var h = t.toString()
, u = h.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);
if (!u)
return a;
for (var l, d = u[1], c = new RegExp("(\\\\n|\\W)" + o(d) + s,"g"); l = c.exec(h); )
"dll-reference" !== l[3] && a[n].push(l[3]);
for (c = new RegExp("\\(" + o(d) + '\\("(dll-reference\\s(' + r + '))"\\)\\)' + s,"g"); l = c.exec(h); )
e[l[2]] || (a[n].push(l[1]),
e[l[2]] = i(l[1]).m),
a[l[2]] = a[l[2]] || [],
a[l[2]].push(l[4]);
for (var f, _ = Object.keys(a), p = 0; p < _.length; p++)
for (var m = 0; m < a[_[p]].length; m++)
f = a[_[p]][m],
isNaN(1 * f) || (a[_[p]][m] = 1 * a[_[p]][m]);
return a
}
function h(e) {
return Object.keys(e).reduce((function(t, i) {
return t || e[i].length > 0
}
), !1)
}
e.exports = function(e, t) {
t = t || {};
var r = {
main: i.m
}
, s = t.all ? {
main: Object.keys(r.main)
} : function(e, t) {
for (var i = {
main: [t]
}, n = {
main: []
}, r = {
main: {}
}; h(i); )
for (var s = Object.keys(i), o = 0; o < s.length; o++) {
var u = s[o]
, l = i[u].pop();
if (r[u] = r[u] || {},
!r[u][l] && e[u][l]) {
r[u][l] = !0,
n[u] = n[u] || [],
n[u].push(l);
for (var d = a(e, e[u][l], u), c = Object.keys(d), f = 0; f < c.length; f++)
i[c[f]] = i[c[f]] || [],
i[c[f]] = i[c[f]].concat(d[c[f]])
}
}
return n
}(r, e)
, o = "";
Object.keys(s).filter((function(e) {
return "main" !== e
}
)).forEach((function(e) {
for (var t = 0; s[e][t]; )
t++;
s[e].push(t),
r[e][t] = "(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",
o = o + "var " + e + " = (" + n.toString().replace("ENTRY_MODULE", JSON.stringify(t)) + ")({" + s[e].map((function(t) {
return JSON.stringify(t) + ": " + r[e][t].toString()
}
)).join(",") + "});\n"
}
)),
o = o + "new ((" + n.toString().replace("ENTRY_MODULE", JSON.stringify(e)) + ")({" + s.main.map((function(e) {
return JSON.stringify(e) + ": " + r.main[e].toString()
}
)).join(",") + "}))(self);";
var u = new window.Blob([o],{
type: "text/javascript"
});
if (t.bare)
return u;
var l = (window.URL || window.webkitURL || window.mozURL || window.msURL).createObjectURL(u)
, d = new window.Worker(l);
return d.objectURL = l,
d
}
},
118: function(e, t) {
"use strict";
var i = function() {
function e() {
this.mimeType = null,
this.duration = null,
this.hasAudio = null,
this.hasVideo = null,
this.audioCodec = null,
this.videoCodec = null,
this.audioDataRate = null,
this.videoDataRate = null,
this.audioSampleRate = null,
this.audioChannelCount = null,
this.width = null,
this.height = null,
this.fps = null,
this.profile = null,
this.level = null,
this.refFrames = null,
this.chromaFormat = null,
this.sarNum = null,
this.sarDen = null,
this.metadata = null,
this.segments = null,
this.segmentCount = null,
this.hasKeyframesIndex = null,
this.keyframesIndex = null
}
return e.prototype.isComplete = function() {
var e = !1 === this.hasAudio || !0 === this.hasAudio && null != this.audioCodec && null != this.audioSampleRate && null != this.audioChannelCount
, t = !1 === this.hasVideo || !0 === this.hasVideo && null != this.videoCodec && null != this.width && null != this.height && null != this.fps && null != this.profile && null != this.level && null != this.refFrames && null != this.chromaFormat && null != this.sarNum && null != this.sarDen;
return null != this.mimeType && null != this.duration && null != this.metadata && null != this.hasKeyframesIndex && e && t
}
,
e.prototype.isSeekable = function() {
return !0 === this.hasKeyframesIndex
}
,
e.prototype.getNearestKeyframe = function(e) {
if (null == this.keyframesIndex)
return null;
var t = this.keyframesIndex
, i = this._search(t.times, e);
return {
index: i,
milliseconds: t.times[i],
fileposition: t.filepositions[i]
}
}
,
e.prototype._search = function(e, t) {
var i = 0
, n = e.length - 1
, r = 0
, s = 0
, o = n;
for (t < e[0] && (i = 0,
s = o + 1); s <= o; ) {
if ((r = s + Math.floor((o - s) / 2)) === n || t >= e[r] && t < e[r + 1]) {
i = r;
break
}
e[r] < t ? s = r + 1 : o = r - 1
}
return i
}
,
e
}();
t.Z = i
},
51: function(e, t, i) {
"use strict";
i.d(t, {
Wk: function() {
return n
},
Yy: function() {
return r
},
Vn: function() {
return s
},
J1: function() {
return o
}
});
var n = function(e, t, i, n, r) {
this.dts = e,
this.pts = t,
this.duration = i,
this.originalDts = n,
this.isSyncPoint = r,
this.fileposition = null
}
, r = function() {
function e() {
this.beginDts = 0,
this.endDts = 0,
this.beginPts = 0,
this.endPts = 0,
this.originalBeginDts = 0,
this.originalEndDts = 0,
this.syncPoints = [],
this.firstSample = null,
this.lastSample = null
}
return e.prototype.appendSyncPoint = function(e) {
e.isSyncPoint = !0,
this.syncPoints.push(e)
}
,
e
}()
, s = function() {
function e() {
this._list = []
}
return e.prototype.clear = function() {
this._list = []
}
,
e.prototype.appendArray = function(e) {
var t = this._list;
0 !== e.length && (t.length > 0 && e[0].originalDts < t[t.length - 1].originalDts && this.clear(),
Array.prototype.push.apply(t, e))
}
,
e.prototype.getLastSyncPointBeforeDts = function(e) {
if (0 == this._list.length)
return null;
var t = this._list
, i = 0
, n = t.length - 1
, r = 0
, s = 0
, o = n;
for (e < t[0].dts && (i = 0,
s = o + 1); s <= o; ) {
if ((r = s + Math.floor((o - s) / 2)) === n || e >= t[r].dts && e < t[r + 1].dts) {
i = r;
break
}
t[r].dts < e ? s = r + 1 : o = r - 1
}
return this._list[i]
}
,
e
}()
, o = function() {
function e(e) {
this._type = e,
this._list = [],
this._lastAppendLocation = -1
}
return Object.defineProperty(e.prototype, "type", {
get: function() {
return this._type
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "length", {
get: function() {
return this._list.length
},
enumerable: !1,
configurable: !0
}),
e.prototype.isEmpty = function() {
return 0 === this._list.length
}
,
e.prototype.clear = function() {
this._list = [],
this._lastAppendLocation = -1
}
,
e.prototype._searchNearestSegmentBefore = function(e) {
var t = this._list;
if (0 === t.length)
return -2;
var i = t.length - 1
, n = 0
, r = 0
, s = i
, o = 0;
if (e < t[0].originalBeginDts)
return o = -1;
for (; r <= s; ) {
if ((n = r + Math.floor((s - r) / 2)) === i || e > t[n].lastSample.originalDts && e < t[n + 1].originalBeginDts) {
o = n;
break
}
t[n].originalBeginDts < e ? r = n + 1 : s = n - 1
}
return o
}
,
e.prototype._searchNearestSegmentAfter = function(e) {
return this._searchNearestSegmentBefore(e) + 1
}
,
e.prototype.append = function(e) {
var t = this._list
, i = e
, n = this._lastAppendLocation
, r = 0;
-1 !== n && n < t.length && i.originalBeginDts >= t[n].lastSample.originalDts && (n === t.length - 1 || n < t.length - 1 && i.originalBeginDts < t[n + 1].originalBeginDts) ? r = n + 1 : t.length > 0 && (r = this._searchNearestSegmentBefore(i.originalBeginDts) + 1),
this._lastAppendLocation = r,
this._list.splice(r, 0, i)
}
,
e.prototype.getLastSegmentBefore = function(e) {
var t = this._searchNearestSegmentBefore(e);
return t >= 0 ? this._list[t] : null
}
,
e.prototype.getLastSampleBefore = function(e) {
var t = this.getLastSegmentBefore(e);
return null != t ? t.lastSample : null
}
,
e.prototype.getLastSyncPointBefore = function(e) {
for (var t = this._searchNearestSegmentBefore(e), i = this._list[t].syncPoints; 0 === i.length && t > 0; )
t--,
i = this._list[t].syncPoints;
return i.length > 0 ? i[i.length - 1] : null
}
,
e
}()
},
949: function(e, t, i) {
"use strict";
i.d(t, {
Z: function() {
return R
}
});
var n = i(716)
, r = i.n(n)
, s = i(300)
, o = i(538)
, a = i(118);
function h(e, t, i) {
var n = e;
if (t + i < n.length) {
for (; i--; )
if (128 != (192 & n[++t]))
return !1;
return !0
}
return !1
}
var u, l = function(e) {
for (var t = [], i = e, n = 0, r = e.length; n < r; )
if (i[n] < 128)
t.push(String.fromCharCode(i[n])),
++n;
else {
if (i[n] < 192)
;
else if (i[n] < 224) {
if (h(i, n, 1))
if ((s = (31 & i[n]) << 6 | 63 & i[n + 1]) >= 128) {
t.push(String.fromCharCode(65535 & s)),
n += 2;
continue
}
} else if (i[n] < 240) {
if (h(i, n, 2))
if ((s = (15 & i[n]) << 12 | (63 & i[n + 1]) << 6 | 63 & i[n + 2]) >= 2048 && 55296 != (63488 & s)) {
t.push(String.fromCharCode(65535 & s)),
n += 3;
continue
}
} else if (i[n] < 248) {
var s;
if (h(i, n, 3))
if ((s = (7 & i[n]) << 18 | (63 & i[n + 1]) << 12 | (63 & i[n + 2]) << 6 | 63 & i[n + 3]) > 65536 && s < 1114112) {
s -= 65536,
t.push(String.fromCharCode(s >>> 10 | 55296)),
t.push(String.fromCharCode(1023 & s | 56320)),
n += 4;
continue
}
}
t.push(String.fromCharCode(65533)),
++n
}
return t.join("")
}, d = i(29), c = (u = new ArrayBuffer(2),
new DataView(u).setInt16(0, 256, !0),
256 === new Int16Array(u)[0]), f = function() {
function e() {}
return e.parseScriptData = function(t, i, n) {
var r = {};
try {
var o = e.parseValue(t, i, n)
, a = e.parseValue(t, i + o.size, n - o.size);
r[o.data] = a.data
} catch (e) {
s.Z.e("AMF", e.toString())
}
return r
}
,
e.parseObject = function(t, i, n) {
if (n < 3)
throw new d.rT("Data not enough when parse ScriptDataObject");
var r = e.parseString(t, i, n)
, s = e.parseValue(t, i + r.size, n - r.size)
, o = s.objectEnd;
return {
data: {
name: r.data,
value: s.data
},
size: r.size + s.size,
objectEnd: o
}
}
,
e.parseVariable = function(t, i, n) {
return e.parseObject(t, i, n)
}
,
e.parseString = function(e, t, i) {
if (i < 2)
throw new d.rT("Data not enough when parse String");
var n = new DataView(e,t,i).getUint16(0, !c);
return {
data: n > 0 ? l(new Uint8Array(e,t + 2,n)) : "",
size: 2 + n
}
}
,
e.parseLongString = function(e, t, i) {
if (i < 4)
throw new d.rT("Data not enough when parse LongString");
var n = new DataView(e,t,i).getUint32(0, !c);
return {
data: n > 0 ? l(new Uint8Array(e,t + 4,n)) : "",
size: 4 + n
}
}
,
e.parseDate = function(e, t, i) {
if (i < 10)
throw new d.rT("Data size invalid when parse Date");
var n = new DataView(e,t,i)
, r = n.getFloat64(0, !c)
, s = n.getInt16(8, !c);
return {
data: new Date(r += 60 * s * 1e3),
size: 10
}
}
,
e.parseValue = function(t, i, n) {
if (n < 1)
throw new d.rT("Data not enough when parse Value");
var r, o = new DataView(t,i,n), a = 1, h = o.getUint8(0), u = !1;
try {
switch (h) {
case 0:
r = o.getFloat64(1, !c),
a += 8;
break;
case 1:
r = !!o.getUint8(1),
a += 1;
break;
case 2:
var l = e.parseString(t, i + 1, n - 1);
r = l.data,
a += l.size;
break;
case 3:
r = {};
var f = 0;
for (9 == (16777215 & o.getUint32(n - 4, !c)) && (f = 3); a < n - 4; ) {
var _ = e.parseObject(t, i + a, n - a - f);
if (_.objectEnd)
break;
r[_.data.name] = _.data.value,
a += _.size
}
if (a <= n - 3)
9 === (16777215 & o.getUint32(a - 1, !c)) && (a += 3);
break;
case 8:
r = {},
a += 4;
f = 0;
for (9 == (16777215 & o.getUint32(n - 4, !c)) && (f = 3); a < n - 8; ) {
var p = e.parseVariable(t, i + a, n - a - f);
if (p.objectEnd)
break;
r[p.data.name] = p.data.value,
a += p.size
}
if (a <= n - 3)
9 === (16777215 & o.getUint32(a - 1, !c)) && (a += 3);
break;
case 9:
r = void 0,
a = 1,
u = !0;
break;
case 10:
r = [];
var m = o.getUint32(1, !c);
a += 4;
for (var g = 0; g < m; g++) {
var v = e.parseValue(t, i + a, n - a);
r.push(v.data),
a += v.size
}
break;
case 11:
var y = e.parseDate(t, i + 1, n - 1);
r = y.data,
a += y.size;
break;
case 12:
var b = e.parseString(t, i + 1, n - 1);
r = b.data,
a += b.size;
break;
default:
a = n,
s.Z.w("AMF", "Unsupported AMF value type " + h)
}
} catch (e) {
s.Z.e("AMF", e.toString())
}
return {
data: r,
size: a,
objectEnd: u
}
}
,
e
}(), _ = function() {
function e(e) {
this.TAG = "ExpGolomb",
this._buffer = e,
this._buffer_index = 0,
this._total_bytes = e.byteLength,
this._total_bits = 8 * e.byteLength,
this._current_word = 0,
this._current_word_bits_left = 0
}
return e.prototype.destroy = function() {
this._buffer = null
}
,
e.prototype._fillCurrentWord = function() {
var e = this._total_bytes - this._buffer_index;
if (e <= 0)
throw new d.rT("ExpGolomb: _fillCurrentWord() but no bytes available");
var t = Math.min(4, e)
, i = new Uint8Array(4);
i.set(this._buffer.subarray(this._buffer_index, this._buffer_index + t)),
this._current_word = new DataView(i.buffer).getUint32(0, !1),
this._buffer_index += t,
this._current_word_bits_left = 8 * t
}
,
e.prototype.readBits = function(e) {
if (e > 32)
throw new d.OC("ExpGolomb: readBits() bits exceeded max 32bits!");
if (e <= this._current_word_bits_left) {
var t = this._current_word >>> 32 - e;
return this._current_word <<= e,
this._current_word_bits_left -= e,
t
}
var i = this._current_word_bits_left ? this._current_word : 0;
i >>>= 32 - this._current_word_bits_left;
var n = e - this._current_word_bits_left;
this._fillCurrentWord();
var r = Math.min(n, this._current_word_bits_left)
, s = this._current_word >>> 32 - r;
return this._current_word <<= r,
this._current_word_bits_left -= r,
i = i << r | s
}
,
e.prototype.readBool = function() {
return 1 === this.readBits(1)
}
,
e.prototype.readByte = function() {
return this.readBits(8)
}
,
e.prototype._skipLeadingZero = function() {
var e;
for (e = 0; e < this._current_word_bits_left; e++)
if (0 != (this._current_word & 2147483648 >>> e))
return this._current_word <<= e,
this._current_word_bits_left -= e,
e;
return this._fillCurrentWord(),
e + this._skipLeadingZero()
}
,
e.prototype.readUEG = function() {
var e = this._skipLeadingZero();
return this.readBits(e + 1) - 1
}
,
e.prototype.readSEG = function() {
var e = this.readUEG();
return 1 & e ? e + 1 >>> 1 : -1 * (e >>> 1)
}
,
e
}(), p = function() {
function e() {}
return e._ebsp2rbsp = function(e) {
for (var t = e, i = t.byteLength, n = new Uint8Array(i), r = 0, s = 0; s < i; s++)
s >= 2 && 3 === t[s] && 0 === t[s - 1] && 0 === t[s - 2] || (n[r] = t[s],
r++);
return new Uint8Array(n.buffer,0,r)
}
,
e.parseSPS = function(t) {
var i = e._ebsp2rbsp(t)
, n = new _(i);
n.readByte();
var r = n.readByte();
n.readByte();
var s = n.readByte();
n.readUEG();
var o = e.getProfileString(r)
, a = e.getLevelString(s)
, h = 1
, u = 420
, l = 8;
if ((100 === r || 110 === r || 122 === r || 244 === r || 44 === r || 83 === r || 86 === r || 118 === r || 128 === r || 138 === r || 144 === r) && (3 === (h = n.readUEG()) && n.readBits(1),
h <= 3 && (u = [0, 420, 422, 444][h]),
l = n.readUEG() + 8,
n.readUEG(),
n.readBits(1),
n.readBool()))
for (var d = 3 !== h ? 8 : 12, c = 0; c < d; c++)
n.readBool() && (c < 6 ? e._skipScalingList(n, 16) : e._skipScalingList(n, 64));
n.readUEG();
var f = n.readUEG();
if (0 === f)
n.readUEG();
else if (1 === f) {
n.readBits(1),
n.readSEG(),
n.readSEG();
var p = n.readUEG();
for (c = 0; c < p; c++)
n.readSEG()
}
var m = n.readUEG();
n.readBits(1);
var g = n.readUEG()
, v = n.readUEG()
, y = n.readBits(1);
0 === y && n.readBits(1),
n.readBits(1);
var b = 0
, E = 0
, S = 0
, A = 0;
n.readBool() && (b = n.readUEG(),
E = n.readUEG(),
S = n.readUEG(),
A = n.readUEG());
var L = 1
, R = 1
, w = 0
, O = !0
, T = 0
, C = 0;
if (n.readBool()) {
if (n.readBool()) {
var k = n.readByte();
k > 0 && k < 16 ? (L = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][k - 1],
R = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][k - 1]) : 255 === k && (L = n.readByte() << 8 | n.readByte(),
R = n.readByte() << 8 | n.readByte())
}
if (n.readBool() && n.readBool(),
n.readBool() && (n.readBits(4),
n.readBool() && n.readBits(24)),
n.readBool() && (n.readUEG(),
n.readUEG()),
n.readBool()) {
var D = n.readBits(32)
, I = n.readBits(32);
O = n.readBool(),
w = (T = I) / (C = 2 * D)
}
}
var M = 1;
1 === L && 1 === R || (M = L / R);
var B = 0
, x = 0;
0 === h ? (B = 1,
x = 2 - y) : (B = 3 === h ? 1 : 2,
x = (1 === h ? 2 : 1) * (2 - y));
var P = 16 * (g + 1)
, U = 16 * (v + 1) * (2 - y);
P -= (b + E) * B,
U -= (S + A) * x;
var N = Math.ceil(P * M);
return n.destroy(),
n = null,
{
profile_string: o,
level_string: a,
bit_depth: l,
ref_frames: m,
chroma_format: u,
chroma_format_string: e.getChromaFormatString(u),
frame_rate: {
fixed: O,
fps: w,
fps_den: C,
fps_num: T
},
sar_ratio: {
width: L,
height: R
},
codec_size: {
width: P,
height: U
},
present_size: {
width: N,
height: U
}
}
}
,
e._skipScalingList = function(e, t) {
for (var i = 8, n = 8, r = 0; r < t; r++)
0 !== n && (n = (i + e.readSEG() + 256) % 256),
i = 0 === n ? i : n
}
,
e.getProfileString = function(e) {
switch (e) {
case 66:
return "Baseline";
case 77:
return "Main";
case 88:
return "Extended";
case 100:
return "High";
case 110:
return "High10";
case 122:
return "High422";
case 244:
return "High444";
default:
return "Unknown"
}
}
,
e.getLevelString = function(e) {
return (e / 10).toFixed(1)
}
,
e.getChromaFormatString = function(e) {
switch (e) {
case 420:
return "4:2:0";
case 422:
return "4:2:2";
case 444:
return "4:4:4";
default:
return "Unknown"
}
}
,
e
}(), m = i(600);
var g = function() {
function e(e, t) {
this.TAG = "FLVDemuxer",
this._config = t,
this._onError = null,
this._onMediaInfo = null,
this._onMetaDataArrived = null,
this._onScriptDataArrived = null,
this._onTrackMetadata = null,
this._onDataAvailable = null,
this._dataOffset = e.dataOffset,
this._firstParse = !0,
this._dispatch = !1,
this._hasAudio = e.hasAudioTrack,
this._hasVideo = e.hasVideoTrack,
this._hasAudioFlagOverrided = !1,
this._hasVideoFlagOverrided = !1,
this._audioInitialMetadataDispatched = !1,
this._videoInitialMetadataDispatched = !1,
this._mediaInfo = new a.Z,
this._mediaInfo.hasAudio = this._hasAudio,
this._mediaInfo.hasVideo = this._hasVideo,
this._metadata = null,
this._audioMetadata = null,
this._videoMetadata = null,
this._naluLengthSize = 4,
this._timestampBase = 0,
this._timescale = 1e3,
this._duration = 0,
this._durationOverrided = !1,
this._referenceFrameRate = {
fixed: !0,
fps: 23.976,
fps_num: 23976,
fps_den: 1e3
},
this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48e3],
this._mpegSamplingRates = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350],
this._mpegAudioV10SampleRateTable = [44100, 48e3, 32e3, 0],
this._mpegAudioV20SampleRateTable = [22050, 24e3, 16e3, 0],
this._mpegAudioV25SampleRateTable = [11025, 12e3, 8e3, 0],
this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1],
this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1],
this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1],
this._videoTrack = {
type: "video",
id: 1,
sequenceNumber: 0,
samples: [],
length: 0
},
this._audioTrack = {
type: "audio",
id: 2,
sequenceNumber: 0,
samples: [],
length: 0
},
this._littleEndian = function() {
var e = new ArrayBuffer(2);
return new DataView(e).setInt16(0, 256, !0),
256 === new Int16Array(e)[0]
}()
}
return e.prototype.destroy = function() {
this._mediaInfo = null,
this._metadata = null,
this._audioMetadata = null,
this._videoMetadata = null,
this._videoTrack = null,
this._audioTrack = null,
this._onError = null,
this._onMediaInfo = null,
this._onMetaDataArrived = null,
this._onScriptDataArrived = null,
this._onTrackMetadata = null,
this._onDataAvailable = null
}
,
e.probe = function(e) {
var t = new Uint8Array(e)
, i = {
match: !1
};
if (70 !== t[0] || 76 !== t[1] || 86 !== t[2] || 1 !== t[3])
return i;
var n, r, s = (4 & t[4]) >>> 2 != 0, o = 0 != (1 & t[4]), a = (n = t)[r = 5] << 24 | n[r + 1] << 16 | n[r + 2] << 8 | n[r + 3];
return a < 9 ? i : {
match: !0,
consumed: a,
dataOffset: a,
hasAudioTrack: s,
hasVideoTrack: o
}
}
,
e.prototype.bindDataSource = function(e) {
return e.onDataArrival = this.parseChunks.bind(this),
this
}
,
Object.defineProperty(e.prototype, "onTrackMetadata", {
get: function() {
return this._onTrackMetadata
},
set: function(e) {
this._onTrackMetadata = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onMediaInfo", {
get: function() {
return this._onMediaInfo
},
set: function(e) {
this._onMediaInfo = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onMetaDataArrived", {
get: function() {
return this._onMetaDataArrived
},
set: function(e) {
this._onMetaDataArrived = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onScriptDataArrived", {
get: function() {
return this._onScriptDataArrived
},
set: function(e) {
this._onScriptDataArrived = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onError", {
get: function() {
return this._onError
},
set: function(e) {
this._onError = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onDataAvailable", {
get: function() {
return this._onDataAvailable
},
set: function(e) {
this._onDataAvailable = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "timestampBase", {
get: function() {
return this._timestampBase
},
set: function(e) {
this._timestampBase = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "overridedDuration", {
get: function() {
return this._duration
},
set: function(e) {
this._durationOverrided = !0,
this._duration = e,
this._mediaInfo.duration = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "overridedHasAudio", {
set: function(e) {
this._hasAudioFlagOverrided = !0,
this._hasAudio = e,
this._mediaInfo.hasAudio = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "overridedHasVideo", {
set: function(e) {
this._hasVideoFlagOverrided = !0,
this._hasVideo = e,
this._mediaInfo.hasVideo = e
},
enumerable: !1,
configurable: !0
}),
e.prototype.resetMediaInfo = function() {
this._mediaInfo = new a.Z
}
,
e.prototype._isInitialMetadataDispatched = function() {
return this._hasAudio && this._hasVideo ? this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched : this._hasAudio && !this._hasVideo ? this._audioInitialMetadataDispatched : !(this._hasAudio || !this._hasVideo) && this._videoInitialMetadataDispatched
}
,
e.prototype.parseChunks = function(t, i) {
if (!(this._onError && this._onMediaInfo && this._onTrackMetadata && this._onDataAvailable))
throw new d.rT("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");
var n = 0
, r = this._littleEndian;
if (0 === i) {
if (!(t.byteLength > 13))
return 0;
n = e.probe(t).dataOffset
}
this._firstParse && (this._firstParse = !1,
i + n !== this._dataOffset && s.Z.w(this.TAG, "First time parsing but chunk byteStart invalid!"),
0 !== (o = new DataView(t,n)).getUint32(0, !r) && s.Z.w(this.TAG, "PrevTagSize0 !== 0 !!!"),
n += 4);
for (; n < t.byteLength; ) {
this._dispatch = !0;
var o = new DataView(t,n);
if (n + 11 + 4 > t.byteLength)
break;
var a = o.getUint8(0)
, h = 16777215 & o.getUint32(0, !r);
if (n + 11 + h + 4 > t.byteLength)
break;
if (8 === a || 9 === a || 18 === a) {
var u = o.getUint8(4)
, l = o.getUint8(5)
, c = o.getUint8(6) | l << 8 | u << 16 | o.getUint8(7) << 24;
0 !== (16777215 & o.getUint32(7, !r)) && s.Z.w(this.TAG, "Meet tag which has StreamID != 0!");
var f = n + 11;
switch (a) {
case 8:
this._parseAudioData(t, f, h, c);
break;
case 9:
this._parseVideoData(t, f, h, c, i + n);
break;
case 18:
this._parseScriptData(t, f, h)
}
var _ = o.getUint32(11 + h, !r);
_ !== 11 + h && s.Z.w(this.TAG, "Invalid PrevTagSize " + _),
n += 11 + h + 4
} else
s.Z.w(this.TAG, "Unsupported tag type " + a + ", skipped"),
n += 11 + h + 4
}
return this._isInitialMetadataDispatched() && this._dispatch && (this._audioTrack.length || this._videoTrack.length) && this._onDataAvailable(this._audioTrack, this._videoTrack),
n
}
,
e.prototype._parseScriptData = function(e, t, i) {
var n = f.parseScriptData(e, t, i);
if (n.hasOwnProperty("onMetaData")) {
if (null == n.onMetaData || "object" != typeof n.onMetaData)
return void s.Z.w(this.TAG, "Invalid onMetaData structure!");
this._metadata && s.Z.w(this.TAG, "Found another onMetaData tag!"),
this._metadata = n;
var r = this._metadata.onMetaData;
if (this._onMetaDataArrived && this._onMetaDataArrived(Object.assign({}, r)),
"boolean" == typeof r.hasAudio && !1 === this._hasAudioFlagOverrided && (this._hasAudio = r.hasAudio,
this._mediaInfo.hasAudio = this._hasAudio),
"boolean" == typeof r.hasVideo && !1 === this._hasVideoFlagOverrided && (this._hasVideo = r.hasVideo,
this._mediaInfo.hasVideo = this._hasVideo),
"number" == typeof r.audiodatarate && (this._mediaInfo.audioDataRate = r.audiodatarate),
"number" == typeof r.videodatarate && (this._mediaInfo.videoDataRate = r.videodatarate),
"number" == typeof r.width && (this._mediaInfo.width = r.width),
"number" == typeof r.height && (this._mediaInfo.height = r.height),
"number" == typeof r.duration) {
if (!this._durationOverrided) {
var o = Math.floor(r.duration * this._timescale);
this._duration = o,
this._mediaInfo.duration = o
}
} else
this._mediaInfo.duration = 0;
if ("number" == typeof r.framerate) {
var a = Math.floor(1e3 * r.framerate);
if (a > 0) {
var h = a / 1e3;
this._referenceFrameRate.fixed = !0,
this._referenceFrameRate.fps = h,
this._referenceFrameRate.fps_num = a,
this._referenceFrameRate.fps_den = 1e3,
this._mediaInfo.fps = h
}
}
if ("object" == typeof r.keyframes) {
this._mediaInfo.hasKeyframesIndex = !0;
var u = r.keyframes;
this._mediaInfo.keyframesIndex = this._parseKeyframesIndex(u),
r.keyframes = null
} else
this._mediaInfo.hasKeyframesIndex = !1;
this._dispatch = !1,
this._mediaInfo.metadata = r,
s.Z.v(this.TAG, "Parsed onMetaData"),
this._mediaInfo.isComplete() && this._onMediaInfo(this._mediaInfo)
}
Object.keys(n).length > 0 && this._onScriptDataArrived && this._onScriptDataArrived(Object.assign({}, n))
}
,
e.prototype._parseKeyframesIndex = function(e) {
for (var t = [], i = [], n = 1; n < e.times.length; n++) {
var r = this._timestampBase + Math.floor(1e3 * e.times[n]);
t.push(r),
i.push(e.filepositions[n])
}
return {
times: t,
filepositions: i
}
}
,
e.prototype._parseAudioData = function(e, t, i, n) {
if (i <= 1)
s.Z.w(this.TAG, "Flv: Invalid audio packet, missing SoundData payload!");
else if (!0 !== this._hasAudioFlagOverrided || !1 !== this._hasAudio) {
this._littleEndian;
var r = new DataView(e,t,i).getUint8(0)
, o = r >>> 4;
if (2 === o || 10 === o) {
var a = 0
, h = (12 & r) >>> 2;
if (h >= 0 && h <= 4) {
a = this._flvSoundRateTable[h];
var u = 1 & r
, l = this._audioMetadata
, d = this._audioTrack;
if (l || (!1 === this._hasAudio && !1 === this._hasAudioFlagOverrided && (this._hasAudio = !0,
this._mediaInfo.hasAudio = !0),
(l = this._audioMetadata = {}).type = "audio",
l.id = d.id,
l.timescale = this._timescale,
l.duration = this._duration,
l.audioSampleRate = a,
l.channelCount = 0 === u ? 1 : 2),
10 === o) {
var c = this._parseAACAudioData(e, t + 1, i - 1);
if (null == c)
return;
if (0 === c.packetType) {
l.config && s.Z.w(this.TAG, "Found another AudioSpecificConfig!");
var f = c.data;
l.audioSampleRate = f.samplingRate,
l.channelCount = f.channelCount,
l.codec = f.codec,
l.originalCodec = f.originalCodec,
l.config = f.config,
l.refSampleDuration = 1024 / l.audioSampleRate * l.timescale,
s.Z.v(this.TAG, "Parsed AudioSpecificConfig"),
this._isInitialMetadataDispatched() ? this._dispatch && (this._audioTrack.length || this._videoTrack.length) && this._onDataAvailable(this._audioTrack, this._videoTrack) : this._audioInitialMetadataDispatched = !0,
this._dispatch = !1,
this._onTrackMetadata("audio", l),
(g = this._mediaInfo).audioCodec = l.originalCodec,
g.audioSampleRate = l.audioSampleRate,
g.audioChannelCount = l.channelCount,
g.hasVideo ? null != g.videoCodec && (g.mimeType = 'video/x-flv; codecs="' + g.videoCodec + "," + g.audioCodec + '"') : g.mimeType = 'video/x-flv; codecs="' + g.audioCodec + '"',
g.isComplete() && this._onMediaInfo(g)
} else if (1 === c.packetType) {
var _ = this._timestampBase + n
, p = {
unit: c.data,
length: c.data.byteLength,
dts: _,
pts: _
};
d.samples.push(p),
d.length += c.data.length
} else
s.Z.e(this.TAG, "Flv: Unsupported AAC data type " + c.packetType)
} else if (2 === o) {
if (!l.codec) {
var g;
if (null == (f = this._parseMP3AudioData(e, t + 1, i - 1, !0)))
return;
l.audioSampleRate = f.samplingRate,
l.channelCount = f.channelCount,
l.codec = f.codec,
l.originalCodec = f.originalCodec,
l.refSampleDuration = 1152 / l.audioSampleRate * l.timescale,
s.Z.v(this.TAG, "Parsed MPEG Audio Frame Header"),
this._audioInitialMetadataDispatched = !0,
this._onTrackMetadata("audio", l),
(g = this._mediaInfo).audioCodec = l.codec,
g.audioSampleRate = l.audioSampleRate,
g.audioChannelCount = l.channelCount,
g.audioDataRate = f.bitRate,
g.hasVideo ? null != g.videoCodec && (g.mimeType = 'video/x-flv; codecs="' + g.videoCodec + "," + g.audioCodec + '"') : g.mimeType = 'video/x-flv; codecs="' + g.audioCodec + '"',
g.isComplete() && this._onMediaInfo(g)
}
var v = this._parseMP3AudioData(e, t + 1, i - 1, !1);
if (null == v)
return;
_ = this._timestampBase + n;
var y = {
unit: v,
length: v.byteLength,
dts: _,
pts: _
};
d.samples.push(y),
d.length += v.length
}
} else
this._onError(m.Z.FORMAT_ERROR, "Flv: Invalid audio sample rate idx: " + h)
} else
this._onError(m.Z.CODEC_UNSUPPORTED, "Flv: Unsupported audio codec idx: " + o)
}
}
,
e.prototype._parseAACAudioData = function(e, t, i) {
if (!(i <= 1)) {
var n = {}
, r = new Uint8Array(e,t,i);
return n.packetType = r[0],
0 === r[0] ? n.data = this._parseAACAudioSpecificConfig(e, t + 1, i - 1) : n.data = r.subarray(1),
n
}
s.Z.w(this.TAG, "Flv: Invalid AAC packet, missing AACPacketType or/and Data!")
}
,
e.prototype._parseAACAudioSpecificConfig = function(e, t, i) {
var n, r, s = new Uint8Array(e,t,i), o = null, a = 0, h = null;
if (a = n = s[0] >>> 3,
(r = (7 & s[0]) << 1 | s[1] >>> 7) < 0 || r >= this._mpegSamplingRates.length)
this._onError(m.Z.FORMAT_ERROR, "Flv: AAC invalid sampling frequency index!");
else {
var u = this._mpegSamplingRates[r]
, l = (120 & s[1]) >>> 3;
if (!(l < 0 || l >= 8)) {
5 === a && (h = (7 & s[1]) << 1 | s[2] >>> 7,
(124 & s[2]) >>> 2);
var d = self.navigator.userAgent.toLowerCase();
return -1 !== d.indexOf("firefox") ? r >= 6 ? (a = 5,
o = new Array(4),
h = r - 3) : (a = 2,
o = new Array(2),
h = r) : -1 !== d.indexOf("android") ? (a = 2,
o = new Array(2),
h = r) : (a = 5,
h = r,
o = new Array(4),
r >= 6 ? h = r - 3 : 1 === l && (a = 2,
o = new Array(2),
h = r)),
o[0] = a << 3,
o[0] |= (15 & r) >>> 1,
o[1] = (15 & r) << 7,
o[1] |= (15 & l) << 3,
5 === a && (o[1] |= (15 & h) >>> 1,
o[2] = (1 & h) << 7,
o[2] |= 8,
o[3] = 0),
{
config: o,
samplingRate: u,
channelCount: l,
codec: "mp4a.40." + a,
originalCodec: "mp4a.40." + n
}
}
this._onError(m.Z.FORMAT_ERROR, "Flv: AAC invalid channel configuration")
}
}
,
e.prototype._parseMP3AudioData = function(e, t, i, n) {
if (!(i < 4)) {
this._littleEndian;
var r = new Uint8Array(e,t,i)
, o = null;
if (n) {
if (255 !== r[0])
return;
var a = r[1] >>> 3 & 3
, h = (6 & r[1]) >> 1
, u = (240 & r[2]) >>> 4
, l = (12 & r[2]) >>> 2
, d = 3 !== (r[3] >>> 6 & 3) ? 2 : 1
, c = 0
, f = 0;
switch (a) {
case 0:
c = this._mpegAudioV25SampleRateTable[l];
break;
case 2:
c = this._mpegAudioV20SampleRateTable[l];
break;
case 3:
c = this._mpegAudioV10SampleRateTable[l]
}
switch (h) {
case 1:
34,
u < this._mpegAudioL3BitRateTable.length && (f = this._mpegAudioL3BitRateTable[u]);
break;
case 2:
33,
u < this._mpegAudioL2BitRateTable.length && (f = this._mpegAudioL2BitRateTable[u]);
break;
case 3:
32,
u < this._mpegAudioL1BitRateTable.length && (f = this._mpegAudioL1BitRateTable[u])
}
o = {
bitRate: f,
samplingRate: c,
channelCount: d,
codec: "mp3",
originalCodec: "mp3"
}
} else
o = r;
return o
}
s.Z.w(this.TAG, "Flv: Invalid MP3 packet, header missing!")
}
,
e.prototype._parseVideoData = function(e, t, i, n, r) {
if (i <= 1)
s.Z.w(this.TAG, "Flv: Invalid video packet, missing VideoData payload!");
else if (!0 !== this._hasVideoFlagOverrided || !1 !== this._hasVideo) {
var o = new Uint8Array(e,t,i)[0]
, a = (240 & o) >>> 4
, h = 15 & o;
7 === h ? this._parseAVCVideoPacket(e, t + 1, i - 1, n, r, a) : this._onError(m.Z.CODEC_UNSUPPORTED, "Flv: Unsupported codec in video frame: " + h)
}
}
,
e.prototype._parseAVCVideoPacket = function(e, t, i, n, r, o) {
if (i < 4)
s.Z.w(this.TAG, "Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");
else {
var a = this._littleEndian
, h = new DataView(e,t,i)
, u = h.getUint8(0)
, l = (16777215 & h.getUint32(0, !a)) << 8 >> 8;
if (0 === u)
this._parseAVCDecoderConfigurationRecord(e, t + 4, i - 4);
else if (1 === u)
this._parseAVCVideoData(e, t + 4, i - 4, n, r, o, l);
else if (2 !== u)
return void this._onError(m.Z.FORMAT_ERROR, "Flv: Invalid video packet type " + u)
}
}
,
e.prototype._parseAVCDecoderConfigurationRecord = function(e, t, i) {
if (i < 7)
s.Z.w(this.TAG, "Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");
else {
var n = this._videoMetadata
, r = this._videoTrack
, o = this._littleEndian
, a = new DataView(e,t,i);
n ? void 0 !== n.avcc && s.Z.w(this.TAG, "Found another AVCDecoderConfigurationRecord!") : (!1 === this._hasVideo && !1 === this._hasVideoFlagOverrided && (this._hasVideo = !0,
this._mediaInfo.hasVideo = !0),
(n = this._videoMetadata = {}).type = "video",
n.id = r.id,
n.timescale = this._timescale,
n.duration = this._duration);
var h = a.getUint8(0)
, u = a.getUint8(1);
a.getUint8(2),
a.getUint8(3);
if (1 === h && 0 !== u)
if (this._naluLengthSize = 1 + (3 & a.getUint8(4)),
3 === this._naluLengthSize || 4 === this._naluLengthSize) {
var l = 31 & a.getUint8(5);
if (0 !== l) {
l > 1 && s.Z.w(this.TAG, "Flv: Strange AVCDecoderConfigurationRecord: SPS Count = " + l);
for (var d = 6, c = 0; c < l; c++) {
var f = a.getUint16(d, !o);
if (d += 2,
0 !== f) {
var _ = new Uint8Array(e,t + d,f);
d += f;
var g = p.parseSPS(_);
if (0 === c) {
n.codecWidth = g.codec_size.width,
n.codecHeight = g.codec_size.height,
n.presentWidth = g.present_size.width,
n.presentHeight = g.present_size.height,
n.profile = g.profile_string,
n.level = g.level_string,
n.bitDepth = g.bit_depth,
n.chromaFormat = g.chroma_format,
n.sarRatio = g.sar_ratio,
n.frameRate = g.frame_rate,
!1 !== g.frame_rate.fixed && 0 !== g.frame_rate.fps_num && 0 !== g.frame_rate.fps_den || (n.frameRate = this._referenceFrameRate);
var v = n.frameRate.fps_den
, y = n.frameRate.fps_num;
n.refSampleDuration = n.timescale * (v / y);
for (var b = _.subarray(1, 4), E = "avc1.", S = 0; S < 3; S++) {
var A = b[S].toString(16);
A.length < 2 && (A = "0" + A),
E += A
}
n.codec = E;
var L = this._mediaInfo;
L.width = n.codecWidth,
L.height = n.codecHeight,
L.fps = n.frameRate.fps,
L.profile = n.profile,
L.level = n.level,
L.refFrames = g.ref_frames,
L.chromaFormat = g.chroma_format_string,
L.sarNum = n.sarRatio.width,
L.sarDen = n.sarRatio.height,
L.videoCodec = E,
L.hasAudio ? null != L.audioCodec && (L.mimeType = 'video/x-flv; codecs="' + L.videoCodec + "," + L.audioCodec + '"') : L.mimeType = 'video/x-flv; codecs="' + L.videoCodec + '"',
L.isComplete() && this._onMediaInfo(L)
}
}
}
var R = a.getUint8(d);
if (0 !== R) {
R > 1 && s.Z.w(this.TAG, "Flv: Strange AVCDecoderConfigurationRecord: PPS Count = " + R),
d++;
for (c = 0; c < R; c++) {
f = a.getUint16(d, !o);
d += 2,
0 !== f && (d += f)
}
n.avcc = new Uint8Array(i),
n.avcc.set(new Uint8Array(e,t,i), 0),
s.Z.v(this.TAG, "Parsed AVCDecoderConfigurationRecord"),
this._isInitialMetadataDispatched() ? this._dispatch && (this._audioTrack.length || this._videoTrack.length) && this._onDataAvailable(this._audioTrack, this._videoTrack) : this._videoInitialMetadataDispatched = !0,
this._dispatch = !1,
this._onTrackMetadata("video", n)
} else
this._onError(m.Z.FORMAT_ERROR, "Flv: Invalid AVCDecoderConfigurationRecord: No PPS")
} else
this._onError(m.Z.FORMAT_ERROR, "Flv: Invalid AVCDecoderConfigurationRecord: No SPS")
} else
this._onError(m.Z.FORMAT_ERROR, "Flv: Strange NaluLengthSizeMinusOne: " + (this._naluLengthSize - 1));
else
this._onError(m.Z.FORMAT_ERROR, "Flv: Invalid AVCDecoderConfigurationRecord")
}
}
,
e.prototype._parseAVCVideoData = function(e, t, i, n, r, o, a) {
for (var h = this._littleEndian, u = new DataView(e,t,i), l = [], d = 0, c = 0, f = this._naluLengthSize, _ = this._timestampBase + n, p = 1 === o; c < i; ) {
if (c + 4 >= i) {
s.Z.w(this.TAG, "Malformed Nalu near timestamp " + _ + ", offset = " + c + ", dataSize = " + i);
break
}
var m = u.getUint32(c, !h);
if (3 === f && (m >>>= 8),
m > i - f)
return void s.Z.w(this.TAG, "Malformed Nalus near timestamp " + _ + ", NaluSize > DataSize!");
var g = 31 & u.getUint8(c + f);
5 === g && (p = !0);
var v = new Uint8Array(e,t + c,f + m)
, y = {
type: g,
data: v
};
l.push(y),
d += v.byteLength,
c += f + m
}
if (l.length) {
var b = this._videoTrack
, E = {
units: l,
length: d,
isKeyframe: p,
dts: _,
cts: a,
pts: _ + a
};
p && (E.fileposition = r),
b.samples.push(E),
b.length += d
}
}
,
e
}()
, v = function() {
function e() {}
return e.init = function() {
for (var t in e.types = {
avc1: [],
avcC: [],
btrt: [],
dinf: [],
dref: [],
esds: [],
ftyp: [],
hdlr: [],
mdat: [],
mdhd: [],
mdia: [],
mfhd: [],
minf: [],
moof: [],
moov: [],
mp4a: [],
mvex: [],
mvhd: [],
sdtp: [],
stbl: [],
stco: [],
stsc: [],
stsd: [],
stsz: [],
stts: [],
tfdt: [],
tfhd: [],
traf: [],
trak: [],
trun: [],
trex: [],
tkhd: [],
vmhd: [],
smhd: [],
".mp3": []
},
e.types)
e.types.hasOwnProperty(t) && (e.types[t] = [t.charCodeAt(0), t.charCodeAt(1), t.charCodeAt(2), t.charCodeAt(3)]);
var i = e.constants = {};
i.FTYP = new Uint8Array([105, 115, 111, 109, 0, 0, 0, 1, 105, 115, 111, 109, 97, 118, 99, 49]),
i.STSD_PREFIX = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]),
i.STTS = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]),
i.STSC = i.STCO = i.STTS,
i.STSZ = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
i.HDLR_VIDEO = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0]),
i.HDLR_AUDIO = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0]),
i.DREF = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1]),
i.SMHD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]),
i.VMHD = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0])
}
,
e.box = function(e) {
for (var t = 8, i = null, n = Array.prototype.slice.call(arguments, 1), r = n.length, s = 0; s < r; s++)
t += n[s].byteLength;
(i = new Uint8Array(t))[0] = t >>> 24 & 255,
i[1] = t >>> 16 & 255,
i[2] = t >>> 8 & 255,
i[3] = 255 & t,
i.set(e, 4);
var o = 8;
for (s = 0; s < r; s++)
i.set(n[s], o),
o += n[s].byteLength;
return i
}
,
e.generateInitSegment = function(t) {
var i = e.box(e.types.ftyp, e.constants.FTYP)
, n = e.moov(t)
, r = new Uint8Array(i.byteLength + n.byteLength);
return r.set(i, 0),
r.set(n, i.byteLength),
r
}
,
e.moov = function(t) {
var i = e.mvhd(t.timescale, t.duration)
, n = e.trak(t)
, r = e.mvex(t);
return e.box(e.types.moov, i, n, r)
}
,
e.mvhd = function(t, i) {
return e.box(e.types.mvhd, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, t >>> 24 & 255, t >>> 16 & 255, t >>> 8 & 255, 255 & t, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255]))
}
,
e.trak = function(t) {
return e.box(e.types.trak, e.tkhd(t), e.mdia(t))
}
,
e.tkhd = function(t) {
var i = t.id
, n = t.duration
, r = t.presentWidth
, s = t.presentHeight;
return e.box(e.types.tkhd, new Uint8Array([0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i, 0, 0, 0, 0, n >>> 24 & 255, n >>> 16 & 255, n >>> 8 & 255, 255 & n, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, r >>> 8 & 255, 255 & r, 0, 0, s >>> 8 & 255, 255 & s, 0, 0]))
}
,
e.mdia = function(t) {
return e.box(e.types.mdia, e.mdhd(t), e.hdlr(t), e.minf(t))
}
,
e.mdhd = function(t) {
var i = t.timescale
, n = t.duration;
return e.box(e.types.mdhd, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i, n >>> 24 & 255, n >>> 16 & 255, n >>> 8 & 255, 255 & n, 85, 196, 0, 0]))
}
,
e.hdlr = function(t) {
var i = null;
return i = "audio" === t.type ? e.constants.HDLR_AUDIO : e.constants.HDLR_VIDEO,
e.box(e.types.hdlr, i)
}
,
e.minf = function(t) {
var i = null;
return i = "audio" === t.type ? e.box(e.types.smhd, e.constants.SMHD) : e.box(e.types.vmhd, e.constants.VMHD),
e.box(e.types.minf, i, e.dinf(), e.stbl(t))
}
,
e.dinf = function() {
return e.box(e.types.dinf, e.box(e.types.dref, e.constants.DREF))
}
,
e.stbl = function(t) {
return e.box(e.types.stbl, e.stsd(t), e.box(e.types.stts, e.constants.STTS), e.box(e.types.stsc, e.constants.STSC), e.box(e.types.stsz, e.constants.STSZ), e.box(e.types.stco, e.constants.STCO))
}
,
e.stsd = function(t) {
return "audio" === t.type ? "mp3" === t.codec ? e.box(e.types.stsd, e.constants.STSD_PREFIX, e.mp3(t)) : e.box(e.types.stsd, e.constants.STSD_PREFIX, e.mp4a(t)) : e.box(e.types.stsd, e.constants.STSD_PREFIX, e.avc1(t))
}
,
e.mp3 = function(t) {
var i = t.channelCount
, n = t.audioSampleRate
, r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, i, 0, 16, 0, 0, 0, 0, n >>> 8 & 255, 255 & n, 0, 0]);
return e.box(e.types[".mp3"], r)
}
,
e.mp4a = function(t) {
var i = t.channelCount
, n = t.audioSampleRate
, r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, i, 0, 16, 0, 0, 0, 0, n >>> 8 & 255, 255 & n, 0, 0]);
return e.box(e.types.mp4a, r, e.esds(t))
}
,
e.esds = function(t) {
var i = t.config || []
, n = i.length
, r = new Uint8Array([0, 0, 0, 0, 3, 23 + n, 0, 1, 0, 4, 15 + n, 64, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5].concat([n]).concat(i).concat([6, 1, 2]));
return e.box(e.types.esds, r)
}
,
e.avc1 = function(t) {
var i = t.avcc
, n = t.codecWidth
, r = t.codecHeight
, s = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, n >>> 8 & 255, 255 & n, r >>> 8 & 255, 255 & r, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 10, 120, 113, 113, 47, 102, 108, 118, 46, 106, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 255, 255]);
return e.box(e.types.avc1, s, e.box(e.types.avcC, i))
}
,
e.mvex = function(t) {
return e.box(e.types.mvex, e.trex(t))
}
,
e.trex = function(t) {
var i = t.id
, n = new Uint8Array([0, 0, 0, 0, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1]);
return e.box(e.types.trex, n)
}
,
e.moof = function(t, i) {
return e.box(e.types.moof, e.mfhd(t.sequenceNumber), e.traf(t, i))
}
,
e.mfhd = function(t) {
var i = new Uint8Array([0, 0, 0, 0, t >>> 24 & 255, t >>> 16 & 255, t >>> 8 & 255, 255 & t]);
return e.box(e.types.mfhd, i)
}
,
e.traf = function(t, i) {
var n = t.id
, r = e.box(e.types.tfhd, new Uint8Array([0, 0, 0, 0, n >>> 24 & 255, n >>> 16 & 255, n >>> 8 & 255, 255 & n]))
, s = e.box(e.types.tfdt, new Uint8Array([0, 0, 0, 0, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i]))
, o = e.sdtp(t)
, a = e.trun(t, o.byteLength + 16 + 16 + 8 + 16 + 8 + 8);
return e.box(e.types.traf, r, s, a, o)
}
,
e.sdtp = function(t) {
for (var i = t.samples || [], n = i.length, r = new Uint8Array(4 + n), s = 0; s < n; s++) {
var o = i[s].flags;
r[s + 4] = o.isLeading << 6 | o.dependsOn << 4 | o.isDependedOn << 2 | o.hasRedundancy
}
return e.box(e.types.sdtp, r)
}
,
e.trun = function(t, i) {
var n = t.samples || []
, r = n.length
, s = 12 + 16 * r
, o = new Uint8Array(s);
i += 8 + s,
o.set([0, 0, 15, 1, r >>> 24 & 255, r >>> 16 & 255, r >>> 8 & 255, 255 & r, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i], 0);
for (var a = 0; a < r; a++) {
var h = n[a].duration
, u = n[a].size
, l = n[a].flags
, d = n[a].cts;
o.set([h >>> 24 & 255, h >>> 16 & 255, h >>> 8 & 255, 255 & h, u >>> 24 & 255, u >>> 16 & 255, u >>> 8 & 255, 255 & u, l.isLeading << 2 | l.dependsOn, l.isDependedOn << 6 | l.hasRedundancy << 4 | l.isNonSync, 0, 0, d >>> 24 & 255, d >>> 16 & 255, d >>> 8 & 255, 255 & d], 12 + 16 * a)
}
return e.box(e.types.trun, o)
}
,
e.mdat = function(t) {
return e.box(e.types.mdat, t)
}
,
e
}();
v.init();
var y = v
, b = function() {
function e() {}
return e.getSilentFrame = function(e, t) {
if ("mp4a.40.2" === e) {
if (1 === t)
return new Uint8Array([0, 200, 0, 128, 35, 128]);
if (2 === t)
return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]);
if (3 === t)
return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]);
if (4 === t)
return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]);
if (5 === t)
return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]);
if (6 === t)
return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224])
} else {
if (1 === t)
return new Uint8Array([1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
if (2 === t)
return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
if (3 === t)
return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94])
}
return null
}
,
e
}()
, E = i(51)
, S = function() {
function e(e) {
this.TAG = "MP4Remuxer",
this._config = e,
this._isLive = !0 === e.isLive,
this._dtsBase = -1,
this._dtsBaseInited = !1,
this._audioDtsBase = 1 / 0,
this._videoDtsBase = 1 / 0,
this._audioNextDts = void 0,
this._videoNextDts = void 0,
this._audioStashedLastSample = null,
this._videoStashedLastSample = null,
this._audioMeta = null,
this._videoMeta = null,
this._audioSegmentInfoList = new E.J1("audio"),
this._videoSegmentInfoList = new E.J1("video"),
this._onInitSegment = null,
this._onMediaSegment = null,
this._forceFirstIDR = !(!o.Z.chrome || !(o.Z.version.major < 50 || 50 === o.Z.version.major && o.Z.version.build < 2661)),
this._fillSilentAfterSeek = o.Z.msedge || o.Z.msie,
this._mp3UseMpegAudio = !o.Z.firefox,
this._fillAudioTimestampGap = this._config.fixAudioTimestampGap
}
return e.prototype.destroy = function() {
this._dtsBase = -1,
this._dtsBaseInited = !1,
this._audioMeta = null,
this._videoMeta = null,
this._audioSegmentInfoList.clear(),
this._audioSegmentInfoList = null,
this._videoSegmentInfoList.clear(),
this._videoSegmentInfoList = null,
this._onInitSegment = null,
this._onMediaSegment = null
}
,
e.prototype.bindDataSource = function(e) {
return e.onDataAvailable = this.remux.bind(this),
e.onTrackMetadata = this._onTrackMetadataReceived.bind(this),
this
}
,
Object.defineProperty(e.prototype, "onInitSegment", {
get: function() {
return this._onInitSegment
},
set: function(e) {
this._onInitSegment = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onMediaSegment", {
get: function() {
return this._onMediaSegment
},
set: function(e) {
this._onMediaSegment = e
},
enumerable: !1,
configurable: !0
}),
e.prototype.insertDiscontinuity = function() {
this._audioNextDts = this._videoNextDts = void 0
}
,
e.prototype.seek = function(e) {
this._audioStashedLastSample = null,
this._videoStashedLastSample = null,
this._videoSegmentInfoList.clear(),
this._audioSegmentInfoList.clear()
}
,
e.prototype.remux = function(e, t) {
if (!this._onMediaSegment)
throw new d.rT("MP4Remuxer: onMediaSegment callback must be specificed!");
this._dtsBaseInited || this._calculateDtsBase(e, t),
this._remuxVideo(t),
this._remuxAudio(e)
}
,
e.prototype._onTrackMetadataReceived = function(e, t) {
var i = null
, n = "mp4"
, r = t.codec;
if ("audio" === e)
this._audioMeta = t,
"mp3" === t.codec && this._mp3UseMpegAudio ? (n = "mpeg",
r = "",
i = new Uint8Array) : i = y.generateInitSegment(t);
else {
if ("video" !== e)
return;
this._videoMeta = t,
i = y.generateInitSegment(t)
}
if (!this._onInitSegment)
throw new d.rT("MP4Remuxer: onInitSegment callback must be specified!");
this._onInitSegment(e, {
type: e,
data: i.buffer,
codec: r,
container: e + "/" + n,
mediaDuration: t.duration
})
}
,
e.prototype._calculateDtsBase = function(e, t) {
this._dtsBaseInited || (e.samples && e.samples.length && (this._audioDtsBase = e.samples[0].dts),
t.samples && t.samples.length && (this._videoDtsBase = t.samples[0].dts),
this._dtsBase = Math.min(this._audioDtsBase, this._videoDtsBase),
this._dtsBaseInited = !0)
}
,
e.prototype.flushStashedSamples = function() {
var e = this._videoStashedLastSample
, t = this._audioStashedLastSample
, i = {
type: "video",
id: 1,
sequenceNumber: 0,
samples: [],
length: 0
};
null != e && (i.samples.push(e),
i.length = e.length);
var n = {
type: "audio",
id: 2,
sequenceNumber: 0,
samples: [],
length: 0
};
null != t && (n.samples.push(t),
n.length = t.length),
this._videoStashedLastSample = null,
this._audioStashedLastSample = null,
this._remuxVideo(i, !0),
this._remuxAudio(n, !0)
}
,
e.prototype._remuxAudio = function(e, t) {
if (null != this._audioMeta) {
var i, n = e, r = n.samples, a = void 0, h = -1, u = this._audioMeta.refSampleDuration, l = "mp3" === this._audioMeta.codec && this._mp3UseMpegAudio, d = this._dtsBaseInited && void 0 === this._audioNextDts, c = !1;
if (r && 0 !== r.length && (1 !== r.length || t)) {
var f = 0
, _ = null
, p = 0;
l ? (f = 0,
p = n.length) : (f = 8,
p = 8 + n.length);
var m = null;
if (r.length > 1 && (p -= (m = r.pop()).length),
null != this._audioStashedLastSample) {
var g = this._audioStashedLastSample;
this._audioStashedLastSample = null,
r.unshift(g),
p += g.length
}
null != m && (this._audioStashedLastSample = m);
var v = r[0].dts - this._dtsBase;
if (this._audioNextDts)
a = v - this._audioNextDts;
else if (this._audioSegmentInfoList.isEmpty())
a = 0,
this._fillSilentAfterSeek && !this._videoSegmentInfoList.isEmpty() && "mp3" !== this._audioMeta.originalCodec && (c = !0);
else {
var S = this._audioSegmentInfoList.getLastSampleBefore(v);
if (null != S) {
var A = v - (S.originalDts + S.duration);
A <= 3 && (A = 0),
a = v - (S.dts + S.duration + A)
} else
a = 0
}
if (c) {
var L = v - a
, R = this._videoSegmentInfoList.getLastSegmentBefore(v);
if (null != R && R.beginDts < L) {
if (P = b.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount)) {
var w = R.beginDts
, O = L - R.beginDts;
s.Z.v(this.TAG, "InsertPrefixSilentAudio: dts: " + w + ", duration: " + O),
r.unshift({
unit: P,
dts: w,
pts: w
}),
p += P.byteLength
}
} else
c = !1
}
for (var T = [], C = 0; C < r.length; C++) {
var k = (g = r[C]).unit
, D = g.dts - this._dtsBase
, I = (w = D,
!1)
, M = null
, B = 0;
if (!(D < -.001)) {
if ("mp3" !== this._audioMeta.codec) {
var x = D;
if (this._audioNextDts && (x = this._audioNextDts),
(a = D - x) <= -3 * u) {
s.Z.w(this.TAG, "Dropping 1 audio frame (originalDts: " + D + " ms ,curRefDts: " + x + " ms) due to dtsCorrection: " + a + " ms overlap.");
continue
}
if (a >= 3 * u && this._fillAudioTimestampGap && !o.Z.safari) {
I = !0;
var P, U = Math.floor(a / u);
s.Z.w(this.TAG, "Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\noriginalDts: " + D + " ms, curRefDts: " + x + " ms, dtsCorrection: " + Math.round(a) + " ms, generate: " + U + " frames"),
w = Math.floor(x),
B = Math.floor(x + u) - w,
null == (P = b.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount)) && (s.Z.w(this.TAG, "Unable to generate silent frame for " + this._audioMeta.originalCodec + " with " + this._audioMeta.channelCount + " channels, repeat last frame"),
P = k),
M = [];
for (var N = 0; N < U; N++) {
x += u;
var Z = Math.floor(x)
, F = Math.floor(x + u) - Z
, G = {
dts: Z,
pts: Z,
cts: 0,
unit: P,
size: P.byteLength,
duration: F,
originalDts: D,
flags: {
isLeading: 0,
dependsOn: 1,
isDependedOn: 0,
hasRedundancy: 0
}
};
M.push(G),
p += G.size
}
this._audioNextDts = x + u
} else
w = Math.floor(x),
B = Math.floor(x + u) - w,
this._audioNextDts = x + u
} else {
if (w = D - a,
C !== r.length - 1)
B = r[C + 1].dts - this._dtsBase - a - w;
else if (null != m)
B = m.dts - this._dtsBase - a - w;
else
B = T.length >= 1 ? T[T.length - 1].duration : Math.floor(u);
this._audioNextDts = w + B
}
-1 === h && (h = w),
T.push({
dts: w,
pts: w,
cts: 0,
unit: g.unit,
size: g.unit.byteLength,
duration: B,
originalDts: D,
flags: {
isLeading: 0,
dependsOn: 1,
isDependedOn: 0,
hasRedundancy: 0
}
}),
I && T.push.apply(T, M)
}
}
if (0 === T.length)
return n.samples = [],
void (n.length = 0);
l ? _ = new Uint8Array(p) : ((_ = new Uint8Array(p))[0] = p >>> 24 & 255,
_[1] = p >>> 16 & 255,
_[2] = p >>> 8 & 255,
_[3] = 255 & p,
_.set(y.types.mdat, 4));
for (C = 0; C < T.length; C++) {
k = T[C].unit;
_.set(k, f),
f += k.byteLength
}
var j = T[T.length - 1];
i = j.dts + j.duration;
var V = new E.Yy;
V.beginDts = h,
V.endDts = i,
V.beginPts = h,
V.endPts = i,
V.originalBeginDts = T[0].originalDts,
V.originalEndDts = j.originalDts + j.duration,
V.firstSample = new E.Wk(T[0].dts,T[0].pts,T[0].duration,T[0].originalDts,!1),
V.lastSample = new E.Wk(j.dts,j.pts,j.duration,j.originalDts,!1),
this._isLive || this._audioSegmentInfoList.append(V),
n.samples = T,
n.sequenceNumber++;
var z = null;
z = l ? new Uint8Array : y.moof(n, h),
n.samples = [],
n.length = 0;
var K = {
type: "audio",
data: this._mergeBoxes(z, _).buffer,
sampleCount: T.length,
info: V
};
l && d && (K.timestampOffset = h),
this._onMediaSegment("audio", K)
}
}
}
,
e.prototype._remuxVideo = function(e, t) {
if (null != this._videoMeta) {
var i, n, r = e, s = r.samples, o = void 0, a = -1, h = -1;
if (s && 0 !== s.length && (1 !== s.length || t)) {
var u = 8
, l = null
, d = 8 + e.length
, c = null;
if (s.length > 1 && (d -= (c = s.pop()).length),
null != this._videoStashedLastSample) {
var f = this._videoStashedLastSample;
this._videoStashedLastSample = null,
s.unshift(f),
d += f.length
}
null != c && (this._videoStashedLastSample = c);
var _ = s[0].dts - this._dtsBase;
if (this._videoNextDts)
o = _ - this._videoNextDts;
else if (this._videoSegmentInfoList.isEmpty())
o = 0;
else {
var p = this._videoSegmentInfoList.getLastSampleBefore(_);
if (null != p) {
var m = _ - (p.originalDts + p.duration);
m <= 3 && (m = 0),
o = _ - (p.dts + p.duration + m)
} else
o = 0
}
for (var g = new E.Yy, v = [], b = 0; b < s.length; b++) {
var S = (f = s[b]).dts - this._dtsBase
, A = f.isKeyframe
, L = S - o
, R = f.cts
, w = L + R;
-1 === a && (a = L,
h = w);
var O = 0;
if (b !== s.length - 1)
O = s[b + 1].dts - this._dtsBase - o - L;
else if (null != c)
O = c.dts - this._dtsBase - o - L;
else
O = v.length >= 1 ? v[v.length - 1].duration : Math.floor(this._videoMeta.refSampleDuration);
if (A) {
var T = new E.Wk(L,w,O,f.dts,!0);
T.fileposition = f.fileposition,
g.appendSyncPoint(T)
}
v.push({
dts: L,
pts: w,
cts: R,
units: f.units,
size: f.length,
isKeyframe: A,
duration: O,
originalDts: S,
flags: {
isLeading: 0,
dependsOn: A ? 2 : 1,
isDependedOn: A ? 1 : 0,
hasRedundancy: 0,
isNonSync: A ? 0 : 1
}
})
}
(l = new Uint8Array(d))[0] = d >>> 24 & 255,
l[1] = d >>> 16 & 255,
l[2] = d >>> 8 & 255,
l[3] = 255 & d,
l.set(y.types.mdat, 4);
for (b = 0; b < v.length; b++)
for (var C = v[b].units; C.length; ) {
var k = C.shift().data;
l.set(k, u),
u += k.byteLength
}
var D = v[v.length - 1];
if (i = D.dts + D.duration,
n = D.pts + D.duration,
this._videoNextDts = i,
g.beginDts = a,
g.endDts = i,
g.beginPts = h,
g.endPts = n,
g.originalBeginDts = v[0].originalDts,
g.originalEndDts = D.originalDts + D.duration,
g.firstSample = new E.Wk(v[0].dts,v[0].pts,v[0].duration,v[0].originalDts,v[0].isKeyframe),
g.lastSample = new E.Wk(D.dts,D.pts,D.duration,D.originalDts,D.isKeyframe),
this._isLive || this._videoSegmentInfoList.append(g),
r.samples = v,
r.sequenceNumber++,
this._forceFirstIDR) {
var I = v[0].flags;
I.dependsOn = 2,
I.isNonSync = 0
}
var M = y.moof(r, a);
r.samples = [],
r.length = 0,
this._onMediaSegment("video", {
type: "video",
data: this._mergeBoxes(M, l).buffer,
sampleCount: v.length,
info: g
})
}
}
}
,
e.prototype._mergeBoxes = function(e, t) {
var i = new Uint8Array(e.byteLength + t.byteLength);
return i.set(e, 0),
i.set(t, e.byteLength),
i
}
,
e
}()
, A = i(191)
, L = i(257)
, R = function() {
function e(e, t) {
this.TAG = "TransmuxingController",
this._emitter = new (r()),
this._config = t,
e.segments || (e.segments = [{
duration: e.duration,
filesize: e.filesize,
url: e.url
}]),
"boolean" != typeof e.cors && (e.cors = !0),
"boolean" != typeof e.withCredentials && (e.withCredentials = !1),
this._mediaDataSource = e,
this._currentSegmentIndex = 0;
var i = 0;
this._mediaDataSource.segments.forEach((function(n) {
n.timestampBase = i,
i += n.duration,
n.cors = e.cors,
n.withCredentials = e.withCredentials,
t.referrerPolicy && (n.referrerPolicy = t.referrerPolicy)
}
)),
isNaN(i) || this._mediaDataSource.duration === i || (this._mediaDataSource.duration = i),
this._mediaInfo = null,
this._demuxer = null,
this._remuxer = null,
this._ioctl = null,
this._pendingSeekTime = null,
this._pendingResolveSeekPoint = null,
this._statisticsReporter = null
}
return e.prototype.destroy = function() {
this._mediaInfo = null,
this._mediaDataSource = null,
this._statisticsReporter && this._disableStatisticsReporter(),
this._ioctl && (this._ioctl.destroy(),
this._ioctl = null),
this._demuxer && (this._demuxer.destroy(),
this._demuxer = null),
this._remuxer && (this._remuxer.destroy(),
this._remuxer = null),
this._emitter.removeAllListeners(),
this._emitter = null
}
,
e.prototype.on = function(e, t) {
this._emitter.addListener(e, t)
}
,
e.prototype.off = function(e, t) {
this._emitter.removeListener(e, t)
}
,
e.prototype.start = function() {
this._loadSegment(0),
this._enableStatisticsReporter()
}
,
e.prototype._loadSegment = function(e, t) {
this._currentSegmentIndex = e;
var i = this._mediaDataSource.segments[e]
, n = this._ioctl = new A.Z(i,this._config,e);
n.onError = this._onIOException.bind(this),
n.onSeeked = this._onIOSeeked.bind(this),
n.onComplete = this._onIOComplete.bind(this),
n.onRedirect = this._onIORedirect.bind(this),
n.onRecoveredEarlyEof = this._onIORecoveredEarlyEof.bind(this),
t ? this._demuxer.bindDataSource(this._ioctl) : n.onDataArrival = this._onInitChunkArrival.bind(this),
n.open(t)
}
,
e.prototype.stop = function() {
this._internalAbort(),
this._disableStatisticsReporter()
}
,
e.prototype._internalAbort = function() {
this._ioctl && (this._ioctl.destroy(),
this._ioctl = null)
}
,
e.prototype.pause = function() {
this._ioctl && this._ioctl.isWorking() && (this._ioctl.pause(),
this._disableStatisticsReporter())
}
,
e.prototype.resume = function() {
this._ioctl && this._ioctl.isPaused() && (this._ioctl.resume(),
this._enableStatisticsReporter())
}
,
e.prototype.seek = function(e) {
if (null != this._mediaInfo && this._mediaInfo.isSeekable()) {
var t = this._searchSegmentIndexContains(e);
if (t === this._currentSegmentIndex) {
var i = this._mediaInfo.segments[t];
if (null == i)
this._pendingSeekTime = e;
else {
var n = i.getNearestKeyframe(e);
this._remuxer.seek(n.milliseconds),
this._ioctl.seek(n.fileposition),
this._pendingResolveSeekPoint = n.milliseconds
}
} else {
var r = this._mediaInfo.segments[t];
if (null == r)
this._pendingSeekTime = e,
this._internalAbort(),
this._remuxer.seek(),
this._remuxer.insertDiscontinuity(),
this._loadSegment(t);
else {
n = r.getNearestKeyframe(e);
this._internalAbort(),
this._remuxer.seek(e),
this._remuxer.insertDiscontinuity(),
this._demuxer.resetMediaInfo(),
this._demuxer.timestampBase = this._mediaDataSource.segments[t].timestampBase,
this._loadSegment(t, n.fileposition),
this._pendingResolveSeekPoint = n.milliseconds,
this._reportSegmentMediaInfo(t)
}
}
this._enableStatisticsReporter()
}
}
,
e.prototype._searchSegmentIndexContains = function(e) {
for (var t = this._mediaDataSource.segments, i = t.length - 1, n = 0; n < t.length; n++)
if (e < t[n].timestampBase) {
i = n - 1;
break
}
return i
}
,
e.prototype._onInitChunkArrival = function(e, t) {
var i = this
, n = null
, r = 0;
if (t > 0)
this._demuxer.bindDataSource(this._ioctl),
this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,
r = this._demuxer.parseChunks(e, t);
else if ((n = g.probe(e)).match) {
this._demuxer = new g(n,this._config),
this._remuxer || (this._remuxer = new S(this._config));
var o = this._mediaDataSource;
null == o.duration || isNaN(o.duration) || (this._demuxer.overridedDuration = o.duration),
"boolean" == typeof o.hasAudio && (this._demuxer.overridedHasAudio = o.hasAudio),
"boolean" == typeof o.hasVideo && (this._demuxer.overridedHasVideo = o.hasVideo),
this._demuxer.timestampBase = o.segments[this._currentSegmentIndex].timestampBase,
this._demuxer.onError = this._onDemuxException.bind(this),
this._demuxer.onMediaInfo = this._onMediaInfo.bind(this),
this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this),
this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this),
this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),
this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this),
this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this),
r = this._demuxer.parseChunks(e, t)
} else
n = null,
s.Z.e(this.TAG, "Non-FLV, Unsupported media type!"),
Promise.resolve().then((function() {
i._internalAbort()
}
)),
this._emitter.emit(L.Z.DEMUX_ERROR, m.Z.FORMAT_UNSUPPORTED, "Non-FLV, Unsupported media type"),
r = 0;
return r
}
,
e.prototype._onMediaInfo = function(e) {
var t = this;
null == this._mediaInfo && (this._mediaInfo = Object.assign({}, e),
this._mediaInfo.keyframesIndex = null,
this._mediaInfo.segments = [],
this._mediaInfo.segmentCount = this._mediaDataSource.segments.length,
Object.setPrototypeOf(this._mediaInfo, a.Z.prototype));
var i = Object.assign({}, e);
Object.setPrototypeOf(i, a.Z.prototype),
this._mediaInfo.segments[this._currentSegmentIndex] = i,
this._reportSegmentMediaInfo(this._currentSegmentIndex),
null != this._pendingSeekTime && Promise.resolve().then((function() {
var e = t._pendingSeekTime;
t._pendingSeekTime = null,
t.seek(e)
}
))
}
,
e.prototype._onMetaDataArrived = function(e) {
this._emitter.emit(L.Z.METADATA_ARRIVED, e)
}
,
e.prototype._onScriptDataArrived = function(e) {
this._emitter.emit(L.Z.SCRIPTDATA_ARRIVED, e)
}
,
e.prototype._onIOSeeked = function() {
this._remuxer.insertDiscontinuity()
}
,
e.prototype._onIOComplete = function(e) {
var t = e + 1;
t < this._mediaDataSource.segments.length ? (this._internalAbort(),
this._remuxer.flushStashedSamples(),
this._loadSegment(t)) : (this._remuxer.flushStashedSamples(),
this._emitter.emit(L.Z.LOADING_COMPLETE),
this._disableStatisticsReporter())
}
,
e.prototype._onIORedirect = function(e) {
var t = this._ioctl.extraData;
this._mediaDataSource.segments[t].redirectedURL = e
}
,
e.prototype._onIORecoveredEarlyEof = function() {
this._emitter.emit(L.Z.RECOVERED_EARLY_EOF)
}
,
e.prototype._onIOException = function(e, t) {
s.Z.e(this.TAG, "IOException: type = " + e + ", code = " + t.code + ", msg = " + t.msg),
this._emitter.emit(L.Z.IO_ERROR, e, t),
this._disableStatisticsReporter()
}
,
e.prototype._onDemuxException = function(e, t) {
s.Z.e(this.TAG, "DemuxException: type = " + e + ", info = " + t),
this._emitter.emit(L.Z.DEMUX_ERROR, e, t)
}
,
e.prototype._onRemuxerInitSegmentArrival = function(e, t) {
this._emitter.emit(L.Z.INIT_SEGMENT, e, t)
}
,
e.prototype._onRemuxerMediaSegmentArrival = function(e, t) {
if (null == this._pendingSeekTime && (this._emitter.emit(L.Z.MEDIA_SEGMENT, e, t),
null != this._pendingResolveSeekPoint && "video" === e)) {
var i = t.info.syncPoints
, n = this._pendingResolveSeekPoint;
this._pendingResolveSeekPoint = null,
o.Z.safari && i.length > 0 && i[0].originalDts === n && (n = i[0].pts),
this._emitter.emit(L.Z.RECOMMEND_SEEKPOINT, n)
}
}
,
e.prototype._enableStatisticsReporter = function() {
null == this._statisticsReporter && (this._statisticsReporter = self.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval))
}
,
e.prototype._disableStatisticsReporter = function() {
this._statisticsReporter && (self.clearInterval(this._statisticsReporter),
this._statisticsReporter = null)
}
,
e.prototype._reportSegmentMediaInfo = function(e) {
var t = this._mediaInfo.segments[e]
, i = Object.assign({}, t);
i.duration = this._mediaInfo.duration,
i.segmentCount = this._mediaInfo.segmentCount,
delete i.segments,
delete i.keyframesIndex,
this._emitter.emit(L.Z.MEDIA_INFO, i)
}
,
e.prototype._reportStatisticsInfo = function() {
var e = {};
e.url = this._ioctl.currentURL,
e.hasRedirect = this._ioctl.hasRedirect,
e.hasRedirect && (e.redirectedURL = this._ioctl.currentRedirectedURL),
e.speed = this._ioctl.currentSpeed,
e.loaderType = this._ioctl.loaderType,
e.currentSegmentIndex = this._currentSegmentIndex,
e.totalSegmentCount = this._mediaDataSource.segments.length,
this._emitter.emit(L.Z.STATISTICS_INFO, e)
}
,
e
}()
},
257: function(e, t) {
"use strict";
t.Z = {
IO_ERROR: "io_error",
DEMUX_ERROR: "demux_error",
INIT_SEGMENT: "init_segment",
MEDIA_SEGMENT: "media_segment",
LOADING_COMPLETE: "loading_complete",
RECOVERED_EARLY_EOF: "recovered_early_eof",
MEDIA_INFO: "media_info",
METADATA_ARRIVED: "metadata_arrived",
SCRIPTDATA_ARRIVED: "scriptdata_arrived",
STATISTICS_INFO: "statistics_info",
RECOMMEND_SEEKPOINT: "recommend_seekpoint"
}
},
82: function(e, t, i) {
"use strict";
i(846),
i(219),
i(949),
i(257)
},
600: function(e, t) {
"use strict";
t.Z = {
OK: "OK",
FORMAT_ERROR: "FormatError",
FORMAT_UNSUPPORTED: "FormatUnsupported",
CODEC_UNSUPPORTED: "CodecUnsupported"
}
},
60: function(e, t, i) {
"use strict";
i.d(t, {
default: function() {
return D
}
});
var n = i(219)
, r = i(191)
, s = {
enableWorker: !1,
enableStashBuffer: !0,
stashInitialSize: void 0,
isLive: !1,
lazyLoad: !0,
lazyLoadMaxDuration: 180,
lazyLoadRecoverDuration: 30,
deferLoadAfterSourceOpen: !0,
autoCleanupMaxBackwardDuration: 180,
autoCleanupMinBackwardDuration: 120,
statisticsInfoReportInterval: 600,
fixAudioTimestampGap: !0,
accurateSeek: !1,
seekType: "range",
seekParamStart: "bstart",
seekParamEnd: "bend",
rangeLoadZeroStart: !1,
customSeekHandler: void 0,
reuseRedirectedURL: !1,
headers: void 0,
customLoader: void 0
};
function o() {
return Object.assign({}, s)
}
var a = function() {
function e() {}
return e.supportMSEH264Playback = function() {
return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')
}
,
e.supportNetworkStreamIO = function() {
var e = new r.Z({},o())
, t = e.loaderType;
return e.destroy(),
"fetch-stream-loader" == t || "xhr-moz-chunked-loader" == t
}
,
e.getNetworkLoaderTypeName = function() {
var e = new r.Z({},o())
, t = e.loaderType;
return e.destroy(),
t
}
,
e.supportNativeMediaPlayback = function(t) {
null == e.videoElement && (e.videoElement = window.document.createElement("video"));
var i = e.videoElement.canPlayType(t);
return "probably" === i || "maybe" == i
}
,
e.getFeatureList = function() {
var t = {
mseFlvPlayback: !1,
mseLiveFlvPlayback: !1,
networkStreamIO: !1,
networkLoaderName: "",
nativeMP4H264Playback: !1,
nativeWebmVP8Playback: !1,
nativeWebmVP9Playback: !1
};
return t.mseFlvPlayback = e.supportMSEH264Playback(),
t.networkStreamIO = e.supportNetworkStreamIO(),
t.networkLoaderName = e.getNetworkLoaderTypeName(),
t.mseLiveFlvPlayback = t.mseFlvPlayback && t.networkStreamIO,
t.nativeMP4H264Playback = e.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),
t.nativeWebmVP8Playback = e.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),
t.nativeWebmVP9Playback = e.supportNativeMediaPlayback('video/webm; codecs="vp9"'),
t
}
,
e
}()
, h = i(939)
, u = i(716)
, l = i.n(u)
, d = i(300)
, c = i(538)
, f = {
ERROR: "error",
LOADING_COMPLETE: "loading_complete",
RECOVERED_EARLY_EOF: "recovered_early_eof",
MEDIA_INFO: "media_info",
METADATA_ARRIVED: "metadata_arrived",
SCRIPTDATA_ARRIVED: "scriptdata_arrived",
STATISTICS_INFO: "statistics_info"
}
, _ = i(397)
, p = i.n(_)
, m = i(846)
, g = i(949)
, v = i(257)
, y = i(118)
, b = function() {
function e(e, t) {
if (this.TAG = "Transmuxer",
this._emitter = new (l()),
t.enableWorker && "undefined" != typeof Worker)
try {
this._worker = p()(82),
this._workerDestroying = !1,
this._worker.addEventListener("message", this._onWorkerMessage.bind(this)),
this._worker.postMessage({
cmd: "init",
param: [e, t]
}),
this.e = {
onLoggingConfigChanged: this._onLoggingConfigChanged.bind(this)
},
m.Z.registerListener(this.e.onLoggingConfigChanged),
this._worker.postMessage({
cmd: "logging_config",
param: m.Z.getConfig()
})
} catch (i) {
d.Z.e(this.TAG, "Error while initialize transmuxing worker, fallback to inline transmuxing"),
this._worker = null,
this._controller = new g.Z(e,t)
}
else
this._controller = new g.Z(e,t);
if (this._controller) {
var i = this._controller;
i.on(v.Z.IO_ERROR, this._onIOError.bind(this)),
i.on(v.Z.DEMUX_ERROR, this._onDemuxError.bind(this)),
i.on(v.Z.INIT_SEGMENT, this._onInitSegment.bind(this)),
i.on(v.Z.MEDIA_SEGMENT, this._onMediaSegment.bind(this)),
i.on(v.Z.LOADING_COMPLETE, this._onLoadingComplete.bind(this)),
i.on(v.Z.RECOVERED_EARLY_EOF, this._onRecoveredEarlyEof.bind(this)),
i.on(v.Z.MEDIA_INFO, this._onMediaInfo.bind(this)),
i.on(v.Z.METADATA_ARRIVED, this._onMetaDataArrived.bind(this)),
i.on(v.Z.SCRIPTDATA_ARRIVED, this._onScriptDataArrived.bind(this)),
i.on(v.Z.STATISTICS_INFO, this._onStatisticsInfo.bind(this)),
i.on(v.Z.RECOMMEND_SEEKPOINT, this._onRecommendSeekpoint.bind(this))
}
}
return e.prototype.destroy = function() {
this._worker ? this._workerDestroying || (this._workerDestroying = !0,
this._worker.postMessage({
cmd: "destroy"
}),
m.Z.removeListener(this.e.onLoggingConfigChanged),
this.e = null) : (this._controller.destroy(),
this._controller = null),
this._emitter.removeAllListeners(),
this._emitter = null
}
,
e.prototype.on = function(e, t) {
this._emitter.addListener(e, t)
}
,
e.prototype.off = function(e, t) {
this._emitter.removeListener(e, t)
}
,
e.prototype.hasWorker = function() {
return null != this._worker
}
,
e.prototype.open = function() {
this._worker ? this._worker.postMessage({
cmd: "start"
}) : this._controller.start()
}
,
e.prototype.close = function() {
this._worker ? this._worker.postMessage({
cmd: "stop"
}) : this._controller.stop()
}
,
e.prototype.seek = function(e) {
this._worker ? this._worker.postMessage({
cmd: "seek",
param: e
}) : this._controller.seek(e)
}
,
e.prototype.pause = function() {
this._worker ? this._worker.postMessage({
cmd: "pause"
}) : this._controller.pause()
}
,
e.prototype.resume = function() {
this._worker ? this._worker.postMessage({
cmd: "resume"
}) : this._controller.resume()
}
,
e.prototype._onInitSegment = function(e, t) {
var i = this;
Promise.resolve().then((function() {
i._emitter.emit(v.Z.INIT_SEGMENT, e, t)
}
))
}
,
e.prototype._onMediaSegment = function(e, t) {
var i = this;
Promise.resolve().then((function() {
i._emitter.emit(v.Z.MEDIA_SEGMENT, e, t)
}
))
}
,
e.prototype._onLoadingComplete = function() {
var e = this;
Promise.resolve().then((function() {
e._emitter.emit(v.Z.LOADING_COMPLETE)
}
))
}
,
e.prototype._onRecoveredEarlyEof = function() {
var e = this;
Promise.resolve().then((function() {
e._emitter.emit(v.Z.RECOVERED_EARLY_EOF)
}
))
}
,
e.prototype._onMediaInfo = function(e) {
var t = this;
Promise.resolve().then((function() {
t._emitter.emit(v.Z.MEDIA_INFO, e)
}
))
}
,
e.prototype._onMetaDataArrived = function(e) {
var t = this;
Promise.resolve().then((function() {
t._emitter.emit(v.Z.METADATA_ARRIVED, e)
}
))
}
,
e.prototype._onScriptDataArrived = function(e) {
var t = this;
Promise.resolve().then((function() {
t._emitter.emit(v.Z.SCRIPTDATA_ARRIVED, e)
}
))
}
,
e.prototype._onStatisticsInfo = function(e) {
var t = this;
Promise.resolve().then((function() {
t._emitter.emit(v.Z.STATISTICS_INFO, e)
}
))
}
,
e.prototype._onIOError = function(e, t) {
var i = this;
Promise.resolve().then((function() {
i._emitter.emit(v.Z.IO_ERROR, e, t)
}
))
}
,
e.prototype._onDemuxError = function(e, t) {
var i = this;
Promise.resolve().then((function() {
i._emitter.emit(v.Z.DEMUX_ERROR, e, t)
}
))
}
,
e.prototype._onRecommendSeekpoint = function(e) {
var t = this;
Promise.resolve().then((function() {
t._emitter.emit(v.Z.RECOMMEND_SEEKPOINT, e)
}
))
}
,
e.prototype._onLoggingConfigChanged = function(e) {
this._worker && this._worker.postMessage({
cmd: "logging_config",
param: e
})
}
,
e.prototype._onWorkerMessage = function(e) {
var t = e.data
, i = t.data;
if ("destroyed" === t.msg || this._workerDestroying)
return this._workerDestroying = !1,
this._worker.terminate(),
void (this._worker = null);
switch (t.msg) {
case v.Z.INIT_SEGMENT:
case v.Z.MEDIA_SEGMENT:
this._emitter.emit(t.msg, i.type, i.data);
break;
case v.Z.LOADING_COMPLETE:
case v.Z.RECOVERED_EARLY_EOF:
this._emitter.emit(t.msg);
break;
case v.Z.MEDIA_INFO:
Object.setPrototypeOf(i, y.Z.prototype),
this._emitter.emit(t.msg, i);
break;
case v.Z.METADATA_ARRIVED:
case v.Z.SCRIPTDATA_ARRIVED:
case v.Z.STATISTICS_INFO:
this._emitter.emit(t.msg, i);
break;
case v.Z.IO_ERROR:
case v.Z.DEMUX_ERROR:
this._emitter.emit(t.msg, i.type, i.info);
break;
case v.Z.RECOMMEND_SEEKPOINT:
this._emitter.emit(t.msg, i);
break;
case "logcat_callback":
d.Z.emitter.emit("log", i.type, i.logcat)
}
}
,
e
}()
, E = {
ERROR: "error",
SOURCE_OPEN: "source_open",
UPDATE_END: "update_end",
BUFFER_FULL: "buffer_full"
}
, S = i(51)
, A = i(29)
, L = function() {
function e(e) {
this.TAG = "MSEController",
this._config = e,
this._emitter = new (l()),
this._config.isLive && null == this._config.autoCleanupSourceBuffer && (this._config.autoCleanupSourceBuffer = !0),
this.e = {
onSourceOpen: this._onSourceOpen.bind(this),
onSourceEnded: this._onSourceEnded.bind(this),
onSourceClose: this._onSourceClose.bind(this),
onSourceBufferError: this._onSourceBufferError.bind(this),
onSourceBufferUpdateEnd: this._onSourceBufferUpdateEnd.bind(this)
},
this._mediaSource = null,
this._mediaSourceObjectURL = null,
this._mediaElement = null,
this._isBufferFull = !1,
this._hasPendingEos = !1,
this._requireSetMediaDuration = !1,
this._pendingMediaDuration = 0,
this._pendingSourceBufferInit = [],
this._mimeTypes = {
video: null,
audio: null
},
this._sourceBuffers = {
video: null,
audio: null
},
this._lastInitSegments = {
video: null,
audio: null
},
this._pendingSegments = {
video: [],
audio: []
},
this._pendingRemoveRanges = {
video: [],
audio: []
},
this._idrList = new S.Vn
}
return e.prototype.destroy = function() {
(this._mediaElement || this._mediaSource) && this.detachMediaElement(),
this.e = null,
this._emitter.removeAllListeners(),
this._emitter = null
}
,
e.prototype.on = function(e, t) {
this._emitter.addListener(e, t)
}
,
e.prototype.off = function(e, t) {
this._emitter.removeListener(e, t)
}
,
e.prototype.attachMediaElement = function(e) {
if (this._mediaSource)
throw new A.rT("MediaSource has been attached to an HTMLMediaElement!");
var t = this._mediaSource = new window.MediaSource;
t.addEventListener("sourceopen", this.e.onSourceOpen),
t.addEventListener("sourceended", this.e.onSourceEnded),
t.addEventListener("sourceclose", this.e.onSourceClose),
this._mediaElement = e,
this._mediaSourceObjectURL = window.URL.createObjectURL(this._mediaSource),
e.src = this._mediaSourceObjectURL
}
,
e.prototype.detachMediaElement = function() {
if (this._mediaSource) {
var e = this._mediaSource;
for (var t in this._sourceBuffers) {
var i = this._pendingSegments[t];
i.splice(0, i.length),
this._pendingSegments[t] = null,
this._pendingRemoveRanges[t] = null,
this._lastInitSegments[t] = null;
var n = this._sourceBuffers[t];
if (n) {
if ("closed" !== e.readyState) {
try {
e.removeSourceBuffer(n)
} catch (e) {
d.Z.e(this.TAG, e.message)
}
n.removeEventListener("error", this.e.onSourceBufferError),
n.removeEventListener("updateend", this.e.onSourceBufferUpdateEnd)
}
this._mimeTypes[t] = null,
this._sourceBuffers[t] = null
}
}
if ("open" === e.readyState)
try {
e.endOfStream()
} catch (e) {
d.Z.e(this.TAG, e.message)
}
e.removeEventListener("sourceopen", this.e.onSourceOpen),
e.removeEventListener("sourceended", this.e.onSourceEnded),
e.removeEventListener("sourceclose", this.e.onSourceClose),
this._pendingSourceBufferInit = [],
this._isBufferFull = !1,
this._idrList.clear(),
this._mediaSource = null
}
this._mediaElement && (this._mediaElement.src = "",
this._mediaElement.removeAttribute("src"),
this._mediaElement = null),
this._mediaSourceObjectURL && (window.URL.revokeObjectURL(this._mediaSourceObjectURL),
this._mediaSourceObjectURL = null)
}
,
e.prototype.appendInitSegment = function(e, t) {
if (!this._mediaSource || "open" !== this._mediaSource.readyState)
return this._pendingSourceBufferInit.push(e),
void this._pendingSegments[e.type].push(e);
var i = e
, n = "" + i.container;
i.codec && i.codec.length > 0 && (n += ";codecs=" + i.codec);
var r = !1;
if (d.Z.v(this.TAG, "Received Initialization Segment, mimeType: " + n),
this._lastInitSegments[i.type] = i,
n !== this._mimeTypes[i.type]) {
if (this._mimeTypes[i.type])
d.Z.v(this.TAG, "Notice: " + i.type + " mimeType changed, origin: " + this._mimeTypes[i.type] + ", target: " + n);
else {
r = !0;
try {
var s = this._sourceBuffers[i.type] = this._mediaSource.addSourceBuffer(n);
s.addEventListener("error", this.e.onSourceBufferError),
s.addEventListener("updateend", this.e.onSourceBufferUpdateEnd)
} catch (e) {
return d.Z.e(this.TAG, e.message),
void this._emitter.emit(E.ERROR, {
code: e.code,
msg: e.message
})
}
}
this._mimeTypes[i.type] = n
}
t || this._pendingSegments[i.type].push(i),
r || this._sourceBuffers[i.type] && !this._sourceBuffers[i.type].updating && this._doAppendSegments(),
c.Z.safari && "audio/mpeg" === i.container && i.mediaDuration > 0 && (this._requireSetMediaDuration = !0,
this._pendingMediaDuration = i.mediaDuration / 1e3,
this._updateMediaSourceDuration())
}
,
e.prototype.appendMediaSegment = function(e) {
var t = e;
this._pendingSegments[t.type].push(t),
this._config.autoCleanupSourceBuffer && this._needCleanupSourceBuffer() && this._doCleanupSourceBuffer();
var i = this._sourceBuffers[t.type];
!i || i.updating || this._hasPendingRemoveRanges() || this._doAppendSegments()
}
,
e.prototype.seek = function(e) {
for (var t in this._sourceBuffers)
if (this._sourceBuffers[t]) {
var i = this._sourceBuffers[t];
if ("open" === this._mediaSource.readyState)
try {
i.abort()
} catch (e) {
d.Z.e(this.TAG, e.message)
}
this._idrList.clear();
var n = this._pendingSegments[t];
if (n.splice(0, n.length),
"closed" !== this._mediaSource.readyState) {
for (var r = 0; r < i.buffered.length; r++) {
var s = i.buffered.start(r)
, o = i.buffered.end(r);
this._pendingRemoveRanges[t].push({
start: s,
end: o
})
}
if (i.updating || this._doRemoveRanges(),
c.Z.safari) {
var a = this._lastInitSegments[t];
a && (this._pendingSegments[t].push(a),
i.updating || this._doAppendSegments())
}
}
}
}
,
e.prototype.endOfStream = function() {
var e = this._mediaSource
, t = this._sourceBuffers;
e && "open" === e.readyState ? t.video && t.video.updating || t.audio && t.audio.updating ? this._hasPendingEos = !0 : (this._hasPendingEos = !1,
e.endOfStream()) : e && "closed" === e.readyState && this._hasPendingSegments() && (this._hasPendingEos = !0)
}
,
e.prototype.getNearestKeyframe = function(e) {
return this._idrList.getLastSyncPointBeforeDts(e)
}
,
e.prototype._needCleanupSourceBuffer = function() {
if (!this._config.autoCleanupSourceBuffer)
return !1;
var e = this._mediaElement.currentTime;
for (var t in this._sourceBuffers) {
var i = this._sourceBuffers[t];
if (i) {
var n = i.buffered;
if (n.length >= 1 && e - n.start(0) >= this._config.autoCleanupMaxBackwardDuration)
return !0
}
}
return !1
}
,
e.prototype._doCleanupSourceBuffer = function() {
var e = this._mediaElement.currentTime;
for (var t in this._sourceBuffers) {
var i = this._sourceBuffers[t];
if (i) {
for (var n = i.buffered, r = !1, s = 0; s < n.length; s++) {
var o = n.start(s)
, a = n.end(s);
if (o <= e && e < a + 3) {
if (e - o >= this._config.autoCleanupMaxBackwardDuration) {
r = !0;
var h = e - this._config.autoCleanupMinBackwardDuration;
this._pendingRemoveRanges[t].push({
start: o,
end: h
})
}
} else
a < e && (r = !0,
this._pendingRemoveRanges[t].push({
start: o,
end: a
}))
}
r && !i.updating && this._doRemoveRanges()
}
}
}
,
e.prototype._updateMediaSourceDuration = function() {
var e = this._sourceBuffers;
if (0 !== this._mediaElement.readyState && "open" === this._mediaSource.readyState && !(e.video && e.video.updating || e.audio && e.audio.updating)) {
var t = this._mediaSource.duration
, i = this._pendingMediaDuration;
i > 0 && (isNaN(t) || i > t) && (d.Z.v(this.TAG, "Update MediaSource duration from " + t + " to " + i),
this._mediaSource.duration = i),
this._requireSetMediaDuration = !1,
this._pendingMediaDuration = 0
}
}
,
e.prototype._doRemoveRanges = function() {
for (var e in this._pendingRemoveRanges)
if (this._sourceBuffers[e] && !this._sourceBuffers[e].updating)
for (var t = this._sourceBuffers[e], i = this._pendingRemoveRanges[e]; i.length && !t.updating; ) {
var n = i.shift();
t.remove(n.start, n.end)
}
}
,
e.prototype._doAppendSegments = function() {
var e = this._pendingSegments;
for (var t in e)
if (this._sourceBuffers[t] && !this._sourceBuffers[t].updating && e[t].length > 0) {
var i = e[t].shift();
if (i.timestampOffset) {
var n = this._sourceBuffers[t].timestampOffset
, r = i.timestampOffset / 1e3;
Math.abs(n - r) > .1 && (d.Z.v(this.TAG, "Update MPEG audio timestampOffset from " + n + " to " + r),
this._sourceBuffers[t].timestampOffset = r),
delete i.timestampOffset
}
if (!i.data || 0 === i.data.byteLength)
continue;
try {
this._sourceBuffers[t].appendBuffer(i.data),
this._isBufferFull = !1,
"video" === t && i.hasOwnProperty("info") && this._idrList.appendArray(i.info.syncPoints)
} catch (e) {
this._pendingSegments[t].unshift(i),
22 === e.code ? (this._isBufferFull || this._emitter.emit(E.BUFFER_FULL),
this._isBufferFull = !0) : (d.Z.e(this.TAG, e.message),
this._emitter.emit(E.ERROR, {
code: e.code,
msg: e.message
}))
}
}
}
,
e.prototype._onSourceOpen = function() {
if (d.Z.v(this.TAG, "MediaSource onSourceOpen"),
this._mediaSource.removeEventListener("sourceopen", this.e.onSourceOpen),
this._pendingSourceBufferInit.length > 0)
for (var e = this._pendingSourceBufferInit; e.length; ) {
var t = e.shift();
this.appendInitSegment(t, !0)
}
this._hasPendingSegments() && this._doAppendSegments(),
this._emitter.emit(E.SOURCE_OPEN)
}
,
e.prototype._onSourceEnded = function() {
d.Z.v(this.TAG, "MediaSource onSourceEnded")
}
,
e.prototype._onSourceClose = function() {
d.Z.v(this.TAG, "MediaSource onSourceClose"),
this._mediaSource && null != this.e && (this._mediaSource.removeEventListener("sourceopen", this.e.onSourceOpen),
this._mediaSource.removeEventListener("sourceended", this.e.onSourceEnded),
this._mediaSource.removeEventListener("sourceclose", this.e.onSourceClose))
}
,
e.prototype._hasPendingSegments = function() {
var e = this._pendingSegments;
return e.video.length > 0 || e.audio.length > 0
}
,
e.prototype._hasPendingRemoveRanges = function() {
var e = this._pendingRemoveRanges;
return e.video.length > 0 || e.audio.length > 0
}
,
e.prototype._onSourceBufferUpdateEnd = function() {
this._requireSetMediaDuration ? this._updateMediaSourceDuration() : this._hasPendingRemoveRanges() ? this._doRemoveRanges() : this._hasPendingSegments() ? this._doAppendSegments() : this._hasPendingEos && this.endOfStream(),
this._emitter.emit(E.UPDATE_END)
}
,
e.prototype._onSourceBufferError = function(e) {
d.Z.e(this.TAG, "SourceBuffer Error: " + e)
}
,
e
}()
, R = i(600)
, w = {
NETWORK_ERROR: "NetworkError",
MEDIA_ERROR: "MediaError",
OTHER_ERROR: "OtherError"
}
, O = {
NETWORK_EXCEPTION: h.nm.EXCEPTION,
NETWORK_STATUS_CODE_INVALID: h.nm.HTTP_STATUS_CODE_INVALID,
NETWORK_TIMEOUT: h.nm.CONNECTING_TIMEOUT,
NETWORK_UNRECOVERABLE_EARLY_EOF: h.nm.UNRECOVERABLE_EARLY_EOF,
MEDIA_MSE_ERROR: "MediaMSEError",
MEDIA_FORMAT_ERROR: R.Z.FORMAT_ERROR,
MEDIA_FORMAT_UNSUPPORTED: R.Z.FORMAT_UNSUPPORTED,
MEDIA_CODEC_UNSUPPORTED: R.Z.CODEC_UNSUPPORTED
}
, T = function() {
function e(e, t) {
if (this.TAG = "FlvPlayer",
this._type = "FlvPlayer",
this._emitter = new (l()),
this._config = o(),
"object" == typeof t && Object.assign(this._config, t),
"flv" !== e.type.toLowerCase())
throw new A.OC("FlvPlayer requires an flv MediaDataSource input!");
!0 === e.isLive && (this._config.isLive = !0),
this.e = {
onvLoadedMetadata: this._onvLoadedMetadata.bind(this),
onvSeeking: this._onvSeeking.bind(this),
onvCanPlay: this._onvCanPlay.bind(this),
onvStalled: this._onvStalled.bind(this),
onvProgress: this._onvProgress.bind(this)
},
self.performance && self.performance.now ? this._now = self.performance.now.bind(self.performance) : this._now = Date.now,
this._pendingSeekTime = null,
this._requestSetTime = !1,
this._seekpointRecord = null,
this._progressChecker = null,
this._mediaDataSource = e,
this._mediaElement = null,
this._msectl = null,
this._transmuxer = null,
this._mseSourceOpened = !1,
this._hasPendingLoad = !1,
this._receivedCanPlay = !1,
this._mediaInfo = null,
this._statisticsInfo = null;
var i = c.Z.chrome && (c.Z.version.major < 50 || 50 === c.Z.version.major && c.Z.version.build < 2661);
this._alwaysSeekKeyframe = !!(i || c.Z.msedge || c.Z.msie),
this._alwaysSeekKeyframe && (this._config.accurateSeek = !1)
}
return e.prototype.destroy = function() {
null != this._progressChecker && (window.clearInterval(this._progressChecker),
this._progressChecker = null),
this._transmuxer && this.unload(),
this._mediaElement && this.detachMediaElement(),
this.e = null,
this._mediaDataSource = null,
this._emitter.removeAllListeners(),
this._emitter = null
}
,
e.prototype.on = function(e, t) {
var i = this;
e === f.MEDIA_INFO ? null != this._mediaInfo && Promise.resolve().then((function() {
i._emitter.emit(f.MEDIA_INFO, i.mediaInfo)
}
)) : e === f.STATISTICS_INFO && null != this._statisticsInfo && Promise.resolve().then((function() {
i._emitter.emit(f.STATISTICS_INFO, i.statisticsInfo)
}
)),
this._emitter.addListener(e, t)
}
,
e.prototype.off = function(e, t) {
this._emitter.removeListener(e, t)
}
,
e.prototype.attachMediaElement = function(e) {
var t = this;
if (this._mediaElement = e,
e.addEventListener("loadedmetadata", this.e.onvLoadedMetadata),
e.addEventListener("seeking", this.e.onvSeeking),
e.addEventListener("canplay", this.e.onvCanPlay),
e.addEventListener("stalled", this.e.onvStalled),
e.addEventListener("progress", this.e.onvProgress),
this._msectl = new L(this._config),
this._msectl.on(E.UPDATE_END, this._onmseUpdateEnd.bind(this)),
this._msectl.on(E.BUFFER_FULL, this._onmseBufferFull.bind(this)),
this._msectl.on(E.SOURCE_OPEN, (function() {
t._mseSourceOpened = !0,
t._hasPendingLoad && (t._hasPendingLoad = !1,
t.load())
}
)),
this._msectl.on(E.ERROR, (function(e) {
t._emitter.emit(f.ERROR, w.MEDIA_ERROR, O.MEDIA_MSE_ERROR, e)
}
)),
this._msectl.attachMediaElement(e),
null != this._pendingSeekTime)
try {
e.currentTime = this._pendingSeekTime,
this._pendingSeekTime = null
} catch (e) {}
}
,
e.prototype.detachMediaElement = function() {
this._mediaElement && (this._msectl.detachMediaElement(),
this._mediaElement.removeEventListener("loadedmetadata", this.e.onvLoadedMetadata),
this._mediaElement.removeEventListener("seeking", this.e.onvSeeking),
this._mediaElement.removeEventListener("canplay", this.e.onvCanPlay),
this._mediaElement.removeEventListener("stalled", this.e.onvStalled),
this._mediaElement.removeEventListener("progress", this.e.onvProgress),
this._mediaElement = null),
this._msectl && (this._msectl.destroy(),
this._msectl = null)
}
,
e.prototype.load = function() {
var e = this;
if (!this._mediaElement)
throw new A.rT("HTMLMediaElement must be attached before load()!");
if (this._transmuxer)
throw new A.rT("FlvPlayer.load() has been called, please call unload() first!");
this._hasPendingLoad || (this._config.deferLoadAfterSourceOpen && !1 === this._mseSourceOpened ? this._hasPendingLoad = !0 : (this._mediaElement.readyState > 0 && (this._requestSetTime = !0,
this._mediaElement.currentTime = 0),
this._transmuxer = new b(this._mediaDataSource,this._config),
this._transmuxer.on(v.Z.INIT_SEGMENT, (function(t, i) {
e._msectl.appendInitSegment(i)
}
)),
this._transmuxer.on(v.Z.MEDIA_SEGMENT, (function(t, i) {
if (e._msectl.appendMediaSegment(i),
e._config.lazyLoad && !e._config.isLive) {
var n = e._mediaElement.currentTime;
i.info.endDts >= 1e3 * (n + e._config.lazyLoadMaxDuration) && null == e._progressChecker && (d.Z.v(e.TAG, "Maximum buffering duration exceeded, suspend transmuxing task"),
e._suspendTransmuxer())
}
}
)),
this._transmuxer.on(v.Z.LOADING_COMPLETE, (function() {
e._msectl.endOfStream(),
e._emitter.emit(f.LOADING_COMPLETE)
}
)),
this._transmuxer.on(v.Z.RECOVERED_EARLY_EOF, (function() {
e._emitter.emit(f.RECOVERED_EARLY_EOF)
}
)),
this._transmuxer.on(v.Z.IO_ERROR, (function(t, i) {
e._emitter.emit(f.ERROR, w.NETWORK_ERROR, t, i)
}
)),
this._transmuxer.on(v.Z.DEMUX_ERROR, (function(t, i) {
e._emitter.emit(f.ERROR, w.MEDIA_ERROR, t, {
code: -1,
msg: i
})
}
)),
this._transmuxer.on(v.Z.MEDIA_INFO, (function(t) {
e._mediaInfo = t,
e._emitter.emit(f.MEDIA_INFO, Object.assign({}, t))
}
)),
this._transmuxer.on(v.Z.METADATA_ARRIVED, (function(t) {
e._emitter.emit(f.METADATA_ARRIVED, t)
}
)),
this._transmuxer.on(v.Z.SCRIPTDATA_ARRIVED, (function(t) {
e._emitter.emit(f.SCRIPTDATA_ARRIVED, t)
}
)),
this._transmuxer.on(v.Z.STATISTICS_INFO, (function(t) {
e._statisticsInfo = e._fillStatisticsInfo(t),
e._emitter.emit(f.STATISTICS_INFO, Object.assign({}, e._statisticsInfo))
}
)),
this._transmuxer.on(v.Z.RECOMMEND_SEEKPOINT, (function(t) {
e._mediaElement && !e._config.accurateSeek && (e._requestSetTime = !0,
e._mediaElement.currentTime = t / 1e3)
}
)),
this._transmuxer.open()))
}
,
e.prototype.unload = function() {
this._mediaElement && this._mediaElement.pause(),
this._msectl && this._msectl.seek(0),
this._transmuxer && (this._transmuxer.close(),
this._transmuxer.destroy(),
this._transmuxer = null)
}
,
e.prototype.play = function() {
return this._mediaElement.play()
}
,
e.prototype.pause = function() {
this._mediaElement.pause()
}
,
Object.defineProperty(e.prototype, "type", {
get: function() {
return this._type
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "buffered", {
get: function() {
return this._mediaElement.buffered
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "duration", {
get: function() {
return this._mediaElement.duration
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "volume", {
get: function() {
return this._mediaElement.volume
},
set: function(e) {
this._mediaElement.volume = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "muted", {
get: function() {
return this._mediaElement.muted
},
set: function(e) {
this._mediaElement.muted = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "currentTime", {
get: function() {
return this._mediaElement ? this._mediaElement.currentTime : 0
},
set: function(e) {
this._mediaElement ? this._internalSeek(e) : this._pendingSeekTime = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "mediaInfo", {
get: function() {
return Object.assign({}, this._mediaInfo)
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "statisticsInfo", {
get: function() {
return null == this._statisticsInfo && (this._statisticsInfo = {}),
this._statisticsInfo = this._fillStatisticsInfo(this._statisticsInfo),
Object.assign({}, this._statisticsInfo)
},
enumerable: !1,
configurable: !0
}),
e.prototype._fillStatisticsInfo = function(e) {
if (e.playerType = this._type,
!(this._mediaElement instanceof HTMLVideoElement))
return e;
var t = !0
, i = 0
, n = 0;
if (this._mediaElement.getVideoPlaybackQuality) {
var r = this._mediaElement.getVideoPlaybackQuality();
i = r.totalVideoFrames,
n = r.droppedVideoFrames
} else
null != this._mediaElement.webkitDecodedFrameCount ? (i = this._mediaElement.webkitDecodedFrameCount,
n = this._mediaElement.webkitDroppedFrameCount) : t = !1;
return t && (e.decodedFrames = i,
e.droppedFrames = n),
e
}
,
e.prototype._onmseUpdateEnd = function() {
if (this._config.lazyLoad && !this._config.isLive) {
for (var e = this._mediaElement.buffered, t = this._mediaElement.currentTime, i = 0, n = 0; n < e.length; n++) {
var r = e.start(n)
, s = e.end(n);
if (r <= t && t < s) {
r,
i = s;
break
}
}
i >= t + this._config.lazyLoadMaxDuration && null == this._progressChecker && (d.Z.v(this.TAG, "Maximum buffering duration exceeded, suspend transmuxing task"),
this._suspendTransmuxer())
}
}
,
e.prototype._onmseBufferFull = function() {
d.Z.v(this.TAG, "MSE SourceBuffer is full, suspend transmuxing task"),
null == this._progressChecker && this._suspendTransmuxer()
}
,
e.prototype._suspendTransmuxer = function() {
this._transmuxer && (this._transmuxer.pause(),
null == this._progressChecker && (this._progressChecker = window.setInterval(this._checkProgressAndResume.bind(this), 1e3)))
}
,
e.prototype._checkProgressAndResume = function() {
for (var e = this._mediaElement.currentTime, t = this._mediaElement.buffered, i = !1, n = 0; n < t.length; n++) {
var r = t.start(n)
, s = t.end(n);
if (e >= r && e < s) {
e >= s - this._config.lazyLoadRecoverDuration && (i = !0);
break
}
}
i && (window.clearInterval(this._progressChecker),
this._progressChecker = null,
i && (d.Z.v(this.TAG, "Continue loading from paused position"),
this._transmuxer.resume()))
}
,
e.prototype._isTimepointBuffered = function(e) {
for (var t = this._mediaElement.buffered, i = 0; i < t.length; i++) {
var n = t.start(i)
, r = t.end(i);
if (e >= n && e < r)
return !0
}
return !1
}
,
e.prototype._internalSeek = function(e) {
var t = this._isTimepointBuffered(e)
, i = !1
, n = 0;
if (e < 1 && this._mediaElement.buffered.length > 0) {
var r = this._mediaElement.buffered.start(0);
(r < 1 && e < r || c.Z.safari) && (i = !0,
n = c.Z.safari ? .1 : r)
}
if (i)
this._requestSetTime = !0,
this._mediaElement.currentTime = n;
else if (t) {
if (this._alwaysSeekKeyframe) {
var s = this._msectl.getNearestKeyframe(Math.floor(1e3 * e));
this._requestSetTime = !0,
this._mediaElement.currentTime = null != s ? s.dts / 1e3 : e
} else
this._requestSetTime = !0,
this._mediaElement.currentTime = e;
null != this._progressChecker && this._checkProgressAndResume()
} else
null != this._progressChecker && (window.clearInterval(this._progressChecker),
this._progressChecker = null),
this._msectl.seek(e),
this._transmuxer.seek(Math.floor(1e3 * e)),
this._config.accurateSeek && (this._requestSetTime = !0,
this._mediaElement.currentTime = e)
}
,
e.prototype._checkAndApplyUnbufferedSeekpoint = function() {
if (this._seekpointRecord)
if (this._seekpointRecord.recordTime <= this._now() - 100) {
var e = this._mediaElement.currentTime;
this._seekpointRecord = null,
this._isTimepointBuffered(e) || (null != this._progressChecker && (window.clearTimeout(this._progressChecker),
this._progressChecker = null),
this._msectl.seek(e),
this._transmuxer.seek(Math.floor(1e3 * e)),
this._config.accurateSeek && (this._requestSetTime = !0,
this._mediaElement.currentTime = e))
} else
window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50)
}
,
e.prototype._checkAndResumeStuckPlayback = function(e) {
var t = this._mediaElement;
if (e || !this._receivedCanPlay || t.readyState < 2) {
var i = t.buffered;
i.length > 0 && t.currentTime < i.start(0) && (d.Z.w(this.TAG, "Playback seems stuck at " + t.currentTime + ", seek to " + i.start(0)),
this._requestSetTime = !0,
this._mediaElement.currentTime = i.start(0),
this._mediaElement.removeEventListener("progress", this.e.onvProgress))
} else
this._mediaElement.removeEventListener("progress", this.e.onvProgress)
}
,
e.prototype._onvLoadedMetadata = function(e) {
null != this._pendingSeekTime && (this._mediaElement.currentTime = this._pendingSeekTime,
this._pendingSeekTime = null)
}
,
e.prototype._onvSeeking = function(e) {
var t = this._mediaElement.currentTime
, i = this._mediaElement.buffered;
if (this._requestSetTime)
this._requestSetTime = !1;
else {
if (t < 1 && i.length > 0) {
var n = i.start(0);
if (n < 1 && t < n || c.Z.safari)
return this._requestSetTime = !0,
void (this._mediaElement.currentTime = c.Z.safari ? .1 : n)
}
if (this._isTimepointBuffered(t)) {
if (this._alwaysSeekKeyframe) {
var r = this._msectl.getNearestKeyframe(Math.floor(1e3 * t));
null != r && (this._requestSetTime = !0,
this._mediaElement.currentTime = r.dts / 1e3)
}
null != this._progressChecker && this._checkProgressAndResume()
} else
this._seekpointRecord = {
seekPoint: t,
recordTime: this._now()
},
window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50)
}
}
,
e.prototype._onvCanPlay = function(e) {
this._receivedCanPlay = !0,
this._mediaElement.removeEventListener("canplay", this.e.onvCanPlay)
}
,
e.prototype._onvStalled = function(e) {
this._checkAndResumeStuckPlayback(!0)
}
,
e.prototype._onvProgress = function(e) {
this._checkAndResumeStuckPlayback()
}
,
e
}()
, C = function() {
function e(e, t) {
if (this.TAG = "NativePlayer",
this._type = "NativePlayer",
this._emitter = new (l()),
this._config = o(),
"object" == typeof t && Object.assign(this._config, t),
"flv" === e.type.toLowerCase())
throw new A.OC("NativePlayer does't support flv MediaDataSource input!");
if (e.hasOwnProperty("segments"))
throw new A.OC("NativePlayer(" + e.type + ") doesn't support multipart playback!");
this.e = {
onvLoadedMetadata: this._onvLoadedMetadata.bind(this)
},
this._pendingSeekTime = null,
this._statisticsReporter = null,
this._mediaDataSource = e,
this._mediaElement = null
}
return e.prototype.destroy = function() {
this._mediaElement && (this.unload(),
this.detachMediaElement()),
this.e = null,
this._mediaDataSource = null,
this._emitter.removeAllListeners(),
this._emitter = null
}
,
e.prototype.on = function(e, t) {
var i = this;
e === f.MEDIA_INFO ? null != this._mediaElement && 0 !== this._mediaElement.readyState && Promise.resolve().then((function() {
i._emitter.emit(f.MEDIA_INFO, i.mediaInfo)
}
)) : e === f.STATISTICS_INFO && null != this._mediaElement && 0 !== this._mediaElement.readyState && Promise.resolve().then((function() {
i._emitter.emit(f.STATISTICS_INFO, i.statisticsInfo)
}
)),
this._emitter.addListener(e, t)
}
,
e.prototype.off = function(e, t) {
this._emitter.removeListener(e, t)
}
,
e.prototype.attachMediaElement = function(e) {
if (this._mediaElement = e,
e.addEventListener("loadedmetadata", this.e.onvLoadedMetadata),
null != this._pendingSeekTime)
try {
e.currentTime = this._pendingSeekTime,
this._pendingSeekTime = null
} catch (e) {}
}
,
e.prototype.detachMediaElement = function() {
this._mediaElement && (this._mediaElement.src = "",
this._mediaElement.removeAttribute("src"),
this._mediaElement.removeEventListener("loadedmetadata", this.e.onvLoadedMetadata),
this._mediaElement = null),
null != this._statisticsReporter && (window.clearInterval(this._statisticsReporter),
this._statisticsReporter = null)
}
,
e.prototype.load = function() {
if (!this._mediaElement)
throw new A.rT("HTMLMediaElement must be attached before load()!");
this._mediaElement.src = this._mediaDataSource.url,
this._mediaElement.readyState > 0 && (this._mediaElement.currentTime = 0),
this._mediaElement.preload = "auto",
this._mediaElement.load(),
this._statisticsReporter = window.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval)
}
,
e.prototype.unload = function() {
this._mediaElement && (this._mediaElement.src = "",
this._mediaElement.removeAttribute("src")),
null != this._statisticsReporter && (window.clearInterval(this._statisticsReporter),
this._statisticsReporter = null)
}
,
e.prototype.play = function() {
return this._mediaElement.play()
}
,
e.prototype.pause = function() {
this._mediaElement.pause()
}
,
Object.defineProperty(e.prototype, "type", {
get: function() {
return this._type
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "buffered", {
get: function() {
return this._mediaElement.buffered
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "duration", {
get: function() {
return this._mediaElement.duration
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "volume", {
get: function() {
return this._mediaElement.volume
},
set: function(e) {
this._mediaElement.volume = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "muted", {
get: function() {
return this._mediaElement.muted
},
set: function(e) {
this._mediaElement.muted = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "currentTime", {
get: function() {
return this._mediaElement ? this._mediaElement.currentTime : 0
},
set: function(e) {
this._mediaElement ? this._mediaElement.currentTime = e : this._pendingSeekTime = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "mediaInfo", {
get: function() {
var e = {
mimeType: (this._mediaElement instanceof HTMLAudioElement ? "audio/" : "video/") + this._mediaDataSource.type
};
return this._mediaElement && (e.duration = Math.floor(1e3 * this._mediaElement.duration),
this._mediaElement instanceof HTMLVideoElement && (e.width = this._mediaElement.videoWidth,
e.height = this._mediaElement.videoHeight)),
e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "statisticsInfo", {
get: function() {
var e = {
playerType: this._type,
url: this._mediaDataSource.url
};
if (!(this._mediaElement instanceof HTMLVideoElement))
return e;
var t = !0
, i = 0
, n = 0;
if (this._mediaElement.getVideoPlaybackQuality) {
var r = this._mediaElement.getVideoPlaybackQuality();
i = r.totalVideoFrames,
n = r.droppedVideoFrames
} else
null != this._mediaElement.webkitDecodedFrameCount ? (i = this._mediaElement.webkitDecodedFrameCount,
n = this._mediaElement.webkitDroppedFrameCount) : t = !1;
return t && (e.decodedFrames = i,
e.droppedFrames = n),
e
},
enumerable: !1,
configurable: !0
}),
e.prototype._onvLoadedMetadata = function(e) {
null != this._pendingSeekTime && (this._mediaElement.currentTime = this._pendingSeekTime,
this._pendingSeekTime = null),
this._emitter.emit(f.MEDIA_INFO, this.mediaInfo)
}
,
e.prototype._reportStatisticsInfo = function() {
this._emitter.emit(f.STATISTICS_INFO, this.statisticsInfo)
}
,
e
}();
n.Z.install();
var k = {
createPlayer: function(e, t) {
var i = e;
if (null == i || "object" != typeof i)
throw new A.OC("MediaDataSource must be an javascript object!");
if (!i.hasOwnProperty("type"))
throw new A.OC("MediaDataSource must has type field to indicate video file type!");
switch (i.type) {
case "flv":
return new T(i,t);
default:
return new C(i,t)
}
},
isSupported: function() {
return a.supportMSEH264Playback()
},
getFeatureList: function() {
return a.getFeatureList()
}
};
k.BaseLoader = h.fp,
k.LoaderStatus = h.GM,
k.LoaderErrors = h.nm,
k.Events = f,
k.ErrorTypes = w,
k.ErrorDetails = O,
k.FlvPlayer = T,
k.NativePlayer = C,
k.LoggingControl = m.Z,
Object.defineProperty(k, "version", {
enumerable: !0,
get: function() {
return "1.6.2"
}
});
var D = k
},
324: function(e, t, i) {
e.exports = i(60).default
},
191: function(e, t, i) {
"use strict";
i.d(t, {
Z: function() {
return y
}
});
var n, r = i(300), s = function() {
function e() {
this._firstCheckpoint = 0,
this._lastCheckpoint = 0,
this._intervalBytes = 0,
this._totalBytes = 0,
this._lastSecondBytes = 0,
self.performance && self.performance.now ? this._now = self.performance.now.bind(self.performance) : this._now = Date.now
}
return e.prototype.reset = function() {
this._firstCheckpoint = this._lastCheckpoint = 0,
this._totalBytes = this._intervalBytes = 0,
this._lastSecondBytes = 0
}
,
e.prototype.addBytes = function(e) {
0 === this._firstCheckpoint ? (this._firstCheckpoint = this._now(),
this._lastCheckpoint = this._firstCheckpoint,
this._intervalBytes += e,
this._totalBytes += e) : this._now() - this._lastCheckpoint < 1e3 ? (this._intervalBytes += e,
this._totalBytes += e) : (this._lastSecondBytes = this._intervalBytes,
this._intervalBytes = e,
this._totalBytes += e,
this._lastCheckpoint = this._now())
}
,
Object.defineProperty(e.prototype, "currentKBps", {
get: function() {
this.addBytes(0);
var e = (this._now() - this._lastCheckpoint) / 1e3;
return 0 == e && (e = 1),
this._intervalBytes / e / 1024
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "lastSecondKBps", {
get: function() {
return this.addBytes(0),
0 !== this._lastSecondBytes ? this._lastSecondBytes / 1024 : this._now() - this._lastCheckpoint >= 500 ? this.currentKBps : 0
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "averageKBps", {
get: function() {
var e = (this._now() - this._firstCheckpoint) / 1e3;
return this._totalBytes / e / 1024
},
enumerable: !1,
configurable: !0
}),
e
}(), o = i(939), a = i(538), h = i(29), u = (n = function(e, t) {
return (n = Object.setPrototypeOf || {
__proto__: []
}instanceof Array && function(e, t) {
e.__proto__ = t
}
|| function(e, t) {
for (var i in t)
Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i])
}
)(e, t)
}
,
function(e, t) {
if ("function" != typeof t && null !== t)
throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
function i() {
this.constructor = e
}
n(e, t),
e.prototype = null === t ? Object.create(t) : (i.prototype = t.prototype,
new i)
}
), l = function(e) {
function t(t, i) {
var n = e.call(this, "fetch-stream-loader") || this;
return n.TAG = "FetchStreamLoader",
n._seekHandler = t,
n._config = i,
n._needStash = !0,
n._requestAbort = !1,
n._contentLength = null,
n._receivedLength = 0,
n
}
return u(t, e),
t.isSupported = function() {
try {
var e = a.Z.msedge && a.Z.version.minor >= 15048
, t = !a.Z.msedge || e;
return self.fetch && self.ReadableStream && t
} catch (e) {
return !1
}
}
,
t.prototype.destroy = function() {
this.isWorking() && this.abort(),
e.prototype.destroy.call(this)
}
,
t.prototype.open = function(e, t) {
var i = this;
this._dataSource = e,
this._range = t;
var n = e.url;
this._config.reuseRedirectedURL && null != e.redirectedURL && (n = e.redirectedURL);
var r = this._seekHandler.getConfig(n, t)
, s = new self.Headers;
if ("object" == typeof r.headers) {
var a = r.headers;
for (var u in a)
a.hasOwnProperty(u) && s.append(u, a[u])
}
var l = {
method: "GET",
headers: s,
mode: "cors",
cache: "default",
referrerPolicy: "no-referrer-when-downgrade"
};
if ("object" == typeof this._config.headers)
for (var u in this._config.headers)
s.append(u, this._config.headers[u]);
!1 === e.cors && (l.mode = "same-origin"),
e.withCredentials && (l.credentials = "include"),
e.referrerPolicy && (l.referrerPolicy = e.referrerPolicy),
self.AbortController && (this._abortController = new self.AbortController,
l.signal = this._abortController.signal),
this._status = o.GM.kConnecting,
self.fetch(r.url, l).then((function(e) {
if (i._requestAbort)
return i._status = o.GM.kIdle,
void e.body.cancel();
if (e.ok && e.status >= 200 && e.status <= 299) {
if (e.url !== r.url && i._onURLRedirect) {
var t = i._seekHandler.removeURLParameters(e.url);
i._onURLRedirect(t)
}
var n = e.headers.get("Content-Length");
return null != n && (i._contentLength = parseInt(n),
0 !== i._contentLength && i._onContentLengthKnown && i._onContentLengthKnown(i._contentLength)),
i._pump.call(i, e.body.getReader())
}
if (i._status = o.GM.kError,
!i._onError)
throw new h.OZ("FetchStreamLoader: Http code invalid, " + e.status + " " + e.statusText);
i._onError(o.nm.HTTP_STATUS_CODE_INVALID, {
code: e.status,
msg: e.statusText
})
}
)).catch((function(e) {
if (!i._abortController || !i._abortController.signal.aborted) {
if (i._status = o.GM.kError,
!i._onError)
throw e;
i._onError(o.nm.EXCEPTION, {
code: -1,
msg: e.message
})
}
}
))
}
,
t.prototype.abort = function() {
if (this._requestAbort = !0,
(this._status !== o.GM.kBuffering || !a.Z.chrome) && this._abortController)
try {
this._abortController.abort()
} catch (e) {}
}
,
t.prototype._pump = function(e) {
var t = this;
return e.read().then((function(i) {
if (i.done)
if (null !== t._contentLength && t._receivedLength < t._contentLength) {
t._status = o.GM.kError;
var n = o.nm.EARLY_EOF
, r = {
code: -1,
msg: "Fetch stream meet Early-EOF"
};
if (!t._onError)
throw new h.OZ(r.msg);
t._onError(n, r)
} else
t._status = o.GM.kComplete,
t._onComplete && t._onComplete(t._range.from, t._range.from + t._receivedLength - 1);
else {
if (t._abortController && t._abortController.signal.aborted)
return void (t._status = o.GM.kComplete);
if (!0 === t._requestAbort)
return t._status = o.GM.kComplete,
e.cancel();
t._status = o.GM.kBuffering;
var s = i.value.buffer
, a = t._range.from + t._receivedLength;
t._receivedLength += s.byteLength,
t._onDataArrival && t._onDataArrival(s, a, t._receivedLength),
t._pump(e)
}
}
)).catch((function(e) {
if (t._abortController && t._abortController.signal.aborted)
t._status = o.GM.kComplete;
else if (11 !== e.code || !a.Z.msedge) {
t._status = o.GM.kError;
var i = 0
, n = null;
if (19 !== e.code && "network error" !== e.message || !(null === t._contentLength || null !== t._contentLength && t._receivedLength < t._contentLength) ? (i = o.nm.EXCEPTION,
n = {
code: e.code,
msg: e.message
}) : (i = o.nm.EARLY_EOF,
n = {
code: e.code,
msg: "Fetch stream meet Early-EOF"
}),
!t._onError)
throw new h.OZ(n.msg);
t._onError(i, n)
}
}
))
}
,
t
}(o.fp), d = function() {
var e = function(t, i) {
return (e = Object.setPrototypeOf || {
__proto__: []
}instanceof Array && function(e, t) {
e.__proto__ = t
}
|| function(e, t) {
for (var i in t)
Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i])
}
)(t, i)
};
return function(t, i) {
if ("function" != typeof i && null !== i)
throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");
function n() {
this.constructor = t
}
e(t, i),
t.prototype = null === i ? Object.create(i) : (n.prototype = i.prototype,
new n)
}
}(), c = function(e) {
function t(t, i) {
var n = e.call(this, "xhr-moz-chunked-loader") || this;
return n.TAG = "MozChunkedLoader",
n._seekHandler = t,
n._config = i,
n._needStash = !0,
n._xhr = null,
n._requestAbort = !1,
n._contentLength = null,
n._receivedLength = 0,
n
}
return d(t, e),
t.isSupported = function() {
try {
var e = new XMLHttpRequest;
return e.open("GET", "https://example.com", !0),
e.responseType = "moz-chunked-arraybuffer",
"moz-chunked-arraybuffer" === e.responseType
} catch (e) {
return r.Z.w("MozChunkedLoader", e.message),
!1
}
}
,
t.prototype.destroy = function() {
this.isWorking() && this.abort(),
this._xhr && (this._xhr.onreadystatechange = null,
this._xhr.onprogress = null,
this._xhr.onloadend = null,
this._xhr.onerror = null,
this._xhr = null),
e.prototype.destroy.call(this)
}
,
t.prototype.open = function(e, t) {
this._dataSource = e,
this._range = t;
var i = e.url;
this._config.reuseRedirectedURL && null != e.redirectedURL && (i = e.redirectedURL);
var n = this._seekHandler.getConfig(i, t);
this._requestURL = n.url;
var r = this._xhr = new XMLHttpRequest;
if (r.open("GET", n.url, !0),
r.responseType = "moz-chunked-arraybuffer",
r.onreadystatechange = this._onReadyStateChange.bind(this),
r.onprogress = this._onProgress.bind(this),
r.onloadend = this._onLoadEnd.bind(this),
r.onerror = this._onXhrError.bind(this),
e.withCredentials && (r.withCredentials = !0),
"object" == typeof n.headers) {
var s = n.headers;
for (var a in s)
s.hasOwnProperty(a) && r.setRequestHeader(a, s[a])
}
if ("object" == typeof this._config.headers) {
s = this._config.headers;
for (var a in s)
s.hasOwnProperty(a) && r.setRequestHeader(a, s[a])
}
this._status = o.GM.kConnecting,
r.send()
}
,
t.prototype.abort = function() {
this._requestAbort = !0,
this._xhr && this._xhr.abort(),
this._status = o.GM.kComplete
}
,
t.prototype._onReadyStateChange = function(e) {
var t = e.target;
if (2 === t.readyState) {
if (null != t.responseURL && t.responseURL !== this._requestURL && this._onURLRedirect) {
var i = this._seekHandler.removeURLParameters(t.responseURL);
this._onURLRedirect(i)
}
if (0 !== t.status && (t.status < 200 || t.status > 299)) {
if (this._status = o.GM.kError,
!this._onError)
throw new h.OZ("MozChunkedLoader: Http code invalid, " + t.status + " " + t.statusText);
this._onError(o.nm.HTTP_STATUS_CODE_INVALID, {
code: t.status,
msg: t.statusText
})
} else
this._status = o.GM.kBuffering
}
}
,
t.prototype._onProgress = function(e) {
if (this._status !== o.GM.kError) {
null === this._contentLength && null !== e.total && 0 !== e.total && (this._contentLength = e.total,
this._onContentLengthKnown && this._onContentLengthKnown(this._contentLength));
var t = e.target.response
, i = this._range.from + this._receivedLength;
this._receivedLength += t.byteLength,
this._onDataArrival && this._onDataArrival(t, i, this._receivedLength)
}
}
,
t.prototype._onLoadEnd = function(e) {
!0 !== this._requestAbort ? this._status !== o.GM.kError && (this._status = o.GM.kComplete,
this._onComplete && this._onComplete(this._range.from, this._range.from + this._receivedLength - 1)) : this._requestAbort = !1
}
,
t.prototype._onXhrError = function(e) {
this._status = o.GM.kError;
var t = 0
, i = null;
if (this._contentLength && e.loaded < this._contentLength ? (t = o.nm.EARLY_EOF,
i = {
code: -1,
msg: "Moz-Chunked stream meet Early-Eof"
}) : (t = o.nm.EXCEPTION,
i = {
code: -1,
msg: e.constructor.name + " " + e.type
}),
!this._onError)
throw new h.OZ(i.msg);
this._onError(t, i)
}
,
t
}(o.fp), f = function() {
var e = function(t, i) {
return (e = Object.setPrototypeOf || {
__proto__: []
}instanceof Array && function(e, t) {
e.__proto__ = t
}
|| function(e, t) {
for (var i in t)
Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i])
}
)(t, i)
};
return function(t, i) {
if ("function" != typeof i && null !== i)
throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");
function n() {
this.constructor = t
}
e(t, i),
t.prototype = null === i ? Object.create(i) : (n.prototype = i.prototype,
new n)
}
}(), _ = function(e) {
function t(t, i) {
var n = e.call(this, "xhr-range-loader") || this;
return n.TAG = "RangeLoader",
n._seekHandler = t,
n._config = i,
n._needStash = !1,
n._chunkSizeKBList = [128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192],
n._currentChunkSizeKB = 384,
n._currentSpeedNormalized = 0,
n._zeroSpeedChunkCount = 0,
n._xhr = null,
n._speedSampler = new s,
n._requestAbort = !1,
n._waitForTotalLength = !1,
n._totalLengthReceived = !1,
n._currentRequestURL = null,
n._currentRedirectedURL = null,
n._currentRequestRange = null,
n._totalLength = null,
n._contentLength = null,
n._receivedLength = 0,
n._lastTimeLoaded = 0,
n
}
return f(t, e),
t.isSupported = function() {
try {
var e = new XMLHttpRequest;
return e.open("GET", "https://example.com", !0),
e.responseType = "arraybuffer",
"arraybuffer" === e.responseType
} catch (e) {
return r.Z.w("RangeLoader", e.message),
!1
}
}
,
t.prototype.destroy = function() {
this.isWorking() && this.abort(),
this._xhr && (this._xhr.onreadystatechange = null,
this._xhr.onprogress = null,
this._xhr.onload = null,
this._xhr.onerror = null,
this._xhr = null),
e.prototype.destroy.call(this)
}
,
Object.defineProperty(t.prototype, "currentSpeed", {
get: function() {
return this._speedSampler.lastSecondKBps
},
enumerable: !1,
configurable: !0
}),
t.prototype.open = function(e, t) {
this._dataSource = e,
this._range = t,
this._status = o.GM.kConnecting;
var i = !1;
null != this._dataSource.filesize && 0 !== this._dataSource.filesize && (i = !0,
this._totalLength = this._dataSource.filesize),
this._totalLengthReceived || i ? this._openSubRange() : (this._waitForTotalLength = !0,
this._internalOpen(this._dataSource, {
from: 0,
to: -1
}))
}
,
t.prototype._openSubRange = function() {
var e = 1024 * this._currentChunkSizeKB
, t = this._range.from + this._receivedLength
, i = t + e;
null != this._contentLength && i - this._range.from >= this._contentLength && (i = this._range.from + this._contentLength - 1),
this._currentRequestRange = {
from: t,
to: i
},
this._internalOpen(this._dataSource, this._currentRequestRange)
}
,
t.prototype._internalOpen = function(e, t) {
this._lastTimeLoaded = 0;
var i = e.url;
this._config.reuseRedirectedURL && (null != this._currentRedirectedURL ? i = this._currentRedirectedURL : null != e.redirectedURL && (i = e.redirectedURL));
var n = this._seekHandler.getConfig(i, t);
this._currentRequestURL = n.url;
var r = this._xhr = new XMLHttpRequest;
if (r.open("GET", n.url, !0),
r.responseType = "arraybuffer",
r.onreadystatechange = this._onReadyStateChange.bind(this),
r.onprogress = this._onProgress.bind(this),
r.onload = this._onLoad.bind(this),
r.onerror = this._onXhrError.bind(this),
e.withCredentials && (r.withCredentials = !0),
"object" == typeof n.headers) {
var s = n.headers;
for (var o in s)
s.hasOwnProperty(o) && r.setRequestHeader(o, s[o])
}
if ("object" == typeof this._config.headers) {
s = this._config.headers;
for (var o in s)
s.hasOwnProperty(o) && r.setRequestHeader(o, s[o])
}
r.send()
}
,
t.prototype.abort = function() {
this._requestAbort = !0,
this._internalAbort(),
this._status = o.GM.kComplete
}
,
t.prototype._internalAbort = function() {
this._xhr && (this._xhr.onreadystatechange = null,
this._xhr.onprogress = null,
this._xhr.onload = null,
this._xhr.onerror = null,
this._xhr.abort(),
this._xhr = null)
}
,
t.prototype._onReadyStateChange = function(e) {
var t = e.target;
if (2 === t.readyState) {
if (null != t.responseURL) {
var i = this._seekHandler.removeURLParameters(t.responseURL);
t.responseURL !== this._currentRequestURL && i !== this._currentRedirectedURL && (this._currentRedirectedURL = i,
this._onURLRedirect && this._onURLRedirect(i))
}
if (t.status >= 200 && t.status <= 299) {
if (this._waitForTotalLength)
return;
this._status = o.GM.kBuffering
} else {
if (this._status = o.GM.kError,
!this._onError)
throw new h.OZ("RangeLoader: Http code invalid, " + t.status + " " + t.statusText);
this._onError(o.nm.HTTP_STATUS_CODE_INVALID, {
code: t.status,
msg: t.statusText
})
}
}
}
,
t.prototype._onProgress = function(e) {
if (this._status !== o.GM.kError) {
if (null === this._contentLength) {
var t = !1;
if (this._waitForTotalLength) {
this._waitForTotalLength = !1,
this._totalLengthReceived = !0,
t = !0;
var i = e.total;
this._internalAbort(),
null != i & 0 !== i && (this._totalLength = i)
}
if (-1 === this._range.to ? this._contentLength = this._totalLength - this._range.from : this._contentLength = this._range.to - this._range.from + 1,
t)
return void this._openSubRange();
this._onContentLengthKnown && this._onContentLengthKnown(this._contentLength)
}
var n = e.loaded - this._lastTimeLoaded;
this._lastTimeLoaded = e.loaded,
this._speedSampler.addBytes(n)
}
}
,
t.prototype._normalizeSpeed = function(e) {
var t = this._chunkSizeKBList
, i = t.length - 1
, n = 0
, r = 0
, s = i;
if (e < t[0])
return t[0];
for (; r <= s; ) {
if ((n = r + Math.floor((s - r) / 2)) === i || e >= t[n] && e < t[n + 1])
return t[n];
t[n] < e ? r = n + 1 : s = n - 1
}
}
,
t.prototype._onLoad = function(e) {
if (this._status !== o.GM.kError)
if (this._waitForTotalLength)
this._waitForTotalLength = !1;
else {
this._lastTimeLoaded = 0;
var t = this._speedSampler.lastSecondKBps;
if (0 === t && (this._zeroSpeedChunkCount++,
this._zeroSpeedChunkCount >= 3 && (t = this._speedSampler.currentKBps)),
0 !== t) {
var i = this._normalizeSpeed(t);
this._currentSpeedNormalized !== i && (this._currentSpeedNormalized = i,
this._currentChunkSizeKB = i)
}
var n = e.target.response
, r = this._range.from + this._receivedLength;
this._receivedLength += n.byteLength;
var s = !1;
null != this._contentLength && this._receivedLength < this._contentLength ? this._openSubRange() : s = !0,
this._onDataArrival && this._onDataArrival(n, r, this._receivedLength),
s && (this._status = o.GM.kComplete,
this._onComplete && this._onComplete(this._range.from, this._range.from + this._receivedLength - 1))
}
}
,
t.prototype._onXhrError = function(e) {
this._status = o.GM.kError;
var t = 0
, i = null;
if (this._contentLength && this._receivedLength > 0 && this._receivedLength < this._contentLength ? (t = o.nm.EARLY_EOF,
i = {
code: -1,
msg: "RangeLoader meet Early-Eof"
}) : (t = o.nm.EXCEPTION,
i = {
code: -1,
msg: e.constructor.name + " " + e.type
}),
!this._onError)
throw new h.OZ(i.msg);
this._onError(t, i)
}
,
t
}(o.fp), p = function() {
var e = function(t, i) {
return (e = Object.setPrototypeOf || {
__proto__: []
}instanceof Array && function(e, t) {
e.__proto__ = t
}
|| function(e, t) {
for (var i in t)
Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i])
}
)(t, i)
};
return function(t, i) {
if ("function" != typeof i && null !== i)
throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");
function n() {
this.constructor = t
}
e(t, i),
t.prototype = null === i ? Object.create(i) : (n.prototype = i.prototype,
new n)
}
}(), m = function(e) {
function t() {
var t = e.call(this, "websocket-loader") || this;
return t.TAG = "WebSocketLoader",
t._needStash = !0,
t._ws = null,
t._requestAbort = !1,
t._receivedLength = 0,
t
}
return p(t, e),
t.isSupported = function() {
try {
return void 0 !== self.WebSocket
} catch (e) {
return !1
}
}
,
t.prototype.destroy = function() {
this._ws && this.abort(),
e.prototype.destroy.call(this)
}
,
t.prototype.open = function(e) {
try {
var t = this._ws = new self.WebSocket(e.url);
t.binaryType = "arraybuffer",
t.onopen = this._onWebSocketOpen.bind(this),
t.onclose = this._onWebSocketClose.bind(this),
t.onmessage = this._onWebSocketMessage.bind(this),
t.onerror = this._onWebSocketError.bind(this),
this._status = o.GM.kConnecting
} catch (e) {
this._status = o.GM.kError;
var i = {
code: e.code,
msg: e.message
};
if (!this._onError)
throw new h.OZ(i.msg);
this._onError(o.nm.EXCEPTION, i)
}
}
,
t.prototype.abort = function() {
var e = this._ws;
!e || 0 !== e.readyState && 1 !== e.readyState || (this._requestAbort = !0,
e.close()),
this._ws = null,
this._status = o.GM.kComplete
}
,
t.prototype._onWebSocketOpen = function(e) {
this._status = o.GM.kBuffering
}
,
t.prototype._onWebSocketClose = function(e) {
!0 !== this._requestAbort ? (this._status = o.GM.kComplete,
this._onComplete && this._onComplete(0, this._receivedLength - 1)) : this._requestAbort = !1
}
,
t.prototype._onWebSocketMessage = function(e) {
var t = this;
if (e.data instanceof ArrayBuffer)
this._dispatchArrayBuffer(e.data);
else if (e.data instanceof Blob) {
var i = new FileReader;
i.onload = function() {
t._dispatchArrayBuffer(i.result)
}
,
i.readAsArrayBuffer(e.data)
} else {
this._status = o.GM.kError;
var n = {
code: -1,
msg: "Unsupported WebSocket message type: " + e.data.constructor.name
};
if (!this._onError)
throw new h.OZ(n.msg);
this._onError(o.nm.EXCEPTION, n)
}
}
,
t.prototype._dispatchArrayBuffer = function(e) {
var t = e
, i = this._receivedLength;
this._receivedLength += t.byteLength,
this._onDataArrival && this._onDataArrival(t, i, this._receivedLength)
}
,
t.prototype._onWebSocketError = function(e) {
this._status = o.GM.kError;
var t = {
code: e.code,
msg: e.message
};
if (!this._onError)
throw new h.OZ(t.msg);
this._onError(o.nm.EXCEPTION, t)
}
,
t
}(o.fp), g = function() {
function e(e) {
this._zeroStart = e || !1
}
return e.prototype.getConfig = function(e, t) {
var i = {};
if (0 !== t.from || -1 !== t.to) {
var n = void 0;
n = -1 !== t.to ? "bytes=" + t.from.toString() + "-" + t.to.toString() : "bytes=" + t.from.toString() + "-",
i.Range = n
} else
this._zeroStart && (i.Range = "bytes=0-");
return {
url: e,
headers: i
}
}
,
e.prototype.removeURLParameters = function(e) {
return e
}
,
e
}(), v = function() {
function e(e, t) {
this._startName = e,
this._endName = t
}
return e.prototype.getConfig = function(e, t) {
var i = e;
if (0 !== t.from || -1 !== t.to) {
var n = !0;
-1 === i.indexOf("?") && (i += "?",
n = !1),
n && (i += "&"),
i += this._startName + "=" + t.from.toString(),
-1 !== t.to && (i += "&" + this._endName + "=" + t.to.toString())
}
return {
url: i,
headers: {}
}
}
,
e.prototype.removeURLParameters = function(e) {
var t = e.split("?")[0]
, i = void 0
, n = e.indexOf("?");
-1 !== n && (i = e.substring(n + 1));
var r = "";
if (null != i && i.length > 0)
for (var s = i.split("&"), o = 0; o < s.length; o++) {
var a = s[o].split("=")
, h = o > 0;
a[0] !== this._startName && a[0] !== this._endName && (h && (r += "&"),
r += s[o])
}
return 0 === r.length ? t : t + "?" + r
}
,
e
}(), y = function() {
function e(e, t, i) {
this.TAG = "IOController",
this._config = t,
this._extraData = i,
this._stashInitialSize = 393216,
null != t.stashInitialSize && t.stashInitialSize > 0 && (this._stashInitialSize = t.stashInitialSize),
this._stashUsed = 0,
this._stashSize = this._stashInitialSize,
this._bufferSize = 3145728,
this._stashBuffer = new ArrayBuffer(this._bufferSize),
this._stashByteStart = 0,
this._enableStash = !0,
!1 === t.enableStashBuffer && (this._enableStash = !1),
this._loader = null,
this._loaderClass = null,
this._seekHandler = null,
this._dataSource = e,
this._isWebSocketURL = /wss?:\/\/(.+?)/.test(e.url),
this._refTotalLength = e.filesize ? e.filesize : null,
this._totalLength = this._refTotalLength,
this._fullRequestFlag = !1,
this._currentRange = null,
this._redirectedURL = null,
this._speedNormalized = 0,
this._speedSampler = new s,
this._speedNormalizeList = [64, 128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096],
this._isEarlyEofReconnecting = !1,
this._paused = !1,
this._resumeFrom = 0,
this._onDataArrival = null,
this._onSeeked = null,
this._onError = null,
this._onComplete = null,
this._onRedirect = null,
this._onRecoveredEarlyEof = null,
this._selectSeekHandler(),
this._selectLoader(),
this._createLoader()
}
return e.prototype.destroy = function() {
this._loader.isWorking() && this._loader.abort(),
this._loader.destroy(),
this._loader = null,
this._loaderClass = null,
this._dataSource = null,
this._stashBuffer = null,
this._stashUsed = this._stashSize = this._bufferSize = this._stashByteStart = 0,
this._currentRange = null,
this._speedSampler = null,
this._isEarlyEofReconnecting = !1,
this._onDataArrival = null,
this._onSeeked = null,
this._onError = null,
this._onComplete = null,
this._onRedirect = null,
this._onRecoveredEarlyEof = null,
this._extraData = null
}
,
e.prototype.isWorking = function() {
return this._loader && this._loader.isWorking() && !this._paused
}
,
e.prototype.isPaused = function() {
return this._paused
}
,
Object.defineProperty(e.prototype, "status", {
get: function() {
return this._loader.status
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "extraData", {
get: function() {
return this._extraData
},
set: function(e) {
this._extraData = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onDataArrival", {
get: function() {
return this._onDataArrival
},
set: function(e) {
this._onDataArrival = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onSeeked", {
get: function() {
return this._onSeeked
},
set: function(e) {
this._onSeeked = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onError", {
get: function() {
return this._onError
},
set: function(e) {
this._onError = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onComplete", {
get: function() {
return this._onComplete
},
set: function(e) {
this._onComplete = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onRedirect", {
get: function() {
return this._onRedirect
},
set: function(e) {
this._onRedirect = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onRecoveredEarlyEof", {
get: function() {
return this._onRecoveredEarlyEof
},
set: function(e) {
this._onRecoveredEarlyEof = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "currentURL", {
get: function() {
return this._dataSource.url
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "hasRedirect", {
get: function() {
return null != this._redirectedURL || null != this._dataSource.redirectedURL
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "currentRedirectedURL", {
get: function() {
return this._redirectedURL || this._dataSource.redirectedURL
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "currentSpeed", {
get: function() {
return this._loaderClass === _ ? this._loader.currentSpeed : this._speedSampler.lastSecondKBps
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "loaderType", {
get: function() {
return this._loader.type
},
enumerable: !1,
configurable: !0
}),
e.prototype._selectSeekHandler = function() {
var e = this._config;
if ("range" === e.seekType)
this._seekHandler = new g(this._config.rangeLoadZeroStart);
else if ("param" === e.seekType) {
var t = e.seekParamStart || "bstart"
, i = e.seekParamEnd || "bend";
this._seekHandler = new v(t,i)
} else {
if ("custom" !== e.seekType)
throw new h.OC("Invalid seekType in config: " + e.seekType);
if ("function" != typeof e.customSeekHandler)
throw new h.OC("Custom seekType specified in config but invalid customSeekHandler!");
this._seekHandler = new e.customSeekHandler
}
}
,
e.prototype._selectLoader = function() {
if (null != this._config.customLoader)
this._loaderClass = this._config.customLoader;
else if (this._isWebSocketURL)
this._loaderClass = m;
else if (l.isSupported())
this._loaderClass = l;
else if (c.isSupported())
this._loaderClass = c;
else {
if (!_.isSupported())
throw new h.OZ("Your browser doesn't support xhr with arraybuffer responseType!");
this._loaderClass = _
}
}
,
e.prototype._createLoader = function() {
this._loader = new this._loaderClass(this._seekHandler,this._config),
!1 === this._loader.needStashBuffer && (this._enableStash = !1),
this._loader.onContentLengthKnown = this._onContentLengthKnown.bind(this),
this._loader.onURLRedirect = this._onURLRedirect.bind(this),
this._loader.onDataArrival = this._onLoaderChunkArrival.bind(this),
this._loader.onComplete = this._onLoaderComplete.bind(this),
this._loader.onError = this._onLoaderError.bind(this)
}
,
e.prototype.open = function(e) {
this._currentRange = {
from: 0,
to: -1
},
e && (this._currentRange.from = e),
this._speedSampler.reset(),
e || (this._fullRequestFlag = !0),
this._loader.open(this._dataSource, Object.assign({}, this._currentRange))
}
,
e.prototype.abort = function() {
this._loader.abort(),
this._paused && (this._paused = !1,
this._resumeFrom = 0)
}
,
e.prototype.pause = function() {
this.isWorking() && (this._loader.abort(),
0 !== this._stashUsed ? (this._resumeFrom = this._stashByteStart,
this._currentRange.to = this._stashByteStart - 1) : this._resumeFrom = this._currentRange.to + 1,
this._stashUsed = 0,
this._stashByteStart = 0,
this._paused = !0)
}
,
e.prototype.resume = function() {
if (this._paused) {
this._paused = !1;
var e = this._resumeFrom;
this._resumeFrom = 0,
this._internalSeek(e, !0)
}
}
,
e.prototype.seek = function(e) {
this._paused = !1,
this._stashUsed = 0,
this._stashByteStart = 0,
this._internalSeek(e, !0)
}
,
e.prototype._internalSeek = function(e, t) {
this._loader.isWorking() && this._loader.abort(),
this._flushStashBuffer(t),
this._loader.destroy(),
this._loader = null;
var i = {
from: e,
to: -1
};
this._currentRange = {
from: i.from,
to: -1
},
this._speedSampler.reset(),
this._stashSize = this._stashInitialSize,
this._createLoader(),
this._loader.open(this._dataSource, i),
this._onSeeked && this._onSeeked()
}
,
e.prototype.updateUrl = function(e) {
if (!e || "string" != typeof e || 0 === e.length)
throw new h.OC("Url must be a non-empty string!");
this._dataSource.url = e
}
,
e.prototype._expandBuffer = function(e) {
for (var t = this._stashSize; t + 1048576 < e; )
t *= 2;
if ((t += 1048576) !== this._bufferSize) {
var i = new ArrayBuffer(t);
if (this._stashUsed > 0) {
var n = new Uint8Array(this._stashBuffer,0,this._stashUsed);
new Uint8Array(i,0,t).set(n, 0)
}
this._stashBuffer = i,
this._bufferSize = t
}
}
,
e.prototype._normalizeSpeed = function(e) {
var t = this._speedNormalizeList
, i = t.length - 1
, n = 0
, r = 0
, s = i;
if (e < t[0])
return t[0];
for (; r <= s; ) {
if ((n = r + Math.floor((s - r) / 2)) === i || e >= t[n] && e < t[n + 1])
return t[n];
t[n] < e ? r = n + 1 : s = n - 1
}
}
,
e.prototype._adjustStashSize = function(e) {
var t = 0;
(t = this._config.isLive || e < 512 ? e : e >= 512 && e <= 1024 ? Math.floor(1.5 * e) : 2 * e) > 8192 && (t = 8192);
var i = 1024 * t + 1048576;
this._bufferSize < i && this._expandBuffer(i),
this._stashSize = 1024 * t
}
,
e.prototype._dispatchChunks = function(e, t) {
return this._currentRange.to = t + e.byteLength - 1,
this._onDataArrival(e, t)
}
,
e.prototype._onURLRedirect = function(e) {
this._redirectedURL = e,
this._onRedirect && this._onRedirect(e)
}
,
e.prototype._onContentLengthKnown = function(e) {
e && this._fullRequestFlag && (this._totalLength = e,
this._fullRequestFlag = !1)
}
,
e.prototype._onLoaderChunkArrival = function(e, t, i) {
if (!this._onDataArrival)
throw new h.rT("IOController: No existing consumer (onDataArrival) callback!");
if (!this._paused) {
this._isEarlyEofReconnecting && (this._isEarlyEofReconnecting = !1,
this._onRecoveredEarlyEof && this._onRecoveredEarlyEof()),
this._speedSampler.addBytes(e.byteLength);
var n = this._speedSampler.lastSecondKBps;
if (0 !== n) {
var r = this._normalizeSpeed(n);
this._speedNormalized !== r && (this._speedNormalized = r,
this._adjustStashSize(r))
}
if (this._enableStash)
if (0 === this._stashUsed && 0 === this._stashByteStart && (this._stashByteStart = t),
this._stashUsed + e.byteLength <= this._stashSize) {
(a = new Uint8Array(this._stashBuffer,0,this._stashSize)).set(new Uint8Array(e), this._stashUsed),
this._stashUsed += e.byteLength
} else {
a = new Uint8Array(this._stashBuffer,0,this._bufferSize);
if (this._stashUsed > 0) {
var s = this._stashBuffer.slice(0, this._stashUsed);
if ((u = this._dispatchChunks(s, this._stashByteStart)) < s.byteLength) {
if (u > 0) {
l = new Uint8Array(s,u);
a.set(l, 0),
this._stashUsed = l.byteLength,
this._stashByteStart += u
}
} else
this._stashUsed = 0,
this._stashByteStart += u;
this._stashUsed + e.byteLength > this._bufferSize && (this._expandBuffer(this._stashUsed + e.byteLength),
a = new Uint8Array(this._stashBuffer,0,this._bufferSize)),
a.set(new Uint8Array(e), this._stashUsed),
this._stashUsed += e.byteLength
} else {
if ((u = this._dispatchChunks(e, t)) < e.byteLength)
(o = e.byteLength - u) > this._bufferSize && (this._expandBuffer(o),
a = new Uint8Array(this._stashBuffer,0,this._bufferSize)),
a.set(new Uint8Array(e,u), 0),
this._stashUsed += o,
this._stashByteStart = t + u
}
}
else if (0 === this._stashUsed) {
var o;
if ((u = this._dispatchChunks(e, t)) < e.byteLength)
(o = e.byteLength - u) > this._bufferSize && this._expandBuffer(o),
(a = new Uint8Array(this._stashBuffer,0,this._bufferSize)).set(new Uint8Array(e,u), 0),
this._stashUsed += o,
this._stashByteStart = t + u
} else {
var a, u;
if (this._stashUsed + e.byteLength > this._bufferSize && this._expandBuffer(this._stashUsed + e.byteLength),
(a = new Uint8Array(this._stashBuffer,0,this._bufferSize)).set(new Uint8Array(e), this._stashUsed),
this._stashUsed += e.byteLength,
(u = this._dispatchChunks(this._stashBuffer.slice(0, this._stashUsed), this._stashByteStart)) < this._stashUsed && u > 0) {
var l = new Uint8Array(this._stashBuffer,u);
a.set(l, 0)
}
this._stashUsed -= u,
this._stashByteStart += u
}
}
}
,
e.prototype._flushStashBuffer = function(e) {
if (this._stashUsed > 0) {
var t = this._stashBuffer.slice(0, this._stashUsed)
, i = this._dispatchChunks(t, this._stashByteStart)
, n = t.byteLength - i;
if (i < t.byteLength) {
if (!e) {
if (i > 0) {
var s = new Uint8Array(this._stashBuffer,0,this._bufferSize)
, o = new Uint8Array(t,i);
s.set(o, 0),
this._stashUsed = o.byteLength,
this._stashByteStart += i
}
return 0
}
r.Z.w(this.TAG, n + " bytes unconsumed data remain when flush buffer, dropped")
}
return this._stashUsed = 0,
this._stashByteStart = 0,
n
}
return 0
}
,
e.prototype._onLoaderComplete = function(e, t) {
this._flushStashBuffer(!0),
this._onComplete && this._onComplete(this._extraData)
}
,
e.prototype._onLoaderError = function(e, t) {
switch (r.Z.e(this.TAG, "Loader error, code = " + t.code + ", msg = " + t.msg),
this._flushStashBuffer(!1),
this._isEarlyEofReconnecting && (this._isEarlyEofReconnecting = !1,
e = o.nm.UNRECOVERABLE_EARLY_EOF),
e) {
case o.nm.EARLY_EOF:
if (!this._config.isLive && this._totalLength) {
var i = this._currentRange.to + 1;
return void (i < this._totalLength && (r.Z.w(this.TAG, "Connection lost, trying reconnect..."),
this._isEarlyEofReconnecting = !0,
this._internalSeek(i, !1)))
}
e = o.nm.UNRECOVERABLE_EARLY_EOF;
break;
case o.nm.UNRECOVERABLE_EARLY_EOF:
case o.nm.CONNECTING_TIMEOUT:
case o.nm.HTTP_STATUS_CODE_INVALID:
case o.nm.EXCEPTION:
}
if (!this._onError)
throw new h.OZ("IOException: " + t.msg);
this._onError(e, t)
}
,
e
}()
},
939: function(e, t, i) {
"use strict";
i.d(t, {
GM: function() {
return r
},
nm: function() {
return s
},
fp: function() {
return o
}
});
var n = i(29)
, r = {
kIdle: 0,
kConnecting: 1,
kBuffering: 2,
kError: 3,
kComplete: 4
}
, s = {
OK: "OK",
EXCEPTION: "Exception",
HTTP_STATUS_CODE_INVALID: "HttpStatusCodeInvalid",
CONNECTING_TIMEOUT: "ConnectingTimeout",
EARLY_EOF: "EarlyEof",
UNRECOVERABLE_EARLY_EOF: "UnrecoverableEarlyEof"
}
, o = function() {
function e(e) {
this._type = e || "undefined",
this._status = r.kIdle,
this._needStash = !1,
this._onContentLengthKnown = null,
this._onURLRedirect = null,
this._onDataArrival = null,
this._onError = null,
this._onComplete = null
}
return e.prototype.destroy = function() {
this._status = r.kIdle,
this._onContentLengthKnown = null,
this._onURLRedirect = null,
this._onDataArrival = null,
this._onError = null,
this._onComplete = null
}
,
e.prototype.isWorking = function() {
return this._status === r.kConnecting || this._status === r.kBuffering
}
,
Object.defineProperty(e.prototype, "type", {
get: function() {
return this._type
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "status", {
get: function() {
return this._status
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "needStashBuffer", {
get: function() {
return this._needStash
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onContentLengthKnown", {
get: function() {
return this._onContentLengthKnown
},
set: function(e) {
this._onContentLengthKnown = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onURLRedirect", {
get: function() {
return this._onURLRedirect
},
set: function(e) {
this._onURLRedirect = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onDataArrival", {
get: function() {
return this._onDataArrival
},
set: function(e) {
this._onDataArrival = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onError", {
get: function() {
return this._onError
},
set: function(e) {
this._onError = e
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "onComplete", {
get: function() {
return this._onComplete
},
set: function(e) {
this._onComplete = e
},
enumerable: !1,
configurable: !0
}),
e.prototype.open = function(e, t) {
throw new n.do("Unimplemented abstract function!")
}
,
e.prototype.abort = function() {
throw new n.do("Unimplemented abstract function!")
}
,
e
}()
},
538: function(e, t) {
"use strict";
var i = {};
!function() {
var e = self.navigator.userAgent.toLowerCase()
, t = /(edge)\/([\w.]+)/.exec(e) || /(opr)[\/]([\w.]+)/.exec(e) || /(chrome)[ \/]([\w.]+)/.exec(e) || /(iemobile)[\/]([\w.]+)/.exec(e) || /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || e.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec(e) || e.indexOf("compatible") < 0 && /(firefox)[ \/]([\w.]+)/.exec(e) || []
, n = /(ipad)/.exec(e) || /(ipod)/.exec(e) || /(windows phone)/.exec(e) || /(iphone)/.exec(e) || /(kindle)/.exec(e) || /(android)/.exec(e) || /(windows)/.exec(e) || /(mac)/.exec(e) || /(linux)/.exec(e) || /(cros)/.exec(e) || []
, r = {
browser: t[5] || t[3] || t[1] || "",
version: t[2] || t[4] || "0",
majorVersion: t[4] || t[2] || "0",
platform: n[0] || ""
}
, s = {};
if (r.browser) {
s[r.browser] = !0;
var o = r.majorVersion.split(".");
s.version = {
major: parseInt(r.majorVersion, 10),
string: r.version
},
o.length > 1 && (s.version.minor = parseInt(o[1], 10)),
o.length > 2 && (s.version.build = parseInt(o[2], 10))
}
if (r.platform && (s[r.platform] = !0),
(s.chrome || s.opr || s.safari) && (s.webkit = !0),
s.rv || s.iemobile) {
s.rv && delete s.rv;
var a = "msie";
r.browser = a,
s.msie = !0
}
if (s.edge) {
delete s.edge;
var h = "msedge";
r.browser = h,
s.msedge = !0
}
if (s.opr) {
var u = "opera";
r.browser = u,
s.opera = !0
}
if (s.safari && s.android) {
var l = "android";
r.browser = l,
s.android = !0
}
for (var d in s.name = r.browser,
s.platform = r.platform,
i)
i.hasOwnProperty(d) && delete i[d];
Object.assign(i, s)
}(),
t.Z = i
},
29: function(e, t, i) {
"use strict";
i.d(t, {
OZ: function() {
return s
},
rT: function() {
return o
},
OC: function() {
return a
},
do: function() {
return h
}
});
var n, r = (n = function(e, t) {
return (n = Object.setPrototypeOf || {
__proto__: []
}instanceof Array && function(e, t) {
e.__proto__ = t
}
|| function(e, t) {
for (var i in t)
Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i])
}
)(e, t)
}
,
function(e, t) {
if ("function" != typeof t && null !== t)
throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
function i() {
this.constructor = e
}
n(e, t),
e.prototype = null === t ? Object.create(t) : (i.prototype = t.prototype,
new i)
}
), s = function() {
function e(e) {
this._message = e
}
return Object.defineProperty(e.prototype, "name", {
get: function() {
return "RuntimeException"
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e.prototype, "message", {
get: function() {
return this._message
},
enumerable: !1,
configurable: !0
}),
e.prototype.toString = function() {
return this.name + ": " + this.message
}
,
e
}(), o = function(e) {
function t(t) {
return e.call(this, t) || this
}
return r(t, e),
Object.defineProperty(t.prototype, "name", {
get: function() {
return "IllegalStateException"
},
enumerable: !1,
configurable: !0
}),
t
}(s), a = function(e) {
function t(t) {
return e.call(this, t) || this
}
return r(t, e),
Object.defineProperty(t.prototype, "name", {
get: function() {
return "InvalidArgumentException"
},
enumerable: !1,
configurable: !0
}),
t
}(s), h = function(e) {
function t(t) {
return e.call(this, t) || this
}
return r(t, e),
Object.defineProperty(t.prototype, "name", {
get: function() {
return "NotImplementedException"
},
enumerable: !1,
configurable: !0
}),
t
}(s)
},
300: function(e, t, i) {
"use strict";
var n = i(716)
, r = i.n(n)
, s = function() {
function e() {}
return e.e = function(t, i) {
t && !e.FORCE_GLOBAL_TAG || (t = e.GLOBAL_TAG);
var n = "[" + t + "] > " + i;
e.ENABLE_CALLBACK && e.emitter.emit("log", "error", n),
e.ENABLE_ERROR && (console.error ? console.error(n) : console.warn ? console.warn(n) : console.log(n))
}
,
e.i = function(t, i) {
t && !e.FORCE_GLOBAL_TAG || (t = e.GLOBAL_TAG);
var n = "[" + t + "] > " + i;
e.ENABLE_CALLBACK && e.emitter.emit("log", "info", n),
e.ENABLE_INFO && (console.info ? console.info(n) : console.log(n))
}
,
e.w = function(t, i) {
t && !e.FORCE_GLOBAL_TAG || (t = e.GLOBAL_TAG);
var n = "[" + t + "] > " + i;
e.ENABLE_CALLBACK && e.emitter.emit("log", "warn", n),
e.ENABLE_WARN && (console.warn ? console.warn(n) : console.log(n))
}
,
e.d = function(t, i) {
t && !e.FORCE_GLOBAL_TAG || (t = e.GLOBAL_TAG);
var n = "[" + t + "] > " + i;
e.ENABLE_CALLBACK && e.emitter.emit("log", "debug", n),
e.ENABLE_DEBUG && (console.debug ? console.debug(n) : console.log(n))
}
,
e.v = function(t, i) {
t && !e.FORCE_GLOBAL_TAG || (t = e.GLOBAL_TAG);
var n = "[" + t + "] > " + i;
e.ENABLE_CALLBACK && e.emitter.emit("log", "verbose", n),
e.ENABLE_VERBOSE && console.log(n)
}
,
e
}();
s.GLOBAL_TAG = "flv.js",
s.FORCE_GLOBAL_TAG = !1,
s.ENABLE_ERROR = !0,
s.ENABLE_INFO = !0,
s.ENABLE_WARN = !0,
s.ENABLE_DEBUG = !0,
s.ENABLE_VERBOSE = !0,
s.ENABLE_CALLBACK = !1,
s.emitter = new (r()),
t.Z = s
},
846: function(e, t, i) {
"use strict";
var n = i(716)
, r = i.n(n)
, s = i(300)
, o = function() {
function e() {}
return Object.defineProperty(e, "forceGlobalTag", {
get: function() {
return s.Z.FORCE_GLOBAL_TAG
},
set: function(t) {
s.Z.FORCE_GLOBAL_TAG = t,
e._notifyChange()
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e, "globalTag", {
get: function() {
return s.Z.GLOBAL_TAG
},
set: function(t) {
s.Z.GLOBAL_TAG = t,
e._notifyChange()
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e, "enableAll", {
get: function() {
return s.Z.ENABLE_VERBOSE && s.Z.ENABLE_DEBUG && s.Z.ENABLE_INFO && s.Z.ENABLE_WARN && s.Z.ENABLE_ERROR
},
set: function(t) {
s.Z.ENABLE_VERBOSE = t,
s.Z.ENABLE_DEBUG = t,
s.Z.ENABLE_INFO = t,
s.Z.ENABLE_WARN = t,
s.Z.ENABLE_ERROR = t,
e._notifyChange()
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e, "enableDebug", {
get: function() {
return s.Z.ENABLE_DEBUG
},
set: function(t) {
s.Z.ENABLE_DEBUG = t,
e._notifyChange()
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e, "enableVerbose", {
get: function() {
return s.Z.ENABLE_VERBOSE
},
set: function(t) {
s.Z.ENABLE_VERBOSE = t,
e._notifyChange()
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e, "enableInfo", {
get: function() {
return s.Z.ENABLE_INFO
},
set: function(t) {
s.Z.ENABLE_INFO = t,
e._notifyChange()
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e, "enableWarn", {
get: function() {
return s.Z.ENABLE_WARN
},
set: function(t) {
s.Z.ENABLE_WARN = t,
e._notifyChange()
},
enumerable: !1,
configurable: !0
}),
Object.defineProperty(e, "enableError", {
get: function() {
return s.Z.ENABLE_ERROR
},
set: function(t) {
s.Z.ENABLE_ERROR = t,
e._notifyChange()
},
enumerable: !1,
configurable: !0
}),
e.getConfig = function() {
return {
globalTag: s.Z.GLOBAL_TAG,
forceGlobalTag: s.Z.FORCE_GLOBAL_TAG,
enableVerbose: s.Z.ENABLE_VERBOSE,
enableDebug: s.Z.ENABLE_DEBUG,
enableInfo: s.Z.ENABLE_INFO,
enableWarn: s.Z.ENABLE_WARN,
enableError: s.Z.ENABLE_ERROR,
enableCallback: s.Z.ENABLE_CALLBACK
}
}
,
e.applyConfig = function(e) {
s.Z.GLOBAL_TAG = e.globalTag,
s.Z.FORCE_GLOBAL_TAG = e.forceGlobalTag,
s.Z.ENABLE_VERBOSE = e.enableVerbose,
s.Z.ENABLE_DEBUG = e.enableDebug,
s.Z.ENABLE_INFO = e.enableInfo,
s.Z.ENABLE_WARN = e.enableWarn,
s.Z.ENABLE_ERROR = e.enableError,
s.Z.ENABLE_CALLBACK = e.enableCallback
}
,
e._notifyChange = function() {
var t = e.emitter;
if (t.listenerCount("change") > 0) {
var i = e.getConfig();
t.emit("change", i)
}
}
,
e.registerListener = function(t) {
e.emitter.addListener("change", t)
}
,
e.removeListener = function(t) {
e.emitter.removeListener("change", t)
}
,
e.addLogListener = function(t) {
s.Z.emitter.addListener("log", t),
s.Z.emitter.listenerCount("log") > 0 && (s.Z.ENABLE_CALLBACK = !0,
e._notifyChange())
}
,
e.removeLogListener = function(t) {
s.Z.emitter.removeListener("log", t),
0 === s.Z.emitter.listenerCount("log") && (s.Z.ENABLE_CALLBACK = !1,
e._notifyChange())
}
,
e
}();
o.emitter = new (r()),
t.Z = o
},
219: function(e, t, i) {
"use strict";
var n = function() {
function e() {}
return e.install = function() {
Object.setPrototypeOf = Object.setPrototypeOf || function(e, t) {
return e.__proto__ = t,
e
}
,
Object.assign = Object.assign || function(e) {
if (null == e)
throw new TypeError("Cannot convert undefined or null to object");
for (var t = Object(e), i = 1; i < arguments.length; i++) {
var n = arguments[i];
if (null != n)
for (var r in n)
n.hasOwnProperty(r) && (t[r] = n[r])
}
return t
}
,
"function" != typeof self.Promise && i(264).polyfill()
}
,
e
}();
n.install(),
t.Z = n
}
}
, t = {};
function i(n) {
var r = t[n];
if (void 0 !== r)
return r.exports;
var s = t[n] = {
exports: {}
};
return e[n].call(s.exports, s, s.exports, i),
s.exports
}
return i.m = e,
i.n = function(e) {
var t = e && e.__esModule ? function() {
return e.default
}
: function() {
return e
}
;
return i.d(t, {
a: t
}),
t
}
,
i.d = function(e, t) {
for (var n in t)
i.o(t, n) && !i.o(e, n) && Object.defineProperty(e, n, {
enumerable: !0,
get: t[n]
})
}
,
i.g = function() {
if ("object" == typeof globalThis)
return globalThis;
try {
return this || new Function("return this")()
} catch (e) {
if ("object" == typeof window)
return window
}
}(),
i.o = function(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
}
,
i(324)
}()
}
));
//# sourceMappingURL=flv.min.js.map