@volcengine/veplayer-plugin 2.4.2-rc.4 → 2.4.3-rc.1
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.development.js +2124 -1344
- package/esm/index.production.js +4 -4
- package/esm/veplayer.plugin.abr.development.js +71 -3
- package/esm/veplayer.plugin.abr.production.js +1 -1
- 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 +727 -196
- package/esm/veplayer.plugin.flv.production.js +1 -1
- package/esm/veplayer.plugin.hls.development.js +1346 -372
- 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 +189 -778
- 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/veplayer.plugin.abr.development.js +71 -3
- package/umd/veplayer.plugin.abr.production.js +1 -1
- 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 +727 -196
- package/umd/veplayer.plugin.flv.production.js +1 -1
- package/umd/veplayer.plugin.hls.development.js +1313 -339
- 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 +189 -778
- 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.20-rc.6";
|
|
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,15 @@ 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"
|
|
5636
5776
|
};
|
|
5637
5777
|
var WarningType = {
|
|
5638
5778
|
LARGE_AV_SHIFT: "LARGE_AV_SHIFT",
|
|
@@ -5672,6 +5812,7 @@ var VideoTrack = /* @__PURE__ */ function() {
|
|
|
5672
5812
|
_defineProperty(this, "isVideoEncryption", false);
|
|
5673
5813
|
_defineProperty(this, "isAudioEncryption", false);
|
|
5674
5814
|
_defineProperty(this, "isVideo", true);
|
|
5815
|
+
_defineProperty(this, "lastKeyFrameDts", 0);
|
|
5675
5816
|
_defineProperty(this, "kid", null);
|
|
5676
5817
|
_defineProperty(this, "pssh", null);
|
|
5677
5818
|
_defineProperty(this, "ext", void 0);
|
|
@@ -5714,6 +5855,9 @@ var VideoTrack = /* @__PURE__ */ function() {
|
|
|
5714
5855
|
}, {
|
|
5715
5856
|
key: "exist",
|
|
5716
5857
|
value: function exist() {
|
|
5858
|
+
if (/av01/.test(this.codec)) {
|
|
5859
|
+
return true;
|
|
5860
|
+
}
|
|
5717
5861
|
return !!(this.pps.length && this.sps.length && this.codec);
|
|
5718
5862
|
}
|
|
5719
5863
|
}, {
|
|
@@ -5777,7 +5921,7 @@ var AudioTrack = /* @__PURE__ */ function() {
|
|
|
5777
5921
|
}, {
|
|
5778
5922
|
key: "exist",
|
|
5779
5923
|
value: function exist() {
|
|
5780
|
-
return !!(this.sampleRate && this.channelCount && this.codec && this.codecType === AudioCodecType.AAC);
|
|
5924
|
+
return !!(this.sampleRate && this.channelCount && this.codec && (this.codecType === AudioCodecType.AAC || this.codecType === AudioCodecType.G711PCMA || this.codecType === AudioCodecType.G711PCMU || this.codecType === AudioCodecType.OPUS));
|
|
5781
5925
|
}
|
|
5782
5926
|
}, {
|
|
5783
5927
|
key: "hasSample",
|
|
@@ -5982,7 +6126,7 @@ var AAC = /* @__PURE__ */ function() {
|
|
|
5982
6126
|
continue;
|
|
5983
6127
|
}
|
|
5984
6128
|
frameLength = (data[i + 3] & 3) << 11 | data[i + 4] << 3 | (data[i + 5] & 224) >> 5;
|
|
5985
|
-
if (len - i < frameLength)
|
|
6129
|
+
if (!frameLength || len - i < frameLength)
|
|
5986
6130
|
break;
|
|
5987
6131
|
protectionSkipBytes = (~data[i + 1] & 1) * 2;
|
|
5988
6132
|
frames.push({
|
|
@@ -6176,6 +6320,15 @@ function parse2(a) {
|
|
|
6176
6320
|
return parseInt(item, 16);
|
|
6177
6321
|
});
|
|
6178
6322
|
}
|
|
6323
|
+
function combineToFloat(integer, decimal) {
|
|
6324
|
+
return Number(integer + "." + decimal);
|
|
6325
|
+
}
|
|
6326
|
+
function toDegree(matrix) {
|
|
6327
|
+
if (matrix.length < 5)
|
|
6328
|
+
return 0;
|
|
6329
|
+
var scaled0 = Math.hypot(matrix[0], matrix[3]), scaled1 = Math.hypot(matrix[1], matrix[4]);
|
|
6330
|
+
return 0 === scaled0 || 0 === scaled1 ? 0 : 180 * Math.atan2(matrix[1] / scaled1, matrix[0] / scaled0) / Math.PI;
|
|
6331
|
+
}
|
|
6179
6332
|
var NALu = /* @__PURE__ */ function() {
|
|
6180
6333
|
function NALu2() {
|
|
6181
6334
|
_classCallCheck(this, NALu2);
|
|
@@ -6838,13 +6991,16 @@ var MAX_SILENT_FRAME_DURATION = 9e4;
|
|
|
6838
6991
|
var AUDIO_EXCETION_LOG_EMIT_DURATION = 5 * 9e4;
|
|
6839
6992
|
var MAX_VIDEO_FRAME_DURATION = 9e4;
|
|
6840
6993
|
var MAX_DTS_DELTA_WITH_NEXT_CHUNK = 9e4 / 2;
|
|
6994
|
+
var LARGE_AV_FIRST_FRAME_FORCE_FIX_THRESHOLD = 9e4 * 5;
|
|
6841
6995
|
var TsFixer = /* @__PURE__ */ function() {
|
|
6842
|
-
function TsFixer2(videoTrack, audioTrack, metadataTrack) {
|
|
6996
|
+
function TsFixer2(videoTrack, audioTrack, metadataTrack, fixerConfig) {
|
|
6843
6997
|
_classCallCheck(this, TsFixer2);
|
|
6844
6998
|
this.videoTrack = videoTrack;
|
|
6845
6999
|
this.audioTrack = audioTrack;
|
|
6846
7000
|
this.metadataTrack = metadataTrack;
|
|
6847
7001
|
this._baseDts = -1;
|
|
7002
|
+
this._baseVideoDts = -1;
|
|
7003
|
+
this._baseAudioDts = -1;
|
|
6848
7004
|
this._baseDtsInited = false;
|
|
6849
7005
|
this._audioNextPts = void 0;
|
|
6850
7006
|
this._videoNextDts = void 0;
|
|
@@ -6853,6 +7009,8 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
6853
7009
|
this._lastAudioExceptionGapDot = 0;
|
|
6854
7010
|
this._lastAudioExceptionOverlapDot = 0;
|
|
6855
7011
|
this._lastAudioExceptionLargeGapDot = 0;
|
|
7012
|
+
this._needForceFixLargeGap = fixerConfig === null || fixerConfig === void 0 ? void 0 : fixerConfig.forceFixLargeGap;
|
|
7013
|
+
this._largeGapThreshold = (fixerConfig === null || fixerConfig === void 0 ? void 0 : fixerConfig.largeGapThreshold) || LARGE_AV_FIRST_FRAME_FORCE_FIX_THRESHOLD;
|
|
6856
7014
|
}
|
|
6857
7015
|
_createClass(TsFixer2, [{
|
|
6858
7016
|
key: "fix",
|
|
@@ -6880,10 +7038,16 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
6880
7038
|
if (discontinuity) {
|
|
6881
7039
|
this._calculateBaseDts(this.audioTrack, this.videoTrack);
|
|
6882
7040
|
this._baseDts -= startTime;
|
|
7041
|
+
this._baseAudioDts -= startTime;
|
|
7042
|
+
this._baseVideoDts -= startTime;
|
|
6883
7043
|
}
|
|
6884
7044
|
if (!contiguous) {
|
|
6885
7045
|
this._videoNextDts = vaDelta > 0 ? startTime + vaDelta : startTime;
|
|
6886
7046
|
this._audioNextPts = vaDelta > 0 ? startTime : startTime - vaDelta;
|
|
7047
|
+
if (this._needForceFixLargeGap) {
|
|
7048
|
+
this._videoNextDts = 0;
|
|
7049
|
+
this._audioNextPts = 0;
|
|
7050
|
+
}
|
|
6887
7051
|
var vDeltaToNextDts = firstVideoSample ? firstVideoSample.dts - this._baseDts - this._videoNextDts : 0;
|
|
6888
7052
|
var aDeltaToNextDts = firstAudioSample ? firstAudioSample.pts - this._baseDts - this._audioNextPts : 0;
|
|
6889
7053
|
if (Math.abs(vDeltaToNextDts || aDeltaToNextDts) > MAX_VIDEO_FRAME_DURATION) {
|
|
@@ -6916,8 +7080,8 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
6916
7080
|
if (!samples.length)
|
|
6917
7081
|
return;
|
|
6918
7082
|
samples.forEach(function(x) {
|
|
6919
|
-
x.dts -= _this2._baseDts;
|
|
6920
|
-
x.pts -= _this2._baseDts;
|
|
7083
|
+
x.dts -= _this2._needForceFixLargeGap ? _this2._baseVideoDts : _this2._baseDts;
|
|
7084
|
+
x.pts -= _this2._needForceFixLargeGap ? _this2._baseVideoDts : _this2._baseDts;
|
|
6921
7085
|
});
|
|
6922
7086
|
if (this._videoNextDts === void 0) {
|
|
6923
7087
|
var samp0 = samples[0];
|
|
@@ -7010,7 +7174,7 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7010
7174
|
if (!samples.length)
|
|
7011
7175
|
return;
|
|
7012
7176
|
samples.forEach(function(x) {
|
|
7013
|
-
x.pts -= _this3._baseDts;
|
|
7177
|
+
x.pts -= _this3._needForceFixLargeGap ? _this3._baseAudioDts : _this3._baseDts;
|
|
7014
7178
|
x.dts = x.pts;
|
|
7015
7179
|
});
|
|
7016
7180
|
this._doFixAudioInternal(audioTrack, samples, 9e4);
|
|
@@ -7027,12 +7191,15 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7027
7191
|
var videoBaseDts = Infinity;
|
|
7028
7192
|
if (audioSamps.length) {
|
|
7029
7193
|
audioTrack.baseDts = audioBasePts = audioSamps[0].pts;
|
|
7194
|
+
this._baseAudioDts = audioBasePts;
|
|
7030
7195
|
}
|
|
7031
7196
|
if (videoSamps.length) {
|
|
7032
7197
|
videoTrack.baseDts = videoBaseDts = videoSamps[0].dts;
|
|
7198
|
+
this._baseVideoDts = videoBaseDts;
|
|
7033
7199
|
}
|
|
7034
7200
|
this._baseDts = Math.min(audioBasePts, videoBaseDts);
|
|
7035
7201
|
var delta = videoBaseDts - audioBasePts;
|
|
7202
|
+
var largeGap = false;
|
|
7036
7203
|
if (Number.isFinite(delta) && Math.abs(delta) > LARGE_AV_FIRST_FRAME_GAP) {
|
|
7037
7204
|
videoTrack.warnings.push({
|
|
7038
7205
|
type: WarningType.LARGE_AV_SHIFT,
|
|
@@ -7042,6 +7209,16 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7042
7209
|
delta
|
|
7043
7210
|
});
|
|
7044
7211
|
}
|
|
7212
|
+
if (Number.isFinite(delta) && Math.abs(delta) > this._largeGapThreshold * MAX_SILENT_FRAME_DURATION) {
|
|
7213
|
+
largeGap = true;
|
|
7214
|
+
}
|
|
7215
|
+
if (!this._baseDtsInited) {
|
|
7216
|
+
if (largeGap && this._needForceFixLargeGap) {
|
|
7217
|
+
this._needForceFixLargeGap = true;
|
|
7218
|
+
} else {
|
|
7219
|
+
this._needForceFixLargeGap = false;
|
|
7220
|
+
}
|
|
7221
|
+
}
|
|
7045
7222
|
this._baseDtsInited = true;
|
|
7046
7223
|
return true;
|
|
7047
7224
|
}
|
|
@@ -7135,6 +7312,7 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7135
7312
|
var logger$4 = new Logger$1("TsDemuxer");
|
|
7136
7313
|
var TsDemuxer = /* @__PURE__ */ function() {
|
|
7137
7314
|
function TsDemuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
7315
|
+
var fixerConfig = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
|
|
7138
7316
|
_classCallCheck(this, TsDemuxer2);
|
|
7139
7317
|
_defineProperty(this, "_pmtId", -1);
|
|
7140
7318
|
_defineProperty(this, "_remainingPacketData", null);
|
|
@@ -7144,7 +7322,7 @@ var TsDemuxer = /* @__PURE__ */ function() {
|
|
|
7144
7322
|
this.videoTrack = videoTrack || new VideoTrack();
|
|
7145
7323
|
this.audioTrack = audioTrack || new AudioTrack();
|
|
7146
7324
|
this.metadataTrack = metadataTrack || new MetadataTrack();
|
|
7147
|
-
this._fixer = new TsFixer(this.videoTrack, this.audioTrack, this.metadataTrack);
|
|
7325
|
+
this._fixer = new TsFixer(this.videoTrack, this.audioTrack, this.metadataTrack, fixerConfig);
|
|
7148
7326
|
}
|
|
7149
7327
|
_createClass(TsDemuxer2, [{
|
|
7150
7328
|
key: "demux",
|
|
@@ -7491,6 +7669,207 @@ var TsDemuxer = /* @__PURE__ */ function() {
|
|
|
7491
7669
|
}]);
|
|
7492
7670
|
return TsDemuxer2;
|
|
7493
7671
|
}();
|
|
7672
|
+
var ByteReader = /* @__PURE__ */ function() {
|
|
7673
|
+
function ByteReader2(buf, offset, len) {
|
|
7674
|
+
_classCallCheck(this, ByteReader2);
|
|
7675
|
+
this.dv = new DataView(buf);
|
|
7676
|
+
this.start = this.offset = offset || this.dv.byteOffset;
|
|
7677
|
+
this.end = len ? this.start + len : this.start + this.dv.byteLength;
|
|
7678
|
+
}
|
|
7679
|
+
_createClass(ByteReader2, [{
|
|
7680
|
+
key: "buffer",
|
|
7681
|
+
get: function get() {
|
|
7682
|
+
return this.dv.buffer;
|
|
7683
|
+
}
|
|
7684
|
+
}, {
|
|
7685
|
+
key: "unreadLength",
|
|
7686
|
+
get: function get() {
|
|
7687
|
+
return Math.max(this.end - this.offset, 0);
|
|
7688
|
+
}
|
|
7689
|
+
}, {
|
|
7690
|
+
key: "size",
|
|
7691
|
+
get: function get() {
|
|
7692
|
+
return this.end - this.start;
|
|
7693
|
+
}
|
|
7694
|
+
}, {
|
|
7695
|
+
key: "readFloat",
|
|
7696
|
+
value: function readFloat(byteNum) {
|
|
7697
|
+
var val = 0;
|
|
7698
|
+
switch (byteNum) {
|
|
7699
|
+
case 4:
|
|
7700
|
+
val = this.dv.getFloat32(this.offset);
|
|
7701
|
+
break;
|
|
7702
|
+
case 8:
|
|
7703
|
+
val = this.dv.getFloat64(this.offset);
|
|
7704
|
+
break;
|
|
7705
|
+
default:
|
|
7706
|
+
throw new Error("read ".concat(byteNum, "-byte float is not supported"));
|
|
7707
|
+
}
|
|
7708
|
+
this.offset += byteNum;
|
|
7709
|
+
return val;
|
|
7710
|
+
}
|
|
7711
|
+
}, {
|
|
7712
|
+
key: "back",
|
|
7713
|
+
value: function back(byteNum) {
|
|
7714
|
+
this.offset -= byteNum;
|
|
7715
|
+
}
|
|
7716
|
+
}, {
|
|
7717
|
+
key: "skip",
|
|
7718
|
+
value: function skip(byteNum) {
|
|
7719
|
+
this.offset += byteNum;
|
|
7720
|
+
}
|
|
7721
|
+
}, {
|
|
7722
|
+
key: "readInt",
|
|
7723
|
+
value: function readInt(byteNum) {
|
|
7724
|
+
var offset = this.offset;
|
|
7725
|
+
this.offset += byteNum;
|
|
7726
|
+
switch (byteNum) {
|
|
7727
|
+
case 1:
|
|
7728
|
+
return this.dv.getInt8(offset);
|
|
7729
|
+
case 2:
|
|
7730
|
+
return this.dv.getInt16(offset);
|
|
7731
|
+
case 4:
|
|
7732
|
+
return this.dv.getInt32(offset);
|
|
7733
|
+
default:
|
|
7734
|
+
throw new Error("read ".concat(byteNum, "-byte integers is not supported"));
|
|
7735
|
+
}
|
|
7736
|
+
}
|
|
7737
|
+
}, {
|
|
7738
|
+
key: "read",
|
|
7739
|
+
value: function read(byteNum) {
|
|
7740
|
+
var offset = this.offset;
|
|
7741
|
+
this.offset += byteNum;
|
|
7742
|
+
switch (byteNum) {
|
|
7743
|
+
case 1:
|
|
7744
|
+
return this.dv.getUint8(offset);
|
|
7745
|
+
case 2:
|
|
7746
|
+
return this.dv.getUint16(offset);
|
|
7747
|
+
case 3:
|
|
7748
|
+
return (this.dv.getUint16(offset) << 8) + this.dv.getUint8(offset + 2);
|
|
7749
|
+
case 4:
|
|
7750
|
+
return this.dv.getUint32(offset);
|
|
7751
|
+
default:
|
|
7752
|
+
this.back(byteNum - 4);
|
|
7753
|
+
return this.read(byteNum - 4) + this.dv.getUint32(offset) * Math.pow(256, byteNum - 4);
|
|
7754
|
+
}
|
|
7755
|
+
}
|
|
7756
|
+
}, {
|
|
7757
|
+
key: "write",
|
|
7758
|
+
value: function write(byteNum, val) {
|
|
7759
|
+
var offset = this.offset;
|
|
7760
|
+
this.offset += byteNum;
|
|
7761
|
+
switch (byteNum) {
|
|
7762
|
+
case 1:
|
|
7763
|
+
return this.dv.setUint8(offset, val);
|
|
7764
|
+
case 2:
|
|
7765
|
+
return this.dv.setUint16(offset, val);
|
|
7766
|
+
case 3:
|
|
7767
|
+
return this.dv.setUint8(offset, val >>> 16), this.dv.setUint16(offset + 1, 65535 & val);
|
|
7768
|
+
case 4:
|
|
7769
|
+
return this.dv.setUint32(offset, val);
|
|
7770
|
+
default:
|
|
7771
|
+
throw new Error("write ".concat(byteNum, "-byte integers is not supported"));
|
|
7772
|
+
}
|
|
7773
|
+
}
|
|
7774
|
+
}, {
|
|
7775
|
+
key: "readToBuffer",
|
|
7776
|
+
value: function readToBuffer(len) {
|
|
7777
|
+
var buffer;
|
|
7778
|
+
if (this.offset || len) {
|
|
7779
|
+
buffer = this.dv.buffer.slice(this.offset, len ? this.offset + len : this.end);
|
|
7780
|
+
} else {
|
|
7781
|
+
buffer = this.dv.buffer;
|
|
7782
|
+
}
|
|
7783
|
+
this.offset += buffer.byteLength;
|
|
7784
|
+
return buffer;
|
|
7785
|
+
}
|
|
7786
|
+
}, {
|
|
7787
|
+
key: "readToUint8",
|
|
7788
|
+
value: function readToUint8(len) {
|
|
7789
|
+
var uint8 = new Uint8Array(this.dv.buffer, this.offset, len || this.unreadLength);
|
|
7790
|
+
this.offset += uint8.byteLength;
|
|
7791
|
+
return uint8;
|
|
7792
|
+
}
|
|
7793
|
+
}, {
|
|
7794
|
+
key: "readString",
|
|
7795
|
+
value: function readString(len) {
|
|
7796
|
+
var i = 0, str = "";
|
|
7797
|
+
for (; i < len; i++) {
|
|
7798
|
+
str += String.fromCharCode(this.dv.getUint8(this.offset));
|
|
7799
|
+
this.offset++;
|
|
7800
|
+
}
|
|
7801
|
+
return str;
|
|
7802
|
+
}
|
|
7803
|
+
}], [{
|
|
7804
|
+
key: "fromUint8",
|
|
7805
|
+
value: function fromUint8(uint8) {
|
|
7806
|
+
return new ByteReader2(uint8.buffer, uint8.byteOffset, uint8.byteLength);
|
|
7807
|
+
}
|
|
7808
|
+
}, {
|
|
7809
|
+
key: "concatUint8s",
|
|
7810
|
+
value: function concatUint8s(args) {
|
|
7811
|
+
var uint8 = new Uint8Array(args.reduce(function(ret, v) {
|
|
7812
|
+
return ret + v.byteLength;
|
|
7813
|
+
}, 0));
|
|
7814
|
+
var offset = 0;
|
|
7815
|
+
args.forEach(function(v) {
|
|
7816
|
+
uint8.set(v, offset);
|
|
7817
|
+
offset += v.byteLength;
|
|
7818
|
+
});
|
|
7819
|
+
return uint8;
|
|
7820
|
+
}
|
|
7821
|
+
}, {
|
|
7822
|
+
key: "concatUint8",
|
|
7823
|
+
value: function concatUint8() {
|
|
7824
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
7825
|
+
args[_key] = arguments[_key];
|
|
7826
|
+
}
|
|
7827
|
+
return this.concatUint8s(args);
|
|
7828
|
+
}
|
|
7829
|
+
}]);
|
|
7830
|
+
return ByteReader2;
|
|
7831
|
+
}();
|
|
7832
|
+
var BitReader = /* @__PURE__ */ function() {
|
|
7833
|
+
function BitReader2(val, size) {
|
|
7834
|
+
_classCallCheck(this, BitReader2);
|
|
7835
|
+
this.offset = 0;
|
|
7836
|
+
this.val = val;
|
|
7837
|
+
this.size = size;
|
|
7838
|
+
}
|
|
7839
|
+
_createClass(BitReader2, [{
|
|
7840
|
+
key: "skip",
|
|
7841
|
+
value: function skip(len) {
|
|
7842
|
+
this.offset += len;
|
|
7843
|
+
}
|
|
7844
|
+
}, {
|
|
7845
|
+
key: "read",
|
|
7846
|
+
value: function read(len) {
|
|
7847
|
+
var unreadLength = this.size - this.offset - len;
|
|
7848
|
+
if (unreadLength >= 0) {
|
|
7849
|
+
var bits = 0, i = 0;
|
|
7850
|
+
this.offset += len;
|
|
7851
|
+
if (this.size > 31) {
|
|
7852
|
+
for (; i < len; i++) {
|
|
7853
|
+
bits += Math.pow(2, i);
|
|
7854
|
+
}
|
|
7855
|
+
return this.val / Math.pow(2, unreadLength) & bits;
|
|
7856
|
+
} else {
|
|
7857
|
+
for (; i < len; i++) {
|
|
7858
|
+
bits += 1 << i;
|
|
7859
|
+
}
|
|
7860
|
+
return this.val >>> unreadLength & bits;
|
|
7861
|
+
}
|
|
7862
|
+
}
|
|
7863
|
+
throw new Error("the number of the read operation exceeds the total length limit of bits");
|
|
7864
|
+
}
|
|
7865
|
+
}], [{
|
|
7866
|
+
key: "fromByte",
|
|
7867
|
+
value: function fromByte(byte, len) {
|
|
7868
|
+
return new BitReader2(byte.read(len), len << 3);
|
|
7869
|
+
}
|
|
7870
|
+
}]);
|
|
7871
|
+
return BitReader2;
|
|
7872
|
+
}();
|
|
7494
7873
|
var MP4Parser = /* @__PURE__ */ function() {
|
|
7495
7874
|
function MP4Parser2() {
|
|
7496
7875
|
_classCallCheck(this, MP4Parser2);
|
|
@@ -7648,18 +8027,36 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7648
8027
|
key: "tkhd",
|
|
7649
8028
|
value: function tkhd(box) {
|
|
7650
8029
|
return parseBox(box, true, function(ret, data) {
|
|
7651
|
-
var
|
|
8030
|
+
var byte = ByteReader.fromUint8(data);
|
|
7652
8031
|
if (ret.version === 1) {
|
|
7653
|
-
|
|
7654
|
-
|
|
7655
|
-
|
|
8032
|
+
byte.read(8);
|
|
8033
|
+
byte.read(8);
|
|
8034
|
+
ret.trackId = byte.read(4);
|
|
8035
|
+
byte.read(4);
|
|
8036
|
+
ret.duration = byte.read(8);
|
|
7656
8037
|
} else {
|
|
7657
|
-
|
|
7658
|
-
|
|
7659
|
-
|
|
8038
|
+
byte.read(4);
|
|
8039
|
+
byte.read(4);
|
|
8040
|
+
ret.trackId = byte.read(4);
|
|
8041
|
+
byte.read(4);
|
|
8042
|
+
ret.duration = byte.read(4);
|
|
7660
8043
|
}
|
|
7661
|
-
|
|
7662
|
-
ret.
|
|
8044
|
+
byte.skip(16);
|
|
8045
|
+
ret.matrix = [];
|
|
8046
|
+
for (var i = 0; i < 36; i++) {
|
|
8047
|
+
ret.matrix.push(byte.read(1));
|
|
8048
|
+
}
|
|
8049
|
+
byte.back(36);
|
|
8050
|
+
var caculatedMatrix = [];
|
|
8051
|
+
for (var _i = 0, int32; _i < 3; _i++) {
|
|
8052
|
+
caculatedMatrix.push(combineToFloat(byte.readInt(2), byte.readInt(2)));
|
|
8053
|
+
caculatedMatrix.push(combineToFloat(byte.readInt(2), byte.readInt(2)));
|
|
8054
|
+
int32 = byte.readInt(4);
|
|
8055
|
+
caculatedMatrix.push(combineToFloat(int32 >> 30, int32 & 1073741823));
|
|
8056
|
+
}
|
|
8057
|
+
ret.rotation = toDegree(caculatedMatrix);
|
|
8058
|
+
ret.width = byte.read(4);
|
|
8059
|
+
ret.height = byte.read(4);
|
|
7663
8060
|
});
|
|
7664
8061
|
}
|
|
7665
8062
|
}, {
|
|
@@ -7789,7 +8186,7 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7789
8186
|
if (ret.version > 0) {
|
|
7790
8187
|
var numKeyIds = readBig32(data, start);
|
|
7791
8188
|
start += 4;
|
|
7792
|
-
for (var
|
|
8189
|
+
for (var _i2 = 0; _i2 < ("" + numKeyIds).length; _i2++) {
|
|
7793
8190
|
for (var j = 0; j < 16; j++) {
|
|
7794
8191
|
var keyId = data[start];
|
|
7795
8192
|
start += 1;
|
|
@@ -7812,6 +8209,8 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7812
8209
|
ret.entryCount = readBig32(data);
|
|
7813
8210
|
ret.entries = MP4Parser2.findBox(data.subarray(4), [], start + 4).map(function(b) {
|
|
7814
8211
|
switch (b.type) {
|
|
8212
|
+
case "av01":
|
|
8213
|
+
return MP4Parser2.av01(b);
|
|
7815
8214
|
case "avc1":
|
|
7816
8215
|
case "avc2":
|
|
7817
8216
|
case "avc3":
|
|
@@ -7891,6 +8290,69 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7891
8290
|
}
|
|
7892
8291
|
});
|
|
7893
8292
|
}
|
|
8293
|
+
}, {
|
|
8294
|
+
key: "colr",
|
|
8295
|
+
value: function colr(box) {
|
|
8296
|
+
return parseBox(box, false, function(ret, data) {
|
|
8297
|
+
var byte = ByteReader.fromUint8(data);
|
|
8298
|
+
ret.data = box.data;
|
|
8299
|
+
ret.colorType = byte.readString(4);
|
|
8300
|
+
if (ret.colorType === "nclx") {
|
|
8301
|
+
ret.colorPrimaries = byte.read(2);
|
|
8302
|
+
ret.transferCharacteristics = byte.read(2);
|
|
8303
|
+
ret.matrixCoefficients = byte.read(2);
|
|
8304
|
+
ret.fullRangeFlag = byte.read(1) >> 7;
|
|
8305
|
+
} else if (ret.colorType === "rICC" || ret.colorType === "prof") {
|
|
8306
|
+
ret.iccProfile = data.readToUint8();
|
|
8307
|
+
}
|
|
8308
|
+
});
|
|
8309
|
+
}
|
|
8310
|
+
}, {
|
|
8311
|
+
key: "av01",
|
|
8312
|
+
value: function av01(box) {
|
|
8313
|
+
return parseBox(box, false, function(ret, data, start) {
|
|
8314
|
+
var bodyStart = parseVisualSampleEntry(ret, data);
|
|
8315
|
+
var bodyData = data.subarray(bodyStart);
|
|
8316
|
+
start += bodyStart;
|
|
8317
|
+
ret.av1C = MP4Parser2.av1C(MP4Parser2.findBox(bodyData, ["av1C"], start)[0]);
|
|
8318
|
+
ret.colr = MP4Parser2.colr(MP4Parser2.findBox(bodyData, ["colr"], start)[0]);
|
|
8319
|
+
});
|
|
8320
|
+
}
|
|
8321
|
+
}, {
|
|
8322
|
+
key: "av1C",
|
|
8323
|
+
value: function av1C(box) {
|
|
8324
|
+
return parseBox(box, false, function(ret, data) {
|
|
8325
|
+
ret.data = box.data;
|
|
8326
|
+
var byte = ByteReader.fromUint8(data);
|
|
8327
|
+
var bit = BitReader.fromByte(byte, 4);
|
|
8328
|
+
ret.marker = bit.read(1);
|
|
8329
|
+
ret.version = bit.read(7);
|
|
8330
|
+
ret.seqProfile = bit.read(3);
|
|
8331
|
+
ret.seqLevelIdx0 = bit.read(5);
|
|
8332
|
+
ret.seqTier0 = bit.read(1);
|
|
8333
|
+
ret.highBitdepth = bit.read(1);
|
|
8334
|
+
ret.twelveBit = bit.read(1);
|
|
8335
|
+
ret.monochrome = bit.read(1);
|
|
8336
|
+
ret.chromaSubsamplingX = bit.read(1);
|
|
8337
|
+
ret.chromaSubsamplingY = bit.read(1);
|
|
8338
|
+
ret.chromaSamplePosition = bit.read(2);
|
|
8339
|
+
ret.reserved = bit.read(3);
|
|
8340
|
+
ret.initialPresentationDelayPresent = bit.read(1);
|
|
8341
|
+
if (ret.initialPresentationDelayPresent) {
|
|
8342
|
+
ret.initialPresentationDelayMinusOne = bit.read(4);
|
|
8343
|
+
} else {
|
|
8344
|
+
ret.initialPresentationDelayMinusOne = 0;
|
|
8345
|
+
}
|
|
8346
|
+
ret.configOBUs = byte.readToUint8();
|
|
8347
|
+
var bitdepth;
|
|
8348
|
+
if (ret.seqLevelIdx0 === 2 && ret.highBitdepth === 1) {
|
|
8349
|
+
bitdepth = ret.twelveBit === 1 ? "12" : "10";
|
|
8350
|
+
} else if (ret.seqProfile <= 2) {
|
|
8351
|
+
bitdepth = ret.highBitdepth === 1 ? "10" : "08";
|
|
8352
|
+
}
|
|
8353
|
+
ret.codec = ["av01", ret.seqProfile, (ret.seqLevelIdx0 < 10 ? "0" + ret.seqLevelIdx0 : ret.seqLevelIdx0) + (ret.seqTier0 ? "H" : "M"), bitdepth].join(".");
|
|
8354
|
+
});
|
|
8355
|
+
}
|
|
7894
8356
|
}, {
|
|
7895
8357
|
key: "avc1",
|
|
7896
8358
|
value: function avc1(box) {
|
|
@@ -7925,7 +8387,7 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7925
8387
|
ret.ppsLength = data[start];
|
|
7926
8388
|
start += 1;
|
|
7927
8389
|
ret.pps = [];
|
|
7928
|
-
for (var
|
|
8390
|
+
for (var _i3 = 0; _i3 < ret.ppsLength; _i3++) {
|
|
7929
8391
|
var _size = readBig16(data, start);
|
|
7930
8392
|
start += 2;
|
|
7931
8393
|
ret.pps.push(data.subarray(start, start += _size));
|
|
@@ -8094,7 +8556,7 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
8094
8556
|
start += 8;
|
|
8095
8557
|
}
|
|
8096
8558
|
} else {
|
|
8097
|
-
for (var
|
|
8559
|
+
for (var _i4 = 0; _i4 < entryCount; _i4++) {
|
|
8098
8560
|
entries.push({
|
|
8099
8561
|
count: readBig32(data, start),
|
|
8100
8562
|
offset: -(~readBig32(data, start + 4) + 1)
|
|
@@ -8316,13 +8778,20 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
8316
8778
|
v.mvhdTimecale = moov.mvhd.timescale;
|
|
8317
8779
|
v.timescale = v.formatTimescale = vTrack.mdia.mdhd.timescale;
|
|
8318
8780
|
v.duration = vTrack.mdia.mdhd.duration || v.mvhdDurtion / v.mvhdTimecale * v.timescale;
|
|
8781
|
+
v.rotation = vTrack.tkhd.rotation;
|
|
8782
|
+
v.matrix = vTrack.tkhd.matrix;
|
|
8319
8783
|
var e1 = vTrack.mdia.minf.stbl.stsd.entries[0];
|
|
8320
8784
|
v.width = e1.width;
|
|
8321
8785
|
v.height = e1.height;
|
|
8322
8786
|
if (e1.pasp) {
|
|
8323
8787
|
v.sarRatio = [e1.pasp.hSpacing, e1.pasp.vSpacing];
|
|
8324
8788
|
}
|
|
8325
|
-
if (e1.
|
|
8789
|
+
if (e1.av1C) {
|
|
8790
|
+
v.codecType = VideoCodecType.AV1;
|
|
8791
|
+
v.codec = e1.av1C.codec;
|
|
8792
|
+
v.av1C = e1.av1C.data;
|
|
8793
|
+
v.colr = e1.colr.data;
|
|
8794
|
+
} else if (e1.hvcC) {
|
|
8326
8795
|
v.codecType = VideoCodecType.HEVC;
|
|
8327
8796
|
v.codec = e1.hvcC.codec;
|
|
8328
8797
|
v.vps = e1.hvcC.vps;
|
|
@@ -8641,8 +9110,9 @@ function parseAudioSampleEntry(ret, data) {
|
|
|
8641
9110
|
function parseBox(box, isFullBox, parse3) {
|
|
8642
9111
|
if (!box)
|
|
8643
9112
|
return;
|
|
8644
|
-
if (box.size !== box.data.length)
|
|
9113
|
+
if (box.size !== box.data.length) {
|
|
8645
9114
|
throw new Error("box ".concat(box.type, " size !== data.length"));
|
|
9115
|
+
}
|
|
8646
9116
|
var ret = {
|
|
8647
9117
|
start: box.start,
|
|
8648
9118
|
size: box.size,
|
|
@@ -8681,11 +9151,167 @@ var toHex = function toHex2() {
|
|
|
8681
9151
|
var FMP4Demuxer = /* @__PURE__ */ function() {
|
|
8682
9152
|
function FMP4Demuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
8683
9153
|
_classCallCheck(this, FMP4Demuxer2);
|
|
9154
|
+
_defineProperty(this, "__loadedMoofWraps", []);
|
|
9155
|
+
_defineProperty(this, "__lastRemainData", null);
|
|
9156
|
+
_defineProperty(this, "__lastRemainDataStart", 0);
|
|
9157
|
+
_defineProperty(this, "__nextMoofStart", -1);
|
|
8684
9158
|
this.videoTrack = videoTrack || new VideoTrack();
|
|
8685
9159
|
this.audioTrack = audioTrack || new AudioTrack();
|
|
8686
9160
|
this.metadataTrack = metadataTrack || new MetadataTrack();
|
|
8687
9161
|
}
|
|
8688
9162
|
_createClass(FMP4Demuxer2, [{
|
|
9163
|
+
key: "demuxPart",
|
|
9164
|
+
value: function demuxPart(partData, partDataStart, moov) {
|
|
9165
|
+
var _this = this;
|
|
9166
|
+
var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
|
|
9167
|
+
var videoExist = videoTrack.exist();
|
|
9168
|
+
var audioExist = audioTrack.exist();
|
|
9169
|
+
var isAV01 = /av01/.test(videoTrack.codec);
|
|
9170
|
+
videoTrack.samples = [];
|
|
9171
|
+
audioTrack.samples = [];
|
|
9172
|
+
var data = partData;
|
|
9173
|
+
var dataStart = partDataStart;
|
|
9174
|
+
if (this.__lastRemainData) {
|
|
9175
|
+
var lastRemainDataEnd = this.__lastRemainDataStart + this.__lastRemainData.byteLength;
|
|
9176
|
+
var continuous = partDataStart <= lastRemainDataEnd && partDataStart > this.__lastRemainDataStart && partDataStart + partData.byteLength > lastRemainDataEnd;
|
|
9177
|
+
if (continuous) {
|
|
9178
|
+
var noDuplicateData = partData.subarray(this.__lastRemainData.byteLength + this.__lastRemainDataStart - partDataStart);
|
|
9179
|
+
data = concatUint8Array(this.__lastRemainData, noDuplicateData);
|
|
9180
|
+
dataStart = this.__lastRemainDataStart;
|
|
9181
|
+
this.__lastRemainData = null;
|
|
9182
|
+
} else {
|
|
9183
|
+
this.__lastRemainData = null;
|
|
9184
|
+
this.__lastRemainDataStart = 0;
|
|
9185
|
+
this.__nextMoofStart = -1;
|
|
9186
|
+
}
|
|
9187
|
+
}
|
|
9188
|
+
if (!moov) {
|
|
9189
|
+
var moovBox = MP4Parser.findBox(data, ["moov"])[0];
|
|
9190
|
+
if (!moovBox)
|
|
9191
|
+
throw new Error("cannot found moov box");
|
|
9192
|
+
moov = MP4Parser.moov(moovBox);
|
|
9193
|
+
}
|
|
9194
|
+
if (data) {
|
|
9195
|
+
var dataEnd = dataStart + data.byteLength;
|
|
9196
|
+
if (!videoExist && !audioExist) {
|
|
9197
|
+
MP4Parser.moovToTrack(moov, videoTrack, audioTrack);
|
|
9198
|
+
}
|
|
9199
|
+
var moofBoxes = [];
|
|
9200
|
+
if (this.__nextMoofStart < 0) {
|
|
9201
|
+
MP4Parser.findBox(data, ["moof"], dataStart).forEach(function(v) {
|
|
9202
|
+
return moofBoxes.push(v);
|
|
9203
|
+
});
|
|
9204
|
+
} else if (this.__nextMoofStart >= dataStart && this.__nextMoofStart <= dataEnd - 8) {
|
|
9205
|
+
MP4Parser.findBox(data.subarray(this.__nextMoofStart - dataStart), ["moof"], this.__nextMoofStart).forEach(function(v) {
|
|
9206
|
+
return moofBoxes.push(v);
|
|
9207
|
+
});
|
|
9208
|
+
}
|
|
9209
|
+
moofBoxes.filter(function(moofBox) {
|
|
9210
|
+
return moofBox.size <= moofBox.data.length;
|
|
9211
|
+
}).forEach(function(moofBox) {
|
|
9212
|
+
var moof = MP4Parser.moof(moofBox);
|
|
9213
|
+
_this.__nextMoofStart = moof.start + Math.max.apply(Math, _toConsumableArray(moof.traf.map(function(v) {
|
|
9214
|
+
return v.trun.samples.reduce(function(ret, w) {
|
|
9215
|
+
return ret + w.size;
|
|
9216
|
+
}, v.trun.dataOffset || 0);
|
|
9217
|
+
})));
|
|
9218
|
+
_this.__loadedMoofWraps.push({
|
|
9219
|
+
start: moof.start,
|
|
9220
|
+
nextMoofStart: _this.__nextMoofStart,
|
|
9221
|
+
moof
|
|
9222
|
+
});
|
|
9223
|
+
_this.__loadedMoofWraps.sort(function(p, n) {
|
|
9224
|
+
return p.start - n.start;
|
|
9225
|
+
});
|
|
9226
|
+
});
|
|
9227
|
+
var _iterator = _createForOfIteratorHelper(this.__loadedMoofWraps), _step;
|
|
9228
|
+
try {
|
|
9229
|
+
var _loop = function _loop2() {
|
|
9230
|
+
var moofWrap = _step.value;
|
|
9231
|
+
if (moofWrap.start > dataEnd || moofWrap.nextMoofStart < dataStart) {
|
|
9232
|
+
return "continue";
|
|
9233
|
+
}
|
|
9234
|
+
var moofStart = moofWrap.start;
|
|
9235
|
+
var tracks = MP4Parser.moofToSamples(moofWrap.moof, videoTrack, audioTrack);
|
|
9236
|
+
var videoBaseMediaDecodeTime = videoTrack.baseMediaDecodeTime;
|
|
9237
|
+
var audioBaseMediaDecodeTime = audioTrack.baseMediaDecodeTime;
|
|
9238
|
+
var nalSize;
|
|
9239
|
+
Object.keys(tracks).forEach(function(k) {
|
|
9240
|
+
if (videoTrack.id == k) {
|
|
9241
|
+
tracks[k].some(function(x) {
|
|
9242
|
+
var xStart = x.offset += moofStart;
|
|
9243
|
+
if (xStart < dataStart) {
|
|
9244
|
+
return;
|
|
9245
|
+
}
|
|
9246
|
+
if (xStart + x.size > dataEnd) {
|
|
9247
|
+
return true;
|
|
9248
|
+
}
|
|
9249
|
+
var sample = new VideoSample((x.pts || x.dts) + videoBaseMediaDecodeTime, x.dts + videoBaseMediaDecodeTime);
|
|
9250
|
+
sample.duration = x.duration;
|
|
9251
|
+
sample.gopId = x.gopId;
|
|
9252
|
+
if (x.keyframe)
|
|
9253
|
+
sample.setToKeyframe();
|
|
9254
|
+
var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
|
|
9255
|
+
sample.data = sampleData;
|
|
9256
|
+
if (!isAV01) {
|
|
9257
|
+
var start = 0;
|
|
9258
|
+
var len = sampleData.length - 1;
|
|
9259
|
+
while (start < len) {
|
|
9260
|
+
nalSize = readBig32(sampleData, start);
|
|
9261
|
+
start += 4;
|
|
9262
|
+
sample.units.push(sampleData.subarray(start, start + nalSize));
|
|
9263
|
+
start += nalSize;
|
|
9264
|
+
}
|
|
9265
|
+
}
|
|
9266
|
+
_this.__lastRemainDataStart = xStart + x.size;
|
|
9267
|
+
videoTrack.samples.push(sample);
|
|
9268
|
+
});
|
|
9269
|
+
} else if (audioTrack.id == k) {
|
|
9270
|
+
tracks[k].some(function(x) {
|
|
9271
|
+
var xStart = x.offset + moofStart;
|
|
9272
|
+
if (xStart < dataStart) {
|
|
9273
|
+
return;
|
|
9274
|
+
}
|
|
9275
|
+
if (xStart + x.size > dataEnd) {
|
|
9276
|
+
return true;
|
|
9277
|
+
}
|
|
9278
|
+
var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
|
|
9279
|
+
audioTrack.samples.push(new AudioSample(x.dts + audioBaseMediaDecodeTime, sampleData, x.duration));
|
|
9280
|
+
_this.__lastRemainDataStart = xStart + x.size;
|
|
9281
|
+
});
|
|
9282
|
+
}
|
|
9283
|
+
});
|
|
9284
|
+
};
|
|
9285
|
+
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
9286
|
+
var _ret = _loop();
|
|
9287
|
+
if (_ret === "continue")
|
|
9288
|
+
continue;
|
|
9289
|
+
}
|
|
9290
|
+
} catch (err) {
|
|
9291
|
+
_iterator.e(err);
|
|
9292
|
+
} finally {
|
|
9293
|
+
_iterator.f();
|
|
9294
|
+
}
|
|
9295
|
+
}
|
|
9296
|
+
if (this.__lastRemainDataStart > dataStart && this.__lastRemainDataStart < data.byteLength + dataStart) {
|
|
9297
|
+
this.__lastRemainData = data.subarray(this.__lastRemainDataStart - dataStart);
|
|
9298
|
+
} else {
|
|
9299
|
+
this.__lastRemainData = data;
|
|
9300
|
+
this.__lastRemainDataStart = dataStart;
|
|
9301
|
+
}
|
|
9302
|
+
if (videoTrack.samples.length) {
|
|
9303
|
+
videoTrack.baseMediaDecodeTime = videoTrack.samples[0].pts;
|
|
9304
|
+
}
|
|
9305
|
+
if (audioTrack.samples.length) {
|
|
9306
|
+
audioTrack.baseMediaDecodeTime = audioTrack.samples[0].pts;
|
|
9307
|
+
}
|
|
9308
|
+
return {
|
|
9309
|
+
videoTrack,
|
|
9310
|
+
audioTrack,
|
|
9311
|
+
metadataTrack: this.metadataTrack
|
|
9312
|
+
};
|
|
9313
|
+
}
|
|
9314
|
+
}, {
|
|
8689
9315
|
key: "demux",
|
|
8690
9316
|
value: function demux(videoData, audioData) {
|
|
8691
9317
|
var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
|
|
@@ -8804,13 +9430,13 @@ var Buffer = /* @__PURE__ */ function() {
|
|
|
8804
9430
|
_createClass(Buffer2, [{
|
|
8805
9431
|
key: "write",
|
|
8806
9432
|
value: function write() {
|
|
8807
|
-
var
|
|
9433
|
+
var self2 = this;
|
|
8808
9434
|
for (var _len2 = arguments.length, buffer = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
8809
9435
|
buffer[_key2] = arguments[_key2];
|
|
8810
9436
|
}
|
|
8811
9437
|
buffer.forEach(function(item) {
|
|
8812
9438
|
if (item) {
|
|
8813
|
-
|
|
9439
|
+
self2.buffer = Concat(Uint8Array, self2.buffer, item);
|
|
8814
9440
|
} else {
|
|
8815
9441
|
window.console.warn(item);
|
|
8816
9442
|
}
|
|
@@ -9177,10 +9803,16 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9177
9803
|
if (track.useEME && track.enca) {
|
|
9178
9804
|
content = MP42.enca(track);
|
|
9179
9805
|
} else {
|
|
9180
|
-
|
|
9806
|
+
if (track.codecType === AudioCodecType.OPUS) {
|
|
9807
|
+
content = MP42.opus(track);
|
|
9808
|
+
} else {
|
|
9809
|
+
content = MP42.mp4a(track);
|
|
9810
|
+
}
|
|
9181
9811
|
}
|
|
9182
9812
|
} else if (track.useEME && track.encv) {
|
|
9183
9813
|
content = MP42.encv(track);
|
|
9814
|
+
} else if (track.av1C) {
|
|
9815
|
+
content = MP42.av01(track);
|
|
9184
9816
|
} else {
|
|
9185
9817
|
content = MP42.avc1hev1(track);
|
|
9186
9818
|
}
|
|
@@ -9394,12 +10026,9 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9394
10026
|
return MP42.box(MP42.types.sinf, content, MP42.box(MP42.types.frma, frma), MP42.box(MP42.types.schm, schm), schi);
|
|
9395
10027
|
}
|
|
9396
10028
|
}, {
|
|
9397
|
-
key: "
|
|
9398
|
-
value: function
|
|
9399
|
-
|
|
9400
|
-
var typ = isHevc ? MP42.types.hvc1 : MP42.types.avc1;
|
|
9401
|
-
var config = isHevc ? MP42.hvcC(track) : MP42.avcC(track);
|
|
9402
|
-
var boxes = [new Uint8Array([
|
|
10029
|
+
key: "av01",
|
|
10030
|
+
value: function av01(track) {
|
|
10031
|
+
return MP42.box(MP42.types.av01, new Uint8Array([
|
|
9403
10032
|
0,
|
|
9404
10033
|
0,
|
|
9405
10034
|
0,
|
|
@@ -9478,10 +10107,97 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9478
10107
|
24,
|
|
9479
10108
|
17,
|
|
9480
10109
|
17
|
|
9481
|
-
]),
|
|
9482
|
-
|
|
9483
|
-
|
|
9484
|
-
|
|
10110
|
+
]), track.av1C, track.colr);
|
|
10111
|
+
}
|
|
10112
|
+
}, {
|
|
10113
|
+
key: "avc1hev1",
|
|
10114
|
+
value: function avc1hev1(track) {
|
|
10115
|
+
var isHevc = track.codecType === VideoCodecType.HEVC;
|
|
10116
|
+
var typ = isHevc ? MP42.types.hvc1 : MP42.types.avc1;
|
|
10117
|
+
var config = isHevc ? MP42.hvcC(track) : MP42.avcC(track);
|
|
10118
|
+
var boxes = [new Uint8Array([
|
|
10119
|
+
0,
|
|
10120
|
+
0,
|
|
10121
|
+
0,
|
|
10122
|
+
0,
|
|
10123
|
+
0,
|
|
10124
|
+
0,
|
|
10125
|
+
0,
|
|
10126
|
+
1,
|
|
10127
|
+
0,
|
|
10128
|
+
0,
|
|
10129
|
+
0,
|
|
10130
|
+
0,
|
|
10131
|
+
0,
|
|
10132
|
+
0,
|
|
10133
|
+
0,
|
|
10134
|
+
0,
|
|
10135
|
+
0,
|
|
10136
|
+
0,
|
|
10137
|
+
0,
|
|
10138
|
+
0,
|
|
10139
|
+
0,
|
|
10140
|
+
0,
|
|
10141
|
+
0,
|
|
10142
|
+
0,
|
|
10143
|
+
track.width >> 8 & 255,
|
|
10144
|
+
track.width & 255,
|
|
10145
|
+
track.height >> 8 & 255,
|
|
10146
|
+
track.height & 255,
|
|
10147
|
+
0,
|
|
10148
|
+
72,
|
|
10149
|
+
0,
|
|
10150
|
+
0,
|
|
10151
|
+
0,
|
|
10152
|
+
72,
|
|
10153
|
+
0,
|
|
10154
|
+
0,
|
|
10155
|
+
0,
|
|
10156
|
+
0,
|
|
10157
|
+
0,
|
|
10158
|
+
0,
|
|
10159
|
+
0,
|
|
10160
|
+
1,
|
|
10161
|
+
0,
|
|
10162
|
+
0,
|
|
10163
|
+
0,
|
|
10164
|
+
0,
|
|
10165
|
+
0,
|
|
10166
|
+
0,
|
|
10167
|
+
0,
|
|
10168
|
+
0,
|
|
10169
|
+
0,
|
|
10170
|
+
0,
|
|
10171
|
+
0,
|
|
10172
|
+
0,
|
|
10173
|
+
0,
|
|
10174
|
+
0,
|
|
10175
|
+
0,
|
|
10176
|
+
0,
|
|
10177
|
+
0,
|
|
10178
|
+
0,
|
|
10179
|
+
0,
|
|
10180
|
+
0,
|
|
10181
|
+
0,
|
|
10182
|
+
0,
|
|
10183
|
+
0,
|
|
10184
|
+
0,
|
|
10185
|
+
0,
|
|
10186
|
+
0,
|
|
10187
|
+
0,
|
|
10188
|
+
0,
|
|
10189
|
+
0,
|
|
10190
|
+
0,
|
|
10191
|
+
0,
|
|
10192
|
+
0,
|
|
10193
|
+
0,
|
|
10194
|
+
24,
|
|
10195
|
+
17,
|
|
10196
|
+
17
|
|
10197
|
+
]), config];
|
|
10198
|
+
if (isHevc) {
|
|
10199
|
+
boxes.push(MP42.box(MP42.types.fiel, new Uint8Array([1, 0])));
|
|
10200
|
+
} else if (track.sarRatio && track.sarRatio.length > 1) {
|
|
9485
10201
|
boxes.push(MP42.pasp(track.sarRatio));
|
|
9486
10202
|
}
|
|
9487
10203
|
return MP42.box.apply(MP42, [typ].concat(boxes));
|
|
@@ -9763,6 +10479,53 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9763
10479
|
)));
|
|
9764
10480
|
return esds2;
|
|
9765
10481
|
}
|
|
10482
|
+
}, {
|
|
10483
|
+
key: "opus",
|
|
10484
|
+
value: function opus(track) {
|
|
10485
|
+
var opusAudioDescription = new Uint8Array([
|
|
10486
|
+
0,
|
|
10487
|
+
0,
|
|
10488
|
+
0,
|
|
10489
|
+
0,
|
|
10490
|
+
0,
|
|
10491
|
+
0,
|
|
10492
|
+
0,
|
|
10493
|
+
1,
|
|
10494
|
+
0,
|
|
10495
|
+
0,
|
|
10496
|
+
0,
|
|
10497
|
+
0,
|
|
10498
|
+
0,
|
|
10499
|
+
0,
|
|
10500
|
+
0,
|
|
10501
|
+
0,
|
|
10502
|
+
0,
|
|
10503
|
+
track.channelCount,
|
|
10504
|
+
0,
|
|
10505
|
+
16,
|
|
10506
|
+
0,
|
|
10507
|
+
0,
|
|
10508
|
+
0,
|
|
10509
|
+
0,
|
|
10510
|
+
track.sampleRate >> 8 & 255,
|
|
10511
|
+
track.sampleRate & 255,
|
|
10512
|
+
0,
|
|
10513
|
+
0
|
|
10514
|
+
]);
|
|
10515
|
+
var opusSpecificConfig = track.config.length ? MP42.dOps(track) : [];
|
|
10516
|
+
return MP42.box(MP42.types.Opus, opusAudioDescription, opusSpecificConfig);
|
|
10517
|
+
}
|
|
10518
|
+
}, {
|
|
10519
|
+
key: "dOps",
|
|
10520
|
+
value: function dOps(track) {
|
|
10521
|
+
if (track.config) {
|
|
10522
|
+
track.config[4] = track.sampleRate >>> 24 & 255;
|
|
10523
|
+
track.config[5] = track.sampleRate >>> 16 & 255;
|
|
10524
|
+
track.config[6] = track.sampleRate >>> 8 & 255;
|
|
10525
|
+
track.config[7] = track.sampleRate & 255;
|
|
10526
|
+
return MP42.box(MP42.types.dOps, track.config);
|
|
10527
|
+
}
|
|
10528
|
+
}
|
|
9766
10529
|
}, {
|
|
9767
10530
|
key: "mvex",
|
|
9768
10531
|
value: function mvex(tracks) {
|
|
@@ -10365,7 +11128,7 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
10365
11128
|
}]);
|
|
10366
11129
|
return MP42;
|
|
10367
11130
|
}();
|
|
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) {
|
|
11131
|
+
_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
11132
|
p[c] = [c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2), c.charCodeAt(3)];
|
|
10370
11133
|
return p;
|
|
10371
11134
|
}, /* @__PURE__ */ Object.create(null)));
|
|
@@ -10700,30 +11463,46 @@ var FMP4Remuxer = /* @__PURE__ */ function() {
|
|
|
10700
11463
|
};
|
|
10701
11464
|
}
|
|
10702
11465
|
var samples = track.samples;
|
|
11466
|
+
var isAV01 = /av01/.test(track.codec);
|
|
10703
11467
|
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;
|
|
11468
|
+
if (isAV01) {
|
|
11469
|
+
samples.forEach(function(s) {
|
|
11470
|
+
mdatSize += s.data.byteLength;
|
|
10721
11471
|
});
|
|
10722
|
-
|
|
10723
|
-
|
|
10724
|
-
|
|
10725
|
-
|
|
10726
|
-
|
|
11472
|
+
} else {
|
|
11473
|
+
samples.forEach(function(s) {
|
|
11474
|
+
mdatSize += s.units.reduce(function(t, c) {
|
|
11475
|
+
return t + c.byteLength;
|
|
11476
|
+
}, 0);
|
|
11477
|
+
mdatSize += s.units.length * 4;
|
|
11478
|
+
});
|
|
11479
|
+
}
|
|
11480
|
+
var mdata = new Uint8Array(mdatSize);
|
|
11481
|
+
if (isAV01) {
|
|
11482
|
+
for (var i = 0, l = samples.length, offset = 0, sample; i < l; i++) {
|
|
11483
|
+
sample = samples[i];
|
|
11484
|
+
mdata.set(sample.data, offset);
|
|
11485
|
+
sample.size = sample.data.byteLength;
|
|
11486
|
+
offset += sample.size;
|
|
11487
|
+
}
|
|
11488
|
+
} else {
|
|
11489
|
+
var mdatView = new DataView(mdata.buffer);
|
|
11490
|
+
var _loop = function _loop2(_offset2, _sample2) {
|
|
11491
|
+
_sample2 = samples[_i];
|
|
11492
|
+
var sampleSize = 0;
|
|
11493
|
+
_sample2.units.forEach(function(u) {
|
|
11494
|
+
mdatView.setUint32(_offset2, u.byteLength);
|
|
11495
|
+
_offset2 += 4;
|
|
11496
|
+
mdata.set(u, _offset2);
|
|
11497
|
+
_offset2 += u.byteLength;
|
|
11498
|
+
sampleSize += 4 + u.byteLength;
|
|
11499
|
+
});
|
|
11500
|
+
_sample2.size = sampleSize;
|
|
11501
|
+
_offset = _offset2, _sample = _sample2;
|
|
11502
|
+
};
|
|
11503
|
+
for (var _i = 0, _l = samples.length, _offset = 0, _sample; _i < _l; _i++) {
|
|
11504
|
+
_loop(_offset, _sample);
|
|
11505
|
+
}
|
|
10727
11506
|
}
|
|
10728
11507
|
var mdat = MP4.mdat(mdata);
|
|
10729
11508
|
var moof = MP4.moof([track]);
|
|
@@ -10882,11 +11661,11 @@ var Event$1 = _objectSpread2$2(_objectSpread2$2({}, EVENT), {}, {
|
|
|
10882
11661
|
});
|
|
10883
11662
|
var logger$3 = new Logger$2("Transmuxer");
|
|
10884
11663
|
var Transmuxer = /* @__PURE__ */ function() {
|
|
10885
|
-
function Transmuxer2(hls, isMP4, needRemux) {
|
|
11664
|
+
function Transmuxer2(hls, isMP4, needRemux, fixerConfig) {
|
|
10886
11665
|
_classCallCheck$3(this, Transmuxer2);
|
|
10887
11666
|
_defineProperty$3(this, "_initSegmentId", "");
|
|
10888
11667
|
this.hls = hls;
|
|
10889
|
-
this._demuxer = isMP4 ? new FMP4Demuxer() : new TsDemuxer();
|
|
11668
|
+
this._demuxer = isMP4 ? new FMP4Demuxer() : new TsDemuxer(null, null, null, fixerConfig);
|
|
10890
11669
|
this._isMP4 = isMP4;
|
|
10891
11670
|
if (needRemux)
|
|
10892
11671
|
this._remuxer = new FMP4Remuxer(this._demuxer.videoTrack, this._demuxer.audioTrack);
|
|
@@ -11041,7 +11820,7 @@ var Transmuxer = /* @__PURE__ */ function() {
|
|
|
11041
11820
|
}]);
|
|
11042
11821
|
return Transmuxer2;
|
|
11043
11822
|
}();
|
|
11044
|
-
var _excluded = ["data"], _excluded2 = ["data"];
|
|
11823
|
+
var _excluded$1 = ["data"], _excluded2 = ["data"];
|
|
11045
11824
|
var logger$2 = new Logger$2("BufferService");
|
|
11046
11825
|
var BufferService = /* @__PURE__ */ function() {
|
|
11047
11826
|
function BufferService2(hls) {
|
|
@@ -11153,11 +11932,11 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11153
11932
|
return;
|
|
11154
11933
|
if (TsDemuxer.probe(chunk)) {
|
|
11155
11934
|
if (!this._transmuxer)
|
|
11156
|
-
this._transmuxer = new Transmuxer(this.hls, false, !this._softVideo);
|
|
11935
|
+
this._transmuxer = new Transmuxer(this.hls, false, !this._softVideo, this.hls.config.fixerConfig);
|
|
11157
11936
|
} else if (MP4Parser.probe(chunk)) {
|
|
11158
11937
|
if (this._softVideo) {
|
|
11159
11938
|
if (!this._transmuxer)
|
|
11160
|
-
this._transmuxer = new Transmuxer(this.hls, true);
|
|
11939
|
+
this._transmuxer = new Transmuxer(this.hls, true, null, this.hls.config.fixerConfig);
|
|
11161
11940
|
} else {
|
|
11162
11941
|
this._directAppend = true;
|
|
11163
11942
|
var mix = false;
|
|
@@ -11207,7 +11986,8 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11207
11986
|
key: "appendBuffer",
|
|
11208
11987
|
value: function() {
|
|
11209
11988
|
var _appendBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2(segment, audioSegment, videoChunk, audioChunk, discontinuity, contiguous, startTime) {
|
|
11210
|
-
var
|
|
11989
|
+
var _this2 = this;
|
|
11990
|
+
var afterAppend, p, needInit, _this$_transmuxer$tra, _this$_transmuxer$tra2, video, audio, isFirstAppend, mse, _p, videoData, videoRest, audioData, audioRest;
|
|
11211
11991
|
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
11212
11992
|
while (1)
|
|
11213
11993
|
switch (_context2.prev = _context2.next) {
|
|
@@ -11218,8 +11998,18 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11218
11998
|
}
|
|
11219
11999
|
return _context2.abrupt("return");
|
|
11220
12000
|
case 2:
|
|
12001
|
+
afterAppend = function afterAppend2() {
|
|
12002
|
+
var _this2$hls;
|
|
12003
|
+
if ((_this2$hls = _this2.hls) !== null && _this2$hls !== void 0 && _this2$hls.emit) {
|
|
12004
|
+
var _this2$hls2;
|
|
12005
|
+
(_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.emit(EVENT.APPEND_BUFFER, {
|
|
12006
|
+
start: segment.start,
|
|
12007
|
+
end: segment.end
|
|
12008
|
+
});
|
|
12009
|
+
}
|
|
12010
|
+
};
|
|
11221
12011
|
if (!this._directAppend) {
|
|
11222
|
-
_context2.next =
|
|
12012
|
+
_context2.next = 8;
|
|
11223
12013
|
break;
|
|
11224
12014
|
}
|
|
11225
12015
|
p = [];
|
|
@@ -11227,8 +12017,8 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11227
12017
|
p.push(this._mse.append(MSE.VIDEO, videoChunk));
|
|
11228
12018
|
if (audioChunk)
|
|
11229
12019
|
p.push(this._mse.append(MSE.AUDIO, audioChunk));
|
|
11230
|
-
return _context2.abrupt("return", Promise.all(p));
|
|
11231
|
-
case
|
|
12020
|
+
return _context2.abrupt("return", Promise.all(p).then(afterAppend));
|
|
12021
|
+
case 8:
|
|
11232
12022
|
needInit = this._needInitSegment || discontinuity;
|
|
11233
12023
|
_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
12024
|
if (audioChunk && audioSegment) {
|
|
@@ -11244,16 +12034,17 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11244
12034
|
this.hls.emit(Event$1.NO_AUDIO_TRACK);
|
|
11245
12035
|
}
|
|
11246
12036
|
if (!this._softVideo) {
|
|
11247
|
-
_context2.next =
|
|
12037
|
+
_context2.next = 20;
|
|
11248
12038
|
break;
|
|
11249
12039
|
}
|
|
11250
12040
|
this._softVideo.appendBuffer(video, audio);
|
|
11251
12041
|
this._needInitSegment = false;
|
|
11252
|
-
|
|
12042
|
+
afterAppend();
|
|
12043
|
+
_context2.next = 30;
|
|
11253
12044
|
break;
|
|
11254
|
-
case
|
|
12045
|
+
case 20:
|
|
11255
12046
|
if (!this._mse) {
|
|
11256
|
-
_context2.next =
|
|
12047
|
+
_context2.next = 30;
|
|
11257
12048
|
break;
|
|
11258
12049
|
}
|
|
11259
12050
|
isFirstAppend = !this._sourceCreated;
|
|
@@ -11269,15 +12060,15 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11269
12060
|
});
|
|
11270
12061
|
}
|
|
11271
12062
|
if (video) {
|
|
11272
|
-
videoData = video.data, videoRest = _objectWithoutProperties$1(video, _excluded);
|
|
12063
|
+
videoData = video.data, videoRest = _objectWithoutProperties$1(video, _excluded$1);
|
|
11273
12064
|
_p.push(mse.append(MSE.VIDEO, videoData, videoRest));
|
|
11274
12065
|
}
|
|
11275
12066
|
if (audio) {
|
|
11276
12067
|
audioData = audio.data, audioRest = _objectWithoutProperties$1(audio, _excluded2);
|
|
11277
12068
|
_p.push(mse.append(MSE.AUDIO, audioData, audioRest));
|
|
11278
12069
|
}
|
|
11279
|
-
return _context2.abrupt("return", Promise.all(_p));
|
|
11280
|
-
case
|
|
12070
|
+
return _context2.abrupt("return", Promise.all(_p).then(afterAppend));
|
|
12071
|
+
case 30:
|
|
11281
12072
|
case "end":
|
|
11282
12073
|
return _context2.stop();
|
|
11283
12074
|
}
|
|
@@ -11292,7 +12083,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11292
12083
|
key: "removeBuffer",
|
|
11293
12084
|
value: function() {
|
|
11294
12085
|
var _removeBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee3() {
|
|
11295
|
-
var
|
|
12086
|
+
var _this3 = this;
|
|
11296
12087
|
var start, end, media, _args3 = arguments;
|
|
11297
12088
|
return _regeneratorRuntime$1().wrap(function _callee3$(_context3) {
|
|
11298
12089
|
while (1)
|
|
@@ -11308,7 +12099,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11308
12099
|
return _context3.abrupt("return");
|
|
11309
12100
|
case 5:
|
|
11310
12101
|
return _context3.abrupt("return", this._mse.clearBuffer(start, end).then(function() {
|
|
11311
|
-
return
|
|
12102
|
+
return _this3.hls.emit(EVENT.REMOVE_BUFFER, {
|
|
11312
12103
|
start,
|
|
11313
12104
|
end,
|
|
11314
12105
|
removeEnd: end
|
|
@@ -11489,30 +12280,51 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11489
12280
|
return setLiveSeekableRange;
|
|
11490
12281
|
}()
|
|
11491
12282
|
}, {
|
|
11492
|
-
key: "
|
|
12283
|
+
key: "detachMedia",
|
|
11493
12284
|
value: function() {
|
|
11494
|
-
var
|
|
11495
|
-
var _this$_decryptor;
|
|
12285
|
+
var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee9() {
|
|
11496
12286
|
return _regeneratorRuntime$1().wrap(function _callee9$(_context9) {
|
|
11497
12287
|
while (1)
|
|
11498
12288
|
switch (_context9.prev = _context9.next) {
|
|
11499
12289
|
case 0:
|
|
11500
|
-
(_this$_decryptor = this._decryptor) === null || _this$_decryptor === void 0 ? void 0 : _this$_decryptor.destroy();
|
|
11501
12290
|
if (!this._mse) {
|
|
11502
|
-
_context9.next =
|
|
12291
|
+
_context9.next = 3;
|
|
11503
12292
|
break;
|
|
11504
12293
|
}
|
|
11505
|
-
_context9.next =
|
|
12294
|
+
_context9.next = 3;
|
|
11506
12295
|
return this._mse.unbindMedia();
|
|
11507
|
-
case
|
|
12296
|
+
case 3:
|
|
12297
|
+
case "end":
|
|
12298
|
+
return _context9.stop();
|
|
12299
|
+
}
|
|
12300
|
+
}, _callee9, this);
|
|
12301
|
+
}));
|
|
12302
|
+
function detachMedia() {
|
|
12303
|
+
return _detachMedia.apply(this, arguments);
|
|
12304
|
+
}
|
|
12305
|
+
return detachMedia;
|
|
12306
|
+
}()
|
|
12307
|
+
}, {
|
|
12308
|
+
key: "destroy",
|
|
12309
|
+
value: function() {
|
|
12310
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee10() {
|
|
12311
|
+
var _this$_decryptor;
|
|
12312
|
+
return _regeneratorRuntime$1().wrap(function _callee10$(_context10) {
|
|
12313
|
+
while (1)
|
|
12314
|
+
switch (_context10.prev = _context10.next) {
|
|
12315
|
+
case 0:
|
|
12316
|
+
(_this$_decryptor = this._decryptor) === null || _this$_decryptor === void 0 ? void 0 : _this$_decryptor.destroy();
|
|
12317
|
+
_context10.next = 3;
|
|
12318
|
+
return this.detachMedia();
|
|
12319
|
+
case 3:
|
|
11508
12320
|
this._decryptor = null;
|
|
11509
12321
|
this._mse = null;
|
|
11510
12322
|
this._softVideo = null;
|
|
11511
|
-
case
|
|
12323
|
+
case 6:
|
|
11512
12324
|
case "end":
|
|
11513
|
-
return
|
|
12325
|
+
return _context10.stop();
|
|
11514
12326
|
}
|
|
11515
|
-
},
|
|
12327
|
+
}, _callee10, this);
|
|
11516
12328
|
}));
|
|
11517
12329
|
function destroy() {
|
|
11518
12330
|
return _destroy.apply(this, arguments);
|
|
@@ -11600,7 +12412,11 @@ function getConfig(cfg) {
|
|
|
11600
12412
|
minSegmentsStartPlay: 3,
|
|
11601
12413
|
preferMMS: false,
|
|
11602
12414
|
preferMMSStreaming: false,
|
|
11603
|
-
mseLowLatency: true
|
|
12415
|
+
mseLowLatency: true,
|
|
12416
|
+
fixerConfig: {
|
|
12417
|
+
forceFixLargeGap: false,
|
|
12418
|
+
largeGapThreshold: 5
|
|
12419
|
+
}
|
|
11604
12420
|
}, cfg), {}, {
|
|
11605
12421
|
media
|
|
11606
12422
|
});
|
|
@@ -11715,6 +12531,8 @@ var MediaPlaylist = /* @__PURE__ */ _createClass$3(function MediaPlaylist2() {
|
|
|
11715
12531
|
_defineProperty$3(this, "lowLatency", false);
|
|
11716
12532
|
_defineProperty$3(this, "endPartIndex", 0);
|
|
11717
12533
|
_defineProperty$3(this, "segments", []);
|
|
12534
|
+
_defineProperty$3(this, "dateRanges", {});
|
|
12535
|
+
_defineProperty$3(this, "skippedSegments", 0);
|
|
11718
12536
|
});
|
|
11719
12537
|
var MediaSegment = /* @__PURE__ */ function() {
|
|
11720
12538
|
function MediaSegment2(parentUrl) {
|
|
@@ -11836,6 +12654,31 @@ var MediaSegmentKey = /* @__PURE__ */ function() {
|
|
|
11836
12654
|
}]);
|
|
11837
12655
|
return MediaSegmentKey2;
|
|
11838
12656
|
}();
|
|
12657
|
+
var HlsUrlParameters = /* @__PURE__ */ function() {
|
|
12658
|
+
function HlsUrlParameters2(msn, part, skip) {
|
|
12659
|
+
_classCallCheck$3(this, HlsUrlParameters2);
|
|
12660
|
+
this.msn = msn;
|
|
12661
|
+
this.part = part;
|
|
12662
|
+
this.skip = skip;
|
|
12663
|
+
}
|
|
12664
|
+
_createClass$3(HlsUrlParameters2, [{
|
|
12665
|
+
key: "addDirectives",
|
|
12666
|
+
value: function addDirectives(uri) {
|
|
12667
|
+
var url = new self.URL(uri);
|
|
12668
|
+
if (this.msn !== void 0) {
|
|
12669
|
+
url.searchParams.set("_HLS_msn", this.msn.toString());
|
|
12670
|
+
}
|
|
12671
|
+
if (this.part) {
|
|
12672
|
+
url.searchParams.set("_HLS_part", this.part.toString());
|
|
12673
|
+
}
|
|
12674
|
+
if (this.skip) {
|
|
12675
|
+
url.searchParams.set("_HLS_skip", this.skip);
|
|
12676
|
+
}
|
|
12677
|
+
return url.href;
|
|
12678
|
+
}
|
|
12679
|
+
}]);
|
|
12680
|
+
return HlsUrlParameters2;
|
|
12681
|
+
}();
|
|
11839
12682
|
var REGEXP_TAG = /^#(EXT[^:]*)(?::(.*))?$/;
|
|
11840
12683
|
var REGEXP_ATTR = /([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g;
|
|
11841
12684
|
var REGEXP_ABSOLUTE_URL = /^(?:[a-zA-Z0-9+\-.]+:)?\/\//;
|
|
@@ -11886,6 +12729,38 @@ function getCodecs(type, codecs) {
|
|
|
11886
12729
|
}
|
|
11887
12730
|
}
|
|
11888
12731
|
}
|
|
12732
|
+
function isValidDaterange(attr, dateRangeWithSameId) {
|
|
12733
|
+
var _badValueForSameId;
|
|
12734
|
+
if (dateRangeWithSameId) {
|
|
12735
|
+
for (var key in dateRangeWithSameId) {
|
|
12736
|
+
if (Object.prototype.hasOwnProperty.call(dateRangeWithSameId, key) && attr[key] !== dateRangeWithSameId[key]) {
|
|
12737
|
+
_badValueForSameId = key;
|
|
12738
|
+
break;
|
|
12739
|
+
}
|
|
12740
|
+
}
|
|
12741
|
+
}
|
|
12742
|
+
var duration = null;
|
|
12743
|
+
if (attr.DURATION) {
|
|
12744
|
+
duration = parseFloat(attr.DURATION);
|
|
12745
|
+
if (!Number.isFinite(duration)) {
|
|
12746
|
+
duration = null;
|
|
12747
|
+
} else if (attr._endDate) {
|
|
12748
|
+
duration = (attr._endDate.getTime() - attr._startDate.getTime()) / 1e3;
|
|
12749
|
+
}
|
|
12750
|
+
}
|
|
12751
|
+
var cue = enumeratedStringList(attr.CUE || attr["X-CUE"], {
|
|
12752
|
+
pre: false,
|
|
12753
|
+
post: false,
|
|
12754
|
+
once: false
|
|
12755
|
+
});
|
|
12756
|
+
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);
|
|
12757
|
+
}
|
|
12758
|
+
function enumeratedStringList(attrValue, dict) {
|
|
12759
|
+
return (attrValue ? attrValue.split(/[ ,]+/) : []).reduce(function(result, identifier) {
|
|
12760
|
+
result[identifier.toLowerCase()] = true;
|
|
12761
|
+
return result;
|
|
12762
|
+
}, dict);
|
|
12763
|
+
}
|
|
11889
12764
|
function parseMasterPlaylist(lines, parentUrl) {
|
|
11890
12765
|
var master = new MasterPlaylist();
|
|
11891
12766
|
var index = 0;
|
|
@@ -11994,9 +12869,6 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
11994
12869
|
var endOfList = false;
|
|
11995
12870
|
var partSegmentIndex = 0;
|
|
11996
12871
|
while (line = lines[index++]) {
|
|
11997
|
-
if (endOfList) {
|
|
11998
|
-
break;
|
|
11999
|
-
}
|
|
12000
12872
|
if (line[0] !== "#") {
|
|
12001
12873
|
if (media.lowLatency) {
|
|
12002
12874
|
curSN++;
|
|
@@ -12045,16 +12917,11 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12045
12917
|
media.canBlockReload = _attr["CAN-BLOCK-RELOAD"] === "YES";
|
|
12046
12918
|
media.partHoldBack = parseFloat(_attr["PART-HOLD-BACK"] || 0);
|
|
12047
12919
|
media.canSkipUntil = parseFloat(_attr["CAN-SKIP-UNTIL"] || 0);
|
|
12048
|
-
media.canSkipDateRanges = _attr["CAN-SKIP-DATERANGES"] === "YES";
|
|
12920
|
+
media.canSkipDateRanges = media.canSkipUntil > 0 && _attr["CAN-SKIP-DATERANGES"] === "YES";
|
|
12049
12921
|
}
|
|
12050
12922
|
break;
|
|
12051
12923
|
case "ENDLIST":
|
|
12052
12924
|
{
|
|
12053
|
-
var _lastSegment = media.segments[media.segments.length - 1];
|
|
12054
|
-
if (_lastSegment) {
|
|
12055
|
-
_lastSegment.isLast = true;
|
|
12056
|
-
}
|
|
12057
|
-
media.live = false;
|
|
12058
12925
|
endOfList = true;
|
|
12059
12926
|
}
|
|
12060
12927
|
break;
|
|
@@ -12094,6 +12961,15 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12094
12961
|
}
|
|
12095
12962
|
break;
|
|
12096
12963
|
case "PRELOAD-HINT":
|
|
12964
|
+
{
|
|
12965
|
+
var _attr3 = parseAttr(data);
|
|
12966
|
+
media.preloadHint = _attr3;
|
|
12967
|
+
if (_attr3["TYPE"] === "PART" && _attr3["URI"]) {
|
|
12968
|
+
var tmp = _attr3["URI"].split(".ts")[0].split("-");
|
|
12969
|
+
media.nextSN = tmp[3];
|
|
12970
|
+
media.nextIndex = tmp[tmp.length - 1];
|
|
12971
|
+
}
|
|
12972
|
+
}
|
|
12097
12973
|
break;
|
|
12098
12974
|
case "PROGRAM-DATE-TIME":
|
|
12099
12975
|
curSegment.dataTime = data;
|
|
@@ -12113,21 +12989,21 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12113
12989
|
break;
|
|
12114
12990
|
case "KEY":
|
|
12115
12991
|
{
|
|
12116
|
-
var
|
|
12117
|
-
if (
|
|
12992
|
+
var _attr4 = parseAttr(data);
|
|
12993
|
+
if (_attr4.METHOD === "NONE") {
|
|
12118
12994
|
curKey = null;
|
|
12119
12995
|
break;
|
|
12120
12996
|
}
|
|
12121
12997
|
curKey = new MediaSegmentKey();
|
|
12122
|
-
curKey.method =
|
|
12123
|
-
curKey.url = /^blob:/.test(
|
|
12124
|
-
curKey.keyFormat =
|
|
12125
|
-
curKey.keyFormatVersions =
|
|
12998
|
+
curKey.method = _attr4.METHOD;
|
|
12999
|
+
curKey.url = /^blob:/.test(_attr4.URI) ? _attr4.URI : getAbsoluteUrl(_attr4.URI, parentUrl);
|
|
13000
|
+
curKey.keyFormat = _attr4.KEYFORMAT || "identity";
|
|
13001
|
+
curKey.keyFormatVersions = _attr4.KEYFORMATVERSIONS;
|
|
12126
13002
|
if (!curKey.isSupported()) {
|
|
12127
|
-
throw new Error("encrypt ".concat(
|
|
13003
|
+
throw new Error("encrypt ".concat(_attr4.METHOD, "/").concat(_attr4.KEYFORMAT, " is not supported"));
|
|
12128
13004
|
}
|
|
12129
|
-
if (
|
|
12130
|
-
var str =
|
|
13005
|
+
if (_attr4.IV) {
|
|
13006
|
+
var str = _attr4.IV.slice(2);
|
|
12131
13007
|
str = (str.length & 1 ? "0" : "") + str;
|
|
12132
13008
|
curKey.iv = new Uint8Array(str.length / 2);
|
|
12133
13009
|
for (var i = 0, l = str.length / 2; i < l; i++) {
|
|
@@ -12138,10 +13014,10 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12138
13014
|
break;
|
|
12139
13015
|
case "MAP":
|
|
12140
13016
|
{
|
|
12141
|
-
var
|
|
12142
|
-
curSegment.url = getAbsoluteUrl(
|
|
12143
|
-
if (
|
|
12144
|
-
curSegment.setByteRange(
|
|
13017
|
+
var _attr5 = parseAttr(data);
|
|
13018
|
+
curSegment.url = getAbsoluteUrl(_attr5.URI, parentUrl);
|
|
13019
|
+
if (_attr5.BYTERANGE)
|
|
13020
|
+
curSegment.setByteRange(_attr5.BYTERANGE);
|
|
12145
13021
|
curSegment.isInitSegment = true;
|
|
12146
13022
|
curSegment.sn = 0;
|
|
12147
13023
|
if (curKey) {
|
|
@@ -12151,6 +13027,30 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12151
13027
|
curSegment = new MediaSegment(parentUrl);
|
|
12152
13028
|
}
|
|
12153
13029
|
break;
|
|
13030
|
+
case "SKIP":
|
|
13031
|
+
{
|
|
13032
|
+
var _attr6 = parseAttr(data);
|
|
13033
|
+
var skippedSegments = parseInt(_attr6["SKIPPED-SEGMENTS"], 10);
|
|
13034
|
+
if (skippedSegments <= Number.MAX_SAFE_INTEGER) {
|
|
13035
|
+
media.skippedSegments += skippedSegments;
|
|
13036
|
+
curSN += skippedSegments;
|
|
13037
|
+
}
|
|
13038
|
+
}
|
|
13039
|
+
break;
|
|
13040
|
+
case "DATERANGE":
|
|
13041
|
+
{
|
|
13042
|
+
var _attr7 = parseAttr(data);
|
|
13043
|
+
var dateRangeWithSameId = media.dateRanges[_attr7.ID];
|
|
13044
|
+
_attr7._startDate = dateRangeWithSameId ? dateRangeWithSameId._startDate : new Date(_attr7["START-DATE"]);
|
|
13045
|
+
var endDate = (dateRangeWithSameId === null || dateRangeWithSameId === void 0 ? void 0 : dateRangeWithSameId._endDate) || new Date(_attr7.END_DATE);
|
|
13046
|
+
if (Number.isFinite(endDate)) {
|
|
13047
|
+
_attr7._endDate = endDate;
|
|
13048
|
+
}
|
|
13049
|
+
if (isValidDaterange(_attr7, dateRangeWithSameId) || media.skippedSegments) {
|
|
13050
|
+
media.dateRanges[_attr7.ID] = _attr7;
|
|
13051
|
+
}
|
|
13052
|
+
}
|
|
13053
|
+
break;
|
|
12154
13054
|
}
|
|
12155
13055
|
}
|
|
12156
13056
|
media.segments = media.segments.filter(function(x) {
|
|
@@ -12158,11 +13058,14 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12158
13058
|
});
|
|
12159
13059
|
var lastSegment = media.segments[media.segments.length - 1];
|
|
12160
13060
|
if (lastSegment) {
|
|
12161
|
-
|
|
12162
|
-
media.endPartIndex = lastSegment.partIndex;
|
|
12163
|
-
if (endOfList && !lastSegment.isLast) {
|
|
13061
|
+
if (endOfList) {
|
|
12164
13062
|
lastSegment.isLast = true;
|
|
12165
13063
|
}
|
|
13064
|
+
media.endSN = lastSegment.sn;
|
|
13065
|
+
media.endPartIndex = lastSegment.partIndex;
|
|
13066
|
+
}
|
|
13067
|
+
if (endOfList) {
|
|
13068
|
+
media.live = false;
|
|
12166
13069
|
}
|
|
12167
13070
|
media.totalDuration = totalDuration;
|
|
12168
13071
|
media.endCC = curCC;
|
|
@@ -12341,6 +13244,13 @@ var ManifestLoader = /* @__PURE__ */ function() {
|
|
|
12341
13244
|
playlist
|
|
12342
13245
|
});
|
|
12343
13246
|
} else {
|
|
13247
|
+
if (this._useLowLatency) {
|
|
13248
|
+
if (playlist.canBlockReload) {
|
|
13249
|
+
this.deliveryDirectives = new HlsUrlParameters(playlist.nextSN, playlist.nextIndex, "");
|
|
13250
|
+
} else {
|
|
13251
|
+
this.deliveryDirectives = null;
|
|
13252
|
+
}
|
|
13253
|
+
}
|
|
12344
13254
|
this.hls.emit(Event$1.HLS_LEVEL_LOADED, {
|
|
12345
13255
|
playlist
|
|
12346
13256
|
});
|
|
@@ -12397,41 +13307,45 @@ var ManifestLoader = /* @__PURE__ */ function() {
|
|
|
12397
13307
|
var retryCount = this.hls.config.pollRetryCount;
|
|
12398
13308
|
var fn = /* @__PURE__ */ function() {
|
|
12399
13309
|
var _ref2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2() {
|
|
12400
|
-
var res;
|
|
13310
|
+
var reqUrl, res;
|
|
12401
13311
|
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
12402
13312
|
while (1)
|
|
12403
13313
|
switch (_context2.prev = _context2.next) {
|
|
12404
13314
|
case 0:
|
|
12405
13315
|
clearTimeout(_this2._timer);
|
|
12406
|
-
|
|
12407
|
-
_context2.
|
|
12408
|
-
|
|
12409
|
-
|
|
13316
|
+
reqUrl = url;
|
|
13317
|
+
_context2.prev = 2;
|
|
13318
|
+
if (_this2.deliveryDirectives) {
|
|
13319
|
+
reqUrl = _this2.deliveryDirectives.addDirectives(url);
|
|
13320
|
+
}
|
|
13321
|
+
_context2.next = 6;
|
|
13322
|
+
return _this2.load(reqUrl, audioUrl, subtitleUrl);
|
|
13323
|
+
case 6:
|
|
12410
13324
|
res = _context2.sent;
|
|
12411
13325
|
if (res[0]) {
|
|
12412
|
-
_context2.next =
|
|
13326
|
+
_context2.next = 9;
|
|
12413
13327
|
break;
|
|
12414
13328
|
}
|
|
12415
13329
|
return _context2.abrupt("return");
|
|
12416
|
-
case
|
|
13330
|
+
case 9:
|
|
12417
13331
|
retryCount = _this2.hls.config.pollRetryCount;
|
|
12418
13332
|
cb(res[0], res[1], res[2]);
|
|
12419
|
-
_context2.next =
|
|
13333
|
+
_context2.next = 17;
|
|
12420
13334
|
break;
|
|
12421
|
-
case
|
|
12422
|
-
_context2.prev =
|
|
12423
|
-
_context2.t0 = _context2["catch"](
|
|
13335
|
+
case 13:
|
|
13336
|
+
_context2.prev = 13;
|
|
13337
|
+
_context2.t0 = _context2["catch"](2);
|
|
12424
13338
|
retryCount--;
|
|
12425
13339
|
if (retryCount <= 0) {
|
|
12426
13340
|
errorCb(_context2.t0);
|
|
12427
13341
|
}
|
|
12428
|
-
case
|
|
13342
|
+
case 17:
|
|
12429
13343
|
_this2._timer = setTimeout(fn, time);
|
|
12430
|
-
case
|
|
13344
|
+
case 18:
|
|
12431
13345
|
case "end":
|
|
12432
13346
|
return _context2.stop();
|
|
12433
13347
|
}
|
|
12434
|
-
}, _callee2, null, [[
|
|
13348
|
+
}, _callee2, null, [[2, 13]]);
|
|
12435
13349
|
}));
|
|
12436
13350
|
return function fn2() {
|
|
12437
13351
|
return _ref2.apply(this, arguments);
|
|
@@ -12961,7 +13875,7 @@ var Playlist = /* @__PURE__ */ function() {
|
|
|
12961
13875
|
}, {
|
|
12962
13876
|
key: "clearOldSegment",
|
|
12963
13877
|
value: function clearOldSegment() {
|
|
12964
|
-
var maxPlaylistSize = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 50;
|
|
13878
|
+
var maxPlaylistSize = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.hls.config.maxPlaylistSize || 50;
|
|
12965
13879
|
var stream = this.currentStream;
|
|
12966
13880
|
if (!this.dvrWindow || !stream)
|
|
12967
13881
|
return;
|
|
@@ -13259,7 +14173,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13259
14173
|
_defineProperty$3(_assertThisInitialized$2(_this), "_switchUrlOpts", null);
|
|
13260
14174
|
_defineProperty$3(_assertThisInitialized$2(_this), "_isProcessQuotaExceeded", false);
|
|
13261
14175
|
_defineProperty$3(_assertThisInitialized$2(_this), "_loadSegment", /* @__PURE__ */ _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee() {
|
|
13262
|
-
var
|
|
14176
|
+
var _this$_playlist, nextSegment, lastSegment, _assertThisInitialize, config, minFrameDuration, maxBufferThroughout, bInfo, bufferThroughout;
|
|
13263
14177
|
return _regeneratorRuntime$1().wrap(function _callee$(_context) {
|
|
13264
14178
|
while (1)
|
|
13265
14179
|
switch (_context.prev = _context.next) {
|
|
@@ -13270,42 +14184,44 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13270
14184
|
}
|
|
13271
14185
|
return _context.abrupt("return");
|
|
13272
14186
|
case 2:
|
|
13273
|
-
|
|
14187
|
+
_this$_playlist = _this._playlist, nextSegment = _this$_playlist.nextSegment, lastSegment = _this$_playlist.lastSegment;
|
|
13274
14188
|
_assertThisInitialize = _assertThisInitialized$2(_this), config = _assertThisInitialize.config;
|
|
13275
|
-
|
|
13276
|
-
|
|
14189
|
+
minFrameDuration = 0.016;
|
|
14190
|
+
maxBufferThroughout = Math.min(Math.max((lastSegment === null || lastSegment === void 0 ? void 0 : lastSegment.duration) - minFrameDuration / 2 || 0, minFrameDuration), 0.1);
|
|
14191
|
+
if (nextSegment) {
|
|
14192
|
+
_context.next = 8;
|
|
13277
14193
|
break;
|
|
13278
14194
|
}
|
|
13279
14195
|
return _context.abrupt("return");
|
|
13280
|
-
case
|
|
14196
|
+
case 8:
|
|
13281
14197
|
if (_this.isLive) {
|
|
13282
|
-
_context.next =
|
|
14198
|
+
_context.next = 18;
|
|
13283
14199
|
break;
|
|
13284
14200
|
}
|
|
13285
14201
|
bInfo = _this.bufferInfo();
|
|
13286
14202
|
if (_this.media.paused && !_this.media.currentTime) {
|
|
13287
14203
|
bInfo = _this.bufferInfo(bInfo.nextStart || 0.5);
|
|
13288
14204
|
}
|
|
13289
|
-
bufferThroughout = Math.abs(bInfo.end - _this.media.duration) <
|
|
14205
|
+
bufferThroughout = Math.abs(bInfo.end - _this.media.duration) < maxBufferThroughout;
|
|
13290
14206
|
if (!(bInfo.remaining >= config.preloadTime || bufferThroughout)) {
|
|
13291
|
-
_context.next =
|
|
14207
|
+
_context.next = 15;
|
|
13292
14208
|
break;
|
|
13293
14209
|
}
|
|
13294
14210
|
_this._tryEos();
|
|
13295
14211
|
return _context.abrupt("return");
|
|
13296
|
-
case
|
|
14212
|
+
case 15:
|
|
13297
14213
|
if (!(config.preferMMSStreaming && !_this._bufferService.msStreaming)) {
|
|
13298
|
-
_context.next =
|
|
14214
|
+
_context.next = 17;
|
|
13299
14215
|
break;
|
|
13300
14216
|
}
|
|
13301
14217
|
return _context.abrupt("return");
|
|
13302
|
-
case
|
|
13303
|
-
if (!_this._urlSwitching && _this._prevSegSn !==
|
|
14218
|
+
case 17:
|
|
14219
|
+
if (!_this._urlSwitching && _this._prevSegSn !== nextSegment.sn - 1 && bInfo.end && Math.abs(nextSegment.start - bInfo.end) > 1) {
|
|
13304
14220
|
_this._playlist.setNextSegmentByIndex(_this._playlist.findSegmentIndexByTime(bInfo.end + 0.1));
|
|
13305
14221
|
}
|
|
13306
|
-
case
|
|
14222
|
+
case 18:
|
|
13307
14223
|
return _context.abrupt("return", _this._loadSegmentDirect());
|
|
13308
|
-
case
|
|
14224
|
+
case 19:
|
|
13309
14225
|
case "end":
|
|
13310
14226
|
return _context.stop();
|
|
13311
14227
|
}
|
|
@@ -13470,7 +14386,6 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13470
14386
|
return;
|
|
13471
14387
|
_this._startTick();
|
|
13472
14388
|
var media = _this.media;
|
|
13473
|
-
var buffered = Buffer$1.get(media);
|
|
13474
14389
|
var segLoaderError = _this._segmentLoader.error;
|
|
13475
14390
|
_this._onCheckQuotaExceeded();
|
|
13476
14391
|
if (_this._isProcessQuotaExceeded) {
|
|
@@ -13487,7 +14402,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13487
14402
|
}
|
|
13488
14403
|
return;
|
|
13489
14404
|
}
|
|
13490
|
-
if (
|
|
14405
|
+
if (media.readyState) {
|
|
13491
14406
|
if (isMediaPlaying(media)) {
|
|
13492
14407
|
_this._loadSegment();
|
|
13493
14408
|
if (_this._gapService) {
|
|
@@ -13553,6 +14468,12 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13553
14468
|
var _this$_bufferService;
|
|
13554
14469
|
return (_this$_bufferService = this._bufferService) === null || _this$_bufferService === void 0 ? void 0 : _this$_bufferService.baseDts;
|
|
13555
14470
|
}
|
|
14471
|
+
}, {
|
|
14472
|
+
key: "abrSwitchPoint",
|
|
14473
|
+
get: function get() {
|
|
14474
|
+
var targetSeg = this._urlSwitching ? this._playlist.currentSegment : this._playlist.nextSegment;
|
|
14475
|
+
return targetSeg ? targetSeg.start + targetSeg.duration / 2 : null;
|
|
14476
|
+
}
|
|
13556
14477
|
}, {
|
|
13557
14478
|
key: "speedInfo",
|
|
13558
14479
|
value: function speedInfo() {
|
|
@@ -13578,30 +14499,37 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13578
14499
|
}, {
|
|
13579
14500
|
key: "load",
|
|
13580
14501
|
value: function() {
|
|
13581
|
-
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4(
|
|
13582
|
-
var reuseMse, _args4 = arguments;
|
|
14502
|
+
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4() {
|
|
14503
|
+
var url, options, reuseMse, _args4 = arguments;
|
|
13583
14504
|
return _regeneratorRuntime$1().wrap(function _callee4$(_context4) {
|
|
13584
14505
|
while (1)
|
|
13585
14506
|
switch (_context4.prev = _context4.next) {
|
|
13586
14507
|
case 0:
|
|
13587
|
-
|
|
14508
|
+
url = _args4.length > 0 && _args4[0] !== void 0 ? _args4[0] : "";
|
|
14509
|
+
options = _args4.length > 1 && _args4[1] !== void 0 ? _args4[1] : {};
|
|
14510
|
+
reuseMse = typeof options === "boolean" ? options : !!(options !== null && options !== void 0 && options.reuseMse);
|
|
14511
|
+
if (_typeof$2(options) === "object" && options !== null && options !== void 0 && options.clearSwitchStatus) {
|
|
14512
|
+
this._urlSwitching = false;
|
|
14513
|
+
this._switchUrlOpts = null;
|
|
14514
|
+
this.config.startTime = void 0;
|
|
14515
|
+
}
|
|
13588
14516
|
if (url)
|
|
13589
14517
|
this.config.url = url;
|
|
13590
14518
|
url = this.config.url;
|
|
13591
|
-
_context4.next =
|
|
14519
|
+
_context4.next = 8;
|
|
13592
14520
|
return this._reset(reuseMse);
|
|
13593
|
-
case
|
|
13594
|
-
_context4.next =
|
|
14521
|
+
case 8:
|
|
14522
|
+
_context4.next = 10;
|
|
13595
14523
|
return this._loadData(url);
|
|
13596
|
-
case
|
|
14524
|
+
case 10:
|
|
13597
14525
|
this._startTick();
|
|
13598
|
-
case
|
|
14526
|
+
case 11:
|
|
13599
14527
|
case "end":
|
|
13600
14528
|
return _context4.stop();
|
|
13601
14529
|
}
|
|
13602
14530
|
}, _callee4, this);
|
|
13603
14531
|
}));
|
|
13604
|
-
function load(
|
|
14532
|
+
function load() {
|
|
13605
14533
|
return _load.apply(this, arguments);
|
|
13606
14534
|
}
|
|
13607
14535
|
return load;
|
|
@@ -13610,7 +14538,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13610
14538
|
key: "_loadData",
|
|
13611
14539
|
value: function() {
|
|
13612
14540
|
var _loadData2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee5(url) {
|
|
13613
|
-
var manifest, currentStream, _this$_switchUrlOpts, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint,
|
|
14541
|
+
var manifest, currentStream, preIndex, _this$_switchUrlOpts, _this$_switchUrlOpts3, _this$_switchUrlOpts4, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint, startTime, _this$_switchUrlOpts5;
|
|
13614
14542
|
return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
|
|
13615
14543
|
while (1)
|
|
13616
14544
|
switch (_context5.prev = _context5.next) {
|
|
@@ -13631,41 +14559,46 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13631
14559
|
case 5:
|
|
13632
14560
|
manifest = _context5.sent;
|
|
13633
14561
|
currentStream = this._playlist.currentStream;
|
|
13634
|
-
if (!
|
|
13635
|
-
_context5.next =
|
|
14562
|
+
if (!this._urlSwitching) {
|
|
14563
|
+
_context5.next = 23;
|
|
13636
14564
|
break;
|
|
13637
14565
|
}
|
|
14566
|
+
if (!this.isLive) {
|
|
14567
|
+
_context5.next = 14;
|
|
14568
|
+
break;
|
|
14569
|
+
}
|
|
14570
|
+
preIndex = this._playlist.setNextSegmentBySN(this._prevSegSn);
|
|
14571
|
+
logger.log("segment nb=".concat(this._prevSegSn, " index of ").concat(preIndex, " in the new playlist"));
|
|
14572
|
+
if (preIndex === -1) {
|
|
14573
|
+
this._prevSegCc = null;
|
|
14574
|
+
this._prevSegSn = null;
|
|
14575
|
+
}
|
|
14576
|
+
_context5.next = 23;
|
|
14577
|
+
break;
|
|
14578
|
+
case 14:
|
|
13638
14579
|
if (currentStream.bitrate === 0 && (_this$_switchUrlOpts = this._switchUrlOpts) !== null && _this$_switchUrlOpts !== void 0 && _this$_switchUrlOpts.bitrate) {
|
|
13639
14580
|
currentStream.bitrate = (_this$_switchUrlOpts2 = this._switchUrlOpts) === null || _this$_switchUrlOpts2 === void 0 ? void 0 : _this$_switchUrlOpts2.bitrate;
|
|
13640
14581
|
}
|
|
13641
|
-
switchTimePoint = this._getSeamlessSwitchPoint();
|
|
14582
|
+
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
14583
|
this.config.startTime = switchTimePoint;
|
|
13643
14584
|
segIdx = this._playlist.findSegmentIndexByTime(switchTimePoint);
|
|
13644
14585
|
nextSeg = this._playlist.getSegmentByIndex(segIdx + 1);
|
|
13645
14586
|
if (!nextSeg) {
|
|
13646
|
-
_context5.next =
|
|
14587
|
+
_context5.next = 23;
|
|
13647
14588
|
break;
|
|
13648
14589
|
}
|
|
13649
14590
|
bufferClearStartPoint = nextSeg.start;
|
|
13650
|
-
_context5.next =
|
|
14591
|
+
_context5.next = 23;
|
|
13651
14592
|
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
|
-
}
|
|
14593
|
+
case 23:
|
|
13661
14594
|
if (manifest) {
|
|
13662
|
-
_context5.next =
|
|
14595
|
+
_context5.next = 25;
|
|
13663
14596
|
break;
|
|
13664
14597
|
}
|
|
13665
14598
|
return _context5.abrupt("return");
|
|
13666
|
-
case
|
|
14599
|
+
case 25:
|
|
13667
14600
|
if (!this.isLive) {
|
|
13668
|
-
_context5.next =
|
|
14601
|
+
_context5.next = 36;
|
|
13669
14602
|
break;
|
|
13670
14603
|
}
|
|
13671
14604
|
this._bufferService.setLiveSeekableRange(0, 4294967295);
|
|
@@ -13678,35 +14611,35 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13678
14611
|
if (!manifest.isMaster)
|
|
13679
14612
|
this._pollM3U8(url);
|
|
13680
14613
|
if (!(this._playlist.nbSegments < this.config.minSegmentsStartPlay)) {
|
|
13681
|
-
_context5.next =
|
|
14614
|
+
_context5.next = 33;
|
|
13682
14615
|
break;
|
|
13683
14616
|
}
|
|
13684
14617
|
return _context5.abrupt("return");
|
|
13685
|
-
case
|
|
13686
|
-
_context5.next =
|
|
14618
|
+
case 33:
|
|
14619
|
+
_context5.next = 35;
|
|
13687
14620
|
return this._loadSegment();
|
|
13688
|
-
case
|
|
14621
|
+
case 35:
|
|
13689
14622
|
return _context5.abrupt("return");
|
|
13690
|
-
case
|
|
13691
|
-
_context5.next =
|
|
14623
|
+
case 36:
|
|
14624
|
+
_context5.next = 38;
|
|
13692
14625
|
return this._bufferService.updateDuration(currentStream.totalDuration);
|
|
13693
|
-
case
|
|
14626
|
+
case 38:
|
|
13694
14627
|
startTime = this.config.startTime;
|
|
13695
14628
|
if (startTime) {
|
|
13696
|
-
if (!((_this$
|
|
14629
|
+
if (!((_this$_switchUrlOpts5 = this._switchUrlOpts) !== null && _this$_switchUrlOpts5 !== void 0 && _this$_switchUrlOpts5.seamless)) {
|
|
13697
14630
|
this.media.currentTime = startTime;
|
|
13698
14631
|
}
|
|
13699
14632
|
this._playlist.setNextSegmentByIndex(this._playlist.findSegmentIndexByTime(startTime) || 0);
|
|
13700
14633
|
}
|
|
13701
|
-
_context5.next =
|
|
14634
|
+
_context5.next = 42;
|
|
13702
14635
|
return this._loadSegment();
|
|
13703
|
-
case
|
|
14636
|
+
case 42:
|
|
13704
14637
|
case "end":
|
|
13705
14638
|
return _context5.stop();
|
|
13706
14639
|
}
|
|
13707
14640
|
}, _callee5, this);
|
|
13708
14641
|
}));
|
|
13709
|
-
function _loadData(
|
|
14642
|
+
function _loadData(_x) {
|
|
13710
14643
|
return _loadData2.apply(this, arguments);
|
|
13711
14644
|
}
|
|
13712
14645
|
return _loadData;
|
|
@@ -13720,18 +14653,20 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13720
14653
|
switch (_context6.prev = _context6.next) {
|
|
13721
14654
|
case 0:
|
|
13722
14655
|
this.config.startTime = 0;
|
|
13723
|
-
|
|
14656
|
+
this._urlSwitching = false;
|
|
14657
|
+
this._switchUrlOpts = null;
|
|
14658
|
+
_context6.next = 5;
|
|
13724
14659
|
return this.load();
|
|
13725
|
-
case
|
|
14660
|
+
case 5:
|
|
13726
14661
|
this._reloadOnPlay = false;
|
|
13727
14662
|
return _context6.abrupt("return", this.media.play(!isPlayEmit));
|
|
13728
|
-
case
|
|
14663
|
+
case 7:
|
|
13729
14664
|
case "end":
|
|
13730
14665
|
return _context6.stop();
|
|
13731
14666
|
}
|
|
13732
14667
|
}, _callee6, this);
|
|
13733
14668
|
}));
|
|
13734
|
-
function replay(
|
|
14669
|
+
function replay(_x2) {
|
|
13735
14670
|
return _replay.apply(this, arguments);
|
|
13736
14671
|
}
|
|
13737
14672
|
return replay;
|
|
@@ -13836,7 +14771,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13836
14771
|
}
|
|
13837
14772
|
}, _callee7, this, [[18, 29]]);
|
|
13838
14773
|
}));
|
|
13839
|
-
function switchURL(
|
|
14774
|
+
function switchURL(_x3) {
|
|
13840
14775
|
return _switchURL.apply(this, arguments);
|
|
13841
14776
|
}
|
|
13842
14777
|
return switchURL;
|
|
@@ -13922,7 +14857,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13922
14857
|
}
|
|
13923
14858
|
}, _callee8, this, [[8, 16], [21, 31]]);
|
|
13924
14859
|
}));
|
|
13925
|
-
function switchStream(
|
|
14860
|
+
function switchStream(_x4) {
|
|
13926
14861
|
return _switchStream.apply(this, arguments);
|
|
13927
14862
|
}
|
|
13928
14863
|
return switchStream;
|
|
@@ -14008,7 +14943,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14008
14943
|
}
|
|
14009
14944
|
}, _callee9, this, [[10, 18], [22, 32]]);
|
|
14010
14945
|
}));
|
|
14011
|
-
function switchAudioStream(
|
|
14946
|
+
function switchAudioStream(_x5) {
|
|
14012
14947
|
return _switchAudioStream.apply(this, arguments);
|
|
14013
14948
|
}
|
|
14014
14949
|
return switchAudioStream;
|
|
@@ -14033,25 +14968,50 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14033
14968
|
}
|
|
14034
14969
|
}, _callee10, this);
|
|
14035
14970
|
}));
|
|
14036
|
-
function switchSubtitleStream(
|
|
14971
|
+
function switchSubtitleStream(_x6) {
|
|
14037
14972
|
return _switchSubtitleStream.apply(this, arguments);
|
|
14038
14973
|
}
|
|
14039
14974
|
return switchSubtitleStream;
|
|
14040
14975
|
}()
|
|
14041
14976
|
}, {
|
|
14042
|
-
key: "
|
|
14977
|
+
key: "detachMedia",
|
|
14043
14978
|
value: function() {
|
|
14044
|
-
var
|
|
14045
|
-
var _this$_seiService2;
|
|
14979
|
+
var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee11() {
|
|
14046
14980
|
return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
|
|
14047
14981
|
while (1)
|
|
14048
14982
|
switch (_context11.prev = _context11.next) {
|
|
14983
|
+
case 0:
|
|
14984
|
+
if (!this._bufferService) {
|
|
14985
|
+
_context11.next = 3;
|
|
14986
|
+
break;
|
|
14987
|
+
}
|
|
14988
|
+
_context11.next = 3;
|
|
14989
|
+
return this._bufferService.detachMedia();
|
|
14990
|
+
case 3:
|
|
14991
|
+
case "end":
|
|
14992
|
+
return _context11.stop();
|
|
14993
|
+
}
|
|
14994
|
+
}, _callee11, this);
|
|
14995
|
+
}));
|
|
14996
|
+
function detachMedia() {
|
|
14997
|
+
return _detachMedia.apply(this, arguments);
|
|
14998
|
+
}
|
|
14999
|
+
return detachMedia;
|
|
15000
|
+
}()
|
|
15001
|
+
}, {
|
|
15002
|
+
key: "destroy",
|
|
15003
|
+
value: function() {
|
|
15004
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee12() {
|
|
15005
|
+
var _this$_seiService2;
|
|
15006
|
+
return _regeneratorRuntime$1().wrap(function _callee12$(_context12) {
|
|
15007
|
+
while (1)
|
|
15008
|
+
switch (_context12.prev = _context12.next) {
|
|
14049
15009
|
case 0:
|
|
14050
15010
|
if (this.media) {
|
|
14051
|
-
|
|
15011
|
+
_context12.next = 2;
|
|
14052
15012
|
break;
|
|
14053
15013
|
}
|
|
14054
|
-
return
|
|
15014
|
+
return _context12.abrupt("return");
|
|
14055
15015
|
case 2:
|
|
14056
15016
|
this.removeAllListeners();
|
|
14057
15017
|
this._playlist.reset();
|
|
@@ -14062,15 +15022,15 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14062
15022
|
this.media.removeEventListener("pause", this._onPause);
|
|
14063
15023
|
this.media.removeEventListener("seeking", this._onSeeking);
|
|
14064
15024
|
this.media.removeEventListener("timeupdate", this._onTimeupdate);
|
|
14065
|
-
|
|
15025
|
+
_context12.next = 13;
|
|
14066
15026
|
return Promise.all([this._clear(), this._bufferService.destroy()]);
|
|
14067
15027
|
case 13:
|
|
14068
15028
|
this.media = null;
|
|
14069
15029
|
case 14:
|
|
14070
15030
|
case "end":
|
|
14071
|
-
return
|
|
15031
|
+
return _context12.stop();
|
|
14072
15032
|
}
|
|
14073
|
-
},
|
|
15033
|
+
}, _callee12, this);
|
|
14074
15034
|
}));
|
|
14075
15035
|
function destroy() {
|
|
14076
15036
|
return _destroy.apply(this, arguments);
|
|
@@ -14080,48 +15040,48 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14080
15040
|
}, {
|
|
14081
15041
|
key: "_loadM3U8",
|
|
14082
15042
|
value: function() {
|
|
14083
|
-
var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15043
|
+
var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee13(url) {
|
|
14084
15044
|
var playlist, _this$config$manifest, _this$config$manifest2, manifest, _ref4, _ref5, _this$_playlist$curre;
|
|
14085
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15045
|
+
return _regeneratorRuntime$1().wrap(function _callee13$(_context13) {
|
|
14086
15046
|
while (1)
|
|
14087
|
-
switch (
|
|
15047
|
+
switch (_context13.prev = _context13.next) {
|
|
14088
15048
|
case 0:
|
|
14089
|
-
|
|
15049
|
+
_context13.prev = 0;
|
|
14090
15050
|
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
15051
|
return x.url === url;
|
|
14092
15052
|
})[0]) === null || _this$config$manifest2 === void 0 ? void 0 : _this$config$manifest2.manifest;
|
|
14093
15053
|
if (!manifest) {
|
|
14094
|
-
|
|
15054
|
+
_context13.next = 6;
|
|
14095
15055
|
break;
|
|
14096
15056
|
}
|
|
14097
|
-
|
|
14098
|
-
|
|
15057
|
+
_context13.t0 = this._manifestLoader.parseText(manifest, url);
|
|
15058
|
+
_context13.next = 9;
|
|
14099
15059
|
break;
|
|
14100
15060
|
case 6:
|
|
14101
|
-
|
|
15061
|
+
_context13.next = 8;
|
|
14102
15062
|
return this._manifestLoader.load(url);
|
|
14103
15063
|
case 8:
|
|
14104
|
-
|
|
15064
|
+
_context13.t0 = _context13.sent;
|
|
14105
15065
|
case 9:
|
|
14106
|
-
_ref4 =
|
|
15066
|
+
_ref4 = _context13.t0;
|
|
14107
15067
|
_ref5 = _slicedToArray$1(_ref4, 1);
|
|
14108
15068
|
playlist = _ref5[0];
|
|
14109
|
-
|
|
15069
|
+
_context13.next = 17;
|
|
14110
15070
|
break;
|
|
14111
15071
|
case 14:
|
|
14112
|
-
|
|
14113
|
-
|
|
14114
|
-
throw this._emitError(StreamingError.create(
|
|
15072
|
+
_context13.prev = 14;
|
|
15073
|
+
_context13.t1 = _context13["catch"](0);
|
|
15074
|
+
throw this._emitError(StreamingError.create(_context13.t1));
|
|
14115
15075
|
case 17:
|
|
14116
15076
|
if (playlist) {
|
|
14117
|
-
|
|
15077
|
+
_context13.next = 19;
|
|
14118
15078
|
break;
|
|
14119
15079
|
}
|
|
14120
|
-
return
|
|
15080
|
+
return _context13.abrupt("return");
|
|
14121
15081
|
case 19:
|
|
14122
15082
|
this._playlist.upsertPlaylist(playlist);
|
|
14123
15083
|
if (!playlist.isMaster) {
|
|
14124
|
-
|
|
15084
|
+
_context13.next = 24;
|
|
14125
15085
|
break;
|
|
14126
15086
|
}
|
|
14127
15087
|
if ((_this$_playlist$curre = this._playlist.currentStream.subtitleStreams) !== null && _this$_playlist$curre !== void 0 && _this$_playlist$curre.length) {
|
|
@@ -14129,18 +15089,18 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14129
15089
|
list: this._playlist.currentStream.subtitleStreams
|
|
14130
15090
|
});
|
|
14131
15091
|
}
|
|
14132
|
-
|
|
15092
|
+
_context13.next = 24;
|
|
14133
15093
|
return this._refreshM3U8();
|
|
14134
15094
|
case 24:
|
|
14135
15095
|
this.emit(Event$1.STREAM_PARSED);
|
|
14136
|
-
return
|
|
15096
|
+
return _context13.abrupt("return", playlist);
|
|
14137
15097
|
case 26:
|
|
14138
15098
|
case "end":
|
|
14139
|
-
return
|
|
15099
|
+
return _context13.stop();
|
|
14140
15100
|
}
|
|
14141
|
-
},
|
|
15101
|
+
}, _callee13, this, [[0, 14]]);
|
|
14142
15102
|
}));
|
|
14143
|
-
function _loadM3U8(
|
|
15103
|
+
function _loadM3U8(_x7) {
|
|
14144
15104
|
return _loadM3U.apply(this, arguments);
|
|
14145
15105
|
}
|
|
14146
15106
|
return _loadM3U8;
|
|
@@ -14174,7 +15134,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14174
15134
|
var isEmpty = this._playlist.isEmpty;
|
|
14175
15135
|
var pollInterval;
|
|
14176
15136
|
if (this._playlist.lowLatency) {
|
|
14177
|
-
pollInterval = (this._playlist.currentStream.partTargetDuration
|
|
15137
|
+
pollInterval = (this._playlist.currentStream.partTargetDuration || 0) * 1e3;
|
|
14178
15138
|
} else {
|
|
14179
15139
|
var _this$_playlist$lastS;
|
|
14180
15140
|
pollInterval = (((_this$_playlist$lastS = this._playlist.lastSegment) === null || _this$_playlist$lastS === void 0 ? void 0 : _this$_playlist$lastS.duration) || 0) * 1e3;
|
|
@@ -14202,53 +15162,53 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14202
15162
|
}, {
|
|
14203
15163
|
key: "_loadSegmentDirect",
|
|
14204
15164
|
value: function() {
|
|
14205
|
-
var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15165
|
+
var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee14(loadOnce) {
|
|
14206
15166
|
var seg, appended, cachedError, _this$_playlist$curre2, bufferEnd, sameStream;
|
|
14207
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15167
|
+
return _regeneratorRuntime$1().wrap(function _callee14$(_context14) {
|
|
14208
15168
|
while (1)
|
|
14209
|
-
switch (
|
|
15169
|
+
switch (_context14.prev = _context14.next) {
|
|
14210
15170
|
case 0:
|
|
14211
15171
|
seg = this._playlist.nextSegment;
|
|
14212
15172
|
if (seg) {
|
|
14213
|
-
|
|
15173
|
+
_context14.next = 3;
|
|
14214
15174
|
break;
|
|
14215
15175
|
}
|
|
14216
|
-
return
|
|
15176
|
+
return _context14.abrupt("return");
|
|
14217
15177
|
case 3:
|
|
14218
15178
|
appended = false;
|
|
14219
15179
|
cachedError = null;
|
|
14220
|
-
|
|
15180
|
+
_context14.prev = 5;
|
|
14221
15181
|
this._segmentProcessing = true;
|
|
14222
15182
|
logger.log("load segment, sn:".concat(seg.sn, ", [").concat(seg.start, ", ").concat(seg.end, "], partIndex:").concat(seg.partIndex));
|
|
14223
|
-
|
|
15183
|
+
_context14.next = 10;
|
|
14224
15184
|
return this._reqAndBufferSegment(seg, this._playlist.getAudioSegment(seg));
|
|
14225
15185
|
case 10:
|
|
14226
|
-
appended =
|
|
14227
|
-
|
|
15186
|
+
appended = _context14.sent;
|
|
15187
|
+
_context14.next = 16;
|
|
14228
15188
|
break;
|
|
14229
15189
|
case 13:
|
|
14230
|
-
|
|
14231
|
-
|
|
14232
|
-
cachedError =
|
|
15190
|
+
_context14.prev = 13;
|
|
15191
|
+
_context14.t0 = _context14["catch"](5);
|
|
15192
|
+
cachedError = _context14.t0;
|
|
14233
15193
|
case 16:
|
|
14234
|
-
|
|
15194
|
+
_context14.prev = 16;
|
|
14235
15195
|
this._segmentProcessing = false;
|
|
14236
|
-
return
|
|
15196
|
+
return _context14.finish(16);
|
|
14237
15197
|
case 19:
|
|
14238
15198
|
if (!cachedError) {
|
|
14239
|
-
|
|
15199
|
+
_context14.next = 26;
|
|
14240
15200
|
break;
|
|
14241
15201
|
}
|
|
14242
15202
|
if (!this._bufferService.isFull()) {
|
|
14243
|
-
|
|
15203
|
+
_context14.next = 25;
|
|
14244
15204
|
break;
|
|
14245
15205
|
}
|
|
14246
15206
|
logger.log("load segment, sn:".concat(seg.sn, ", partIndex:").concat(seg.partIndex));
|
|
14247
15207
|
this._segmentProcessing = true;
|
|
14248
15208
|
this._isProcessQuotaExceeded = true;
|
|
14249
|
-
return
|
|
15209
|
+
return _context14.abrupt("return", false);
|
|
14250
15210
|
case 25:
|
|
14251
|
-
return
|
|
15211
|
+
return _context14.abrupt("return", this._emitError(StreamingError.create(cachedError)));
|
|
14252
15212
|
case 26:
|
|
14253
15213
|
if (appended) {
|
|
14254
15214
|
bufferEnd = this.bufferInfo().end;
|
|
@@ -14274,14 +15234,14 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14274
15234
|
this._loadSegment();
|
|
14275
15235
|
}
|
|
14276
15236
|
}
|
|
14277
|
-
return
|
|
15237
|
+
return _context14.abrupt("return", appended);
|
|
14278
15238
|
case 28:
|
|
14279
15239
|
case "end":
|
|
14280
|
-
return
|
|
15240
|
+
return _context14.stop();
|
|
14281
15241
|
}
|
|
14282
|
-
},
|
|
15242
|
+
}, _callee14, this, [[5, 13, 16, 19]]);
|
|
14283
15243
|
}));
|
|
14284
|
-
function _loadSegmentDirect(
|
|
15244
|
+
function _loadSegmentDirect(_x8) {
|
|
14285
15245
|
return _loadSegmentDirect2.apply(this, arguments);
|
|
14286
15246
|
}
|
|
14287
15247
|
return _loadSegmentDirect;
|
|
@@ -14289,45 +15249,45 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14289
15249
|
}, {
|
|
14290
15250
|
key: "_reqAndBufferSegment",
|
|
14291
15251
|
value: function() {
|
|
14292
|
-
var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15252
|
+
var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee15(seg, audioSeg) {
|
|
14293
15253
|
var _this$_bufferService2;
|
|
14294
15254
|
var cc, discontinuity, responses, data, sn, start, stream, before, contiguous, segStart;
|
|
14295
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15255
|
+
return _regeneratorRuntime$1().wrap(function _callee15$(_context15) {
|
|
14296
15256
|
while (1)
|
|
14297
|
-
switch (
|
|
15257
|
+
switch (_context15.prev = _context15.next) {
|
|
14298
15258
|
case 0:
|
|
14299
15259
|
cc = seg ? seg.cc : audioSeg.cc;
|
|
14300
15260
|
discontinuity = this._prevSegCc !== cc;
|
|
14301
15261
|
responses = [];
|
|
14302
|
-
|
|
14303
|
-
|
|
15262
|
+
_context15.prev = 3;
|
|
15263
|
+
_context15.next = 6;
|
|
14304
15264
|
return this._segmentLoader.load(seg, audioSeg, discontinuity);
|
|
14305
15265
|
case 6:
|
|
14306
|
-
responses =
|
|
14307
|
-
|
|
15266
|
+
responses = _context15.sent;
|
|
15267
|
+
_context15.next = 14;
|
|
14308
15268
|
break;
|
|
14309
15269
|
case 9:
|
|
14310
|
-
|
|
14311
|
-
|
|
14312
|
-
|
|
14313
|
-
this._segmentLoader.error =
|
|
14314
|
-
throw
|
|
15270
|
+
_context15.prev = 9;
|
|
15271
|
+
_context15.t0 = _context15["catch"](3);
|
|
15272
|
+
_context15.t0.fatal = false;
|
|
15273
|
+
this._segmentLoader.error = _context15.t0;
|
|
15274
|
+
throw _context15.t0;
|
|
14315
15275
|
case 14:
|
|
14316
15276
|
if (responses[0]) {
|
|
14317
|
-
|
|
15277
|
+
_context15.next = 16;
|
|
14318
15278
|
break;
|
|
14319
15279
|
}
|
|
14320
|
-
return
|
|
15280
|
+
return _context15.abrupt("return");
|
|
14321
15281
|
case 16:
|
|
14322
|
-
|
|
15282
|
+
_context15.next = 18;
|
|
14323
15283
|
return (_this$_bufferService2 = this._bufferService).decryptBuffer.apply(_this$_bufferService2, _toConsumableArray$2(responses));
|
|
14324
15284
|
case 18:
|
|
14325
|
-
data =
|
|
15285
|
+
data = _context15.sent;
|
|
14326
15286
|
if (data) {
|
|
14327
|
-
|
|
15287
|
+
_context15.next = 21;
|
|
14328
15288
|
break;
|
|
14329
15289
|
}
|
|
14330
|
-
return
|
|
15290
|
+
return _context15.abrupt("return");
|
|
14331
15291
|
case 21:
|
|
14332
15292
|
sn = seg ? seg.sn : audioSeg.sn;
|
|
14333
15293
|
start = seg ? seg.start : audioSeg.start;
|
|
@@ -14341,26 +15301,26 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14341
15301
|
logger.warn("update the new playlist liveEdge, segment id=".concat(sn, ", buffer start=").concat(segStart, ", liveEdge=").concat(this._playlist.liveEdge));
|
|
14342
15302
|
start = segStart;
|
|
14343
15303
|
}
|
|
14344
|
-
|
|
15304
|
+
_context15.next = 30;
|
|
14345
15305
|
return this._bufferService.appendBuffer(seg, audioSeg, data[0], data[1], discontinuity, contiguous, start);
|
|
14346
15306
|
case 30:
|
|
14347
15307
|
this.emit(Event$1.APPEND_COST, {
|
|
14348
15308
|
elapsed: Date.now() - before,
|
|
14349
15309
|
url: seg.url
|
|
14350
15310
|
});
|
|
14351
|
-
|
|
15311
|
+
_context15.next = 33;
|
|
14352
15312
|
return this._bufferService.evictBuffer(this.config.bufferBehind);
|
|
14353
15313
|
case 33:
|
|
14354
15314
|
this._prevSegCc = cc;
|
|
14355
15315
|
this._prevSegSn = sn;
|
|
14356
|
-
return
|
|
15316
|
+
return _context15.abrupt("return", true);
|
|
14357
15317
|
case 36:
|
|
14358
15318
|
case "end":
|
|
14359
|
-
return
|
|
15319
|
+
return _context15.stop();
|
|
14360
15320
|
}
|
|
14361
|
-
},
|
|
15321
|
+
}, _callee15, this, [[3, 9]]);
|
|
14362
15322
|
}));
|
|
14363
|
-
function _reqAndBufferSegment(
|
|
15323
|
+
function _reqAndBufferSegment(_x9, _x10) {
|
|
14364
15324
|
return _reqAndBufferSegment2.apply(this, arguments);
|
|
14365
15325
|
}
|
|
14366
15326
|
return _reqAndBufferSegment;
|
|
@@ -14368,11 +15328,11 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14368
15328
|
}, {
|
|
14369
15329
|
key: "_onCheckQuotaExceeded",
|
|
14370
15330
|
value: function() {
|
|
14371
|
-
var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15331
|
+
var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee16() {
|
|
14372
15332
|
var seekTime, buffered, inBuffered, i, bufferBehind, mediaTime;
|
|
14373
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15333
|
+
return _regeneratorRuntime$1().wrap(function _callee16$(_context16) {
|
|
14374
15334
|
while (1)
|
|
14375
|
-
switch (
|
|
15335
|
+
switch (_context16.prev = _context16.next) {
|
|
14376
15336
|
case 0:
|
|
14377
15337
|
seekTime = this.media.currentTime;
|
|
14378
15338
|
buffered = this.media.buffered;
|
|
@@ -14380,37 +15340,37 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14380
15340
|
i = 0;
|
|
14381
15341
|
case 4:
|
|
14382
15342
|
if (!(i < buffered.length)) {
|
|
14383
|
-
|
|
15343
|
+
_context16.next = 11;
|
|
14384
15344
|
break;
|
|
14385
15345
|
}
|
|
14386
15346
|
if (!(buffered.start(0) >= seekTime && seekTime < buffered.end(i))) {
|
|
14387
|
-
|
|
15347
|
+
_context16.next = 8;
|
|
14388
15348
|
break;
|
|
14389
15349
|
}
|
|
14390
15350
|
inBuffered = true;
|
|
14391
|
-
return
|
|
15351
|
+
return _context16.abrupt("break", 11);
|
|
14392
15352
|
case 8:
|
|
14393
15353
|
i++;
|
|
14394
|
-
|
|
15354
|
+
_context16.next = 4;
|
|
14395
15355
|
break;
|
|
14396
15356
|
case 11:
|
|
14397
15357
|
if (!this._bufferService.isFull()) {
|
|
14398
|
-
|
|
15358
|
+
_context16.next = 17;
|
|
14399
15359
|
break;
|
|
14400
15360
|
}
|
|
14401
15361
|
bufferBehind = inBuffered ? this.config.bufferBehind : 5;
|
|
14402
15362
|
mediaTime = this.media.currentTime;
|
|
14403
15363
|
if (!(mediaTime - bufferBehind > 0)) {
|
|
14404
|
-
|
|
15364
|
+
_context16.next = 17;
|
|
14405
15365
|
break;
|
|
14406
15366
|
}
|
|
14407
|
-
|
|
15367
|
+
_context16.next = 17;
|
|
14408
15368
|
return this._bufferService.removeBuffer(0, mediaTime - bufferBehind);
|
|
14409
15369
|
case 17:
|
|
14410
15370
|
case "end":
|
|
14411
|
-
return
|
|
15371
|
+
return _context16.stop();
|
|
14412
15372
|
}
|
|
14413
|
-
},
|
|
15373
|
+
}, _callee16, this);
|
|
14414
15374
|
}));
|
|
14415
15375
|
function _onCheckQuotaExceeded() {
|
|
14416
15376
|
return _onCheckQuotaExceeded2.apply(this, arguments);
|
|
@@ -14428,22 +15388,22 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14428
15388
|
}, {
|
|
14429
15389
|
key: "_clear",
|
|
14430
15390
|
value: function() {
|
|
14431
|
-
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
14432
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15391
|
+
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee17() {
|
|
15392
|
+
return _regeneratorRuntime$1().wrap(function _callee17$(_context17) {
|
|
14433
15393
|
while (1)
|
|
14434
|
-
switch (
|
|
15394
|
+
switch (_context17.prev = _context17.next) {
|
|
14435
15395
|
case 0:
|
|
14436
15396
|
clearTimeout(this._disconnectTimer);
|
|
14437
15397
|
this._stopTick();
|
|
14438
|
-
|
|
15398
|
+
_context17.next = 4;
|
|
14439
15399
|
return Promise.all([this._segmentLoader.cancel(), this._manifestLoader.stopPoll()]);
|
|
14440
15400
|
case 4:
|
|
14441
15401
|
this._segmentProcessing = false;
|
|
14442
15402
|
case 5:
|
|
14443
15403
|
case "end":
|
|
14444
|
-
return
|
|
15404
|
+
return _context17.stop();
|
|
14445
15405
|
}
|
|
14446
|
-
},
|
|
15406
|
+
}, _callee17, this);
|
|
14447
15407
|
}));
|
|
14448
15408
|
function _clear() {
|
|
14449
15409
|
return _clear2.apply(this, arguments);
|
|
@@ -14453,14 +15413,14 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14453
15413
|
}, {
|
|
14454
15414
|
key: "_reset",
|
|
14455
15415
|
value: function() {
|
|
14456
|
-
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15416
|
+
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee18() {
|
|
14457
15417
|
var _this$_seiService3;
|
|
14458
|
-
var reuseMse,
|
|
14459
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15418
|
+
var reuseMse, _args18 = arguments;
|
|
15419
|
+
return _regeneratorRuntime$1().wrap(function _callee18$(_context18) {
|
|
14460
15420
|
while (1)
|
|
14461
|
-
switch (
|
|
15421
|
+
switch (_context18.prev = _context18.next) {
|
|
14462
15422
|
case 0:
|
|
14463
|
-
reuseMse =
|
|
15423
|
+
reuseMse = _args18.length > 0 && _args18[0] !== void 0 ? _args18[0] : false;
|
|
14464
15424
|
this._reloadOnPlay = false;
|
|
14465
15425
|
this._prevSegSn = null;
|
|
14466
15426
|
this._prevSegCc = null;
|
|
@@ -14469,15 +15429,15 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14469
15429
|
this._segmentLoader.reset();
|
|
14470
15430
|
(_this$_seiService3 = this._seiService) === null || _this$_seiService3 === void 0 ? void 0 : _this$_seiService3.reset();
|
|
14471
15431
|
this._stats.reset();
|
|
14472
|
-
|
|
15432
|
+
_context18.next = 11;
|
|
14473
15433
|
return this._clear();
|
|
14474
15434
|
case 11:
|
|
14475
|
-
return
|
|
15435
|
+
return _context18.abrupt("return", this._bufferService.reset(reuseMse));
|
|
14476
15436
|
case 12:
|
|
14477
15437
|
case "end":
|
|
14478
|
-
return
|
|
15438
|
+
return _context18.stop();
|
|
14479
15439
|
}
|
|
14480
|
-
},
|
|
15440
|
+
}, _callee18, this);
|
|
14481
15441
|
}));
|
|
14482
15442
|
function _reset() {
|
|
14483
15443
|
return _reset2.apply(this, arguments);
|
|
@@ -14558,8 +15518,8 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14558
15518
|
value: function _tryEos() {
|
|
14559
15519
|
var _this$_bufferService3, _this$_bufferService4;
|
|
14560
15520
|
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);
|
|
15521
|
+
var _this$_playlist2 = this._playlist, nextSegment = _this$_playlist2.nextSegment, lastSegment = _this$_playlist2.lastSegment;
|
|
15522
|
+
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
15523
|
if (!eosAllowed) {
|
|
14564
15524
|
return;
|
|
14565
15525
|
}
|
|
@@ -14595,7 +15555,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14595
15555
|
}]);
|
|
14596
15556
|
return Hls2;
|
|
14597
15557
|
}(EventEmitter);
|
|
14598
|
-
_defineProperty$3(Hls, "version", "3.0.
|
|
15558
|
+
_defineProperty$3(Hls, "version", "3.0.20-alpha.3");
|
|
14599
15559
|
try {
|
|
14600
15560
|
if (localStorage.getItem("xgd")) {
|
|
14601
15561
|
Hls.enableLogger();
|
|
@@ -14686,6 +15646,7 @@ var PluginExtension = /* @__PURE__ */ function() {
|
|
|
14686
15646
|
}]);
|
|
14687
15647
|
return PluginExtension2;
|
|
14688
15648
|
}();
|
|
15649
|
+
var _excluded = ["currentTime"];
|
|
14689
15650
|
function parseSwitchUrlArgs(args, plugin) {
|
|
14690
15651
|
var player = plugin.player;
|
|
14691
15652
|
var curTime = player.currentTime;
|
|
@@ -14696,9 +15657,14 @@ function parseSwitchUrlArgs(args, plugin) {
|
|
|
14696
15657
|
case "boolean":
|
|
14697
15658
|
options.seamless = args;
|
|
14698
15659
|
break;
|
|
14699
|
-
case "object":
|
|
14700
|
-
|
|
15660
|
+
case "object": {
|
|
15661
|
+
var currentTime = args.currentTime, rest = _objectWithoutProperties$1(args, _excluded);
|
|
15662
|
+
Object.assign(options, rest);
|
|
15663
|
+
if (typeof currentTime === "number") {
|
|
15664
|
+
options.startTime = currentTime;
|
|
15665
|
+
}
|
|
14701
15666
|
break;
|
|
15667
|
+
}
|
|
14702
15668
|
}
|
|
14703
15669
|
return options;
|
|
14704
15670
|
}
|
|
@@ -14708,10 +15674,11 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14708
15674
|
function HlsPlugin2() {
|
|
14709
15675
|
var _this;
|
|
14710
15676
|
_classCallCheck$3(this, HlsPlugin2);
|
|
14711
|
-
for (var _len = arguments.length,
|
|
14712
|
-
|
|
15677
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
15678
|
+
args[_key] = arguments[_key];
|
|
14713
15679
|
}
|
|
14714
|
-
_this = _super.call.apply(_super, [this].concat(
|
|
15680
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
15681
|
+
_defineProperty$3(_assertThisInitialized$2(_this), "logger", logger);
|
|
14715
15682
|
_defineProperty$3(_assertThisInitialized$2(_this), "hls", null);
|
|
14716
15683
|
_defineProperty$3(_assertThisInitialized$2(_this), "pluginExtension", null);
|
|
14717
15684
|
_defineProperty$3(_assertThisInitialized$2(_this), "getStats", function() {
|
|
@@ -14723,24 +15690,6 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14723
15690
|
var lang = _ref.lang;
|
|
14724
15691
|
(_this$hls2 = _this.hls) === null || _this$hls2 === void 0 ? void 0 : _this$hls2.switchSubtitleStream(lang);
|
|
14725
15692
|
});
|
|
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
15693
|
_defineProperty$3(_assertThisInitialized$2(_this), "_keepPauseStatus", function() {
|
|
14745
15694
|
var paused = _this.player.paused;
|
|
14746
15695
|
if (!paused)
|
|
@@ -14765,8 +15714,8 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14765
15714
|
}, {
|
|
14766
15715
|
key: "softDecode",
|
|
14767
15716
|
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$
|
|
15717
|
+
var _this$player, _this$player$config;
|
|
15718
|
+
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
15719
|
return !!mediaType && mediaType !== "video" && mediaType !== "audio";
|
|
14771
15720
|
}
|
|
14772
15721
|
}, {
|
|
@@ -14774,13 +15723,35 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14774
15723
|
value: function beforePlayerInit() {
|
|
14775
15724
|
var _this2 = this;
|
|
14776
15725
|
var config = this.player.config;
|
|
15726
|
+
var mediaElem = this.player.media || this.player.video;
|
|
14777
15727
|
var hlsOpts = config.hls || {};
|
|
14778
15728
|
if (!config.url && !config.__allowHlsEmptyUrl__ || !hlsOpts.preferMMS && MSE.isMMSOnly()) {
|
|
14779
15729
|
return;
|
|
14780
15730
|
}
|
|
14781
15731
|
if (this.hls)
|
|
14782
15732
|
this.hls.destroy();
|
|
14783
|
-
|
|
15733
|
+
var descriptor = Object.getOwnPropertyDescriptor(this.player, "switchURL");
|
|
15734
|
+
if (!descriptor || descriptor.writable) {
|
|
15735
|
+
this.player.switchURL = function(url, args) {
|
|
15736
|
+
return new Promise(function(resolve, reject) {
|
|
15737
|
+
var player = _this2.player, hls = _this2.hls;
|
|
15738
|
+
if (hls) {
|
|
15739
|
+
var _this2$player$config, _this2$player$config$;
|
|
15740
|
+
var options = parseSwitchUrlArgs(args, _this2);
|
|
15741
|
+
player.config.url = url;
|
|
15742
|
+
hls.switchURL(url, options).then(function() {
|
|
15743
|
+
return resolve(true);
|
|
15744
|
+
}).catch(reject);
|
|
15745
|
+
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) {
|
|
15746
|
+
_this2._keepPauseStatus();
|
|
15747
|
+
}
|
|
15748
|
+
} else {
|
|
15749
|
+
reject();
|
|
15750
|
+
}
|
|
15751
|
+
});
|
|
15752
|
+
};
|
|
15753
|
+
}
|
|
15754
|
+
var onSwitchUrl = this.player.switchURL;
|
|
14784
15755
|
this.player.handleSource = false;
|
|
14785
15756
|
hlsOpts.innerDegrade = hlsOpts.innerDegrade || config.innerDegrade;
|
|
14786
15757
|
if (hlsOpts.disconnectTime === null || hlsOpts.disconnectTime === void 0)
|
|
@@ -14788,7 +15759,7 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14788
15759
|
this.hls = new Hls(_objectSpread2$2({
|
|
14789
15760
|
softDecode: this.softDecode,
|
|
14790
15761
|
isLive: config.isLive,
|
|
14791
|
-
media:
|
|
15762
|
+
media: mediaElem,
|
|
14792
15763
|
startTime: config.startTime,
|
|
14793
15764
|
url: config.url
|
|
14794
15765
|
}, hlsOpts));
|
|
@@ -14806,7 +15777,7 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14806
15777
|
if (this.softDecode) {
|
|
14807
15778
|
this.pluginExtension = new PluginExtension(_objectSpread2$2({
|
|
14808
15779
|
isLive: config.isLive,
|
|
14809
|
-
media:
|
|
15780
|
+
media: mediaElem
|
|
14810
15781
|
}, hlsOpts), this);
|
|
14811
15782
|
this.player.forceDegradeToVideo = function() {
|
|
14812
15783
|
var _this2$pluginExtensio;
|
|
@@ -14823,8 +15794,8 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14823
15794
|
return (_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.replay();
|
|
14824
15795
|
});
|
|
14825
15796
|
}
|
|
15797
|
+
this.on(URL_CHANGE, onSwitchUrl);
|
|
14826
15798
|
this.on(SWITCH_SUBTITLE, this._onSwitchSubtitle);
|
|
14827
|
-
this.on(URL_CHANGE, this._onSwitchURL);
|
|
14828
15799
|
this.on(DESTROY, this.destroy.bind(this));
|
|
14829
15800
|
this._transError();
|
|
14830
15801
|
this._transCoreEvent(EVENT.TTFB);
|
|
@@ -14834,6 +15805,7 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14834
15805
|
this._transCoreEvent(EVENT.LOAD_RETRY);
|
|
14835
15806
|
this._transCoreEvent(EVENT.SOURCEBUFFER_CREATED);
|
|
14836
15807
|
this._transCoreEvent(EVENT.MEDIASOURCE_OPENED);
|
|
15808
|
+
this._transCoreEvent(EVENT.APPEND_BUFFER);
|
|
14837
15809
|
this._transCoreEvent(EVENT.REMOVE_BUFFER);
|
|
14838
15810
|
this._transCoreEvent(EVENT.BUFFEREOS);
|
|
14839
15811
|
this._transCoreEvent(EVENT.KEYFRAME);
|
|
@@ -14853,7 +15825,9 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14853
15825
|
this._transCoreEvent(Event$1.SUBTITLE_PLAYLIST);
|
|
14854
15826
|
this._transCoreEvent(Event$1.APPEND_COST);
|
|
14855
15827
|
if (config.url) {
|
|
14856
|
-
this.hls.load(config.url,
|
|
15828
|
+
this.hls.load(config.url, {
|
|
15829
|
+
reuseMse: true
|
|
15830
|
+
}).catch(function(e) {
|
|
14857
15831
|
});
|
|
14858
15832
|
}
|
|
14859
15833
|
}
|