|
@@ -0,0 +1,8106 @@
|
|
|
|
|
+!(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 < -0.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) > 0.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 ? 0.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
|
|
|
|
|
+ ? 0.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
|