@volcengine/veplayer-plugin 2.4.5-rc.0 → 2.6.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/index.d.ts +1 -0
- package/esm/index.development.css +11 -0
- package/esm/index.development.js +45800 -32626
- package/esm/index.production.css +1 -1
- package/esm/index.production.js +13 -4
- package/esm/veplayer.plugin.abr.development.js +71 -3
- package/esm/veplayer.plugin.abr.production.js +1 -1
- package/esm/veplayer.plugin.ad.development.css +11 -0
- package/esm/veplayer.plugin.ad.development.js +13194 -0
- package/esm/veplayer.plugin.ad.production.css +1 -0
- package/esm/veplayer.plugin.ad.production.js +4 -0
- package/esm/veplayer.plugin.drm.development.js +71 -3
- package/esm/veplayer.plugin.drm.production.js +1 -1
- package/esm/veplayer.plugin.flv.development.js +729 -196
- package/esm/veplayer.plugin.flv.production.js +1 -1
- package/esm/veplayer.plugin.hls.development.js +1509 -376
- package/esm/veplayer.plugin.hls.production.js +1 -1
- package/esm/veplayer.plugin.mp4.development.js +73 -5
- package/esm/veplayer.plugin.mp4.production.js +1 -1
- package/esm/veplayer.plugin.rtm.development.js +72 -4
- package/esm/veplayer.plugin.rtm.production.js +1 -1
- package/esm/veplayer.plugin.shaka.development.js +72 -4
- package/esm/veplayer.plugin.shaka.production.js +1 -1
- package/package.json +1 -1
- package/umd/index.d.ts +1 -0
- package/umd/veplayer.plugin.abr.development.js +71 -3
- package/umd/veplayer.plugin.abr.production.js +1 -1
- package/umd/veplayer.plugin.ad.development.css +11 -0
- package/umd/veplayer.plugin.ad.development.js +13197 -0
- package/umd/veplayer.plugin.ad.production.css +1 -0
- package/umd/veplayer.plugin.ad.production.js +1 -0
- package/umd/veplayer.plugin.drm.development.js +71 -3
- package/umd/veplayer.plugin.drm.production.js +1 -1
- package/umd/veplayer.plugin.flv.development.js +729 -196
- package/umd/veplayer.plugin.flv.production.js +1 -1
- package/umd/veplayer.plugin.hls.development.js +1476 -343
- package/umd/veplayer.plugin.hls.production.js +1 -1
- package/umd/veplayer.plugin.mp4.development.js +73 -5
- package/umd/veplayer.plugin.mp4.production.js +1 -1
- package/umd/veplayer.plugin.rtm.development.js +72 -4
- package/umd/veplayer.plugin.rtm.production.js +1 -1
- package/umd/veplayer.plugin.shaka.development.js +72 -4
- package/umd/veplayer.plugin.shaka.production.js +1 -1
|
@@ -67,10 +67,10 @@ function _regeneratorRuntime$1() {
|
|
|
67
67
|
return obj[key] = value;
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
|
-
function wrap(innerFn, outerFn,
|
|
70
|
+
function wrap(innerFn, outerFn, self2, tryLocsList) {
|
|
71
71
|
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []);
|
|
72
72
|
return defineProperty(generator, "_invoke", {
|
|
73
|
-
value: makeInvokeMethod(innerFn,
|
|
73
|
+
value: makeInvokeMethod(innerFn, self2, context)
|
|
74
74
|
}), generator;
|
|
75
75
|
}
|
|
76
76
|
function tryCatch(fn, obj, arg) {
|
|
@@ -137,7 +137,7 @@ function _regeneratorRuntime$1() {
|
|
|
137
137
|
}
|
|
138
138
|
});
|
|
139
139
|
}
|
|
140
|
-
function makeInvokeMethod(innerFn,
|
|
140
|
+
function makeInvokeMethod(innerFn, self2, context) {
|
|
141
141
|
var state = "suspendedStart";
|
|
142
142
|
return function(method, arg) {
|
|
143
143
|
if ("executing" === state)
|
|
@@ -166,7 +166,7 @@ function _regeneratorRuntime$1() {
|
|
|
166
166
|
} else
|
|
167
167
|
"return" === context.method && context.abrupt("return", context.arg);
|
|
168
168
|
state = "executing";
|
|
169
|
-
var record = tryCatch(innerFn,
|
|
169
|
+
var record = tryCatch(innerFn, self2, context);
|
|
170
170
|
if ("normal" === record.type) {
|
|
171
171
|
if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel)
|
|
172
172
|
continue;
|
|
@@ -248,9 +248,9 @@ function _regeneratorRuntime$1() {
|
|
|
248
248
|
};
|
|
249
249
|
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function() {
|
|
250
250
|
return this;
|
|
251
|
-
}), exports.AsyncIterator = AsyncIterator, exports.async = function(innerFn, outerFn,
|
|
251
|
+
}), exports.AsyncIterator = AsyncIterator, exports.async = function(innerFn, outerFn, self2, tryLocsList, PromiseImpl) {
|
|
252
252
|
void 0 === PromiseImpl && (PromiseImpl = Promise);
|
|
253
|
-
var iter = new AsyncIterator(wrap(innerFn, outerFn,
|
|
253
|
+
var iter = new AsyncIterator(wrap(innerFn, outerFn, self2, tryLocsList), PromiseImpl);
|
|
254
254
|
return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function(result) {
|
|
255
255
|
return result.done ? result.value : iter.next();
|
|
256
256
|
});
|
|
@@ -385,9 +385,9 @@ function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
|
|
|
385
385
|
}
|
|
386
386
|
function _asyncToGenerator$1(fn) {
|
|
387
387
|
return function() {
|
|
388
|
-
var
|
|
388
|
+
var self2 = this, args = arguments;
|
|
389
389
|
return new Promise(function(resolve, reject) {
|
|
390
|
-
var gen = fn.apply(
|
|
390
|
+
var gen = fn.apply(self2, args);
|
|
391
391
|
function _next(value) {
|
|
392
392
|
asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
|
|
393
393
|
}
|
|
@@ -514,19 +514,19 @@ function _objectWithoutProperties$1(source, excluded) {
|
|
|
514
514
|
}
|
|
515
515
|
return target;
|
|
516
516
|
}
|
|
517
|
-
function _assertThisInitialized$2(
|
|
518
|
-
if (
|
|
517
|
+
function _assertThisInitialized$2(self2) {
|
|
518
|
+
if (self2 === void 0) {
|
|
519
519
|
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
520
520
|
}
|
|
521
|
-
return
|
|
521
|
+
return self2;
|
|
522
522
|
}
|
|
523
|
-
function _possibleConstructorReturn$2(
|
|
523
|
+
function _possibleConstructorReturn$2(self2, call) {
|
|
524
524
|
if (call && (typeof call === "object" || typeof call === "function")) {
|
|
525
525
|
return call;
|
|
526
526
|
} else if (call !== void 0) {
|
|
527
527
|
throw new TypeError("Derived constructors may only return object or undefined");
|
|
528
528
|
}
|
|
529
|
-
return _assertThisInitialized$2(
|
|
529
|
+
return _assertThisInitialized$2(self2);
|
|
530
530
|
}
|
|
531
531
|
function _createSuper$2(Derived) {
|
|
532
532
|
var hasNativeReflectConstruct = _isNativeReflectConstruct$2();
|
|
@@ -1640,7 +1640,7 @@ util.getCurrentTimeByOffset = function(offsetTime, segments) {
|
|
|
1640
1640
|
}
|
|
1641
1641
|
return offsetTime;
|
|
1642
1642
|
};
|
|
1643
|
-
var version = "3.0.
|
|
1643
|
+
var version = "3.0.21-rc.3";
|
|
1644
1644
|
var ERROR_MAP = {
|
|
1645
1645
|
1: 5101,
|
|
1646
1646
|
2: 5102,
|
|
@@ -1749,8 +1749,7 @@ function hook(hookName, handler) {
|
|
|
1749
1749
|
}
|
|
1750
1750
|
if (this.__hooks && this.__hooks[hookName]) {
|
|
1751
1751
|
try {
|
|
1752
|
-
var
|
|
1753
|
-
var preRet = (_this$__hooks$hookNam = this.__hooks[hookName]).call.apply(_this$__hooks$hookNam, [this, this].concat(Array.prototype.slice.call(arguments)));
|
|
1752
|
+
var preRet = runHooks(this, hookName, handler);
|
|
1754
1753
|
if (preRet) {
|
|
1755
1754
|
if (preRet.then) {
|
|
1756
1755
|
preRet.then(function(isContinue) {
|
|
@@ -1775,6 +1774,19 @@ function hook(hookName, handler) {
|
|
|
1775
1774
|
}
|
|
1776
1775
|
}.bind(this);
|
|
1777
1776
|
}
|
|
1777
|
+
function findHookIndex(hookName, handler) {
|
|
1778
|
+
var __hooks = this.__hooks;
|
|
1779
|
+
if (!__hooks || !Array.isArray(__hooks[hookName])) {
|
|
1780
|
+
return -1;
|
|
1781
|
+
}
|
|
1782
|
+
var hookHandlers = __hooks[hookName];
|
|
1783
|
+
for (var i = 0; i < hookHandlers.length; i++) {
|
|
1784
|
+
if (hookHandlers[i] === handler) {
|
|
1785
|
+
return i;
|
|
1786
|
+
}
|
|
1787
|
+
}
|
|
1788
|
+
return -1;
|
|
1789
|
+
}
|
|
1778
1790
|
function useHooks(hookName, handler) {
|
|
1779
1791
|
var __hooks = this.__hooks;
|
|
1780
1792
|
if (!__hooks) {
|
|
@@ -1784,7 +1796,12 @@ function useHooks(hookName, handler) {
|
|
|
1784
1796
|
console.warn("has no supported hook which name [".concat(hookName, "]"));
|
|
1785
1797
|
return false;
|
|
1786
1798
|
}
|
|
1787
|
-
|
|
1799
|
+
if (!Array.isArray(__hooks[hookName])) {
|
|
1800
|
+
__hooks[hookName] = [];
|
|
1801
|
+
}
|
|
1802
|
+
if (findHookIndex.call(this, hookName, handler) === -1) {
|
|
1803
|
+
__hooks[hookName].push(handler);
|
|
1804
|
+
}
|
|
1788
1805
|
return true;
|
|
1789
1806
|
}
|
|
1790
1807
|
function removeHooks(hookName, handler) {
|
|
@@ -1792,6 +1809,13 @@ function removeHooks(hookName, handler) {
|
|
|
1792
1809
|
if (!__hooks) {
|
|
1793
1810
|
return;
|
|
1794
1811
|
}
|
|
1812
|
+
if (Array.isArray(__hooks[hookName])) {
|
|
1813
|
+
var hooks = __hooks[hookName];
|
|
1814
|
+
var index = findHookIndex.call(this, hookName, handler);
|
|
1815
|
+
if (index !== -1) {
|
|
1816
|
+
hooks.splice(index, 1);
|
|
1817
|
+
}
|
|
1818
|
+
}
|
|
1795
1819
|
delete __hooks[hookName];
|
|
1796
1820
|
}
|
|
1797
1821
|
function hooksDescriptor(instance) {
|
|
@@ -1813,6 +1837,38 @@ function hooksDescriptor(instance) {
|
|
|
1813
1837
|
function delHooksDescriptor(instance) {
|
|
1814
1838
|
instance.__hooks = null;
|
|
1815
1839
|
}
|
|
1840
|
+
function runHooks(obj, hookName, handler) {
|
|
1841
|
+
for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
|
|
1842
|
+
args[_key5 - 3] = arguments[_key5];
|
|
1843
|
+
}
|
|
1844
|
+
if (obj.__hooks && Array.isArray(obj.__hooks[hookName])) {
|
|
1845
|
+
var hooks = obj.__hooks[hookName];
|
|
1846
|
+
var index = -1;
|
|
1847
|
+
var runHooksRecursive = function runHooksRecursive2(obj2, hookName2, handler2) {
|
|
1848
|
+
for (var _len6 = arguments.length, args2 = new Array(_len6 > 3 ? _len6 - 3 : 0), _key6 = 3; _key6 < _len6; _key6++) {
|
|
1849
|
+
args2[_key6 - 3] = arguments[_key6];
|
|
1850
|
+
}
|
|
1851
|
+
index++;
|
|
1852
|
+
if (hooks.length === 0 || index === hooks.length) {
|
|
1853
|
+
return handler2.call.apply(handler2, [obj2, obj2].concat(args2));
|
|
1854
|
+
}
|
|
1855
|
+
var hook2 = hooks[index];
|
|
1856
|
+
var ret = hook2.call.apply(hook2, [obj2, obj2].concat(args2));
|
|
1857
|
+
if (ret && ret.then) {
|
|
1858
|
+
return ret.then(function(data) {
|
|
1859
|
+
return data === false ? null : runHooksRecursive2.apply(void 0, [obj2, hookName2, handler2].concat(args2));
|
|
1860
|
+
}).catch(function(e) {
|
|
1861
|
+
console.warn("[runHooks]".concat(hookName2, " reject"), e.message);
|
|
1862
|
+
});
|
|
1863
|
+
} else if (ret !== false) {
|
|
1864
|
+
return runHooksRecursive2.apply(void 0, [obj2, hookName2, handler2].concat(args2));
|
|
1865
|
+
}
|
|
1866
|
+
};
|
|
1867
|
+
return runHooksRecursive.apply(void 0, [obj, hookName, handler].concat(args));
|
|
1868
|
+
} else {
|
|
1869
|
+
return handler.call.apply(handler, [obj, obj].concat(args));
|
|
1870
|
+
}
|
|
1871
|
+
}
|
|
1816
1872
|
function showErrorMsg(pluginName, msg) {
|
|
1817
1873
|
XG_DEBUG.logError("[".concat(pluginName, "] event or callback cant be undefined or null when call ").concat(msg));
|
|
1818
1874
|
}
|
|
@@ -2052,6 +2108,18 @@ var BasePlugin = /* @__PURE__ */ function() {
|
|
|
2052
2108
|
}
|
|
2053
2109
|
}
|
|
2054
2110
|
}
|
|
2111
|
+
}, {
|
|
2112
|
+
key: "defineMethod",
|
|
2113
|
+
value: function defineMethod(Obj, map) {
|
|
2114
|
+
for (var key in map) {
|
|
2115
|
+
if (Object.prototype.hasOwnProperty.call(map, key) && typeof map[key] === "function") {
|
|
2116
|
+
Object.defineProperty(Obj, key, {
|
|
2117
|
+
configurable: true,
|
|
2118
|
+
value: map[key]
|
|
2119
|
+
});
|
|
2120
|
+
}
|
|
2121
|
+
}
|
|
2122
|
+
}
|
|
2055
2123
|
}, {
|
|
2056
2124
|
key: "defaultConfig",
|
|
2057
2125
|
get: function get() {
|
|
@@ -2108,10 +2176,10 @@ function _regeneratorRuntime() {
|
|
|
2108
2176
|
return obj[key] = value;
|
|
2109
2177
|
};
|
|
2110
2178
|
}
|
|
2111
|
-
function wrap(innerFn, outerFn,
|
|
2179
|
+
function wrap(innerFn, outerFn, self2, tryLocsList) {
|
|
2112
2180
|
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []);
|
|
2113
2181
|
return defineProperty(generator, "_invoke", {
|
|
2114
|
-
value: makeInvokeMethod(innerFn,
|
|
2182
|
+
value: makeInvokeMethod(innerFn, self2, context)
|
|
2115
2183
|
}), generator;
|
|
2116
2184
|
}
|
|
2117
2185
|
function tryCatch(fn, obj, arg) {
|
|
@@ -2178,7 +2246,7 @@ function _regeneratorRuntime() {
|
|
|
2178
2246
|
}
|
|
2179
2247
|
});
|
|
2180
2248
|
}
|
|
2181
|
-
function makeInvokeMethod(innerFn,
|
|
2249
|
+
function makeInvokeMethod(innerFn, self2, context) {
|
|
2182
2250
|
var state = "suspendedStart";
|
|
2183
2251
|
return function(method, arg) {
|
|
2184
2252
|
if ("executing" === state)
|
|
@@ -2207,7 +2275,7 @@ function _regeneratorRuntime() {
|
|
|
2207
2275
|
} else
|
|
2208
2276
|
"return" === context.method && context.abrupt("return", context.arg);
|
|
2209
2277
|
state = "executing";
|
|
2210
|
-
var record = tryCatch(innerFn,
|
|
2278
|
+
var record = tryCatch(innerFn, self2, context);
|
|
2211
2279
|
if ("normal" === record.type) {
|
|
2212
2280
|
if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel)
|
|
2213
2281
|
continue;
|
|
@@ -2289,9 +2357,9 @@ function _regeneratorRuntime() {
|
|
|
2289
2357
|
};
|
|
2290
2358
|
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function() {
|
|
2291
2359
|
return this;
|
|
2292
|
-
}), exports.AsyncIterator = AsyncIterator, exports.async = function(innerFn, outerFn,
|
|
2360
|
+
}), exports.AsyncIterator = AsyncIterator, exports.async = function(innerFn, outerFn, self2, tryLocsList, PromiseImpl) {
|
|
2293
2361
|
void 0 === PromiseImpl && (PromiseImpl = Promise);
|
|
2294
|
-
var iter = new AsyncIterator(wrap(innerFn, outerFn,
|
|
2362
|
+
var iter = new AsyncIterator(wrap(innerFn, outerFn, self2, tryLocsList), PromiseImpl);
|
|
2295
2363
|
return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function(result) {
|
|
2296
2364
|
return result.done ? result.value : iter.next();
|
|
2297
2365
|
});
|
|
@@ -2426,9 +2494,9 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
|
2426
2494
|
}
|
|
2427
2495
|
function _asyncToGenerator(fn) {
|
|
2428
2496
|
return function() {
|
|
2429
|
-
var
|
|
2497
|
+
var self2 = this, args = arguments;
|
|
2430
2498
|
return new Promise(function(resolve, reject) {
|
|
2431
|
-
var gen = fn.apply(
|
|
2499
|
+
var gen = fn.apply(self2, args);
|
|
2432
2500
|
function _next(value) {
|
|
2433
2501
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
2434
2502
|
}
|
|
@@ -2602,19 +2670,19 @@ function _objectWithoutProperties(source, excluded) {
|
|
|
2602
2670
|
}
|
|
2603
2671
|
return target;
|
|
2604
2672
|
}
|
|
2605
|
-
function _assertThisInitialized$1(
|
|
2606
|
-
if (
|
|
2673
|
+
function _assertThisInitialized$1(self2) {
|
|
2674
|
+
if (self2 === void 0) {
|
|
2607
2675
|
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
2608
2676
|
}
|
|
2609
|
-
return
|
|
2677
|
+
return self2;
|
|
2610
2678
|
}
|
|
2611
|
-
function _possibleConstructorReturn$1(
|
|
2679
|
+
function _possibleConstructorReturn$1(self2, call) {
|
|
2612
2680
|
if (call && (typeof call === "object" || typeof call === "function")) {
|
|
2613
2681
|
return call;
|
|
2614
2682
|
} else if (call !== void 0) {
|
|
2615
2683
|
throw new TypeError("Derived constructors may only return object or undefined");
|
|
2616
2684
|
}
|
|
2617
|
-
return _assertThisInitialized$1(
|
|
2685
|
+
return _assertThisInitialized$1(self2);
|
|
2618
2686
|
}
|
|
2619
2687
|
function _createSuper$1(Derived) {
|
|
2620
2688
|
var hasNativeReflectConstruct = _isNativeReflectConstruct$1();
|
|
@@ -2674,7 +2742,7 @@ function _arrayLikeToArray$1(arr, len) {
|
|
|
2674
2742
|
arr2[i] = arr[i];
|
|
2675
2743
|
return arr2;
|
|
2676
2744
|
}
|
|
2677
|
-
function _createForOfIteratorHelper(o, allowArrayLike) {
|
|
2745
|
+
function _createForOfIteratorHelper$1(o, allowArrayLike) {
|
|
2678
2746
|
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
2679
2747
|
if (!it) {
|
|
2680
2748
|
if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
@@ -2862,6 +2930,21 @@ var Buffer$1 = /* @__PURE__ */ function() {
|
|
|
2862
2930
|
length: Buffer2.totalLength && Buffer2.totalLength(buffers)
|
|
2863
2931
|
};
|
|
2864
2932
|
}
|
|
2933
|
+
}, {
|
|
2934
|
+
key: "isBuffered",
|
|
2935
|
+
value: function isBuffered(media, pos) {
|
|
2936
|
+
if (media) {
|
|
2937
|
+
var buffered = Buffer2.get(media);
|
|
2938
|
+
if (buffered !== null && buffered !== void 0 && buffered.length) {
|
|
2939
|
+
for (var i = 0; i < buffered.length; i++) {
|
|
2940
|
+
if (pos >= buffered.start(i) && pos <= buffered.end(i)) {
|
|
2941
|
+
return true;
|
|
2942
|
+
}
|
|
2943
|
+
}
|
|
2944
|
+
}
|
|
2945
|
+
}
|
|
2946
|
+
return false;
|
|
2947
|
+
}
|
|
2865
2948
|
}]);
|
|
2866
2949
|
return Buffer2;
|
|
2867
2950
|
}();
|
|
@@ -3014,7 +3097,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
3014
3097
|
this.logCache.apply(this, [LogCacheLevel.DEBUG].concat(args));
|
|
3015
3098
|
if (Logger2.disabled)
|
|
3016
3099
|
return;
|
|
3017
|
-
(_console = console).debug.apply(_console, [
|
|
3100
|
+
(_console = console).debug.apply(_console, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
3018
3101
|
}
|
|
3019
3102
|
}, {
|
|
3020
3103
|
key: "log",
|
|
@@ -3026,7 +3109,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
3026
3109
|
this.logCache.apply(this, [LogCacheLevel.LOG].concat(args));
|
|
3027
3110
|
if (Logger2.disabled)
|
|
3028
3111
|
return;
|
|
3029
|
-
(_console2 = console).log.apply(_console2, [
|
|
3112
|
+
(_console2 = console).log.apply(_console2, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
3030
3113
|
}
|
|
3031
3114
|
}, {
|
|
3032
3115
|
key: "warn",
|
|
@@ -3038,7 +3121,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
3038
3121
|
this.logCache.apply(this, [LogCacheLevel.WARN].concat(args));
|
|
3039
3122
|
if (Logger2.disabled)
|
|
3040
3123
|
return;
|
|
3041
|
-
(_console3 = console).warn.apply(_console3, [
|
|
3124
|
+
(_console3 = console).warn.apply(_console3, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
3042
3125
|
}
|
|
3043
3126
|
}, {
|
|
3044
3127
|
key: "error",
|
|
@@ -3050,7 +3133,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
3050
3133
|
this.logCache.apply(this, [LogCacheLevel.ERROR].concat(args));
|
|
3051
3134
|
if (Logger2.disabled)
|
|
3052
3135
|
return;
|
|
3053
|
-
(_console4 = console).error.apply(_console4, [
|
|
3136
|
+
(_console4 = console).error.apply(_console4, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
3054
3137
|
}
|
|
3055
3138
|
}, {
|
|
3056
3139
|
key: "logCache",
|
|
@@ -3065,7 +3148,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
3065
3148
|
var finLogText = logText.map(function(item) {
|
|
3066
3149
|
return logable(item);
|
|
3067
3150
|
});
|
|
3068
|
-
text =
|
|
3151
|
+
text = "[".concat(nowTime$1(), "]") + this._prefix + JSON.stringify(finLogText);
|
|
3069
3152
|
} catch (e) {
|
|
3070
3153
|
return;
|
|
3071
3154
|
}
|
|
@@ -3981,8 +4064,8 @@ function createResponse(data, done, response, contentLength, age, startTime, fir
|
|
|
3981
4064
|
response
|
|
3982
4065
|
};
|
|
3983
4066
|
}
|
|
3984
|
-
function calculateSpeed(byteLen,
|
|
3985
|
-
return Math.round(byteLen * 8 * 1e3 /
|
|
4067
|
+
function calculateSpeed(byteLen, milliSecond) {
|
|
4068
|
+
return Math.round(byteLen * 8 * 1e3 / milliSecond / 1024);
|
|
3986
4069
|
}
|
|
3987
4070
|
var EVENT = {
|
|
3988
4071
|
ERROR: "error",
|
|
@@ -3994,6 +4077,7 @@ var EVENT = {
|
|
|
3994
4077
|
SOURCEBUFFER_CREATED: "core.sourcebuffercreated",
|
|
3995
4078
|
MEDIASOURCE_OPENED: "core.mediasourceopened",
|
|
3996
4079
|
ANALYZE_DURATION_EXCEEDED: "core.analyzedurationexceeded",
|
|
4080
|
+
APPEND_BUFFER: "core.appendbuffer",
|
|
3997
4081
|
REMOVE_BUFFER: "core.removebuffer",
|
|
3998
4082
|
BUFFEREOS: "core.buffereos",
|
|
3999
4083
|
KEYFRAME: "core.keyframe",
|
|
@@ -4766,7 +4850,7 @@ var XhrLoader = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
4766
4850
|
value: function _getHeaders(xhr) {
|
|
4767
4851
|
var headerLines = xhr.getAllResponseHeaders().trim().split("\r\n");
|
|
4768
4852
|
var headers = {};
|
|
4769
|
-
var _iterator = _createForOfIteratorHelper(headerLines), _step;
|
|
4853
|
+
var _iterator = _createForOfIteratorHelper$1(headerLines), _step;
|
|
4770
4854
|
try {
|
|
4771
4855
|
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
4772
4856
|
var header = _step.value;
|
|
@@ -4788,7 +4872,7 @@ var XhrLoader = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
4788
4872
|
}]);
|
|
4789
4873
|
return XhrLoader2;
|
|
4790
4874
|
}(EventEmitter);
|
|
4791
|
-
var _excluded$
|
|
4875
|
+
var _excluded$2 = ["retry", "retryDelay", "onRetryError", "transformError"];
|
|
4792
4876
|
var Task = /* @__PURE__ */ function() {
|
|
4793
4877
|
function Task2(type, config) {
|
|
4794
4878
|
_classCallCheck$1(this, Task2);
|
|
@@ -4808,7 +4892,7 @@ var Task = /* @__PURE__ */ function() {
|
|
|
4808
4892
|
key: "exec",
|
|
4809
4893
|
value: function exec() {
|
|
4810
4894
|
var _this = this;
|
|
4811
|
-
var _this$_config = this._config, retry = _this$_config.retry, retryDelay = _this$_config.retryDelay, onRetryError = _this$_config.onRetryError, transformError = _this$_config.transformError, rest = _objectWithoutProperties(_this$_config, _excluded$
|
|
4895
|
+
var _this$_config = this._config, retry = _this$_config.retry, retryDelay = _this$_config.retryDelay, onRetryError = _this$_config.onRetryError, transformError = _this$_config.transformError, rest = _objectWithoutProperties(_this$_config, _excluded$2);
|
|
4812
4896
|
var request = /* @__PURE__ */ function() {
|
|
4813
4897
|
var _ref = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee() {
|
|
4814
4898
|
var response, error, isRetry;
|
|
@@ -5533,19 +5617,19 @@ function _isNativeReflectConstruct() {
|
|
|
5533
5617
|
return false;
|
|
5534
5618
|
}
|
|
5535
5619
|
}
|
|
5536
|
-
function _assertThisInitialized(
|
|
5537
|
-
if (
|
|
5620
|
+
function _assertThisInitialized(self2) {
|
|
5621
|
+
if (self2 === void 0) {
|
|
5538
5622
|
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
5539
5623
|
}
|
|
5540
|
-
return
|
|
5624
|
+
return self2;
|
|
5541
5625
|
}
|
|
5542
|
-
function _possibleConstructorReturn(
|
|
5626
|
+
function _possibleConstructorReturn(self2, call) {
|
|
5543
5627
|
if (call && (typeof call === "object" || typeof call === "function")) {
|
|
5544
5628
|
return call;
|
|
5545
5629
|
} else if (call !== void 0) {
|
|
5546
5630
|
throw new TypeError("Derived constructors may only return object or undefined");
|
|
5547
5631
|
}
|
|
5548
|
-
return _assertThisInitialized(
|
|
5632
|
+
return _assertThisInitialized(self2);
|
|
5549
5633
|
}
|
|
5550
5634
|
function _createSuper(Derived) {
|
|
5551
5635
|
var hasNativeReflectConstruct = _isNativeReflectConstruct();
|
|
@@ -5604,6 +5688,60 @@ function _nonIterableSpread() {
|
|
|
5604
5688
|
function _nonIterableRest() {
|
|
5605
5689
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
5606
5690
|
}
|
|
5691
|
+
function _createForOfIteratorHelper(o, allowArrayLike) {
|
|
5692
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
5693
|
+
if (!it) {
|
|
5694
|
+
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
5695
|
+
if (it)
|
|
5696
|
+
o = it;
|
|
5697
|
+
var i = 0;
|
|
5698
|
+
var F = function() {
|
|
5699
|
+
};
|
|
5700
|
+
return {
|
|
5701
|
+
s: F,
|
|
5702
|
+
n: function() {
|
|
5703
|
+
if (i >= o.length)
|
|
5704
|
+
return {
|
|
5705
|
+
done: true
|
|
5706
|
+
};
|
|
5707
|
+
return {
|
|
5708
|
+
done: false,
|
|
5709
|
+
value: o[i++]
|
|
5710
|
+
};
|
|
5711
|
+
},
|
|
5712
|
+
e: function(e) {
|
|
5713
|
+
throw e;
|
|
5714
|
+
},
|
|
5715
|
+
f: F
|
|
5716
|
+
};
|
|
5717
|
+
}
|
|
5718
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
5719
|
+
}
|
|
5720
|
+
var normalCompletion = true, didErr = false, err;
|
|
5721
|
+
return {
|
|
5722
|
+
s: function() {
|
|
5723
|
+
it = it.call(o);
|
|
5724
|
+
},
|
|
5725
|
+
n: function() {
|
|
5726
|
+
var step = it.next();
|
|
5727
|
+
normalCompletion = step.done;
|
|
5728
|
+
return step;
|
|
5729
|
+
},
|
|
5730
|
+
e: function(e) {
|
|
5731
|
+
didErr = true;
|
|
5732
|
+
err = e;
|
|
5733
|
+
},
|
|
5734
|
+
f: function() {
|
|
5735
|
+
try {
|
|
5736
|
+
if (!normalCompletion && it.return != null)
|
|
5737
|
+
it.return();
|
|
5738
|
+
} finally {
|
|
5739
|
+
if (didErr)
|
|
5740
|
+
throw err;
|
|
5741
|
+
}
|
|
5742
|
+
}
|
|
5743
|
+
};
|
|
5744
|
+
}
|
|
5607
5745
|
function _toPrimitive(input, hint) {
|
|
5608
5746
|
if (typeof input !== "object" || input === null)
|
|
5609
5747
|
return input;
|
|
@@ -5626,13 +5764,16 @@ var TrackType = {
|
|
|
5626
5764
|
METADATA: "metadata"
|
|
5627
5765
|
};
|
|
5628
5766
|
var VideoCodecType = {
|
|
5767
|
+
AV1: "av1",
|
|
5629
5768
|
AVC: "avc",
|
|
5630
5769
|
HEVC: "hevc"
|
|
5631
5770
|
};
|
|
5632
5771
|
var AudioCodecType = {
|
|
5633
5772
|
AAC: "aac",
|
|
5634
5773
|
G711PCMA: "g7110a",
|
|
5635
|
-
G711PCMU: "g7110m"
|
|
5774
|
+
G711PCMU: "g7110m",
|
|
5775
|
+
OPUS: "opus",
|
|
5776
|
+
MP3: "mp3"
|
|
5636
5777
|
};
|
|
5637
5778
|
var WarningType = {
|
|
5638
5779
|
LARGE_AV_SHIFT: "LARGE_AV_SHIFT",
|
|
@@ -5672,6 +5813,7 @@ var VideoTrack = /* @__PURE__ */ function() {
|
|
|
5672
5813
|
_defineProperty(this, "isVideoEncryption", false);
|
|
5673
5814
|
_defineProperty(this, "isAudioEncryption", false);
|
|
5674
5815
|
_defineProperty(this, "isVideo", true);
|
|
5816
|
+
_defineProperty(this, "lastKeyFrameDts", 0);
|
|
5675
5817
|
_defineProperty(this, "kid", null);
|
|
5676
5818
|
_defineProperty(this, "pssh", null);
|
|
5677
5819
|
_defineProperty(this, "ext", void 0);
|
|
@@ -5714,6 +5856,9 @@ var VideoTrack = /* @__PURE__ */ function() {
|
|
|
5714
5856
|
}, {
|
|
5715
5857
|
key: "exist",
|
|
5716
5858
|
value: function exist() {
|
|
5859
|
+
if (/av01/.test(this.codec)) {
|
|
5860
|
+
return true;
|
|
5861
|
+
}
|
|
5717
5862
|
return !!(this.pps.length && this.sps.length && this.codec);
|
|
5718
5863
|
}
|
|
5719
5864
|
}, {
|
|
@@ -5737,6 +5882,7 @@ var AudioTrack = /* @__PURE__ */ function() {
|
|
|
5737
5882
|
_defineProperty(this, "codecType", AudioCodecType.AAC);
|
|
5738
5883
|
_defineProperty(this, "pid", -1);
|
|
5739
5884
|
_defineProperty(this, "codec", "");
|
|
5885
|
+
_defineProperty(this, "container", "");
|
|
5740
5886
|
_defineProperty(this, "sequenceNumber", 0);
|
|
5741
5887
|
_defineProperty(this, "sampleDuration", 0);
|
|
5742
5888
|
_defineProperty(this, "timescale", 0);
|
|
@@ -5777,7 +5923,7 @@ var AudioTrack = /* @__PURE__ */ function() {
|
|
|
5777
5923
|
}, {
|
|
5778
5924
|
key: "exist",
|
|
5779
5925
|
value: function exist() {
|
|
5780
|
-
return !!(this.sampleRate && this.channelCount && this.codec && this.codecType === AudioCodecType.AAC);
|
|
5926
|
+
return !!(this.sampleRate && this.channelCount && (this.codec || this.container) && (this.codecType === AudioCodecType.AAC || this.codecType === AudioCodecType.G711PCMA || this.codecType === AudioCodecType.G711PCMU || this.codecType === AudioCodecType.OPUS || this.codecType === AudioCodecType.MP3));
|
|
5781
5927
|
}
|
|
5782
5928
|
}, {
|
|
5783
5929
|
key: "hasSample",
|
|
@@ -5982,7 +6128,7 @@ var AAC = /* @__PURE__ */ function() {
|
|
|
5982
6128
|
continue;
|
|
5983
6129
|
}
|
|
5984
6130
|
frameLength = (data[i + 3] & 3) << 11 | data[i + 4] << 3 | (data[i + 5] & 224) >> 5;
|
|
5985
|
-
if (len - i < frameLength)
|
|
6131
|
+
if (!frameLength || len - i < frameLength)
|
|
5986
6132
|
break;
|
|
5987
6133
|
protectionSkipBytes = (~data[i + 1] & 1) * 2;
|
|
5988
6134
|
frames.push({
|
|
@@ -6176,6 +6322,15 @@ function parse2(a) {
|
|
|
6176
6322
|
return parseInt(item, 16);
|
|
6177
6323
|
});
|
|
6178
6324
|
}
|
|
6325
|
+
function combineToFloat(integer, decimal) {
|
|
6326
|
+
return Number(integer + "." + decimal);
|
|
6327
|
+
}
|
|
6328
|
+
function toDegree(matrix) {
|
|
6329
|
+
if (matrix.length < 5)
|
|
6330
|
+
return 0;
|
|
6331
|
+
var scaled0 = Math.hypot(matrix[0], matrix[3]), scaled1 = Math.hypot(matrix[1], matrix[4]);
|
|
6332
|
+
return 0 === scaled0 || 0 === scaled1 ? 0 : 180 * Math.atan2(matrix[1] / scaled1, matrix[0] / scaled0) / Math.PI;
|
|
6333
|
+
}
|
|
6179
6334
|
var NALu = /* @__PURE__ */ function() {
|
|
6180
6335
|
function NALu2() {
|
|
6181
6336
|
_classCallCheck(this, NALu2);
|
|
@@ -6838,13 +6993,16 @@ var MAX_SILENT_FRAME_DURATION = 9e4;
|
|
|
6838
6993
|
var AUDIO_EXCETION_LOG_EMIT_DURATION = 5 * 9e4;
|
|
6839
6994
|
var MAX_VIDEO_FRAME_DURATION = 9e4;
|
|
6840
6995
|
var MAX_DTS_DELTA_WITH_NEXT_CHUNK = 9e4 / 2;
|
|
6996
|
+
var LARGE_AV_FIRST_FRAME_FORCE_FIX_THRESHOLD = 9e4 * 5;
|
|
6841
6997
|
var TsFixer = /* @__PURE__ */ function() {
|
|
6842
|
-
function TsFixer2(videoTrack, audioTrack, metadataTrack) {
|
|
6998
|
+
function TsFixer2(videoTrack, audioTrack, metadataTrack, fixerConfig) {
|
|
6843
6999
|
_classCallCheck(this, TsFixer2);
|
|
6844
7000
|
this.videoTrack = videoTrack;
|
|
6845
7001
|
this.audioTrack = audioTrack;
|
|
6846
7002
|
this.metadataTrack = metadataTrack;
|
|
6847
7003
|
this._baseDts = -1;
|
|
7004
|
+
this._baseVideoDts = -1;
|
|
7005
|
+
this._baseAudioDts = -1;
|
|
6848
7006
|
this._baseDtsInited = false;
|
|
6849
7007
|
this._audioNextPts = void 0;
|
|
6850
7008
|
this._videoNextDts = void 0;
|
|
@@ -6853,6 +7011,8 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
6853
7011
|
this._lastAudioExceptionGapDot = 0;
|
|
6854
7012
|
this._lastAudioExceptionOverlapDot = 0;
|
|
6855
7013
|
this._lastAudioExceptionLargeGapDot = 0;
|
|
7014
|
+
this._needForceFixLargeGap = fixerConfig === null || fixerConfig === void 0 ? void 0 : fixerConfig.forceFixLargeGap;
|
|
7015
|
+
this._largeGapThreshold = (fixerConfig === null || fixerConfig === void 0 ? void 0 : fixerConfig.largeGapThreshold) || LARGE_AV_FIRST_FRAME_FORCE_FIX_THRESHOLD;
|
|
6856
7016
|
}
|
|
6857
7017
|
_createClass(TsFixer2, [{
|
|
6858
7018
|
key: "fix",
|
|
@@ -6880,10 +7040,16 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
6880
7040
|
if (discontinuity) {
|
|
6881
7041
|
this._calculateBaseDts(this.audioTrack, this.videoTrack);
|
|
6882
7042
|
this._baseDts -= startTime;
|
|
7043
|
+
this._baseAudioDts -= startTime;
|
|
7044
|
+
this._baseVideoDts -= startTime;
|
|
6883
7045
|
}
|
|
6884
7046
|
if (!contiguous) {
|
|
6885
7047
|
this._videoNextDts = vaDelta > 0 ? startTime + vaDelta : startTime;
|
|
6886
7048
|
this._audioNextPts = vaDelta > 0 ? startTime : startTime - vaDelta;
|
|
7049
|
+
if (this._needForceFixLargeGap) {
|
|
7050
|
+
this._videoNextDts = 0;
|
|
7051
|
+
this._audioNextPts = 0;
|
|
7052
|
+
}
|
|
6887
7053
|
var vDeltaToNextDts = firstVideoSample ? firstVideoSample.dts - this._baseDts - this._videoNextDts : 0;
|
|
6888
7054
|
var aDeltaToNextDts = firstAudioSample ? firstAudioSample.pts - this._baseDts - this._audioNextPts : 0;
|
|
6889
7055
|
if (Math.abs(vDeltaToNextDts || aDeltaToNextDts) > MAX_VIDEO_FRAME_DURATION) {
|
|
@@ -6916,8 +7082,8 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
6916
7082
|
if (!samples.length)
|
|
6917
7083
|
return;
|
|
6918
7084
|
samples.forEach(function(x) {
|
|
6919
|
-
x.dts -= _this2._baseDts;
|
|
6920
|
-
x.pts -= _this2._baseDts;
|
|
7085
|
+
x.dts -= _this2._needForceFixLargeGap ? _this2._baseVideoDts : _this2._baseDts;
|
|
7086
|
+
x.pts -= _this2._needForceFixLargeGap ? _this2._baseVideoDts : _this2._baseDts;
|
|
6921
7087
|
});
|
|
6922
7088
|
if (this._videoNextDts === void 0) {
|
|
6923
7089
|
var samp0 = samples[0];
|
|
@@ -7010,7 +7176,7 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7010
7176
|
if (!samples.length)
|
|
7011
7177
|
return;
|
|
7012
7178
|
samples.forEach(function(x) {
|
|
7013
|
-
x.pts -= _this3._baseDts;
|
|
7179
|
+
x.pts -= _this3._needForceFixLargeGap ? _this3._baseAudioDts : _this3._baseDts;
|
|
7014
7180
|
x.dts = x.pts;
|
|
7015
7181
|
});
|
|
7016
7182
|
this._doFixAudioInternal(audioTrack, samples, 9e4);
|
|
@@ -7027,12 +7193,15 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7027
7193
|
var videoBaseDts = Infinity;
|
|
7028
7194
|
if (audioSamps.length) {
|
|
7029
7195
|
audioTrack.baseDts = audioBasePts = audioSamps[0].pts;
|
|
7196
|
+
this._baseAudioDts = audioBasePts;
|
|
7030
7197
|
}
|
|
7031
7198
|
if (videoSamps.length) {
|
|
7032
7199
|
videoTrack.baseDts = videoBaseDts = videoSamps[0].dts;
|
|
7200
|
+
this._baseVideoDts = videoBaseDts;
|
|
7033
7201
|
}
|
|
7034
7202
|
this._baseDts = Math.min(audioBasePts, videoBaseDts);
|
|
7035
7203
|
var delta = videoBaseDts - audioBasePts;
|
|
7204
|
+
var largeGap = false;
|
|
7036
7205
|
if (Number.isFinite(delta) && Math.abs(delta) > LARGE_AV_FIRST_FRAME_GAP) {
|
|
7037
7206
|
videoTrack.warnings.push({
|
|
7038
7207
|
type: WarningType.LARGE_AV_SHIFT,
|
|
@@ -7042,6 +7211,16 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7042
7211
|
delta
|
|
7043
7212
|
});
|
|
7044
7213
|
}
|
|
7214
|
+
if (Number.isFinite(delta) && Math.abs(delta) > this._largeGapThreshold * MAX_SILENT_FRAME_DURATION) {
|
|
7215
|
+
largeGap = true;
|
|
7216
|
+
}
|
|
7217
|
+
if (!this._baseDtsInited) {
|
|
7218
|
+
if (largeGap && this._needForceFixLargeGap) {
|
|
7219
|
+
this._needForceFixLargeGap = true;
|
|
7220
|
+
} else {
|
|
7221
|
+
this._needForceFixLargeGap = false;
|
|
7222
|
+
}
|
|
7223
|
+
}
|
|
7045
7224
|
this._baseDtsInited = true;
|
|
7046
7225
|
return true;
|
|
7047
7226
|
}
|
|
@@ -7132,9 +7311,123 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7132
7311
|
}]);
|
|
7133
7312
|
return TsFixer2;
|
|
7134
7313
|
}();
|
|
7314
|
+
var BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];
|
|
7315
|
+
var FREQ = [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3];
|
|
7316
|
+
var SamplesCoefficients = [
|
|
7317
|
+
[
|
|
7318
|
+
0,
|
|
7319
|
+
72,
|
|
7320
|
+
144,
|
|
7321
|
+
12
|
|
7322
|
+
],
|
|
7323
|
+
[
|
|
7324
|
+
0,
|
|
7325
|
+
0,
|
|
7326
|
+
0,
|
|
7327
|
+
0
|
|
7328
|
+
],
|
|
7329
|
+
[
|
|
7330
|
+
0,
|
|
7331
|
+
72,
|
|
7332
|
+
144,
|
|
7333
|
+
12
|
|
7334
|
+
],
|
|
7335
|
+
[
|
|
7336
|
+
0,
|
|
7337
|
+
144,
|
|
7338
|
+
144,
|
|
7339
|
+
12
|
|
7340
|
+
]
|
|
7341
|
+
];
|
|
7342
|
+
var BytesInSlot = [
|
|
7343
|
+
0,
|
|
7344
|
+
1,
|
|
7345
|
+
1,
|
|
7346
|
+
4
|
|
7347
|
+
];
|
|
7348
|
+
var chromeVersion = null;
|
|
7349
|
+
var MPEG = /* @__PURE__ */ function() {
|
|
7350
|
+
function MPEG2() {
|
|
7351
|
+
_classCallCheck(this, MPEG2);
|
|
7352
|
+
}
|
|
7353
|
+
_createClass(MPEG2, null, [{
|
|
7354
|
+
key: "isHeader",
|
|
7355
|
+
value: function isHeader(data, offset) {
|
|
7356
|
+
return offset + 1 < data.length && data[offset] === 255 && (data[offset + 1] & 224) === 224 && (data[offset + 1] & 6) !== 0;
|
|
7357
|
+
}
|
|
7358
|
+
}, {
|
|
7359
|
+
key: "appendFrame",
|
|
7360
|
+
value: function appendFrame(track, data, offset, pts, frameIndex) {
|
|
7361
|
+
if (offset + 24 > data.length) {
|
|
7362
|
+
return;
|
|
7363
|
+
}
|
|
7364
|
+
var header = MPEG2.parseHeader(data, offset);
|
|
7365
|
+
if (header && offset + header.frameLength <= data.length) {
|
|
7366
|
+
var frameDuration = header.samplesPerFrame * 9e4 / header.sampleRate;
|
|
7367
|
+
var stamp = pts + frameIndex * frameDuration;
|
|
7368
|
+
var sample = {
|
|
7369
|
+
data: data.subarray(offset, offset + header.frameLength),
|
|
7370
|
+
pts: stamp,
|
|
7371
|
+
dts: stamp
|
|
7372
|
+
};
|
|
7373
|
+
sample.size = sample.data.byteLength;
|
|
7374
|
+
track.config = [];
|
|
7375
|
+
track.channelCount = header.channelCount;
|
|
7376
|
+
track.sampleRate = header.sampleRate;
|
|
7377
|
+
if (isFirefox) {
|
|
7378
|
+
track.codec = "mp3";
|
|
7379
|
+
} else {
|
|
7380
|
+
track.container = "audio/mpeg";
|
|
7381
|
+
}
|
|
7382
|
+
track.samples.push(sample);
|
|
7383
|
+
return {
|
|
7384
|
+
length: header.frameLength
|
|
7385
|
+
};
|
|
7386
|
+
}
|
|
7387
|
+
}
|
|
7388
|
+
}, {
|
|
7389
|
+
key: "parseHeader",
|
|
7390
|
+
value: function parseHeader(data, offset) {
|
|
7391
|
+
var mpegVersion = data[offset + 1] >> 3 & 3;
|
|
7392
|
+
var mpegLayer = data[offset + 1] >> 1 & 3;
|
|
7393
|
+
var bitRateIndex = data[offset + 2] >> 4 & 15;
|
|
7394
|
+
var sampleRateIndex = data[offset + 2] >> 2 & 3;
|
|
7395
|
+
if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {
|
|
7396
|
+
var paddingBit = data[offset + 2] >> 1 & 1;
|
|
7397
|
+
var channelMode = data[offset + 3] >> 6;
|
|
7398
|
+
var columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;
|
|
7399
|
+
var bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1e3;
|
|
7400
|
+
var columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;
|
|
7401
|
+
var sampleRate = FREQ[columnInSampleRates * 3 + sampleRateIndex];
|
|
7402
|
+
var channelCount = channelMode === 3 ? 1 : 2;
|
|
7403
|
+
var sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];
|
|
7404
|
+
var bytesInSlot = BytesInSlot[mpegLayer];
|
|
7405
|
+
var samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;
|
|
7406
|
+
var frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot;
|
|
7407
|
+
if (chromeVersion === null) {
|
|
7408
|
+
var userAgent = navigator.userAgent || "";
|
|
7409
|
+
var result = userAgent.match(/Chrome\/(\d+)/i);
|
|
7410
|
+
chromeVersion = result ? parseInt(result[1]) : 0;
|
|
7411
|
+
}
|
|
7412
|
+
var needChromeFix = !!chromeVersion && chromeVersion <= 87;
|
|
7413
|
+
if (needChromeFix && mpegLayer === 2 && bitRate >= 224e3 && channelMode === 0) {
|
|
7414
|
+
data[offset + 3] = data[offset + 3] | 128;
|
|
7415
|
+
}
|
|
7416
|
+
return {
|
|
7417
|
+
sampleRate,
|
|
7418
|
+
channelCount,
|
|
7419
|
+
frameLength,
|
|
7420
|
+
samplesPerFrame
|
|
7421
|
+
};
|
|
7422
|
+
}
|
|
7423
|
+
}
|
|
7424
|
+
}]);
|
|
7425
|
+
return MPEG2;
|
|
7426
|
+
}();
|
|
7135
7427
|
var logger$4 = new Logger$1("TsDemuxer");
|
|
7136
7428
|
var TsDemuxer = /* @__PURE__ */ function() {
|
|
7137
7429
|
function TsDemuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
7430
|
+
var fixerConfig = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
|
|
7138
7431
|
_classCallCheck(this, TsDemuxer2);
|
|
7139
7432
|
_defineProperty(this, "_pmtId", -1);
|
|
7140
7433
|
_defineProperty(this, "_remainingPacketData", null);
|
|
@@ -7144,7 +7437,7 @@ var TsDemuxer = /* @__PURE__ */ function() {
|
|
|
7144
7437
|
this.videoTrack = videoTrack || new VideoTrack();
|
|
7145
7438
|
this.audioTrack = audioTrack || new AudioTrack();
|
|
7146
7439
|
this.metadataTrack = metadataTrack || new MetadataTrack();
|
|
7147
|
-
this._fixer = new TsFixer(this.videoTrack, this.audioTrack, this.metadataTrack);
|
|
7440
|
+
this._fixer = new TsFixer(this.videoTrack, this.audioTrack, this.metadataTrack, fixerConfig);
|
|
7148
7441
|
}
|
|
7149
7442
|
_createClass(TsDemuxer2, [{
|
|
7150
7443
|
key: "demux",
|
|
@@ -7214,6 +7507,13 @@ var TsDemuxer = /* @__PURE__ */ function() {
|
|
|
7214
7507
|
case 15:
|
|
7215
7508
|
audioTrack.pid = audioPid = esPid;
|
|
7216
7509
|
break;
|
|
7510
|
+
case 3:
|
|
7511
|
+
case 4:
|
|
7512
|
+
if (audioTrack.pid === -1) {
|
|
7513
|
+
audioTrack.pid = audioPid = esPid;
|
|
7514
|
+
audioTrack.codecType = AudioCodecType.MP3;
|
|
7515
|
+
}
|
|
7516
|
+
break;
|
|
7217
7517
|
case 27:
|
|
7218
7518
|
if (videoPid !== -1)
|
|
7219
7519
|
break;
|
|
@@ -7413,7 +7713,14 @@ var TsDemuxer = /* @__PURE__ */ function() {
|
|
|
7413
7713
|
logger$4.warn("Cannot parse audio pes", this._audioPesData);
|
|
7414
7714
|
return;
|
|
7415
7715
|
}
|
|
7416
|
-
this.
|
|
7716
|
+
switch (this.audioTrack.codecType) {
|
|
7717
|
+
case AudioCodecType.AAC:
|
|
7718
|
+
this._parseAacData(pes);
|
|
7719
|
+
break;
|
|
7720
|
+
case AudioCodecType.MP3:
|
|
7721
|
+
this._parseMPEG(pes);
|
|
7722
|
+
break;
|
|
7723
|
+
}
|
|
7417
7724
|
this._audioPesData = [];
|
|
7418
7725
|
}
|
|
7419
7726
|
}, {
|
|
@@ -7450,6 +7757,32 @@ var TsDemuxer = /* @__PURE__ */ function() {
|
|
|
7450
7757
|
logger$4.warn("Cannot parse aac adts", pes);
|
|
7451
7758
|
}
|
|
7452
7759
|
}
|
|
7760
|
+
}, {
|
|
7761
|
+
key: "_parseMPEG",
|
|
7762
|
+
value: function _parseMPEG(pes) {
|
|
7763
|
+
var data = pes.data;
|
|
7764
|
+
var length = data.length;
|
|
7765
|
+
var frameIndex = 0;
|
|
7766
|
+
var offset = 0;
|
|
7767
|
+
var pts = pes.pts;
|
|
7768
|
+
if (pts === void 0) {
|
|
7769
|
+
logger$4.warn("[tsdemuxer]: MPEG PES unknown PTS");
|
|
7770
|
+
return;
|
|
7771
|
+
}
|
|
7772
|
+
while (offset < length) {
|
|
7773
|
+
if (MPEG.isHeader(data, offset)) {
|
|
7774
|
+
var frame = MPEG.appendFrame(this.audioTrack, data, offset, pts, frameIndex);
|
|
7775
|
+
if (frame) {
|
|
7776
|
+
offset += frame.length;
|
|
7777
|
+
frameIndex++;
|
|
7778
|
+
} else {
|
|
7779
|
+
break;
|
|
7780
|
+
}
|
|
7781
|
+
} else {
|
|
7782
|
+
offset++;
|
|
7783
|
+
}
|
|
7784
|
+
}
|
|
7785
|
+
}
|
|
7453
7786
|
}], [{
|
|
7454
7787
|
key: "probe",
|
|
7455
7788
|
value: function probe(data) {
|
|
@@ -7491,6 +7824,207 @@ var TsDemuxer = /* @__PURE__ */ function() {
|
|
|
7491
7824
|
}]);
|
|
7492
7825
|
return TsDemuxer2;
|
|
7493
7826
|
}();
|
|
7827
|
+
var ByteReader = /* @__PURE__ */ function() {
|
|
7828
|
+
function ByteReader2(buf, offset, len) {
|
|
7829
|
+
_classCallCheck(this, ByteReader2);
|
|
7830
|
+
this.dv = new DataView(buf);
|
|
7831
|
+
this.start = this.offset = offset || this.dv.byteOffset;
|
|
7832
|
+
this.end = len ? this.start + len : this.start + this.dv.byteLength;
|
|
7833
|
+
}
|
|
7834
|
+
_createClass(ByteReader2, [{
|
|
7835
|
+
key: "buffer",
|
|
7836
|
+
get: function get() {
|
|
7837
|
+
return this.dv.buffer;
|
|
7838
|
+
}
|
|
7839
|
+
}, {
|
|
7840
|
+
key: "unreadLength",
|
|
7841
|
+
get: function get() {
|
|
7842
|
+
return Math.max(this.end - this.offset, 0);
|
|
7843
|
+
}
|
|
7844
|
+
}, {
|
|
7845
|
+
key: "size",
|
|
7846
|
+
get: function get() {
|
|
7847
|
+
return this.end - this.start;
|
|
7848
|
+
}
|
|
7849
|
+
}, {
|
|
7850
|
+
key: "readFloat",
|
|
7851
|
+
value: function readFloat(byteNum) {
|
|
7852
|
+
var val = 0;
|
|
7853
|
+
switch (byteNum) {
|
|
7854
|
+
case 4:
|
|
7855
|
+
val = this.dv.getFloat32(this.offset);
|
|
7856
|
+
break;
|
|
7857
|
+
case 8:
|
|
7858
|
+
val = this.dv.getFloat64(this.offset);
|
|
7859
|
+
break;
|
|
7860
|
+
default:
|
|
7861
|
+
throw new Error("read ".concat(byteNum, "-byte float is not supported"));
|
|
7862
|
+
}
|
|
7863
|
+
this.offset += byteNum;
|
|
7864
|
+
return val;
|
|
7865
|
+
}
|
|
7866
|
+
}, {
|
|
7867
|
+
key: "back",
|
|
7868
|
+
value: function back(byteNum) {
|
|
7869
|
+
this.offset -= byteNum;
|
|
7870
|
+
}
|
|
7871
|
+
}, {
|
|
7872
|
+
key: "skip",
|
|
7873
|
+
value: function skip(byteNum) {
|
|
7874
|
+
this.offset += byteNum;
|
|
7875
|
+
}
|
|
7876
|
+
}, {
|
|
7877
|
+
key: "readInt",
|
|
7878
|
+
value: function readInt(byteNum) {
|
|
7879
|
+
var offset = this.offset;
|
|
7880
|
+
this.offset += byteNum;
|
|
7881
|
+
switch (byteNum) {
|
|
7882
|
+
case 1:
|
|
7883
|
+
return this.dv.getInt8(offset);
|
|
7884
|
+
case 2:
|
|
7885
|
+
return this.dv.getInt16(offset);
|
|
7886
|
+
case 4:
|
|
7887
|
+
return this.dv.getInt32(offset);
|
|
7888
|
+
default:
|
|
7889
|
+
throw new Error("read ".concat(byteNum, "-byte integers is not supported"));
|
|
7890
|
+
}
|
|
7891
|
+
}
|
|
7892
|
+
}, {
|
|
7893
|
+
key: "read",
|
|
7894
|
+
value: function read(byteNum) {
|
|
7895
|
+
var offset = this.offset;
|
|
7896
|
+
this.offset += byteNum;
|
|
7897
|
+
switch (byteNum) {
|
|
7898
|
+
case 1:
|
|
7899
|
+
return this.dv.getUint8(offset);
|
|
7900
|
+
case 2:
|
|
7901
|
+
return this.dv.getUint16(offset);
|
|
7902
|
+
case 3:
|
|
7903
|
+
return (this.dv.getUint16(offset) << 8) + this.dv.getUint8(offset + 2);
|
|
7904
|
+
case 4:
|
|
7905
|
+
return this.dv.getUint32(offset);
|
|
7906
|
+
default:
|
|
7907
|
+
this.back(byteNum - 4);
|
|
7908
|
+
return this.read(byteNum - 4) + this.dv.getUint32(offset) * Math.pow(256, byteNum - 4);
|
|
7909
|
+
}
|
|
7910
|
+
}
|
|
7911
|
+
}, {
|
|
7912
|
+
key: "write",
|
|
7913
|
+
value: function write(byteNum, val) {
|
|
7914
|
+
var offset = this.offset;
|
|
7915
|
+
this.offset += byteNum;
|
|
7916
|
+
switch (byteNum) {
|
|
7917
|
+
case 1:
|
|
7918
|
+
return this.dv.setUint8(offset, val);
|
|
7919
|
+
case 2:
|
|
7920
|
+
return this.dv.setUint16(offset, val);
|
|
7921
|
+
case 3:
|
|
7922
|
+
return this.dv.setUint8(offset, val >>> 16), this.dv.setUint16(offset + 1, 65535 & val);
|
|
7923
|
+
case 4:
|
|
7924
|
+
return this.dv.setUint32(offset, val);
|
|
7925
|
+
default:
|
|
7926
|
+
throw new Error("write ".concat(byteNum, "-byte integers is not supported"));
|
|
7927
|
+
}
|
|
7928
|
+
}
|
|
7929
|
+
}, {
|
|
7930
|
+
key: "readToBuffer",
|
|
7931
|
+
value: function readToBuffer(len) {
|
|
7932
|
+
var buffer;
|
|
7933
|
+
if (this.offset || len) {
|
|
7934
|
+
buffer = this.dv.buffer.slice(this.offset, len ? this.offset + len : this.end);
|
|
7935
|
+
} else {
|
|
7936
|
+
buffer = this.dv.buffer;
|
|
7937
|
+
}
|
|
7938
|
+
this.offset += buffer.byteLength;
|
|
7939
|
+
return buffer;
|
|
7940
|
+
}
|
|
7941
|
+
}, {
|
|
7942
|
+
key: "readToUint8",
|
|
7943
|
+
value: function readToUint8(len) {
|
|
7944
|
+
var uint8 = new Uint8Array(this.dv.buffer, this.offset, len || this.unreadLength);
|
|
7945
|
+
this.offset += uint8.byteLength;
|
|
7946
|
+
return uint8;
|
|
7947
|
+
}
|
|
7948
|
+
}, {
|
|
7949
|
+
key: "readString",
|
|
7950
|
+
value: function readString(len) {
|
|
7951
|
+
var i = 0, str = "";
|
|
7952
|
+
for (; i < len; i++) {
|
|
7953
|
+
str += String.fromCharCode(this.dv.getUint8(this.offset));
|
|
7954
|
+
this.offset++;
|
|
7955
|
+
}
|
|
7956
|
+
return str;
|
|
7957
|
+
}
|
|
7958
|
+
}], [{
|
|
7959
|
+
key: "fromUint8",
|
|
7960
|
+
value: function fromUint8(uint8) {
|
|
7961
|
+
return new ByteReader2(uint8.buffer, uint8.byteOffset, uint8.byteLength);
|
|
7962
|
+
}
|
|
7963
|
+
}, {
|
|
7964
|
+
key: "concatUint8s",
|
|
7965
|
+
value: function concatUint8s(args) {
|
|
7966
|
+
var uint8 = new Uint8Array(args.reduce(function(ret, v) {
|
|
7967
|
+
return ret + v.byteLength;
|
|
7968
|
+
}, 0));
|
|
7969
|
+
var offset = 0;
|
|
7970
|
+
args.forEach(function(v) {
|
|
7971
|
+
uint8.set(v, offset);
|
|
7972
|
+
offset += v.byteLength;
|
|
7973
|
+
});
|
|
7974
|
+
return uint8;
|
|
7975
|
+
}
|
|
7976
|
+
}, {
|
|
7977
|
+
key: "concatUint8",
|
|
7978
|
+
value: function concatUint8() {
|
|
7979
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
7980
|
+
args[_key] = arguments[_key];
|
|
7981
|
+
}
|
|
7982
|
+
return this.concatUint8s(args);
|
|
7983
|
+
}
|
|
7984
|
+
}]);
|
|
7985
|
+
return ByteReader2;
|
|
7986
|
+
}();
|
|
7987
|
+
var BitReader = /* @__PURE__ */ function() {
|
|
7988
|
+
function BitReader2(val, size) {
|
|
7989
|
+
_classCallCheck(this, BitReader2);
|
|
7990
|
+
this.offset = 0;
|
|
7991
|
+
this.val = val;
|
|
7992
|
+
this.size = size;
|
|
7993
|
+
}
|
|
7994
|
+
_createClass(BitReader2, [{
|
|
7995
|
+
key: "skip",
|
|
7996
|
+
value: function skip(len) {
|
|
7997
|
+
this.offset += len;
|
|
7998
|
+
}
|
|
7999
|
+
}, {
|
|
8000
|
+
key: "read",
|
|
8001
|
+
value: function read(len) {
|
|
8002
|
+
var unreadLength = this.size - this.offset - len;
|
|
8003
|
+
if (unreadLength >= 0) {
|
|
8004
|
+
var bits = 0, i = 0;
|
|
8005
|
+
this.offset += len;
|
|
8006
|
+
if (this.size > 31) {
|
|
8007
|
+
for (; i < len; i++) {
|
|
8008
|
+
bits += Math.pow(2, i);
|
|
8009
|
+
}
|
|
8010
|
+
return this.val / Math.pow(2, unreadLength) & bits;
|
|
8011
|
+
} else {
|
|
8012
|
+
for (; i < len; i++) {
|
|
8013
|
+
bits += 1 << i;
|
|
8014
|
+
}
|
|
8015
|
+
return this.val >>> unreadLength & bits;
|
|
8016
|
+
}
|
|
8017
|
+
}
|
|
8018
|
+
throw new Error("the number of the read operation exceeds the total length limit of bits");
|
|
8019
|
+
}
|
|
8020
|
+
}], [{
|
|
8021
|
+
key: "fromByte",
|
|
8022
|
+
value: function fromByte(byte, len) {
|
|
8023
|
+
return new BitReader2(byte.read(len), len << 3);
|
|
8024
|
+
}
|
|
8025
|
+
}]);
|
|
8026
|
+
return BitReader2;
|
|
8027
|
+
}();
|
|
7494
8028
|
var MP4Parser = /* @__PURE__ */ function() {
|
|
7495
8029
|
function MP4Parser2() {
|
|
7496
8030
|
_classCallCheck(this, MP4Parser2);
|
|
@@ -7648,18 +8182,36 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7648
8182
|
key: "tkhd",
|
|
7649
8183
|
value: function tkhd(box) {
|
|
7650
8184
|
return parseBox(box, true, function(ret, data) {
|
|
7651
|
-
var
|
|
8185
|
+
var byte = ByteReader.fromUint8(data);
|
|
7652
8186
|
if (ret.version === 1) {
|
|
7653
|
-
|
|
7654
|
-
|
|
7655
|
-
|
|
8187
|
+
byte.read(8);
|
|
8188
|
+
byte.read(8);
|
|
8189
|
+
ret.trackId = byte.read(4);
|
|
8190
|
+
byte.read(4);
|
|
8191
|
+
ret.duration = byte.read(8);
|
|
7656
8192
|
} else {
|
|
7657
|
-
|
|
7658
|
-
|
|
7659
|
-
|
|
8193
|
+
byte.read(4);
|
|
8194
|
+
byte.read(4);
|
|
8195
|
+
ret.trackId = byte.read(4);
|
|
8196
|
+
byte.read(4);
|
|
8197
|
+
ret.duration = byte.read(4);
|
|
7660
8198
|
}
|
|
7661
|
-
|
|
7662
|
-
ret.
|
|
8199
|
+
byte.skip(16);
|
|
8200
|
+
ret.matrix = [];
|
|
8201
|
+
for (var i = 0; i < 36; i++) {
|
|
8202
|
+
ret.matrix.push(byte.read(1));
|
|
8203
|
+
}
|
|
8204
|
+
byte.back(36);
|
|
8205
|
+
var caculatedMatrix = [];
|
|
8206
|
+
for (var _i = 0, int32; _i < 3; _i++) {
|
|
8207
|
+
caculatedMatrix.push(combineToFloat(byte.readInt(2), byte.readInt(2)));
|
|
8208
|
+
caculatedMatrix.push(combineToFloat(byte.readInt(2), byte.readInt(2)));
|
|
8209
|
+
int32 = byte.readInt(4);
|
|
8210
|
+
caculatedMatrix.push(combineToFloat(int32 >> 30, int32 & 1073741823));
|
|
8211
|
+
}
|
|
8212
|
+
ret.rotation = toDegree(caculatedMatrix);
|
|
8213
|
+
ret.width = byte.read(4);
|
|
8214
|
+
ret.height = byte.read(4);
|
|
7663
8215
|
});
|
|
7664
8216
|
}
|
|
7665
8217
|
}, {
|
|
@@ -7789,7 +8341,7 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7789
8341
|
if (ret.version > 0) {
|
|
7790
8342
|
var numKeyIds = readBig32(data, start);
|
|
7791
8343
|
start += 4;
|
|
7792
|
-
for (var
|
|
8344
|
+
for (var _i2 = 0; _i2 < ("" + numKeyIds).length; _i2++) {
|
|
7793
8345
|
for (var j = 0; j < 16; j++) {
|
|
7794
8346
|
var keyId = data[start];
|
|
7795
8347
|
start += 1;
|
|
@@ -7812,6 +8364,8 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7812
8364
|
ret.entryCount = readBig32(data);
|
|
7813
8365
|
ret.entries = MP4Parser2.findBox(data.subarray(4), [], start + 4).map(function(b) {
|
|
7814
8366
|
switch (b.type) {
|
|
8367
|
+
case "av01":
|
|
8368
|
+
return MP4Parser2.av01(b);
|
|
7815
8369
|
case "avc1":
|
|
7816
8370
|
case "avc2":
|
|
7817
8371
|
case "avc3":
|
|
@@ -7891,6 +8445,69 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7891
8445
|
}
|
|
7892
8446
|
});
|
|
7893
8447
|
}
|
|
8448
|
+
}, {
|
|
8449
|
+
key: "colr",
|
|
8450
|
+
value: function colr(box) {
|
|
8451
|
+
return parseBox(box, false, function(ret, data) {
|
|
8452
|
+
var byte = ByteReader.fromUint8(data);
|
|
8453
|
+
ret.data = box.data;
|
|
8454
|
+
ret.colorType = byte.readString(4);
|
|
8455
|
+
if (ret.colorType === "nclx") {
|
|
8456
|
+
ret.colorPrimaries = byte.read(2);
|
|
8457
|
+
ret.transferCharacteristics = byte.read(2);
|
|
8458
|
+
ret.matrixCoefficients = byte.read(2);
|
|
8459
|
+
ret.fullRangeFlag = byte.read(1) >> 7;
|
|
8460
|
+
} else if (ret.colorType === "rICC" || ret.colorType === "prof") {
|
|
8461
|
+
ret.iccProfile = data.readToUint8();
|
|
8462
|
+
}
|
|
8463
|
+
});
|
|
8464
|
+
}
|
|
8465
|
+
}, {
|
|
8466
|
+
key: "av01",
|
|
8467
|
+
value: function av01(box) {
|
|
8468
|
+
return parseBox(box, false, function(ret, data, start) {
|
|
8469
|
+
var bodyStart = parseVisualSampleEntry(ret, data);
|
|
8470
|
+
var bodyData = data.subarray(bodyStart);
|
|
8471
|
+
start += bodyStart;
|
|
8472
|
+
ret.av1C = MP4Parser2.av1C(MP4Parser2.findBox(bodyData, ["av1C"], start)[0]);
|
|
8473
|
+
ret.colr = MP4Parser2.colr(MP4Parser2.findBox(bodyData, ["colr"], start)[0]);
|
|
8474
|
+
});
|
|
8475
|
+
}
|
|
8476
|
+
}, {
|
|
8477
|
+
key: "av1C",
|
|
8478
|
+
value: function av1C(box) {
|
|
8479
|
+
return parseBox(box, false, function(ret, data) {
|
|
8480
|
+
ret.data = box.data;
|
|
8481
|
+
var byte = ByteReader.fromUint8(data);
|
|
8482
|
+
var bit = BitReader.fromByte(byte, 4);
|
|
8483
|
+
ret.marker = bit.read(1);
|
|
8484
|
+
ret.version = bit.read(7);
|
|
8485
|
+
ret.seqProfile = bit.read(3);
|
|
8486
|
+
ret.seqLevelIdx0 = bit.read(5);
|
|
8487
|
+
ret.seqTier0 = bit.read(1);
|
|
8488
|
+
ret.highBitdepth = bit.read(1);
|
|
8489
|
+
ret.twelveBit = bit.read(1);
|
|
8490
|
+
ret.monochrome = bit.read(1);
|
|
8491
|
+
ret.chromaSubsamplingX = bit.read(1);
|
|
8492
|
+
ret.chromaSubsamplingY = bit.read(1);
|
|
8493
|
+
ret.chromaSamplePosition = bit.read(2);
|
|
8494
|
+
ret.reserved = bit.read(3);
|
|
8495
|
+
ret.initialPresentationDelayPresent = bit.read(1);
|
|
8496
|
+
if (ret.initialPresentationDelayPresent) {
|
|
8497
|
+
ret.initialPresentationDelayMinusOne = bit.read(4);
|
|
8498
|
+
} else {
|
|
8499
|
+
ret.initialPresentationDelayMinusOne = 0;
|
|
8500
|
+
}
|
|
8501
|
+
ret.configOBUs = byte.readToUint8();
|
|
8502
|
+
var bitdepth;
|
|
8503
|
+
if (ret.seqLevelIdx0 === 2 && ret.highBitdepth === 1) {
|
|
8504
|
+
bitdepth = ret.twelveBit === 1 ? "12" : "10";
|
|
8505
|
+
} else if (ret.seqProfile <= 2) {
|
|
8506
|
+
bitdepth = ret.highBitdepth === 1 ? "10" : "08";
|
|
8507
|
+
}
|
|
8508
|
+
ret.codec = ["av01", ret.seqProfile, (ret.seqLevelIdx0 < 10 ? "0" + ret.seqLevelIdx0 : ret.seqLevelIdx0) + (ret.seqTier0 ? "H" : "M"), bitdepth].join(".");
|
|
8509
|
+
});
|
|
8510
|
+
}
|
|
7894
8511
|
}, {
|
|
7895
8512
|
key: "avc1",
|
|
7896
8513
|
value: function avc1(box) {
|
|
@@ -7925,7 +8542,7 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7925
8542
|
ret.ppsLength = data[start];
|
|
7926
8543
|
start += 1;
|
|
7927
8544
|
ret.pps = [];
|
|
7928
|
-
for (var
|
|
8545
|
+
for (var _i3 = 0; _i3 < ret.ppsLength; _i3++) {
|
|
7929
8546
|
var _size = readBig16(data, start);
|
|
7930
8547
|
start += 2;
|
|
7931
8548
|
ret.pps.push(data.subarray(start, start += _size));
|
|
@@ -8094,7 +8711,7 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
8094
8711
|
start += 8;
|
|
8095
8712
|
}
|
|
8096
8713
|
} else {
|
|
8097
|
-
for (var
|
|
8714
|
+
for (var _i4 = 0; _i4 < entryCount; _i4++) {
|
|
8098
8715
|
entries.push({
|
|
8099
8716
|
count: readBig32(data, start),
|
|
8100
8717
|
offset: -(~readBig32(data, start + 4) + 1)
|
|
@@ -8316,13 +8933,20 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
8316
8933
|
v.mvhdTimecale = moov.mvhd.timescale;
|
|
8317
8934
|
v.timescale = v.formatTimescale = vTrack.mdia.mdhd.timescale;
|
|
8318
8935
|
v.duration = vTrack.mdia.mdhd.duration || v.mvhdDurtion / v.mvhdTimecale * v.timescale;
|
|
8936
|
+
v.rotation = vTrack.tkhd.rotation;
|
|
8937
|
+
v.matrix = vTrack.tkhd.matrix;
|
|
8319
8938
|
var e1 = vTrack.mdia.minf.stbl.stsd.entries[0];
|
|
8320
8939
|
v.width = e1.width;
|
|
8321
8940
|
v.height = e1.height;
|
|
8322
8941
|
if (e1.pasp) {
|
|
8323
8942
|
v.sarRatio = [e1.pasp.hSpacing, e1.pasp.vSpacing];
|
|
8324
8943
|
}
|
|
8325
|
-
if (e1.
|
|
8944
|
+
if (e1.av1C) {
|
|
8945
|
+
v.codecType = VideoCodecType.AV1;
|
|
8946
|
+
v.codec = e1.av1C.codec;
|
|
8947
|
+
v.av1C = e1.av1C.data;
|
|
8948
|
+
v.colr = e1.colr.data;
|
|
8949
|
+
} else if (e1.hvcC) {
|
|
8326
8950
|
v.codecType = VideoCodecType.HEVC;
|
|
8327
8951
|
v.codec = e1.hvcC.codec;
|
|
8328
8952
|
v.vps = e1.hvcC.vps;
|
|
@@ -8641,8 +9265,9 @@ function parseAudioSampleEntry(ret, data) {
|
|
|
8641
9265
|
function parseBox(box, isFullBox, parse3) {
|
|
8642
9266
|
if (!box)
|
|
8643
9267
|
return;
|
|
8644
|
-
if (box.size !== box.data.length)
|
|
9268
|
+
if (box.size !== box.data.length) {
|
|
8645
9269
|
throw new Error("box ".concat(box.type, " size !== data.length"));
|
|
9270
|
+
}
|
|
8646
9271
|
var ret = {
|
|
8647
9272
|
start: box.start,
|
|
8648
9273
|
size: box.size,
|
|
@@ -8681,27 +9306,183 @@ var toHex = function toHex2() {
|
|
|
8681
9306
|
var FMP4Demuxer = /* @__PURE__ */ function() {
|
|
8682
9307
|
function FMP4Demuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
8683
9308
|
_classCallCheck(this, FMP4Demuxer2);
|
|
9309
|
+
_defineProperty(this, "__loadedMoofWraps", []);
|
|
9310
|
+
_defineProperty(this, "__lastRemainData", null);
|
|
9311
|
+
_defineProperty(this, "__lastRemainDataStart", 0);
|
|
9312
|
+
_defineProperty(this, "__nextMoofStart", -1);
|
|
8684
9313
|
this.videoTrack = videoTrack || new VideoTrack();
|
|
8685
9314
|
this.audioTrack = audioTrack || new AudioTrack();
|
|
8686
9315
|
this.metadataTrack = metadataTrack || new MetadataTrack();
|
|
8687
9316
|
}
|
|
8688
9317
|
_createClass(FMP4Demuxer2, [{
|
|
8689
|
-
key: "
|
|
8690
|
-
value: function
|
|
9318
|
+
key: "demuxPart",
|
|
9319
|
+
value: function demuxPart(partData, partDataStart, moov) {
|
|
9320
|
+
var _this = this;
|
|
8691
9321
|
var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
|
|
8692
9322
|
var videoExist = videoTrack.exist();
|
|
8693
9323
|
var audioExist = audioTrack.exist();
|
|
9324
|
+
var isAV01 = /av01/.test(videoTrack.codec);
|
|
8694
9325
|
videoTrack.samples = [];
|
|
8695
9326
|
audioTrack.samples = [];
|
|
8696
|
-
|
|
8697
|
-
|
|
8698
|
-
|
|
8699
|
-
|
|
8700
|
-
|
|
8701
|
-
|
|
9327
|
+
var data = partData;
|
|
9328
|
+
var dataStart = partDataStart;
|
|
9329
|
+
if (this.__lastRemainData) {
|
|
9330
|
+
var lastRemainDataEnd = this.__lastRemainDataStart + this.__lastRemainData.byteLength;
|
|
9331
|
+
var continuous = partDataStart <= lastRemainDataEnd && partDataStart > this.__lastRemainDataStart && partDataStart + partData.byteLength > lastRemainDataEnd;
|
|
9332
|
+
if (continuous) {
|
|
9333
|
+
var noDuplicateData = partData.subarray(this.__lastRemainData.byteLength + this.__lastRemainDataStart - partDataStart);
|
|
9334
|
+
data = concatUint8Array(this.__lastRemainData, noDuplicateData);
|
|
9335
|
+
dataStart = this.__lastRemainDataStart;
|
|
9336
|
+
this.__lastRemainData = null;
|
|
9337
|
+
} else {
|
|
9338
|
+
this.__lastRemainData = null;
|
|
9339
|
+
this.__lastRemainDataStart = 0;
|
|
9340
|
+
this.__nextMoofStart = -1;
|
|
8702
9341
|
}
|
|
8703
|
-
|
|
8704
|
-
|
|
9342
|
+
}
|
|
9343
|
+
if (!moov) {
|
|
9344
|
+
var moovBox = MP4Parser.findBox(data, ["moov"])[0];
|
|
9345
|
+
if (!moovBox)
|
|
9346
|
+
throw new Error("cannot found moov box");
|
|
9347
|
+
moov = MP4Parser.moov(moovBox);
|
|
9348
|
+
}
|
|
9349
|
+
if (data) {
|
|
9350
|
+
var dataEnd = dataStart + data.byteLength;
|
|
9351
|
+
if (!videoExist && !audioExist) {
|
|
9352
|
+
MP4Parser.moovToTrack(moov, videoTrack, audioTrack);
|
|
9353
|
+
}
|
|
9354
|
+
var moofBoxes = [];
|
|
9355
|
+
if (this.__nextMoofStart < 0) {
|
|
9356
|
+
MP4Parser.findBox(data, ["moof"], dataStart).forEach(function(v) {
|
|
9357
|
+
return moofBoxes.push(v);
|
|
9358
|
+
});
|
|
9359
|
+
} else if (this.__nextMoofStart >= dataStart && this.__nextMoofStart <= dataEnd - 8) {
|
|
9360
|
+
MP4Parser.findBox(data.subarray(this.__nextMoofStart - dataStart), ["moof"], this.__nextMoofStart).forEach(function(v) {
|
|
9361
|
+
return moofBoxes.push(v);
|
|
9362
|
+
});
|
|
9363
|
+
}
|
|
9364
|
+
moofBoxes.filter(function(moofBox) {
|
|
9365
|
+
return moofBox.size <= moofBox.data.length;
|
|
9366
|
+
}).forEach(function(moofBox) {
|
|
9367
|
+
var moof = MP4Parser.moof(moofBox);
|
|
9368
|
+
_this.__nextMoofStart = moof.start + Math.max.apply(Math, _toConsumableArray(moof.traf.map(function(v) {
|
|
9369
|
+
return v.trun.samples.reduce(function(ret, w) {
|
|
9370
|
+
return ret + w.size;
|
|
9371
|
+
}, v.trun.dataOffset || 0);
|
|
9372
|
+
})));
|
|
9373
|
+
_this.__loadedMoofWraps.push({
|
|
9374
|
+
start: moof.start,
|
|
9375
|
+
nextMoofStart: _this.__nextMoofStart,
|
|
9376
|
+
moof
|
|
9377
|
+
});
|
|
9378
|
+
_this.__loadedMoofWraps.sort(function(p, n) {
|
|
9379
|
+
return p.start - n.start;
|
|
9380
|
+
});
|
|
9381
|
+
});
|
|
9382
|
+
var _iterator = _createForOfIteratorHelper(this.__loadedMoofWraps), _step;
|
|
9383
|
+
try {
|
|
9384
|
+
var _loop = function _loop2() {
|
|
9385
|
+
var moofWrap = _step.value;
|
|
9386
|
+
if (moofWrap.start > dataEnd || moofWrap.nextMoofStart < dataStart) {
|
|
9387
|
+
return "continue";
|
|
9388
|
+
}
|
|
9389
|
+
var moofStart = moofWrap.start;
|
|
9390
|
+
var tracks = MP4Parser.moofToSamples(moofWrap.moof, videoTrack, audioTrack);
|
|
9391
|
+
var videoBaseMediaDecodeTime = videoTrack.baseMediaDecodeTime;
|
|
9392
|
+
var audioBaseMediaDecodeTime = audioTrack.baseMediaDecodeTime;
|
|
9393
|
+
var nalSize;
|
|
9394
|
+
Object.keys(tracks).forEach(function(k) {
|
|
9395
|
+
if (videoTrack.id == k) {
|
|
9396
|
+
tracks[k].some(function(x) {
|
|
9397
|
+
var xStart = x.offset += moofStart;
|
|
9398
|
+
if (xStart < dataStart) {
|
|
9399
|
+
return;
|
|
9400
|
+
}
|
|
9401
|
+
if (xStart + x.size > dataEnd) {
|
|
9402
|
+
return true;
|
|
9403
|
+
}
|
|
9404
|
+
var sample = new VideoSample((x.pts || x.dts) + videoBaseMediaDecodeTime, x.dts + videoBaseMediaDecodeTime);
|
|
9405
|
+
sample.duration = x.duration;
|
|
9406
|
+
sample.gopId = x.gopId;
|
|
9407
|
+
if (x.keyframe)
|
|
9408
|
+
sample.setToKeyframe();
|
|
9409
|
+
var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
|
|
9410
|
+
sample.data = sampleData;
|
|
9411
|
+
if (!isAV01) {
|
|
9412
|
+
var start = 0;
|
|
9413
|
+
var len = sampleData.length - 1;
|
|
9414
|
+
while (start < len) {
|
|
9415
|
+
nalSize = readBig32(sampleData, start);
|
|
9416
|
+
start += 4;
|
|
9417
|
+
sample.units.push(sampleData.subarray(start, start + nalSize));
|
|
9418
|
+
start += nalSize;
|
|
9419
|
+
}
|
|
9420
|
+
}
|
|
9421
|
+
_this.__lastRemainDataStart = xStart + x.size;
|
|
9422
|
+
videoTrack.samples.push(sample);
|
|
9423
|
+
});
|
|
9424
|
+
} else if (audioTrack.id == k) {
|
|
9425
|
+
tracks[k].some(function(x) {
|
|
9426
|
+
var xStart = x.offset + moofStart;
|
|
9427
|
+
if (xStart < dataStart) {
|
|
9428
|
+
return;
|
|
9429
|
+
}
|
|
9430
|
+
if (xStart + x.size > dataEnd) {
|
|
9431
|
+
return true;
|
|
9432
|
+
}
|
|
9433
|
+
var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
|
|
9434
|
+
audioTrack.samples.push(new AudioSample(x.dts + audioBaseMediaDecodeTime, sampleData, x.duration));
|
|
9435
|
+
_this.__lastRemainDataStart = xStart + x.size;
|
|
9436
|
+
});
|
|
9437
|
+
}
|
|
9438
|
+
});
|
|
9439
|
+
};
|
|
9440
|
+
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
9441
|
+
var _ret = _loop();
|
|
9442
|
+
if (_ret === "continue")
|
|
9443
|
+
continue;
|
|
9444
|
+
}
|
|
9445
|
+
} catch (err) {
|
|
9446
|
+
_iterator.e(err);
|
|
9447
|
+
} finally {
|
|
9448
|
+
_iterator.f();
|
|
9449
|
+
}
|
|
9450
|
+
}
|
|
9451
|
+
if (this.__lastRemainDataStart > dataStart && this.__lastRemainDataStart < data.byteLength + dataStart) {
|
|
9452
|
+
this.__lastRemainData = data.subarray(this.__lastRemainDataStart - dataStart);
|
|
9453
|
+
} else {
|
|
9454
|
+
this.__lastRemainData = data;
|
|
9455
|
+
this.__lastRemainDataStart = dataStart;
|
|
9456
|
+
}
|
|
9457
|
+
if (videoTrack.samples.length) {
|
|
9458
|
+
videoTrack.baseMediaDecodeTime = videoTrack.samples[0].pts;
|
|
9459
|
+
}
|
|
9460
|
+
if (audioTrack.samples.length) {
|
|
9461
|
+
audioTrack.baseMediaDecodeTime = audioTrack.samples[0].pts;
|
|
9462
|
+
}
|
|
9463
|
+
return {
|
|
9464
|
+
videoTrack,
|
|
9465
|
+
audioTrack,
|
|
9466
|
+
metadataTrack: this.metadataTrack
|
|
9467
|
+
};
|
|
9468
|
+
}
|
|
9469
|
+
}, {
|
|
9470
|
+
key: "demux",
|
|
9471
|
+
value: function demux(videoData, audioData) {
|
|
9472
|
+
var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
|
|
9473
|
+
var videoExist = videoTrack.exist();
|
|
9474
|
+
var audioExist = audioTrack.exist();
|
|
9475
|
+
videoTrack.samples = [];
|
|
9476
|
+
audioTrack.samples = [];
|
|
9477
|
+
if (audioData) {
|
|
9478
|
+
if (!audioExist) {
|
|
9479
|
+
var moovBox = MP4Parser.findBox(audioData, ["moov"])[0];
|
|
9480
|
+
if (!moovBox)
|
|
9481
|
+
throw new Error("cannot found moov box");
|
|
9482
|
+
MP4Parser.moovToTrack(MP4Parser.moov(moovBox), null, audioTrack);
|
|
9483
|
+
}
|
|
9484
|
+
var moofBox = MP4Parser.findBox(audioData, ["moof"])[0];
|
|
9485
|
+
if (moofBox) {
|
|
8705
9486
|
var samples = MP4Parser.moofToSamples(MP4Parser.moof(moofBox), null, audioTrack)[audioTrack.id];
|
|
8706
9487
|
var baseMediaDecodeTime = audioTrack.baseMediaDecodeTime;
|
|
8707
9488
|
if (samples) {
|
|
@@ -8804,13 +9585,13 @@ var Buffer = /* @__PURE__ */ function() {
|
|
|
8804
9585
|
_createClass(Buffer2, [{
|
|
8805
9586
|
key: "write",
|
|
8806
9587
|
value: function write() {
|
|
8807
|
-
var
|
|
9588
|
+
var self2 = this;
|
|
8808
9589
|
for (var _len2 = arguments.length, buffer = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
8809
9590
|
buffer[_key2] = arguments[_key2];
|
|
8810
9591
|
}
|
|
8811
9592
|
buffer.forEach(function(item) {
|
|
8812
9593
|
if (item) {
|
|
8813
|
-
|
|
9594
|
+
self2.buffer = Concat(Uint8Array, self2.buffer, item);
|
|
8814
9595
|
} else {
|
|
8815
9596
|
window.console.warn(item);
|
|
8816
9597
|
}
|
|
@@ -9177,10 +9958,16 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9177
9958
|
if (track.useEME && track.enca) {
|
|
9178
9959
|
content = MP42.enca(track);
|
|
9179
9960
|
} else {
|
|
9180
|
-
|
|
9961
|
+
if (track.codecType === AudioCodecType.OPUS) {
|
|
9962
|
+
content = MP42.opus(track);
|
|
9963
|
+
} else {
|
|
9964
|
+
content = MP42.mp4a(track);
|
|
9965
|
+
}
|
|
9181
9966
|
}
|
|
9182
9967
|
} else if (track.useEME && track.encv) {
|
|
9183
9968
|
content = MP42.encv(track);
|
|
9969
|
+
} else if (track.av1C) {
|
|
9970
|
+
content = MP42.av01(track);
|
|
9184
9971
|
} else {
|
|
9185
9972
|
content = MP42.avc1hev1(track);
|
|
9186
9973
|
}
|
|
@@ -9393,6 +10180,90 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9393
10180
|
var schi = MP42.schi(data);
|
|
9394
10181
|
return MP42.box(MP42.types.sinf, content, MP42.box(MP42.types.frma, frma), MP42.box(MP42.types.schm, schm), schi);
|
|
9395
10182
|
}
|
|
10183
|
+
}, {
|
|
10184
|
+
key: "av01",
|
|
10185
|
+
value: function av01(track) {
|
|
10186
|
+
return MP42.box(MP42.types.av01, new Uint8Array([
|
|
10187
|
+
0,
|
|
10188
|
+
0,
|
|
10189
|
+
0,
|
|
10190
|
+
0,
|
|
10191
|
+
0,
|
|
10192
|
+
0,
|
|
10193
|
+
0,
|
|
10194
|
+
1,
|
|
10195
|
+
0,
|
|
10196
|
+
0,
|
|
10197
|
+
0,
|
|
10198
|
+
0,
|
|
10199
|
+
0,
|
|
10200
|
+
0,
|
|
10201
|
+
0,
|
|
10202
|
+
0,
|
|
10203
|
+
0,
|
|
10204
|
+
0,
|
|
10205
|
+
0,
|
|
10206
|
+
0,
|
|
10207
|
+
0,
|
|
10208
|
+
0,
|
|
10209
|
+
0,
|
|
10210
|
+
0,
|
|
10211
|
+
track.width >> 8 & 255,
|
|
10212
|
+
track.width & 255,
|
|
10213
|
+
track.height >> 8 & 255,
|
|
10214
|
+
track.height & 255,
|
|
10215
|
+
0,
|
|
10216
|
+
72,
|
|
10217
|
+
0,
|
|
10218
|
+
0,
|
|
10219
|
+
0,
|
|
10220
|
+
72,
|
|
10221
|
+
0,
|
|
10222
|
+
0,
|
|
10223
|
+
0,
|
|
10224
|
+
0,
|
|
10225
|
+
0,
|
|
10226
|
+
0,
|
|
10227
|
+
0,
|
|
10228
|
+
1,
|
|
10229
|
+
0,
|
|
10230
|
+
0,
|
|
10231
|
+
0,
|
|
10232
|
+
0,
|
|
10233
|
+
0,
|
|
10234
|
+
0,
|
|
10235
|
+
0,
|
|
10236
|
+
0,
|
|
10237
|
+
0,
|
|
10238
|
+
0,
|
|
10239
|
+
0,
|
|
10240
|
+
0,
|
|
10241
|
+
0,
|
|
10242
|
+
0,
|
|
10243
|
+
0,
|
|
10244
|
+
0,
|
|
10245
|
+
0,
|
|
10246
|
+
0,
|
|
10247
|
+
0,
|
|
10248
|
+
0,
|
|
10249
|
+
0,
|
|
10250
|
+
0,
|
|
10251
|
+
0,
|
|
10252
|
+
0,
|
|
10253
|
+
0,
|
|
10254
|
+
0,
|
|
10255
|
+
0,
|
|
10256
|
+
0,
|
|
10257
|
+
0,
|
|
10258
|
+
0,
|
|
10259
|
+
0,
|
|
10260
|
+
0,
|
|
10261
|
+
0,
|
|
10262
|
+
24,
|
|
10263
|
+
17,
|
|
10264
|
+
17
|
|
10265
|
+
]), track.av1C, track.colr);
|
|
10266
|
+
}
|
|
9396
10267
|
}, {
|
|
9397
10268
|
key: "avc1hev1",
|
|
9398
10269
|
value: function avc1hev1(track) {
|
|
@@ -9763,6 +10634,53 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9763
10634
|
)));
|
|
9764
10635
|
return esds2;
|
|
9765
10636
|
}
|
|
10637
|
+
}, {
|
|
10638
|
+
key: "opus",
|
|
10639
|
+
value: function opus(track) {
|
|
10640
|
+
var opusAudioDescription = new Uint8Array([
|
|
10641
|
+
0,
|
|
10642
|
+
0,
|
|
10643
|
+
0,
|
|
10644
|
+
0,
|
|
10645
|
+
0,
|
|
10646
|
+
0,
|
|
10647
|
+
0,
|
|
10648
|
+
1,
|
|
10649
|
+
0,
|
|
10650
|
+
0,
|
|
10651
|
+
0,
|
|
10652
|
+
0,
|
|
10653
|
+
0,
|
|
10654
|
+
0,
|
|
10655
|
+
0,
|
|
10656
|
+
0,
|
|
10657
|
+
0,
|
|
10658
|
+
track.channelCount,
|
|
10659
|
+
0,
|
|
10660
|
+
16,
|
|
10661
|
+
0,
|
|
10662
|
+
0,
|
|
10663
|
+
0,
|
|
10664
|
+
0,
|
|
10665
|
+
track.sampleRate >> 8 & 255,
|
|
10666
|
+
track.sampleRate & 255,
|
|
10667
|
+
0,
|
|
10668
|
+
0
|
|
10669
|
+
]);
|
|
10670
|
+
var opusSpecificConfig = track.config.length ? MP42.dOps(track) : [];
|
|
10671
|
+
return MP42.box(MP42.types.Opus, opusAudioDescription, opusSpecificConfig);
|
|
10672
|
+
}
|
|
10673
|
+
}, {
|
|
10674
|
+
key: "dOps",
|
|
10675
|
+
value: function dOps(track) {
|
|
10676
|
+
if (track.config) {
|
|
10677
|
+
track.config[4] = track.sampleRate >>> 24 & 255;
|
|
10678
|
+
track.config[5] = track.sampleRate >>> 16 & 255;
|
|
10679
|
+
track.config[6] = track.sampleRate >>> 8 & 255;
|
|
10680
|
+
track.config[7] = track.sampleRate & 255;
|
|
10681
|
+
return MP42.box(MP42.types.dOps, track.config);
|
|
10682
|
+
}
|
|
10683
|
+
}
|
|
9766
10684
|
}, {
|
|
9767
10685
|
key: "mvex",
|
|
9768
10686
|
value: function mvex(tracks) {
|
|
@@ -10365,7 +11283,7 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
10365
11283
|
}]);
|
|
10366
11284
|
return MP42;
|
|
10367
11285
|
}();
|
|
10368
|
-
_defineProperty(MP4, "types", ["avc1", "avcC", "hvc1", "hvcC", "dinf", "dref", "esds", "ftyp", "hdlr", "mdat", "mdhd", "mdia", "mfhd", "minf", "moof", "moov", "mp4a", "mvex", "mvhd", "pasp", "stbl", "stco", "stsc", "stsd", "stsz", "stts", "tfdt", "tfhd", "traf", "trak", "trex", "tkhd", "vmhd", "smhd", "ctts", "stss", "styp", "pssh", "sidx", "sbgp", "saiz", "saio", "senc", "trun", "encv", "enca", "sinf", "btrt", "frma", "tenc", "schm", "schi", "mehd", "fiel", "sdtp"].reduce(function(p, c) {
|
|
11286
|
+
_defineProperty(MP4, "types", ["Opus", "dOps", "av01", "av1C", "avc1", "avcC", "hvc1", "hvcC", "dinf", "dref", "esds", "ftyp", "hdlr", "mdat", "mdhd", "mdia", "mfhd", "minf", "moof", "moov", "mp4a", "mvex", "mvhd", "pasp", "stbl", "stco", "stsc", "stsd", "stsz", "stts", "tfdt", "tfhd", "traf", "trak", "trex", "tkhd", "vmhd", "smhd", "ctts", "stss", "styp", "pssh", "sidx", "sbgp", "saiz", "saio", "senc", "trun", "encv", "enca", "sinf", "btrt", "frma", "tenc", "schm", "schi", "mehd", "fiel", "sdtp"].reduce(function(p, c) {
|
|
10369
11287
|
p[c] = [c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2), c.charCodeAt(3)];
|
|
10370
11288
|
return p;
|
|
10371
11289
|
}, /* @__PURE__ */ Object.create(null)));
|
|
@@ -10700,30 +11618,46 @@ var FMP4Remuxer = /* @__PURE__ */ function() {
|
|
|
10700
11618
|
};
|
|
10701
11619
|
}
|
|
10702
11620
|
var samples = track.samples;
|
|
11621
|
+
var isAV01 = /av01/.test(track.codec);
|
|
10703
11622
|
var mdatSize = 0;
|
|
10704
|
-
|
|
10705
|
-
|
|
10706
|
-
|
|
10707
|
-
}, 0);
|
|
10708
|
-
mdatSize += s.units.length * 4;
|
|
10709
|
-
});
|
|
10710
|
-
var mdata = new Uint8Array(mdatSize);
|
|
10711
|
-
var mdatView = new DataView(mdata.buffer);
|
|
10712
|
-
var _loop = function _loop2(_offset, _sample) {
|
|
10713
|
-
_sample = samples[i];
|
|
10714
|
-
var sampleSize = 0;
|
|
10715
|
-
_sample.units.forEach(function(u) {
|
|
10716
|
-
mdatView.setUint32(_offset, u.byteLength);
|
|
10717
|
-
_offset += 4;
|
|
10718
|
-
mdata.set(u, _offset);
|
|
10719
|
-
_offset += u.byteLength;
|
|
10720
|
-
sampleSize += 4 + u.byteLength;
|
|
11623
|
+
if (isAV01) {
|
|
11624
|
+
samples.forEach(function(s) {
|
|
11625
|
+
mdatSize += s.data.byteLength;
|
|
10721
11626
|
});
|
|
10722
|
-
|
|
10723
|
-
|
|
10724
|
-
|
|
10725
|
-
|
|
10726
|
-
|
|
11627
|
+
} else {
|
|
11628
|
+
samples.forEach(function(s) {
|
|
11629
|
+
mdatSize += s.units.reduce(function(t, c) {
|
|
11630
|
+
return t + c.byteLength;
|
|
11631
|
+
}, 0);
|
|
11632
|
+
mdatSize += s.units.length * 4;
|
|
11633
|
+
});
|
|
11634
|
+
}
|
|
11635
|
+
var mdata = new Uint8Array(mdatSize);
|
|
11636
|
+
if (isAV01) {
|
|
11637
|
+
for (var i = 0, l = samples.length, offset = 0, sample; i < l; i++) {
|
|
11638
|
+
sample = samples[i];
|
|
11639
|
+
mdata.set(sample.data, offset);
|
|
11640
|
+
sample.size = sample.data.byteLength;
|
|
11641
|
+
offset += sample.size;
|
|
11642
|
+
}
|
|
11643
|
+
} else {
|
|
11644
|
+
var mdatView = new DataView(mdata.buffer);
|
|
11645
|
+
var _loop = function _loop2(_offset2, _sample2) {
|
|
11646
|
+
_sample2 = samples[_i];
|
|
11647
|
+
var sampleSize = 0;
|
|
11648
|
+
_sample2.units.forEach(function(u) {
|
|
11649
|
+
mdatView.setUint32(_offset2, u.byteLength);
|
|
11650
|
+
_offset2 += 4;
|
|
11651
|
+
mdata.set(u, _offset2);
|
|
11652
|
+
_offset2 += u.byteLength;
|
|
11653
|
+
sampleSize += 4 + u.byteLength;
|
|
11654
|
+
});
|
|
11655
|
+
_sample2.size = sampleSize;
|
|
11656
|
+
_offset = _offset2, _sample = _sample2;
|
|
11657
|
+
};
|
|
11658
|
+
for (var _i = 0, _l = samples.length, _offset = 0, _sample; _i < _l; _i++) {
|
|
11659
|
+
_loop(_offset, _sample);
|
|
11660
|
+
}
|
|
10727
11661
|
}
|
|
10728
11662
|
var mdat = MP4.mdat(mdata);
|
|
10729
11663
|
var moof = MP4.moof([track]);
|
|
@@ -10882,11 +11816,11 @@ var Event$1 = _objectSpread2$2(_objectSpread2$2({}, EVENT), {}, {
|
|
|
10882
11816
|
});
|
|
10883
11817
|
var logger$3 = new Logger$2("Transmuxer");
|
|
10884
11818
|
var Transmuxer = /* @__PURE__ */ function() {
|
|
10885
|
-
function Transmuxer2(hls, isMP4, needRemux) {
|
|
11819
|
+
function Transmuxer2(hls, isMP4, needRemux, fixerConfig) {
|
|
10886
11820
|
_classCallCheck$3(this, Transmuxer2);
|
|
10887
11821
|
_defineProperty$3(this, "_initSegmentId", "");
|
|
10888
11822
|
this.hls = hls;
|
|
10889
|
-
this._demuxer = isMP4 ? new FMP4Demuxer() : new TsDemuxer();
|
|
11823
|
+
this._demuxer = isMP4 ? new FMP4Demuxer() : new TsDemuxer(null, null, null, fixerConfig);
|
|
10890
11824
|
this._isMP4 = isMP4;
|
|
10891
11825
|
if (needRemux)
|
|
10892
11826
|
this._remuxer = new FMP4Remuxer(this._demuxer.videoTrack, this._demuxer.audioTrack);
|
|
@@ -10917,7 +11851,8 @@ var Transmuxer = /* @__PURE__ */ function() {
|
|
|
10917
11851
|
timescale: audioTrack.timescale,
|
|
10918
11852
|
firstDts: audioTrack.firstDts / videoTrack.timescale,
|
|
10919
11853
|
firstPts: audioTrack.firstPts / videoTrack.timescale,
|
|
10920
|
-
duration: audioTrack.samplesDuration / videoTrack.timescale
|
|
11854
|
+
duration: audioTrack.samplesDuration / videoTrack.timescale,
|
|
11855
|
+
container: audioTrack.container
|
|
10921
11856
|
};
|
|
10922
11857
|
var newId = "".concat(videoTrack.codec, "/").concat(videoTrack.width, "/").concat(videoTrack.height, "/").concat(audioTrack.codec, "/").concat(audioTrack.config);
|
|
10923
11858
|
if (newId !== this._initSegmentId) {
|
|
@@ -11041,7 +11976,7 @@ var Transmuxer = /* @__PURE__ */ function() {
|
|
|
11041
11976
|
}]);
|
|
11042
11977
|
return Transmuxer2;
|
|
11043
11978
|
}();
|
|
11044
|
-
var _excluded = ["data"], _excluded2 = ["data"];
|
|
11979
|
+
var _excluded$1 = ["data"], _excluded2 = ["data"];
|
|
11045
11980
|
var logger$2 = new Logger$2("BufferService");
|
|
11046
11981
|
var BufferService = /* @__PURE__ */ function() {
|
|
11047
11982
|
function BufferService2(hls) {
|
|
@@ -11153,11 +12088,11 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11153
12088
|
return;
|
|
11154
12089
|
if (TsDemuxer.probe(chunk)) {
|
|
11155
12090
|
if (!this._transmuxer)
|
|
11156
|
-
this._transmuxer = new Transmuxer(this.hls, false, !this._softVideo);
|
|
12091
|
+
this._transmuxer = new Transmuxer(this.hls, false, !this._softVideo, this.hls.config.fixerConfig);
|
|
11157
12092
|
} else if (MP4Parser.probe(chunk)) {
|
|
11158
12093
|
if (this._softVideo) {
|
|
11159
12094
|
if (!this._transmuxer)
|
|
11160
|
-
this._transmuxer = new Transmuxer(this.hls, true);
|
|
12095
|
+
this._transmuxer = new Transmuxer(this.hls, true, null, this.hls.config.fixerConfig);
|
|
11161
12096
|
} else {
|
|
11162
12097
|
this._directAppend = true;
|
|
11163
12098
|
var mix = false;
|
|
@@ -11207,7 +12142,8 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11207
12142
|
key: "appendBuffer",
|
|
11208
12143
|
value: function() {
|
|
11209
12144
|
var _appendBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2(segment, audioSegment, videoChunk, audioChunk, discontinuity, contiguous, startTime) {
|
|
11210
|
-
var
|
|
12145
|
+
var _this2 = this;
|
|
12146
|
+
var afterAppend, p, needInit, _this$_transmuxer$tra, _this$_transmuxer$tra2, video, audio, isFirstAppend, mse, _p, videoData, videoRest, audioData, audioRest;
|
|
11211
12147
|
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
11212
12148
|
while (1)
|
|
11213
12149
|
switch (_context2.prev = _context2.next) {
|
|
@@ -11218,8 +12154,18 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11218
12154
|
}
|
|
11219
12155
|
return _context2.abrupt("return");
|
|
11220
12156
|
case 2:
|
|
12157
|
+
afterAppend = function afterAppend2() {
|
|
12158
|
+
var _this2$hls;
|
|
12159
|
+
if ((_this2$hls = _this2.hls) !== null && _this2$hls !== void 0 && _this2$hls.emit) {
|
|
12160
|
+
var _this2$hls2;
|
|
12161
|
+
(_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.emit(EVENT.APPEND_BUFFER, {
|
|
12162
|
+
start: segment.start,
|
|
12163
|
+
end: segment.end
|
|
12164
|
+
});
|
|
12165
|
+
}
|
|
12166
|
+
};
|
|
11221
12167
|
if (!this._directAppend) {
|
|
11222
|
-
_context2.next =
|
|
12168
|
+
_context2.next = 8;
|
|
11223
12169
|
break;
|
|
11224
12170
|
}
|
|
11225
12171
|
p = [];
|
|
@@ -11227,8 +12173,8 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11227
12173
|
p.push(this._mse.append(MSE.VIDEO, videoChunk));
|
|
11228
12174
|
if (audioChunk)
|
|
11229
12175
|
p.push(this._mse.append(MSE.AUDIO, audioChunk));
|
|
11230
|
-
return _context2.abrupt("return", Promise.all(p));
|
|
11231
|
-
case
|
|
12176
|
+
return _context2.abrupt("return", Promise.all(p).then(afterAppend));
|
|
12177
|
+
case 8:
|
|
11232
12178
|
needInit = this._needInitSegment || discontinuity;
|
|
11233
12179
|
_this$_transmuxer$tra = this._transmuxer.transmux(videoChunk, audioChunk, needInit, contiguous, startTime, this._needInitSegment || discontinuity), _this$_transmuxer$tra2 = _slicedToArray$1(_this$_transmuxer$tra, 2), video = _this$_transmuxer$tra2[0], audio = _this$_transmuxer$tra2[1];
|
|
11234
12180
|
if (audioChunk && audioSegment) {
|
|
@@ -11244,21 +12190,22 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11244
12190
|
this.hls.emit(Event$1.NO_AUDIO_TRACK);
|
|
11245
12191
|
}
|
|
11246
12192
|
if (!this._softVideo) {
|
|
11247
|
-
_context2.next =
|
|
12193
|
+
_context2.next = 20;
|
|
11248
12194
|
break;
|
|
11249
12195
|
}
|
|
11250
12196
|
this._softVideo.appendBuffer(video, audio);
|
|
11251
12197
|
this._needInitSegment = false;
|
|
11252
|
-
|
|
12198
|
+
afterAppend();
|
|
12199
|
+
_context2.next = 30;
|
|
11253
12200
|
break;
|
|
11254
|
-
case
|
|
12201
|
+
case 20:
|
|
11255
12202
|
if (!this._mse) {
|
|
11256
|
-
_context2.next =
|
|
12203
|
+
_context2.next = 30;
|
|
11257
12204
|
break;
|
|
11258
12205
|
}
|
|
11259
12206
|
isFirstAppend = !this._sourceCreated;
|
|
11260
12207
|
if (isFirstAppend) {
|
|
11261
|
-
this._createMseSource(video === null || video === void 0 ? void 0 : video.codec, audio === null || audio === void 0 ? void 0 : audio.codec);
|
|
12208
|
+
this._createMseSource(video === null || video === void 0 ? void 0 : video.codec, audio === null || audio === void 0 ? void 0 : audio.codec, audio === null || audio === void 0 ? void 0 : audio.container);
|
|
11262
12209
|
}
|
|
11263
12210
|
this._needInitSegment = false;
|
|
11264
12211
|
mse = this._mse;
|
|
@@ -11269,15 +12216,15 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11269
12216
|
});
|
|
11270
12217
|
}
|
|
11271
12218
|
if (video) {
|
|
11272
|
-
videoData = video.data, videoRest = _objectWithoutProperties$1(video, _excluded);
|
|
12219
|
+
videoData = video.data, videoRest = _objectWithoutProperties$1(video, _excluded$1);
|
|
11273
12220
|
_p.push(mse.append(MSE.VIDEO, videoData, videoRest));
|
|
11274
12221
|
}
|
|
11275
12222
|
if (audio) {
|
|
11276
12223
|
audioData = audio.data, audioRest = _objectWithoutProperties$1(audio, _excluded2);
|
|
11277
12224
|
_p.push(mse.append(MSE.AUDIO, audioData, audioRest));
|
|
11278
12225
|
}
|
|
11279
|
-
return _context2.abrupt("return", Promise.all(_p));
|
|
11280
|
-
case
|
|
12226
|
+
return _context2.abrupt("return", Promise.all(_p).then(afterAppend));
|
|
12227
|
+
case 30:
|
|
11281
12228
|
case "end":
|
|
11282
12229
|
return _context2.stop();
|
|
11283
12230
|
}
|
|
@@ -11292,7 +12239,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11292
12239
|
key: "removeBuffer",
|
|
11293
12240
|
value: function() {
|
|
11294
12241
|
var _removeBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee3() {
|
|
11295
|
-
var
|
|
12242
|
+
var _this3 = this;
|
|
11296
12243
|
var start, end, media, _args3 = arguments;
|
|
11297
12244
|
return _regeneratorRuntime$1().wrap(function _callee3$(_context3) {
|
|
11298
12245
|
while (1)
|
|
@@ -11308,7 +12255,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11308
12255
|
return _context3.abrupt("return");
|
|
11309
12256
|
case 5:
|
|
11310
12257
|
return _context3.abrupt("return", this._mse.clearBuffer(start, end).then(function() {
|
|
11311
|
-
return
|
|
12258
|
+
return _this3.hls.emit(EVENT.REMOVE_BUFFER, {
|
|
11312
12259
|
start,
|
|
11313
12260
|
end,
|
|
11314
12261
|
removeEnd: end
|
|
@@ -11489,30 +12436,51 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11489
12436
|
return setLiveSeekableRange;
|
|
11490
12437
|
}()
|
|
11491
12438
|
}, {
|
|
11492
|
-
key: "
|
|
12439
|
+
key: "detachMedia",
|
|
11493
12440
|
value: function() {
|
|
11494
|
-
var
|
|
11495
|
-
var _this$_decryptor;
|
|
12441
|
+
var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee9() {
|
|
11496
12442
|
return _regeneratorRuntime$1().wrap(function _callee9$(_context9) {
|
|
11497
12443
|
while (1)
|
|
11498
12444
|
switch (_context9.prev = _context9.next) {
|
|
11499
12445
|
case 0:
|
|
11500
|
-
(_this$_decryptor = this._decryptor) === null || _this$_decryptor === void 0 ? void 0 : _this$_decryptor.destroy();
|
|
11501
12446
|
if (!this._mse) {
|
|
11502
|
-
_context9.next =
|
|
12447
|
+
_context9.next = 3;
|
|
11503
12448
|
break;
|
|
11504
12449
|
}
|
|
11505
|
-
_context9.next =
|
|
12450
|
+
_context9.next = 3;
|
|
11506
12451
|
return this._mse.unbindMedia();
|
|
11507
|
-
case
|
|
12452
|
+
case 3:
|
|
12453
|
+
case "end":
|
|
12454
|
+
return _context9.stop();
|
|
12455
|
+
}
|
|
12456
|
+
}, _callee9, this);
|
|
12457
|
+
}));
|
|
12458
|
+
function detachMedia() {
|
|
12459
|
+
return _detachMedia.apply(this, arguments);
|
|
12460
|
+
}
|
|
12461
|
+
return detachMedia;
|
|
12462
|
+
}()
|
|
12463
|
+
}, {
|
|
12464
|
+
key: "destroy",
|
|
12465
|
+
value: function() {
|
|
12466
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee10() {
|
|
12467
|
+
var _this$_decryptor;
|
|
12468
|
+
return _regeneratorRuntime$1().wrap(function _callee10$(_context10) {
|
|
12469
|
+
while (1)
|
|
12470
|
+
switch (_context10.prev = _context10.next) {
|
|
12471
|
+
case 0:
|
|
12472
|
+
(_this$_decryptor = this._decryptor) === null || _this$_decryptor === void 0 ? void 0 : _this$_decryptor.destroy();
|
|
12473
|
+
_context10.next = 3;
|
|
12474
|
+
return this.detachMedia();
|
|
12475
|
+
case 3:
|
|
11508
12476
|
this._decryptor = null;
|
|
11509
12477
|
this._mse = null;
|
|
11510
12478
|
this._softVideo = null;
|
|
11511
|
-
case
|
|
12479
|
+
case 6:
|
|
11512
12480
|
case "end":
|
|
11513
|
-
return
|
|
12481
|
+
return _context10.stop();
|
|
11514
12482
|
}
|
|
11515
|
-
},
|
|
12483
|
+
}, _callee10, this);
|
|
11516
12484
|
}));
|
|
11517
12485
|
function destroy() {
|
|
11518
12486
|
return _destroy.apply(this, arguments);
|
|
@@ -11521,7 +12489,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11521
12489
|
}()
|
|
11522
12490
|
}, {
|
|
11523
12491
|
key: "_createMseSource",
|
|
11524
|
-
value: function _createMseSource(videoCodec, audioCodec) {
|
|
12492
|
+
value: function _createMseSource(videoCodec, audioCodec, container) {
|
|
11525
12493
|
logger$2.debug("create mse source, videoCodec=".concat(videoCodec, ", audioCodec=").concat(audioCodec));
|
|
11526
12494
|
var mse = this._mse;
|
|
11527
12495
|
if (!mse)
|
|
@@ -11533,6 +12501,9 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11533
12501
|
if (audioCodec) {
|
|
11534
12502
|
mse.createSource(MSE.AUDIO, "audio/mp4;codecs=".concat(audioCodec));
|
|
11535
12503
|
this._sourceCreated = true;
|
|
12504
|
+
} else if (container) {
|
|
12505
|
+
mse.createSource(MSE.AUDIO, "".concat(container, ';codecs=""'));
|
|
12506
|
+
this._sourceCreated = true;
|
|
11536
12507
|
}
|
|
11537
12508
|
this.hls.emit(EVENT.SOURCEBUFFER_CREATED);
|
|
11538
12509
|
}
|
|
@@ -11600,7 +12571,11 @@ function getConfig(cfg) {
|
|
|
11600
12571
|
minSegmentsStartPlay: 3,
|
|
11601
12572
|
preferMMS: false,
|
|
11602
12573
|
preferMMSStreaming: false,
|
|
11603
|
-
mseLowLatency: true
|
|
12574
|
+
mseLowLatency: true,
|
|
12575
|
+
fixerConfig: {
|
|
12576
|
+
forceFixLargeGap: false,
|
|
12577
|
+
largeGapThreshold: 5
|
|
12578
|
+
}
|
|
11604
12579
|
}, cfg), {}, {
|
|
11605
12580
|
media
|
|
11606
12581
|
});
|
|
@@ -11715,6 +12690,8 @@ var MediaPlaylist = /* @__PURE__ */ _createClass$3(function MediaPlaylist2() {
|
|
|
11715
12690
|
_defineProperty$3(this, "lowLatency", false);
|
|
11716
12691
|
_defineProperty$3(this, "endPartIndex", 0);
|
|
11717
12692
|
_defineProperty$3(this, "segments", []);
|
|
12693
|
+
_defineProperty$3(this, "dateRanges", {});
|
|
12694
|
+
_defineProperty$3(this, "skippedSegments", 0);
|
|
11718
12695
|
});
|
|
11719
12696
|
var MediaSegment = /* @__PURE__ */ function() {
|
|
11720
12697
|
function MediaSegment2(parentUrl) {
|
|
@@ -11836,6 +12813,31 @@ var MediaSegmentKey = /* @__PURE__ */ function() {
|
|
|
11836
12813
|
}]);
|
|
11837
12814
|
return MediaSegmentKey2;
|
|
11838
12815
|
}();
|
|
12816
|
+
var HlsUrlParameters = /* @__PURE__ */ function() {
|
|
12817
|
+
function HlsUrlParameters2(msn, part, skip) {
|
|
12818
|
+
_classCallCheck$3(this, HlsUrlParameters2);
|
|
12819
|
+
this.msn = msn;
|
|
12820
|
+
this.part = part;
|
|
12821
|
+
this.skip = skip;
|
|
12822
|
+
}
|
|
12823
|
+
_createClass$3(HlsUrlParameters2, [{
|
|
12824
|
+
key: "addDirectives",
|
|
12825
|
+
value: function addDirectives(uri) {
|
|
12826
|
+
var url = new self.URL(uri);
|
|
12827
|
+
if (this.msn !== void 0) {
|
|
12828
|
+
url.searchParams.set("_HLS_msn", this.msn.toString());
|
|
12829
|
+
}
|
|
12830
|
+
if (this.part) {
|
|
12831
|
+
url.searchParams.set("_HLS_part", this.part.toString());
|
|
12832
|
+
}
|
|
12833
|
+
if (this.skip) {
|
|
12834
|
+
url.searchParams.set("_HLS_skip", this.skip);
|
|
12835
|
+
}
|
|
12836
|
+
return url.href;
|
|
12837
|
+
}
|
|
12838
|
+
}]);
|
|
12839
|
+
return HlsUrlParameters2;
|
|
12840
|
+
}();
|
|
11839
12841
|
var REGEXP_TAG = /^#(EXT[^:]*)(?::(.*))?$/;
|
|
11840
12842
|
var REGEXP_ATTR = /([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g;
|
|
11841
12843
|
var REGEXP_ABSOLUTE_URL = /^(?:[a-zA-Z0-9+\-.]+:)?\/\//;
|
|
@@ -11886,6 +12888,38 @@ function getCodecs(type, codecs) {
|
|
|
11886
12888
|
}
|
|
11887
12889
|
}
|
|
11888
12890
|
}
|
|
12891
|
+
function isValidDaterange(attr, dateRangeWithSameId) {
|
|
12892
|
+
var _badValueForSameId;
|
|
12893
|
+
if (dateRangeWithSameId) {
|
|
12894
|
+
for (var key in dateRangeWithSameId) {
|
|
12895
|
+
if (Object.prototype.hasOwnProperty.call(dateRangeWithSameId, key) && attr[key] !== dateRangeWithSameId[key]) {
|
|
12896
|
+
_badValueForSameId = key;
|
|
12897
|
+
break;
|
|
12898
|
+
}
|
|
12899
|
+
}
|
|
12900
|
+
}
|
|
12901
|
+
var duration = null;
|
|
12902
|
+
if (attr.DURATION) {
|
|
12903
|
+
duration = parseFloat(attr.DURATION);
|
|
12904
|
+
if (!Number.isFinite(duration)) {
|
|
12905
|
+
duration = null;
|
|
12906
|
+
} else if (attr._endDate) {
|
|
12907
|
+
duration = (attr._endDate.getTime() - attr._startDate.getTime()) / 1e3;
|
|
12908
|
+
}
|
|
12909
|
+
}
|
|
12910
|
+
var cue = enumeratedStringList(attr.CUE || attr["X-CUE"], {
|
|
12911
|
+
pre: false,
|
|
12912
|
+
post: false,
|
|
12913
|
+
once: false
|
|
12914
|
+
});
|
|
12915
|
+
return !!attr.ID && !_badValueForSameId && Number.isFinite(attr._startDate.getTime()) && (duration === null || duration >= 0) && (!(attr.END_ON_NEXT === "YES") || !!attr.CLASS) && (!attr.CUE || !cue.pre && !cue.post || cue.pre !== cue.post) && (!(attr.CLASS === "com.apple.hls.interstitial") || "X-ASSET-URI" in attr || "X-ASSET-LIST" in attr);
|
|
12916
|
+
}
|
|
12917
|
+
function enumeratedStringList(attrValue, dict) {
|
|
12918
|
+
return (attrValue ? attrValue.split(/[ ,]+/) : []).reduce(function(result, identifier) {
|
|
12919
|
+
result[identifier.toLowerCase()] = true;
|
|
12920
|
+
return result;
|
|
12921
|
+
}, dict);
|
|
12922
|
+
}
|
|
11889
12923
|
function parseMasterPlaylist(lines, parentUrl) {
|
|
11890
12924
|
var master = new MasterPlaylist();
|
|
11891
12925
|
var index = 0;
|
|
@@ -11994,9 +13028,6 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
11994
13028
|
var endOfList = false;
|
|
11995
13029
|
var partSegmentIndex = 0;
|
|
11996
13030
|
while (line = lines[index++]) {
|
|
11997
|
-
if (endOfList) {
|
|
11998
|
-
break;
|
|
11999
|
-
}
|
|
12000
13031
|
if (line[0] !== "#") {
|
|
12001
13032
|
if (media.lowLatency) {
|
|
12002
13033
|
curSN++;
|
|
@@ -12045,16 +13076,11 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12045
13076
|
media.canBlockReload = _attr["CAN-BLOCK-RELOAD"] === "YES";
|
|
12046
13077
|
media.partHoldBack = parseFloat(_attr["PART-HOLD-BACK"] || 0);
|
|
12047
13078
|
media.canSkipUntil = parseFloat(_attr["CAN-SKIP-UNTIL"] || 0);
|
|
12048
|
-
media.canSkipDateRanges = _attr["CAN-SKIP-DATERANGES"] === "YES";
|
|
13079
|
+
media.canSkipDateRanges = media.canSkipUntil > 0 && _attr["CAN-SKIP-DATERANGES"] === "YES";
|
|
12049
13080
|
}
|
|
12050
13081
|
break;
|
|
12051
13082
|
case "ENDLIST":
|
|
12052
13083
|
{
|
|
12053
|
-
var _lastSegment = media.segments[media.segments.length - 1];
|
|
12054
|
-
if (_lastSegment) {
|
|
12055
|
-
_lastSegment.isLast = true;
|
|
12056
|
-
}
|
|
12057
|
-
media.live = false;
|
|
12058
13084
|
endOfList = true;
|
|
12059
13085
|
}
|
|
12060
13086
|
break;
|
|
@@ -12094,6 +13120,15 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12094
13120
|
}
|
|
12095
13121
|
break;
|
|
12096
13122
|
case "PRELOAD-HINT":
|
|
13123
|
+
{
|
|
13124
|
+
var _attr3 = parseAttr(data);
|
|
13125
|
+
media.preloadHint = _attr3;
|
|
13126
|
+
if (_attr3["TYPE"] === "PART" && _attr3["URI"]) {
|
|
13127
|
+
var tmp = _attr3["URI"].split(".ts")[0].split("-");
|
|
13128
|
+
media.nextSN = tmp[3];
|
|
13129
|
+
media.nextIndex = tmp[tmp.length - 1];
|
|
13130
|
+
}
|
|
13131
|
+
}
|
|
12097
13132
|
break;
|
|
12098
13133
|
case "PROGRAM-DATE-TIME":
|
|
12099
13134
|
curSegment.dataTime = data;
|
|
@@ -12113,21 +13148,21 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12113
13148
|
break;
|
|
12114
13149
|
case "KEY":
|
|
12115
13150
|
{
|
|
12116
|
-
var
|
|
12117
|
-
if (
|
|
13151
|
+
var _attr4 = parseAttr(data);
|
|
13152
|
+
if (_attr4.METHOD === "NONE") {
|
|
12118
13153
|
curKey = null;
|
|
12119
13154
|
break;
|
|
12120
13155
|
}
|
|
12121
13156
|
curKey = new MediaSegmentKey();
|
|
12122
|
-
curKey.method =
|
|
12123
|
-
curKey.url = /^blob:/.test(
|
|
12124
|
-
curKey.keyFormat =
|
|
12125
|
-
curKey.keyFormatVersions =
|
|
13157
|
+
curKey.method = _attr4.METHOD;
|
|
13158
|
+
curKey.url = /^blob:/.test(_attr4.URI) ? _attr4.URI : getAbsoluteUrl(_attr4.URI, parentUrl);
|
|
13159
|
+
curKey.keyFormat = _attr4.KEYFORMAT || "identity";
|
|
13160
|
+
curKey.keyFormatVersions = _attr4.KEYFORMATVERSIONS;
|
|
12126
13161
|
if (!curKey.isSupported()) {
|
|
12127
|
-
throw new Error("encrypt ".concat(
|
|
13162
|
+
throw new Error("encrypt ".concat(_attr4.METHOD, "/").concat(_attr4.KEYFORMAT, " is not supported"));
|
|
12128
13163
|
}
|
|
12129
|
-
if (
|
|
12130
|
-
var str =
|
|
13164
|
+
if (_attr4.IV) {
|
|
13165
|
+
var str = _attr4.IV.slice(2);
|
|
12131
13166
|
str = (str.length & 1 ? "0" : "") + str;
|
|
12132
13167
|
curKey.iv = new Uint8Array(str.length / 2);
|
|
12133
13168
|
for (var i = 0, l = str.length / 2; i < l; i++) {
|
|
@@ -12138,10 +13173,10 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12138
13173
|
break;
|
|
12139
13174
|
case "MAP":
|
|
12140
13175
|
{
|
|
12141
|
-
var
|
|
12142
|
-
curSegment.url = getAbsoluteUrl(
|
|
12143
|
-
if (
|
|
12144
|
-
curSegment.setByteRange(
|
|
13176
|
+
var _attr5 = parseAttr(data);
|
|
13177
|
+
curSegment.url = getAbsoluteUrl(_attr5.URI, parentUrl);
|
|
13178
|
+
if (_attr5.BYTERANGE)
|
|
13179
|
+
curSegment.setByteRange(_attr5.BYTERANGE);
|
|
12145
13180
|
curSegment.isInitSegment = true;
|
|
12146
13181
|
curSegment.sn = 0;
|
|
12147
13182
|
if (curKey) {
|
|
@@ -12151,6 +13186,30 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12151
13186
|
curSegment = new MediaSegment(parentUrl);
|
|
12152
13187
|
}
|
|
12153
13188
|
break;
|
|
13189
|
+
case "SKIP":
|
|
13190
|
+
{
|
|
13191
|
+
var _attr6 = parseAttr(data);
|
|
13192
|
+
var skippedSegments = parseInt(_attr6["SKIPPED-SEGMENTS"], 10);
|
|
13193
|
+
if (skippedSegments <= Number.MAX_SAFE_INTEGER) {
|
|
13194
|
+
media.skippedSegments += skippedSegments;
|
|
13195
|
+
curSN += skippedSegments;
|
|
13196
|
+
}
|
|
13197
|
+
}
|
|
13198
|
+
break;
|
|
13199
|
+
case "DATERANGE":
|
|
13200
|
+
{
|
|
13201
|
+
var _attr7 = parseAttr(data);
|
|
13202
|
+
var dateRangeWithSameId = media.dateRanges[_attr7.ID];
|
|
13203
|
+
_attr7._startDate = dateRangeWithSameId ? dateRangeWithSameId._startDate : new Date(_attr7["START-DATE"]);
|
|
13204
|
+
var endDate = (dateRangeWithSameId === null || dateRangeWithSameId === void 0 ? void 0 : dateRangeWithSameId._endDate) || new Date(_attr7.END_DATE);
|
|
13205
|
+
if (Number.isFinite(endDate)) {
|
|
13206
|
+
_attr7._endDate = endDate;
|
|
13207
|
+
}
|
|
13208
|
+
if (isValidDaterange(_attr7, dateRangeWithSameId) || media.skippedSegments) {
|
|
13209
|
+
media.dateRanges[_attr7.ID] = _attr7;
|
|
13210
|
+
}
|
|
13211
|
+
}
|
|
13212
|
+
break;
|
|
12154
13213
|
}
|
|
12155
13214
|
}
|
|
12156
13215
|
media.segments = media.segments.filter(function(x) {
|
|
@@ -12158,11 +13217,14 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12158
13217
|
});
|
|
12159
13218
|
var lastSegment = media.segments[media.segments.length - 1];
|
|
12160
13219
|
if (lastSegment) {
|
|
12161
|
-
|
|
12162
|
-
media.endPartIndex = lastSegment.partIndex;
|
|
12163
|
-
if (endOfList && !lastSegment.isLast) {
|
|
13220
|
+
if (endOfList) {
|
|
12164
13221
|
lastSegment.isLast = true;
|
|
12165
13222
|
}
|
|
13223
|
+
media.endSN = lastSegment.sn;
|
|
13224
|
+
media.endPartIndex = lastSegment.partIndex;
|
|
13225
|
+
}
|
|
13226
|
+
if (endOfList) {
|
|
13227
|
+
media.live = false;
|
|
12166
13228
|
}
|
|
12167
13229
|
media.totalDuration = totalDuration;
|
|
12168
13230
|
media.endCC = curCC;
|
|
@@ -12341,6 +13403,13 @@ var ManifestLoader = /* @__PURE__ */ function() {
|
|
|
12341
13403
|
playlist
|
|
12342
13404
|
});
|
|
12343
13405
|
} else {
|
|
13406
|
+
if (this._useLowLatency) {
|
|
13407
|
+
if (playlist.canBlockReload) {
|
|
13408
|
+
this.deliveryDirectives = new HlsUrlParameters(playlist.nextSN, playlist.nextIndex, "");
|
|
13409
|
+
} else {
|
|
13410
|
+
this.deliveryDirectives = null;
|
|
13411
|
+
}
|
|
13412
|
+
}
|
|
12344
13413
|
this.hls.emit(Event$1.HLS_LEVEL_LOADED, {
|
|
12345
13414
|
playlist
|
|
12346
13415
|
});
|
|
@@ -12397,41 +13466,45 @@ var ManifestLoader = /* @__PURE__ */ function() {
|
|
|
12397
13466
|
var retryCount = this.hls.config.pollRetryCount;
|
|
12398
13467
|
var fn = /* @__PURE__ */ function() {
|
|
12399
13468
|
var _ref2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2() {
|
|
12400
|
-
var res;
|
|
13469
|
+
var reqUrl, res;
|
|
12401
13470
|
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
12402
13471
|
while (1)
|
|
12403
13472
|
switch (_context2.prev = _context2.next) {
|
|
12404
13473
|
case 0:
|
|
12405
13474
|
clearTimeout(_this2._timer);
|
|
12406
|
-
|
|
12407
|
-
_context2.
|
|
12408
|
-
|
|
12409
|
-
|
|
13475
|
+
reqUrl = url;
|
|
13476
|
+
_context2.prev = 2;
|
|
13477
|
+
if (_this2.deliveryDirectives) {
|
|
13478
|
+
reqUrl = _this2.deliveryDirectives.addDirectives(url);
|
|
13479
|
+
}
|
|
13480
|
+
_context2.next = 6;
|
|
13481
|
+
return _this2.load(reqUrl, audioUrl, subtitleUrl);
|
|
13482
|
+
case 6:
|
|
12410
13483
|
res = _context2.sent;
|
|
12411
13484
|
if (res[0]) {
|
|
12412
|
-
_context2.next =
|
|
13485
|
+
_context2.next = 9;
|
|
12413
13486
|
break;
|
|
12414
13487
|
}
|
|
12415
13488
|
return _context2.abrupt("return");
|
|
12416
|
-
case
|
|
13489
|
+
case 9:
|
|
12417
13490
|
retryCount = _this2.hls.config.pollRetryCount;
|
|
12418
13491
|
cb(res[0], res[1], res[2]);
|
|
12419
|
-
_context2.next =
|
|
13492
|
+
_context2.next = 17;
|
|
12420
13493
|
break;
|
|
12421
|
-
case
|
|
12422
|
-
_context2.prev =
|
|
12423
|
-
_context2.t0 = _context2["catch"](
|
|
13494
|
+
case 13:
|
|
13495
|
+
_context2.prev = 13;
|
|
13496
|
+
_context2.t0 = _context2["catch"](2);
|
|
12424
13497
|
retryCount--;
|
|
12425
13498
|
if (retryCount <= 0) {
|
|
12426
13499
|
errorCb(_context2.t0);
|
|
12427
13500
|
}
|
|
12428
|
-
case
|
|
13501
|
+
case 17:
|
|
12429
13502
|
_this2._timer = setTimeout(fn, time);
|
|
12430
|
-
case
|
|
13503
|
+
case 18:
|
|
12431
13504
|
case "end":
|
|
12432
13505
|
return _context2.stop();
|
|
12433
13506
|
}
|
|
12434
|
-
}, _callee2, null, [[
|
|
13507
|
+
}, _callee2, null, [[2, 13]]);
|
|
12435
13508
|
}));
|
|
12436
13509
|
return function fn2() {
|
|
12437
13510
|
return _ref2.apply(this, arguments);
|
|
@@ -12961,7 +14034,7 @@ var Playlist = /* @__PURE__ */ function() {
|
|
|
12961
14034
|
}, {
|
|
12962
14035
|
key: "clearOldSegment",
|
|
12963
14036
|
value: function clearOldSegment() {
|
|
12964
|
-
var maxPlaylistSize = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 50;
|
|
14037
|
+
var maxPlaylistSize = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.hls.config.maxPlaylistSize || 50;
|
|
12965
14038
|
var stream = this.currentStream;
|
|
12966
14039
|
if (!this.dvrWindow || !stream)
|
|
12967
14040
|
return;
|
|
@@ -13259,7 +14332,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13259
14332
|
_defineProperty$3(_assertThisInitialized$2(_this), "_switchUrlOpts", null);
|
|
13260
14333
|
_defineProperty$3(_assertThisInitialized$2(_this), "_isProcessQuotaExceeded", false);
|
|
13261
14334
|
_defineProperty$3(_assertThisInitialized$2(_this), "_loadSegment", /* @__PURE__ */ _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee() {
|
|
13262
|
-
var
|
|
14335
|
+
var _this$_playlist, nextSegment, lastSegment, _assertThisInitialize, config, minFrameDuration, maxBufferThroughout, bInfo, bufferThroughout;
|
|
13263
14336
|
return _regeneratorRuntime$1().wrap(function _callee$(_context) {
|
|
13264
14337
|
while (1)
|
|
13265
14338
|
switch (_context.prev = _context.next) {
|
|
@@ -13270,42 +14343,44 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13270
14343
|
}
|
|
13271
14344
|
return _context.abrupt("return");
|
|
13272
14345
|
case 2:
|
|
13273
|
-
|
|
14346
|
+
_this$_playlist = _this._playlist, nextSegment = _this$_playlist.nextSegment, lastSegment = _this$_playlist.lastSegment;
|
|
13274
14347
|
_assertThisInitialize = _assertThisInitialized$2(_this), config = _assertThisInitialize.config;
|
|
13275
|
-
|
|
13276
|
-
|
|
14348
|
+
minFrameDuration = 0.016;
|
|
14349
|
+
maxBufferThroughout = Math.min(Math.max((lastSegment === null || lastSegment === void 0 ? void 0 : lastSegment.duration) - minFrameDuration / 2 || 0, minFrameDuration), 0.1);
|
|
14350
|
+
if (nextSegment) {
|
|
14351
|
+
_context.next = 8;
|
|
13277
14352
|
break;
|
|
13278
14353
|
}
|
|
13279
14354
|
return _context.abrupt("return");
|
|
13280
|
-
case
|
|
14355
|
+
case 8:
|
|
13281
14356
|
if (_this.isLive) {
|
|
13282
|
-
_context.next =
|
|
14357
|
+
_context.next = 18;
|
|
13283
14358
|
break;
|
|
13284
14359
|
}
|
|
13285
14360
|
bInfo = _this.bufferInfo();
|
|
13286
14361
|
if (_this.media.paused && !_this.media.currentTime) {
|
|
13287
14362
|
bInfo = _this.bufferInfo(bInfo.nextStart || 0.5);
|
|
13288
14363
|
}
|
|
13289
|
-
bufferThroughout = Math.abs(bInfo.end - _this.media.duration) <
|
|
14364
|
+
bufferThroughout = Math.abs(bInfo.end - _this.media.duration) < maxBufferThroughout;
|
|
13290
14365
|
if (!(bInfo.remaining >= config.preloadTime || bufferThroughout)) {
|
|
13291
|
-
_context.next =
|
|
14366
|
+
_context.next = 15;
|
|
13292
14367
|
break;
|
|
13293
14368
|
}
|
|
13294
14369
|
_this._tryEos();
|
|
13295
14370
|
return _context.abrupt("return");
|
|
13296
|
-
case
|
|
14371
|
+
case 15:
|
|
13297
14372
|
if (!(config.preferMMSStreaming && !_this._bufferService.msStreaming)) {
|
|
13298
|
-
_context.next =
|
|
14373
|
+
_context.next = 17;
|
|
13299
14374
|
break;
|
|
13300
14375
|
}
|
|
13301
14376
|
return _context.abrupt("return");
|
|
13302
|
-
case
|
|
13303
|
-
if (!_this._urlSwitching && _this._prevSegSn !==
|
|
14377
|
+
case 17:
|
|
14378
|
+
if (!_this._urlSwitching && _this._prevSegSn !== nextSegment.sn - 1 && bInfo.end && Math.abs(nextSegment.start - bInfo.end) > 1) {
|
|
13304
14379
|
_this._playlist.setNextSegmentByIndex(_this._playlist.findSegmentIndexByTime(bInfo.end + 0.1));
|
|
13305
14380
|
}
|
|
13306
|
-
case
|
|
14381
|
+
case 18:
|
|
13307
14382
|
return _context.abrupt("return", _this._loadSegmentDirect());
|
|
13308
|
-
case
|
|
14383
|
+
case 19:
|
|
13309
14384
|
case "end":
|
|
13310
14385
|
return _context.stop();
|
|
13311
14386
|
}
|
|
@@ -13470,7 +14545,6 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13470
14545
|
return;
|
|
13471
14546
|
_this._startTick();
|
|
13472
14547
|
var media = _this.media;
|
|
13473
|
-
var buffered = Buffer$1.get(media);
|
|
13474
14548
|
var segLoaderError = _this._segmentLoader.error;
|
|
13475
14549
|
_this._onCheckQuotaExceeded();
|
|
13476
14550
|
if (_this._isProcessQuotaExceeded) {
|
|
@@ -13487,7 +14561,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13487
14561
|
}
|
|
13488
14562
|
return;
|
|
13489
14563
|
}
|
|
13490
|
-
if (
|
|
14564
|
+
if (media.readyState) {
|
|
13491
14565
|
if (isMediaPlaying(media)) {
|
|
13492
14566
|
_this._loadSegment();
|
|
13493
14567
|
if (_this._gapService) {
|
|
@@ -13553,6 +14627,12 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13553
14627
|
var _this$_bufferService;
|
|
13554
14628
|
return (_this$_bufferService = this._bufferService) === null || _this$_bufferService === void 0 ? void 0 : _this$_bufferService.baseDts;
|
|
13555
14629
|
}
|
|
14630
|
+
}, {
|
|
14631
|
+
key: "abrSwitchPoint",
|
|
14632
|
+
get: function get() {
|
|
14633
|
+
var targetSeg = this._urlSwitching ? this._playlist.currentSegment : this._playlist.nextSegment;
|
|
14634
|
+
return targetSeg ? targetSeg.start + targetSeg.duration / 2 : null;
|
|
14635
|
+
}
|
|
13556
14636
|
}, {
|
|
13557
14637
|
key: "speedInfo",
|
|
13558
14638
|
value: function speedInfo() {
|
|
@@ -13578,30 +14658,37 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13578
14658
|
}, {
|
|
13579
14659
|
key: "load",
|
|
13580
14660
|
value: function() {
|
|
13581
|
-
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4(
|
|
13582
|
-
var reuseMse, _args4 = arguments;
|
|
14661
|
+
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4() {
|
|
14662
|
+
var url, options, reuseMse, _args4 = arguments;
|
|
13583
14663
|
return _regeneratorRuntime$1().wrap(function _callee4$(_context4) {
|
|
13584
14664
|
while (1)
|
|
13585
14665
|
switch (_context4.prev = _context4.next) {
|
|
13586
14666
|
case 0:
|
|
13587
|
-
|
|
14667
|
+
url = _args4.length > 0 && _args4[0] !== void 0 ? _args4[0] : "";
|
|
14668
|
+
options = _args4.length > 1 && _args4[1] !== void 0 ? _args4[1] : {};
|
|
14669
|
+
reuseMse = typeof options === "boolean" ? options : !!(options !== null && options !== void 0 && options.reuseMse);
|
|
14670
|
+
if (_typeof$2(options) === "object" && options !== null && options !== void 0 && options.clearSwitchStatus) {
|
|
14671
|
+
this._urlSwitching = false;
|
|
14672
|
+
this._switchUrlOpts = null;
|
|
14673
|
+
this.config.startTime = void 0;
|
|
14674
|
+
}
|
|
13588
14675
|
if (url)
|
|
13589
14676
|
this.config.url = url;
|
|
13590
14677
|
url = this.config.url;
|
|
13591
|
-
_context4.next =
|
|
14678
|
+
_context4.next = 8;
|
|
13592
14679
|
return this._reset(reuseMse);
|
|
13593
|
-
case
|
|
13594
|
-
_context4.next =
|
|
14680
|
+
case 8:
|
|
14681
|
+
_context4.next = 10;
|
|
13595
14682
|
return this._loadData(url);
|
|
13596
|
-
case
|
|
14683
|
+
case 10:
|
|
13597
14684
|
this._startTick();
|
|
13598
|
-
case
|
|
14685
|
+
case 11:
|
|
13599
14686
|
case "end":
|
|
13600
14687
|
return _context4.stop();
|
|
13601
14688
|
}
|
|
13602
14689
|
}, _callee4, this);
|
|
13603
14690
|
}));
|
|
13604
|
-
function load(
|
|
14691
|
+
function load() {
|
|
13605
14692
|
return _load.apply(this, arguments);
|
|
13606
14693
|
}
|
|
13607
14694
|
return load;
|
|
@@ -13610,7 +14697,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13610
14697
|
key: "_loadData",
|
|
13611
14698
|
value: function() {
|
|
13612
14699
|
var _loadData2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee5(url) {
|
|
13613
|
-
var manifest, currentStream, _this$_switchUrlOpts, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint,
|
|
14700
|
+
var manifest, currentStream, preIndex, _this$_switchUrlOpts, _this$_switchUrlOpts3, _this$_switchUrlOpts4, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint, startTime, _this$_switchUrlOpts5;
|
|
13614
14701
|
return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
|
|
13615
14702
|
while (1)
|
|
13616
14703
|
switch (_context5.prev = _context5.next) {
|
|
@@ -13631,41 +14718,46 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13631
14718
|
case 5:
|
|
13632
14719
|
manifest = _context5.sent;
|
|
13633
14720
|
currentStream = this._playlist.currentStream;
|
|
13634
|
-
if (!
|
|
13635
|
-
_context5.next =
|
|
14721
|
+
if (!this._urlSwitching) {
|
|
14722
|
+
_context5.next = 23;
|
|
13636
14723
|
break;
|
|
13637
14724
|
}
|
|
14725
|
+
if (!this.isLive) {
|
|
14726
|
+
_context5.next = 14;
|
|
14727
|
+
break;
|
|
14728
|
+
}
|
|
14729
|
+
preIndex = this._playlist.setNextSegmentBySN(this._prevSegSn);
|
|
14730
|
+
logger.log("segment nb=".concat(this._prevSegSn, " index of ").concat(preIndex, " in the new playlist"));
|
|
14731
|
+
if (preIndex === -1) {
|
|
14732
|
+
this._prevSegCc = null;
|
|
14733
|
+
this._prevSegSn = null;
|
|
14734
|
+
}
|
|
14735
|
+
_context5.next = 23;
|
|
14736
|
+
break;
|
|
14737
|
+
case 14:
|
|
13638
14738
|
if (currentStream.bitrate === 0 && (_this$_switchUrlOpts = this._switchUrlOpts) !== null && _this$_switchUrlOpts !== void 0 && _this$_switchUrlOpts.bitrate) {
|
|
13639
14739
|
currentStream.bitrate = (_this$_switchUrlOpts2 = this._switchUrlOpts) === null || _this$_switchUrlOpts2 === void 0 ? void 0 : _this$_switchUrlOpts2.bitrate;
|
|
13640
14740
|
}
|
|
13641
|
-
switchTimePoint = this._getSeamlessSwitchPoint();
|
|
14741
|
+
switchTimePoint = typeof ((_this$_switchUrlOpts3 = this._switchUrlOpts) === null || _this$_switchUrlOpts3 === void 0 ? void 0 : _this$_switchUrlOpts3.startTime) === "number" ? (_this$_switchUrlOpts4 = this._switchUrlOpts) === null || _this$_switchUrlOpts4 === void 0 ? void 0 : _this$_switchUrlOpts4.startTime : this._getSeamlessSwitchPoint();
|
|
13642
14742
|
this.config.startTime = switchTimePoint;
|
|
13643
14743
|
segIdx = this._playlist.findSegmentIndexByTime(switchTimePoint);
|
|
13644
14744
|
nextSeg = this._playlist.getSegmentByIndex(segIdx + 1);
|
|
13645
14745
|
if (!nextSeg) {
|
|
13646
|
-
_context5.next =
|
|
14746
|
+
_context5.next = 23;
|
|
13647
14747
|
break;
|
|
13648
14748
|
}
|
|
13649
14749
|
bufferClearStartPoint = nextSeg.start;
|
|
13650
|
-
_context5.next =
|
|
14750
|
+
_context5.next = 23;
|
|
13651
14751
|
return this._bufferService.removeBuffer(bufferClearStartPoint);
|
|
13652
|
-
case
|
|
13653
|
-
if (this._urlSwitching && this.isLive) {
|
|
13654
|
-
preIndex = this._playlist.setNextSegmentBySN(this._prevSegSn);
|
|
13655
|
-
logger.log("segment nb=".concat(this._prevSegSn, " index of ").concat(preIndex, " in the new playlist"));
|
|
13656
|
-
if (preIndex === -1) {
|
|
13657
|
-
this._prevSegCc = null;
|
|
13658
|
-
this._prevSegSn = null;
|
|
13659
|
-
}
|
|
13660
|
-
}
|
|
14752
|
+
case 23:
|
|
13661
14753
|
if (manifest) {
|
|
13662
|
-
_context5.next =
|
|
14754
|
+
_context5.next = 25;
|
|
13663
14755
|
break;
|
|
13664
14756
|
}
|
|
13665
14757
|
return _context5.abrupt("return");
|
|
13666
|
-
case
|
|
14758
|
+
case 25:
|
|
13667
14759
|
if (!this.isLive) {
|
|
13668
|
-
_context5.next =
|
|
14760
|
+
_context5.next = 36;
|
|
13669
14761
|
break;
|
|
13670
14762
|
}
|
|
13671
14763
|
this._bufferService.setLiveSeekableRange(0, 4294967295);
|
|
@@ -13678,35 +14770,35 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13678
14770
|
if (!manifest.isMaster)
|
|
13679
14771
|
this._pollM3U8(url);
|
|
13680
14772
|
if (!(this._playlist.nbSegments < this.config.minSegmentsStartPlay)) {
|
|
13681
|
-
_context5.next =
|
|
14773
|
+
_context5.next = 33;
|
|
13682
14774
|
break;
|
|
13683
14775
|
}
|
|
13684
14776
|
return _context5.abrupt("return");
|
|
13685
|
-
case
|
|
13686
|
-
_context5.next =
|
|
14777
|
+
case 33:
|
|
14778
|
+
_context5.next = 35;
|
|
13687
14779
|
return this._loadSegment();
|
|
13688
|
-
case
|
|
14780
|
+
case 35:
|
|
13689
14781
|
return _context5.abrupt("return");
|
|
13690
|
-
case
|
|
13691
|
-
_context5.next =
|
|
14782
|
+
case 36:
|
|
14783
|
+
_context5.next = 38;
|
|
13692
14784
|
return this._bufferService.updateDuration(currentStream.totalDuration);
|
|
13693
|
-
case
|
|
14785
|
+
case 38:
|
|
13694
14786
|
startTime = this.config.startTime;
|
|
13695
14787
|
if (startTime) {
|
|
13696
|
-
if (!((_this$
|
|
14788
|
+
if (!((_this$_switchUrlOpts5 = this._switchUrlOpts) !== null && _this$_switchUrlOpts5 !== void 0 && _this$_switchUrlOpts5.seamless)) {
|
|
13697
14789
|
this.media.currentTime = startTime;
|
|
13698
14790
|
}
|
|
13699
14791
|
this._playlist.setNextSegmentByIndex(this._playlist.findSegmentIndexByTime(startTime) || 0);
|
|
13700
14792
|
}
|
|
13701
|
-
_context5.next =
|
|
14793
|
+
_context5.next = 42;
|
|
13702
14794
|
return this._loadSegment();
|
|
13703
|
-
case
|
|
14795
|
+
case 42:
|
|
13704
14796
|
case "end":
|
|
13705
14797
|
return _context5.stop();
|
|
13706
14798
|
}
|
|
13707
14799
|
}, _callee5, this);
|
|
13708
14800
|
}));
|
|
13709
|
-
function _loadData(
|
|
14801
|
+
function _loadData(_x) {
|
|
13710
14802
|
return _loadData2.apply(this, arguments);
|
|
13711
14803
|
}
|
|
13712
14804
|
return _loadData;
|
|
@@ -13720,18 +14812,20 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13720
14812
|
switch (_context6.prev = _context6.next) {
|
|
13721
14813
|
case 0:
|
|
13722
14814
|
this.config.startTime = 0;
|
|
13723
|
-
|
|
14815
|
+
this._urlSwitching = false;
|
|
14816
|
+
this._switchUrlOpts = null;
|
|
14817
|
+
_context6.next = 5;
|
|
13724
14818
|
return this.load();
|
|
13725
|
-
case
|
|
14819
|
+
case 5:
|
|
13726
14820
|
this._reloadOnPlay = false;
|
|
13727
14821
|
return _context6.abrupt("return", this.media.play(!isPlayEmit));
|
|
13728
|
-
case
|
|
14822
|
+
case 7:
|
|
13729
14823
|
case "end":
|
|
13730
14824
|
return _context6.stop();
|
|
13731
14825
|
}
|
|
13732
14826
|
}, _callee6, this);
|
|
13733
14827
|
}));
|
|
13734
|
-
function replay(
|
|
14828
|
+
function replay(_x2) {
|
|
13735
14829
|
return _replay.apply(this, arguments);
|
|
13736
14830
|
}
|
|
13737
14831
|
return replay;
|
|
@@ -13836,7 +14930,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13836
14930
|
}
|
|
13837
14931
|
}, _callee7, this, [[18, 29]]);
|
|
13838
14932
|
}));
|
|
13839
|
-
function switchURL(
|
|
14933
|
+
function switchURL(_x3) {
|
|
13840
14934
|
return _switchURL.apply(this, arguments);
|
|
13841
14935
|
}
|
|
13842
14936
|
return switchURL;
|
|
@@ -13922,7 +15016,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13922
15016
|
}
|
|
13923
15017
|
}, _callee8, this, [[8, 16], [21, 31]]);
|
|
13924
15018
|
}));
|
|
13925
|
-
function switchStream(
|
|
15019
|
+
function switchStream(_x4) {
|
|
13926
15020
|
return _switchStream.apply(this, arguments);
|
|
13927
15021
|
}
|
|
13928
15022
|
return switchStream;
|
|
@@ -14008,7 +15102,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14008
15102
|
}
|
|
14009
15103
|
}, _callee9, this, [[10, 18], [22, 32]]);
|
|
14010
15104
|
}));
|
|
14011
|
-
function switchAudioStream(
|
|
15105
|
+
function switchAudioStream(_x5) {
|
|
14012
15106
|
return _switchAudioStream.apply(this, arguments);
|
|
14013
15107
|
}
|
|
14014
15108
|
return switchAudioStream;
|
|
@@ -14033,25 +15127,50 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14033
15127
|
}
|
|
14034
15128
|
}, _callee10, this);
|
|
14035
15129
|
}));
|
|
14036
|
-
function switchSubtitleStream(
|
|
15130
|
+
function switchSubtitleStream(_x6) {
|
|
14037
15131
|
return _switchSubtitleStream.apply(this, arguments);
|
|
14038
15132
|
}
|
|
14039
15133
|
return switchSubtitleStream;
|
|
14040
15134
|
}()
|
|
14041
15135
|
}, {
|
|
14042
|
-
key: "
|
|
15136
|
+
key: "detachMedia",
|
|
14043
15137
|
value: function() {
|
|
14044
|
-
var
|
|
14045
|
-
var _this$_seiService2;
|
|
15138
|
+
var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee11() {
|
|
14046
15139
|
return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
|
|
14047
15140
|
while (1)
|
|
14048
15141
|
switch (_context11.prev = _context11.next) {
|
|
15142
|
+
case 0:
|
|
15143
|
+
if (!this._bufferService) {
|
|
15144
|
+
_context11.next = 3;
|
|
15145
|
+
break;
|
|
15146
|
+
}
|
|
15147
|
+
_context11.next = 3;
|
|
15148
|
+
return this._bufferService.detachMedia();
|
|
15149
|
+
case 3:
|
|
15150
|
+
case "end":
|
|
15151
|
+
return _context11.stop();
|
|
15152
|
+
}
|
|
15153
|
+
}, _callee11, this);
|
|
15154
|
+
}));
|
|
15155
|
+
function detachMedia() {
|
|
15156
|
+
return _detachMedia.apply(this, arguments);
|
|
15157
|
+
}
|
|
15158
|
+
return detachMedia;
|
|
15159
|
+
}()
|
|
15160
|
+
}, {
|
|
15161
|
+
key: "destroy",
|
|
15162
|
+
value: function() {
|
|
15163
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee12() {
|
|
15164
|
+
var _this$_seiService2;
|
|
15165
|
+
return _regeneratorRuntime$1().wrap(function _callee12$(_context12) {
|
|
15166
|
+
while (1)
|
|
15167
|
+
switch (_context12.prev = _context12.next) {
|
|
14049
15168
|
case 0:
|
|
14050
15169
|
if (this.media) {
|
|
14051
|
-
|
|
15170
|
+
_context12.next = 2;
|
|
14052
15171
|
break;
|
|
14053
15172
|
}
|
|
14054
|
-
return
|
|
15173
|
+
return _context12.abrupt("return");
|
|
14055
15174
|
case 2:
|
|
14056
15175
|
this.removeAllListeners();
|
|
14057
15176
|
this._playlist.reset();
|
|
@@ -14062,15 +15181,15 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14062
15181
|
this.media.removeEventListener("pause", this._onPause);
|
|
14063
15182
|
this.media.removeEventListener("seeking", this._onSeeking);
|
|
14064
15183
|
this.media.removeEventListener("timeupdate", this._onTimeupdate);
|
|
14065
|
-
|
|
15184
|
+
_context12.next = 13;
|
|
14066
15185
|
return Promise.all([this._clear(), this._bufferService.destroy()]);
|
|
14067
15186
|
case 13:
|
|
14068
15187
|
this.media = null;
|
|
14069
15188
|
case 14:
|
|
14070
15189
|
case "end":
|
|
14071
|
-
return
|
|
15190
|
+
return _context12.stop();
|
|
14072
15191
|
}
|
|
14073
|
-
},
|
|
15192
|
+
}, _callee12, this);
|
|
14074
15193
|
}));
|
|
14075
15194
|
function destroy() {
|
|
14076
15195
|
return _destroy.apply(this, arguments);
|
|
@@ -14080,48 +15199,48 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14080
15199
|
}, {
|
|
14081
15200
|
key: "_loadM3U8",
|
|
14082
15201
|
value: function() {
|
|
14083
|
-
var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15202
|
+
var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee13(url) {
|
|
14084
15203
|
var playlist, _this$config$manifest, _this$config$manifest2, manifest, _ref4, _ref5, _this$_playlist$curre;
|
|
14085
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15204
|
+
return _regeneratorRuntime$1().wrap(function _callee13$(_context13) {
|
|
14086
15205
|
while (1)
|
|
14087
|
-
switch (
|
|
15206
|
+
switch (_context13.prev = _context13.next) {
|
|
14088
15207
|
case 0:
|
|
14089
|
-
|
|
15208
|
+
_context13.prev = 0;
|
|
14090
15209
|
manifest = (_this$config$manifest = this.config.manifestList) === null || _this$config$manifest === void 0 ? void 0 : (_this$config$manifest2 = _this$config$manifest.filter(function(x) {
|
|
14091
15210
|
return x.url === url;
|
|
14092
15211
|
})[0]) === null || _this$config$manifest2 === void 0 ? void 0 : _this$config$manifest2.manifest;
|
|
14093
15212
|
if (!manifest) {
|
|
14094
|
-
|
|
15213
|
+
_context13.next = 6;
|
|
14095
15214
|
break;
|
|
14096
15215
|
}
|
|
14097
|
-
|
|
14098
|
-
|
|
15216
|
+
_context13.t0 = this._manifestLoader.parseText(manifest, url);
|
|
15217
|
+
_context13.next = 9;
|
|
14099
15218
|
break;
|
|
14100
15219
|
case 6:
|
|
14101
|
-
|
|
15220
|
+
_context13.next = 8;
|
|
14102
15221
|
return this._manifestLoader.load(url);
|
|
14103
15222
|
case 8:
|
|
14104
|
-
|
|
15223
|
+
_context13.t0 = _context13.sent;
|
|
14105
15224
|
case 9:
|
|
14106
|
-
_ref4 =
|
|
15225
|
+
_ref4 = _context13.t0;
|
|
14107
15226
|
_ref5 = _slicedToArray$1(_ref4, 1);
|
|
14108
15227
|
playlist = _ref5[0];
|
|
14109
|
-
|
|
15228
|
+
_context13.next = 17;
|
|
14110
15229
|
break;
|
|
14111
15230
|
case 14:
|
|
14112
|
-
|
|
14113
|
-
|
|
14114
|
-
throw this._emitError(StreamingError.create(
|
|
15231
|
+
_context13.prev = 14;
|
|
15232
|
+
_context13.t1 = _context13["catch"](0);
|
|
15233
|
+
throw this._emitError(StreamingError.create(_context13.t1));
|
|
14115
15234
|
case 17:
|
|
14116
15235
|
if (playlist) {
|
|
14117
|
-
|
|
15236
|
+
_context13.next = 19;
|
|
14118
15237
|
break;
|
|
14119
15238
|
}
|
|
14120
|
-
return
|
|
15239
|
+
return _context13.abrupt("return");
|
|
14121
15240
|
case 19:
|
|
14122
15241
|
this._playlist.upsertPlaylist(playlist);
|
|
14123
15242
|
if (!playlist.isMaster) {
|
|
14124
|
-
|
|
15243
|
+
_context13.next = 24;
|
|
14125
15244
|
break;
|
|
14126
15245
|
}
|
|
14127
15246
|
if ((_this$_playlist$curre = this._playlist.currentStream.subtitleStreams) !== null && _this$_playlist$curre !== void 0 && _this$_playlist$curre.length) {
|
|
@@ -14129,18 +15248,18 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14129
15248
|
list: this._playlist.currentStream.subtitleStreams
|
|
14130
15249
|
});
|
|
14131
15250
|
}
|
|
14132
|
-
|
|
15251
|
+
_context13.next = 24;
|
|
14133
15252
|
return this._refreshM3U8();
|
|
14134
15253
|
case 24:
|
|
14135
15254
|
this.emit(Event$1.STREAM_PARSED);
|
|
14136
|
-
return
|
|
15255
|
+
return _context13.abrupt("return", playlist);
|
|
14137
15256
|
case 26:
|
|
14138
15257
|
case "end":
|
|
14139
|
-
return
|
|
15258
|
+
return _context13.stop();
|
|
14140
15259
|
}
|
|
14141
|
-
},
|
|
15260
|
+
}, _callee13, this, [[0, 14]]);
|
|
14142
15261
|
}));
|
|
14143
|
-
function _loadM3U8(
|
|
15262
|
+
function _loadM3U8(_x7) {
|
|
14144
15263
|
return _loadM3U.apply(this, arguments);
|
|
14145
15264
|
}
|
|
14146
15265
|
return _loadM3U8;
|
|
@@ -14174,7 +15293,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14174
15293
|
var isEmpty = this._playlist.isEmpty;
|
|
14175
15294
|
var pollInterval;
|
|
14176
15295
|
if (this._playlist.lowLatency) {
|
|
14177
|
-
pollInterval = (this._playlist.currentStream.partTargetDuration
|
|
15296
|
+
pollInterval = (this._playlist.currentStream.partTargetDuration || 0) * 1e3;
|
|
14178
15297
|
} else {
|
|
14179
15298
|
var _this$_playlist$lastS;
|
|
14180
15299
|
pollInterval = (((_this$_playlist$lastS = this._playlist.lastSegment) === null || _this$_playlist$lastS === void 0 ? void 0 : _this$_playlist$lastS.duration) || 0) * 1e3;
|
|
@@ -14202,53 +15321,53 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14202
15321
|
}, {
|
|
14203
15322
|
key: "_loadSegmentDirect",
|
|
14204
15323
|
value: function() {
|
|
14205
|
-
var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15324
|
+
var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee14(loadOnce) {
|
|
14206
15325
|
var seg, appended, cachedError, _this$_playlist$curre2, bufferEnd, sameStream;
|
|
14207
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15326
|
+
return _regeneratorRuntime$1().wrap(function _callee14$(_context14) {
|
|
14208
15327
|
while (1)
|
|
14209
|
-
switch (
|
|
15328
|
+
switch (_context14.prev = _context14.next) {
|
|
14210
15329
|
case 0:
|
|
14211
15330
|
seg = this._playlist.nextSegment;
|
|
14212
15331
|
if (seg) {
|
|
14213
|
-
|
|
15332
|
+
_context14.next = 3;
|
|
14214
15333
|
break;
|
|
14215
15334
|
}
|
|
14216
|
-
return
|
|
15335
|
+
return _context14.abrupt("return");
|
|
14217
15336
|
case 3:
|
|
14218
15337
|
appended = false;
|
|
14219
15338
|
cachedError = null;
|
|
14220
|
-
|
|
15339
|
+
_context14.prev = 5;
|
|
14221
15340
|
this._segmentProcessing = true;
|
|
14222
15341
|
logger.log("load segment, sn:".concat(seg.sn, ", [").concat(seg.start, ", ").concat(seg.end, "], partIndex:").concat(seg.partIndex));
|
|
14223
|
-
|
|
15342
|
+
_context14.next = 10;
|
|
14224
15343
|
return this._reqAndBufferSegment(seg, this._playlist.getAudioSegment(seg));
|
|
14225
15344
|
case 10:
|
|
14226
|
-
appended =
|
|
14227
|
-
|
|
15345
|
+
appended = _context14.sent;
|
|
15346
|
+
_context14.next = 16;
|
|
14228
15347
|
break;
|
|
14229
15348
|
case 13:
|
|
14230
|
-
|
|
14231
|
-
|
|
14232
|
-
cachedError =
|
|
15349
|
+
_context14.prev = 13;
|
|
15350
|
+
_context14.t0 = _context14["catch"](5);
|
|
15351
|
+
cachedError = _context14.t0;
|
|
14233
15352
|
case 16:
|
|
14234
|
-
|
|
15353
|
+
_context14.prev = 16;
|
|
14235
15354
|
this._segmentProcessing = false;
|
|
14236
|
-
return
|
|
15355
|
+
return _context14.finish(16);
|
|
14237
15356
|
case 19:
|
|
14238
15357
|
if (!cachedError) {
|
|
14239
|
-
|
|
15358
|
+
_context14.next = 26;
|
|
14240
15359
|
break;
|
|
14241
15360
|
}
|
|
14242
15361
|
if (!this._bufferService.isFull()) {
|
|
14243
|
-
|
|
15362
|
+
_context14.next = 25;
|
|
14244
15363
|
break;
|
|
14245
15364
|
}
|
|
14246
15365
|
logger.log("load segment, sn:".concat(seg.sn, ", partIndex:").concat(seg.partIndex));
|
|
14247
15366
|
this._segmentProcessing = true;
|
|
14248
15367
|
this._isProcessQuotaExceeded = true;
|
|
14249
|
-
return
|
|
15368
|
+
return _context14.abrupt("return", false);
|
|
14250
15369
|
case 25:
|
|
14251
|
-
return
|
|
15370
|
+
return _context14.abrupt("return", this._emitError(StreamingError.create(cachedError)));
|
|
14252
15371
|
case 26:
|
|
14253
15372
|
if (appended) {
|
|
14254
15373
|
bufferEnd = this.bufferInfo().end;
|
|
@@ -14274,14 +15393,14 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14274
15393
|
this._loadSegment();
|
|
14275
15394
|
}
|
|
14276
15395
|
}
|
|
14277
|
-
return
|
|
15396
|
+
return _context14.abrupt("return", appended);
|
|
14278
15397
|
case 28:
|
|
14279
15398
|
case "end":
|
|
14280
|
-
return
|
|
15399
|
+
return _context14.stop();
|
|
14281
15400
|
}
|
|
14282
|
-
},
|
|
15401
|
+
}, _callee14, this, [[5, 13, 16, 19]]);
|
|
14283
15402
|
}));
|
|
14284
|
-
function _loadSegmentDirect(
|
|
15403
|
+
function _loadSegmentDirect(_x8) {
|
|
14285
15404
|
return _loadSegmentDirect2.apply(this, arguments);
|
|
14286
15405
|
}
|
|
14287
15406
|
return _loadSegmentDirect;
|
|
@@ -14289,45 +15408,45 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14289
15408
|
}, {
|
|
14290
15409
|
key: "_reqAndBufferSegment",
|
|
14291
15410
|
value: function() {
|
|
14292
|
-
var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15411
|
+
var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee15(seg, audioSeg) {
|
|
14293
15412
|
var _this$_bufferService2;
|
|
14294
15413
|
var cc, discontinuity, responses, data, sn, start, stream, before, contiguous, segStart;
|
|
14295
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15414
|
+
return _regeneratorRuntime$1().wrap(function _callee15$(_context15) {
|
|
14296
15415
|
while (1)
|
|
14297
|
-
switch (
|
|
15416
|
+
switch (_context15.prev = _context15.next) {
|
|
14298
15417
|
case 0:
|
|
14299
15418
|
cc = seg ? seg.cc : audioSeg.cc;
|
|
14300
15419
|
discontinuity = this._prevSegCc !== cc;
|
|
14301
15420
|
responses = [];
|
|
14302
|
-
|
|
14303
|
-
|
|
15421
|
+
_context15.prev = 3;
|
|
15422
|
+
_context15.next = 6;
|
|
14304
15423
|
return this._segmentLoader.load(seg, audioSeg, discontinuity);
|
|
14305
15424
|
case 6:
|
|
14306
|
-
responses =
|
|
14307
|
-
|
|
15425
|
+
responses = _context15.sent;
|
|
15426
|
+
_context15.next = 14;
|
|
14308
15427
|
break;
|
|
14309
15428
|
case 9:
|
|
14310
|
-
|
|
14311
|
-
|
|
14312
|
-
|
|
14313
|
-
this._segmentLoader.error =
|
|
14314
|
-
throw
|
|
15429
|
+
_context15.prev = 9;
|
|
15430
|
+
_context15.t0 = _context15["catch"](3);
|
|
15431
|
+
_context15.t0.fatal = false;
|
|
15432
|
+
this._segmentLoader.error = _context15.t0;
|
|
15433
|
+
throw _context15.t0;
|
|
14315
15434
|
case 14:
|
|
14316
15435
|
if (responses[0]) {
|
|
14317
|
-
|
|
15436
|
+
_context15.next = 16;
|
|
14318
15437
|
break;
|
|
14319
15438
|
}
|
|
14320
|
-
return
|
|
15439
|
+
return _context15.abrupt("return");
|
|
14321
15440
|
case 16:
|
|
14322
|
-
|
|
15441
|
+
_context15.next = 18;
|
|
14323
15442
|
return (_this$_bufferService2 = this._bufferService).decryptBuffer.apply(_this$_bufferService2, _toConsumableArray$2(responses));
|
|
14324
15443
|
case 18:
|
|
14325
|
-
data =
|
|
15444
|
+
data = _context15.sent;
|
|
14326
15445
|
if (data) {
|
|
14327
|
-
|
|
15446
|
+
_context15.next = 21;
|
|
14328
15447
|
break;
|
|
14329
15448
|
}
|
|
14330
|
-
return
|
|
15449
|
+
return _context15.abrupt("return");
|
|
14331
15450
|
case 21:
|
|
14332
15451
|
sn = seg ? seg.sn : audioSeg.sn;
|
|
14333
15452
|
start = seg ? seg.start : audioSeg.start;
|
|
@@ -14341,26 +15460,26 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14341
15460
|
logger.warn("update the new playlist liveEdge, segment id=".concat(sn, ", buffer start=").concat(segStart, ", liveEdge=").concat(this._playlist.liveEdge));
|
|
14342
15461
|
start = segStart;
|
|
14343
15462
|
}
|
|
14344
|
-
|
|
15463
|
+
_context15.next = 30;
|
|
14345
15464
|
return this._bufferService.appendBuffer(seg, audioSeg, data[0], data[1], discontinuity, contiguous, start);
|
|
14346
15465
|
case 30:
|
|
14347
15466
|
this.emit(Event$1.APPEND_COST, {
|
|
14348
15467
|
elapsed: Date.now() - before,
|
|
14349
15468
|
url: seg.url
|
|
14350
15469
|
});
|
|
14351
|
-
|
|
15470
|
+
_context15.next = 33;
|
|
14352
15471
|
return this._bufferService.evictBuffer(this.config.bufferBehind);
|
|
14353
15472
|
case 33:
|
|
14354
15473
|
this._prevSegCc = cc;
|
|
14355
15474
|
this._prevSegSn = sn;
|
|
14356
|
-
return
|
|
15475
|
+
return _context15.abrupt("return", true);
|
|
14357
15476
|
case 36:
|
|
14358
15477
|
case "end":
|
|
14359
|
-
return
|
|
15478
|
+
return _context15.stop();
|
|
14360
15479
|
}
|
|
14361
|
-
},
|
|
15480
|
+
}, _callee15, this, [[3, 9]]);
|
|
14362
15481
|
}));
|
|
14363
|
-
function _reqAndBufferSegment(
|
|
15482
|
+
function _reqAndBufferSegment(_x9, _x10) {
|
|
14364
15483
|
return _reqAndBufferSegment2.apply(this, arguments);
|
|
14365
15484
|
}
|
|
14366
15485
|
return _reqAndBufferSegment;
|
|
@@ -14368,11 +15487,11 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14368
15487
|
}, {
|
|
14369
15488
|
key: "_onCheckQuotaExceeded",
|
|
14370
15489
|
value: function() {
|
|
14371
|
-
var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15490
|
+
var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee16() {
|
|
14372
15491
|
var seekTime, buffered, inBuffered, i, bufferBehind, mediaTime;
|
|
14373
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15492
|
+
return _regeneratorRuntime$1().wrap(function _callee16$(_context16) {
|
|
14374
15493
|
while (1)
|
|
14375
|
-
switch (
|
|
15494
|
+
switch (_context16.prev = _context16.next) {
|
|
14376
15495
|
case 0:
|
|
14377
15496
|
seekTime = this.media.currentTime;
|
|
14378
15497
|
buffered = this.media.buffered;
|
|
@@ -14380,37 +15499,37 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14380
15499
|
i = 0;
|
|
14381
15500
|
case 4:
|
|
14382
15501
|
if (!(i < buffered.length)) {
|
|
14383
|
-
|
|
15502
|
+
_context16.next = 11;
|
|
14384
15503
|
break;
|
|
14385
15504
|
}
|
|
14386
15505
|
if (!(buffered.start(0) >= seekTime && seekTime < buffered.end(i))) {
|
|
14387
|
-
|
|
15506
|
+
_context16.next = 8;
|
|
14388
15507
|
break;
|
|
14389
15508
|
}
|
|
14390
15509
|
inBuffered = true;
|
|
14391
|
-
return
|
|
15510
|
+
return _context16.abrupt("break", 11);
|
|
14392
15511
|
case 8:
|
|
14393
15512
|
i++;
|
|
14394
|
-
|
|
15513
|
+
_context16.next = 4;
|
|
14395
15514
|
break;
|
|
14396
15515
|
case 11:
|
|
14397
15516
|
if (!this._bufferService.isFull()) {
|
|
14398
|
-
|
|
15517
|
+
_context16.next = 17;
|
|
14399
15518
|
break;
|
|
14400
15519
|
}
|
|
14401
15520
|
bufferBehind = inBuffered ? this.config.bufferBehind : 5;
|
|
14402
15521
|
mediaTime = this.media.currentTime;
|
|
14403
15522
|
if (!(mediaTime - bufferBehind > 0)) {
|
|
14404
|
-
|
|
15523
|
+
_context16.next = 17;
|
|
14405
15524
|
break;
|
|
14406
15525
|
}
|
|
14407
|
-
|
|
15526
|
+
_context16.next = 17;
|
|
14408
15527
|
return this._bufferService.removeBuffer(0, mediaTime - bufferBehind);
|
|
14409
15528
|
case 17:
|
|
14410
15529
|
case "end":
|
|
14411
|
-
return
|
|
15530
|
+
return _context16.stop();
|
|
14412
15531
|
}
|
|
14413
|
-
},
|
|
15532
|
+
}, _callee16, this);
|
|
14414
15533
|
}));
|
|
14415
15534
|
function _onCheckQuotaExceeded() {
|
|
14416
15535
|
return _onCheckQuotaExceeded2.apply(this, arguments);
|
|
@@ -14428,22 +15547,22 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14428
15547
|
}, {
|
|
14429
15548
|
key: "_clear",
|
|
14430
15549
|
value: function() {
|
|
14431
|
-
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
14432
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15550
|
+
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee17() {
|
|
15551
|
+
return _regeneratorRuntime$1().wrap(function _callee17$(_context17) {
|
|
14433
15552
|
while (1)
|
|
14434
|
-
switch (
|
|
15553
|
+
switch (_context17.prev = _context17.next) {
|
|
14435
15554
|
case 0:
|
|
14436
15555
|
clearTimeout(this._disconnectTimer);
|
|
14437
15556
|
this._stopTick();
|
|
14438
|
-
|
|
15557
|
+
_context17.next = 4;
|
|
14439
15558
|
return Promise.all([this._segmentLoader.cancel(), this._manifestLoader.stopPoll()]);
|
|
14440
15559
|
case 4:
|
|
14441
15560
|
this._segmentProcessing = false;
|
|
14442
15561
|
case 5:
|
|
14443
15562
|
case "end":
|
|
14444
|
-
return
|
|
15563
|
+
return _context17.stop();
|
|
14445
15564
|
}
|
|
14446
|
-
},
|
|
15565
|
+
}, _callee17, this);
|
|
14447
15566
|
}));
|
|
14448
15567
|
function _clear() {
|
|
14449
15568
|
return _clear2.apply(this, arguments);
|
|
@@ -14453,14 +15572,14 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14453
15572
|
}, {
|
|
14454
15573
|
key: "_reset",
|
|
14455
15574
|
value: function() {
|
|
14456
|
-
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15575
|
+
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee18() {
|
|
14457
15576
|
var _this$_seiService3;
|
|
14458
|
-
var reuseMse,
|
|
14459
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15577
|
+
var reuseMse, _args18 = arguments;
|
|
15578
|
+
return _regeneratorRuntime$1().wrap(function _callee18$(_context18) {
|
|
14460
15579
|
while (1)
|
|
14461
|
-
switch (
|
|
15580
|
+
switch (_context18.prev = _context18.next) {
|
|
14462
15581
|
case 0:
|
|
14463
|
-
reuseMse =
|
|
15582
|
+
reuseMse = _args18.length > 0 && _args18[0] !== void 0 ? _args18[0] : false;
|
|
14464
15583
|
this._reloadOnPlay = false;
|
|
14465
15584
|
this._prevSegSn = null;
|
|
14466
15585
|
this._prevSegCc = null;
|
|
@@ -14469,15 +15588,15 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14469
15588
|
this._segmentLoader.reset();
|
|
14470
15589
|
(_this$_seiService3 = this._seiService) === null || _this$_seiService3 === void 0 ? void 0 : _this$_seiService3.reset();
|
|
14471
15590
|
this._stats.reset();
|
|
14472
|
-
|
|
15591
|
+
_context18.next = 11;
|
|
14473
15592
|
return this._clear();
|
|
14474
15593
|
case 11:
|
|
14475
|
-
return
|
|
15594
|
+
return _context18.abrupt("return", this._bufferService.reset(reuseMse));
|
|
14476
15595
|
case 12:
|
|
14477
15596
|
case "end":
|
|
14478
|
-
return
|
|
15597
|
+
return _context18.stop();
|
|
14479
15598
|
}
|
|
14480
|
-
},
|
|
15599
|
+
}, _callee18, this);
|
|
14481
15600
|
}));
|
|
14482
15601
|
function _reset() {
|
|
14483
15602
|
return _reset2.apply(this, arguments);
|
|
@@ -14558,8 +15677,8 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14558
15677
|
value: function _tryEos() {
|
|
14559
15678
|
var _this$_bufferService3, _this$_bufferService4;
|
|
14560
15679
|
var media = this.media;
|
|
14561
|
-
var _this$
|
|
14562
|
-
var eosAllowed = !nextSegment && media.readyState && media.duration > 0 && ((_this$_bufferService3 = this._bufferService) === null || _this$_bufferService3 === void 0 ? void 0 : _this$_bufferService3.msIsOpened) && !((_this$_bufferService4 = this._bufferService) !== null && _this$_bufferService4 !== void 0 && _this$_bufferService4.msHasOpTasks);
|
|
15680
|
+
var _this$_playlist2 = this._playlist, nextSegment = _this$_playlist2.nextSegment, lastSegment = _this$_playlist2.lastSegment;
|
|
15681
|
+
var eosAllowed = (!nextSegment || lastSegment && Buffer$1.isBuffered(media, lastSegment.start + lastSegment.duration / 2)) && media.readyState && media.duration > 0 && ((_this$_bufferService3 = this._bufferService) === null || _this$_bufferService3 === void 0 ? void 0 : _this$_bufferService3.msIsOpened) && !((_this$_bufferService4 = this._bufferService) !== null && _this$_bufferService4 !== void 0 && _this$_bufferService4.msHasOpTasks);
|
|
14563
15682
|
if (!eosAllowed) {
|
|
14564
15683
|
return;
|
|
14565
15684
|
}
|
|
@@ -14595,7 +15714,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14595
15714
|
}]);
|
|
14596
15715
|
return Hls2;
|
|
14597
15716
|
}(EventEmitter);
|
|
14598
|
-
_defineProperty$3(Hls, "version", "3.0.
|
|
15717
|
+
_defineProperty$3(Hls, "version", "3.0.21-rc.3");
|
|
14599
15718
|
try {
|
|
14600
15719
|
if (localStorage.getItem("xgd")) {
|
|
14601
15720
|
Hls.enableLogger();
|
|
@@ -14686,6 +15805,7 @@ var PluginExtension = /* @__PURE__ */ function() {
|
|
|
14686
15805
|
}]);
|
|
14687
15806
|
return PluginExtension2;
|
|
14688
15807
|
}();
|
|
15808
|
+
var _excluded = ["currentTime"];
|
|
14689
15809
|
function parseSwitchUrlArgs(args, plugin) {
|
|
14690
15810
|
var player = plugin.player;
|
|
14691
15811
|
var curTime = player.currentTime;
|
|
@@ -14696,9 +15816,14 @@ function parseSwitchUrlArgs(args, plugin) {
|
|
|
14696
15816
|
case "boolean":
|
|
14697
15817
|
options.seamless = args;
|
|
14698
15818
|
break;
|
|
14699
|
-
case "object":
|
|
14700
|
-
|
|
15819
|
+
case "object": {
|
|
15820
|
+
var currentTime = args.currentTime, rest = _objectWithoutProperties$1(args, _excluded);
|
|
15821
|
+
Object.assign(options, rest);
|
|
15822
|
+
if (typeof currentTime === "number") {
|
|
15823
|
+
options.startTime = currentTime;
|
|
15824
|
+
}
|
|
14701
15825
|
break;
|
|
15826
|
+
}
|
|
14702
15827
|
}
|
|
14703
15828
|
return options;
|
|
14704
15829
|
}
|
|
@@ -14708,10 +15833,11 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14708
15833
|
function HlsPlugin2() {
|
|
14709
15834
|
var _this;
|
|
14710
15835
|
_classCallCheck$3(this, HlsPlugin2);
|
|
14711
|
-
for (var _len = arguments.length,
|
|
14712
|
-
|
|
15836
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
15837
|
+
args[_key] = arguments[_key];
|
|
14713
15838
|
}
|
|
14714
|
-
_this = _super.call.apply(_super, [this].concat(
|
|
15839
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
15840
|
+
_defineProperty$3(_assertThisInitialized$2(_this), "logger", logger);
|
|
14715
15841
|
_defineProperty$3(_assertThisInitialized$2(_this), "hls", null);
|
|
14716
15842
|
_defineProperty$3(_assertThisInitialized$2(_this), "pluginExtension", null);
|
|
14717
15843
|
_defineProperty$3(_assertThisInitialized$2(_this), "getStats", function() {
|
|
@@ -14723,24 +15849,6 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14723
15849
|
var lang = _ref.lang;
|
|
14724
15850
|
(_this$hls2 = _this.hls) === null || _this$hls2 === void 0 ? void 0 : _this$hls2.switchSubtitleStream(lang);
|
|
14725
15851
|
});
|
|
14726
|
-
_defineProperty$3(_assertThisInitialized$2(_this), "_onSwitchURL", function(url, args) {
|
|
14727
|
-
return new Promise(function(resolve, reject) {
|
|
14728
|
-
var _assertThisInitialize = _assertThisInitialized$2(_this), player = _assertThisInitialize.player, hls = _assertThisInitialize.hls;
|
|
14729
|
-
if (hls) {
|
|
14730
|
-
var _this$player$config, _this$player$config$h;
|
|
14731
|
-
var options = parseSwitchUrlArgs(args, _assertThisInitialized$2(_this));
|
|
14732
|
-
player.config.url = url;
|
|
14733
|
-
hls.switchURL(url, options).then(function() {
|
|
14734
|
-
return resolve(true);
|
|
14735
|
-
}).catch(reject);
|
|
14736
|
-
if (!options.seamless && (_this$player$config = _this.player.config) !== null && _this$player$config !== void 0 && (_this$player$config$h = _this$player$config.hls) !== null && _this$player$config$h !== void 0 && _this$player$config$h.keepStatusAfterSwitch) {
|
|
14737
|
-
_this._keepPauseStatus();
|
|
14738
|
-
}
|
|
14739
|
-
} else {
|
|
14740
|
-
reject();
|
|
14741
|
-
}
|
|
14742
|
-
});
|
|
14743
|
-
});
|
|
14744
15852
|
_defineProperty$3(_assertThisInitialized$2(_this), "_keepPauseStatus", function() {
|
|
14745
15853
|
var paused = _this.player.paused;
|
|
14746
15854
|
if (!paused)
|
|
@@ -14765,8 +15873,8 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14765
15873
|
}, {
|
|
14766
15874
|
key: "softDecode",
|
|
14767
15875
|
get: function get() {
|
|
14768
|
-
var _this$player, _this$player$
|
|
14769
|
-
var mediaType = (_this$player = this.player) === null || _this$player === void 0 ? void 0 : (_this$player$
|
|
15876
|
+
var _this$player, _this$player$config;
|
|
15877
|
+
var mediaType = (_this$player = this.player) === null || _this$player === void 0 ? void 0 : (_this$player$config = _this$player.config) === null || _this$player$config === void 0 ? void 0 : _this$player$config.mediaType;
|
|
14770
15878
|
return !!mediaType && mediaType !== "video" && mediaType !== "audio";
|
|
14771
15879
|
}
|
|
14772
15880
|
}, {
|
|
@@ -14774,13 +15882,35 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14774
15882
|
value: function beforePlayerInit() {
|
|
14775
15883
|
var _this2 = this;
|
|
14776
15884
|
var config = this.player.config;
|
|
15885
|
+
var mediaElem = this.player.media || this.player.video;
|
|
14777
15886
|
var hlsOpts = config.hls || {};
|
|
14778
15887
|
if (!config.url && !config.__allowHlsEmptyUrl__ || !hlsOpts.preferMMS && MSE.isMMSOnly()) {
|
|
14779
15888
|
return;
|
|
14780
15889
|
}
|
|
14781
15890
|
if (this.hls)
|
|
14782
15891
|
this.hls.destroy();
|
|
14783
|
-
|
|
15892
|
+
var descriptor = Object.getOwnPropertyDescriptor(this.player, "switchURL");
|
|
15893
|
+
if (!descriptor || descriptor.writable) {
|
|
15894
|
+
this.player.switchURL = function(url, args) {
|
|
15895
|
+
return new Promise(function(resolve, reject) {
|
|
15896
|
+
var player = _this2.player, hls = _this2.hls;
|
|
15897
|
+
if (hls) {
|
|
15898
|
+
var _this2$player$config, _this2$player$config$;
|
|
15899
|
+
var options = parseSwitchUrlArgs(args, _this2);
|
|
15900
|
+
player.config.url = url;
|
|
15901
|
+
hls.switchURL(url, options).then(function() {
|
|
15902
|
+
return resolve(true);
|
|
15903
|
+
}).catch(reject);
|
|
15904
|
+
if (!options.seamless && (_this2$player$config = _this2.player.config) !== null && _this2$player$config !== void 0 && (_this2$player$config$ = _this2$player$config.hls) !== null && _this2$player$config$ !== void 0 && _this2$player$config$.keepStatusAfterSwitch) {
|
|
15905
|
+
_this2._keepPauseStatus();
|
|
15906
|
+
}
|
|
15907
|
+
} else {
|
|
15908
|
+
reject();
|
|
15909
|
+
}
|
|
15910
|
+
});
|
|
15911
|
+
};
|
|
15912
|
+
}
|
|
15913
|
+
var onSwitchUrl = this.player.switchURL;
|
|
14784
15914
|
this.player.handleSource = false;
|
|
14785
15915
|
hlsOpts.innerDegrade = hlsOpts.innerDegrade || config.innerDegrade;
|
|
14786
15916
|
if (hlsOpts.disconnectTime === null || hlsOpts.disconnectTime === void 0)
|
|
@@ -14788,7 +15918,7 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14788
15918
|
this.hls = new Hls(_objectSpread2$2({
|
|
14789
15919
|
softDecode: this.softDecode,
|
|
14790
15920
|
isLive: config.isLive,
|
|
14791
|
-
media:
|
|
15921
|
+
media: mediaElem,
|
|
14792
15922
|
startTime: config.startTime,
|
|
14793
15923
|
url: config.url
|
|
14794
15924
|
}, hlsOpts));
|
|
@@ -14806,7 +15936,7 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14806
15936
|
if (this.softDecode) {
|
|
14807
15937
|
this.pluginExtension = new PluginExtension(_objectSpread2$2({
|
|
14808
15938
|
isLive: config.isLive,
|
|
14809
|
-
media:
|
|
15939
|
+
media: mediaElem
|
|
14810
15940
|
}, hlsOpts), this);
|
|
14811
15941
|
this.player.forceDegradeToVideo = function() {
|
|
14812
15942
|
var _this2$pluginExtensio;
|
|
@@ -14823,8 +15953,8 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14823
15953
|
return (_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.replay();
|
|
14824
15954
|
});
|
|
14825
15955
|
}
|
|
15956
|
+
this.on(URL_CHANGE, onSwitchUrl);
|
|
14826
15957
|
this.on(SWITCH_SUBTITLE, this._onSwitchSubtitle);
|
|
14827
|
-
this.on(URL_CHANGE, this._onSwitchURL);
|
|
14828
15958
|
this.on(DESTROY, this.destroy.bind(this));
|
|
14829
15959
|
this._transError();
|
|
14830
15960
|
this._transCoreEvent(EVENT.TTFB);
|
|
@@ -14834,6 +15964,7 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14834
15964
|
this._transCoreEvent(EVENT.LOAD_RETRY);
|
|
14835
15965
|
this._transCoreEvent(EVENT.SOURCEBUFFER_CREATED);
|
|
14836
15966
|
this._transCoreEvent(EVENT.MEDIASOURCE_OPENED);
|
|
15967
|
+
this._transCoreEvent(EVENT.APPEND_BUFFER);
|
|
14837
15968
|
this._transCoreEvent(EVENT.REMOVE_BUFFER);
|
|
14838
15969
|
this._transCoreEvent(EVENT.BUFFEREOS);
|
|
14839
15970
|
this._transCoreEvent(EVENT.KEYFRAME);
|
|
@@ -14853,7 +15984,9 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14853
15984
|
this._transCoreEvent(Event$1.SUBTITLE_PLAYLIST);
|
|
14854
15985
|
this._transCoreEvent(Event$1.APPEND_COST);
|
|
14855
15986
|
if (config.url) {
|
|
14856
|
-
this.hls.load(config.url,
|
|
15987
|
+
this.hls.load(config.url, {
|
|
15988
|
+
reuseMse: true
|
|
15989
|
+
}).catch(function(e) {
|
|
14857
15990
|
});
|
|
14858
15991
|
}
|
|
14859
15992
|
}
|