@volcengine/veplayer-plugin 2.4.2-rc.1 → 2.4.3-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/index.development.js +1968 -659
- package/esm/index.production.js +1 -1
- 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 +1237 -308
- 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 +124 -139
- 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 +1237 -308
- 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 +124 -139
- 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
|
@@ -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() {
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -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
|
-
}
|
|
10708
|
-
|
|
10709
|
-
|
|
10710
|
-
|
|
10711
|
-
|
|
10712
|
-
|
|
10713
|
-
|
|
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;
|
|
11471
|
+
});
|
|
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;
|
|
10721
11478
|
});
|
|
10722
|
-
|
|
10723
|
-
|
|
10724
|
-
|
|
10725
|
-
|
|
10726
|
-
|
|
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) {
|
|
@@ -11886,6 +12704,38 @@ function getCodecs(type, codecs) {
|
|
|
11886
12704
|
}
|
|
11887
12705
|
}
|
|
11888
12706
|
}
|
|
12707
|
+
function isValidDaterange(attr, dateRangeWithSameId) {
|
|
12708
|
+
var _badValueForSameId;
|
|
12709
|
+
if (dateRangeWithSameId) {
|
|
12710
|
+
for (var key in dateRangeWithSameId) {
|
|
12711
|
+
if (Object.prototype.hasOwnProperty.call(dateRangeWithSameId, key) && attr[key] !== dateRangeWithSameId[key]) {
|
|
12712
|
+
_badValueForSameId = key;
|
|
12713
|
+
break;
|
|
12714
|
+
}
|
|
12715
|
+
}
|
|
12716
|
+
}
|
|
12717
|
+
var duration = null;
|
|
12718
|
+
if (attr.DURATION) {
|
|
12719
|
+
duration = parseFloat(attr.DURATION);
|
|
12720
|
+
if (!Number.isFinite(duration)) {
|
|
12721
|
+
duration = null;
|
|
12722
|
+
} else if (attr._endDate) {
|
|
12723
|
+
duration = (attr._endDate.getTime() - attr._startDate.getTime()) / 1e3;
|
|
12724
|
+
}
|
|
12725
|
+
}
|
|
12726
|
+
var cue = enumeratedStringList(attr.CUE || attr["X-CUE"], {
|
|
12727
|
+
pre: false,
|
|
12728
|
+
post: false,
|
|
12729
|
+
once: false
|
|
12730
|
+
});
|
|
12731
|
+
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);
|
|
12732
|
+
}
|
|
12733
|
+
function enumeratedStringList(attrValue, dict) {
|
|
12734
|
+
return (attrValue ? attrValue.split(/[ ,]+/) : []).reduce(function(result, identifier) {
|
|
12735
|
+
result[identifier.toLowerCase()] = true;
|
|
12736
|
+
return result;
|
|
12737
|
+
}, dict);
|
|
12738
|
+
}
|
|
11889
12739
|
function parseMasterPlaylist(lines, parentUrl) {
|
|
11890
12740
|
var master = new MasterPlaylist();
|
|
11891
12741
|
var index = 0;
|
|
@@ -11994,9 +12844,6 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
11994
12844
|
var endOfList = false;
|
|
11995
12845
|
var partSegmentIndex = 0;
|
|
11996
12846
|
while (line = lines[index++]) {
|
|
11997
|
-
if (endOfList) {
|
|
11998
|
-
break;
|
|
11999
|
-
}
|
|
12000
12847
|
if (line[0] !== "#") {
|
|
12001
12848
|
if (media.lowLatency) {
|
|
12002
12849
|
curSN++;
|
|
@@ -12050,11 +12897,6 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12050
12897
|
break;
|
|
12051
12898
|
case "ENDLIST":
|
|
12052
12899
|
{
|
|
12053
|
-
var _lastSegment = media.segments[media.segments.length - 1];
|
|
12054
|
-
if (_lastSegment) {
|
|
12055
|
-
_lastSegment.isLast = true;
|
|
12056
|
-
}
|
|
12057
|
-
media.live = false;
|
|
12058
12900
|
endOfList = true;
|
|
12059
12901
|
}
|
|
12060
12902
|
break;
|
|
@@ -12151,6 +12993,29 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12151
12993
|
curSegment = new MediaSegment(parentUrl);
|
|
12152
12994
|
}
|
|
12153
12995
|
break;
|
|
12996
|
+
case "SKIP":
|
|
12997
|
+
{
|
|
12998
|
+
var _attr5 = parseAttr(data);
|
|
12999
|
+
var skippedSegments = parseInt(_attr5["SKIPPED-SEGMENTS"], 10);
|
|
13000
|
+
if (skippedSegments <= Number.MAX_SAFE_INTEGER) {
|
|
13001
|
+
media.skippedSegments += skippedSegments;
|
|
13002
|
+
}
|
|
13003
|
+
}
|
|
13004
|
+
break;
|
|
13005
|
+
case "DATERANGE":
|
|
13006
|
+
{
|
|
13007
|
+
var _attr6 = parseAttr(data);
|
|
13008
|
+
var dateRangeWithSameId = media.dateRanges[_attr6.ID];
|
|
13009
|
+
_attr6._startDate = dateRangeWithSameId ? dateRangeWithSameId._startDate : new Date(_attr6["START-DATE"]);
|
|
13010
|
+
var endDate = (dateRangeWithSameId === null || dateRangeWithSameId === void 0 ? void 0 : dateRangeWithSameId._endDate) || new Date(_attr6.END_DATE);
|
|
13011
|
+
if (Number.isFinite(endDate)) {
|
|
13012
|
+
_attr6._endDate = endDate;
|
|
13013
|
+
}
|
|
13014
|
+
if (isValidDaterange(_attr6, dateRangeWithSameId) || media.skippedSegments) {
|
|
13015
|
+
media.dateRanges[_attr6.ID] = _attr6;
|
|
13016
|
+
}
|
|
13017
|
+
}
|
|
13018
|
+
break;
|
|
12154
13019
|
}
|
|
12155
13020
|
}
|
|
12156
13021
|
media.segments = media.segments.filter(function(x) {
|
|
@@ -12158,11 +13023,14 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12158
13023
|
});
|
|
12159
13024
|
var lastSegment = media.segments[media.segments.length - 1];
|
|
12160
13025
|
if (lastSegment) {
|
|
12161
|
-
|
|
12162
|
-
media.endPartIndex = lastSegment.partIndex;
|
|
12163
|
-
if (endOfList && !lastSegment.isLast) {
|
|
13026
|
+
if (endOfList) {
|
|
12164
13027
|
lastSegment.isLast = true;
|
|
12165
13028
|
}
|
|
13029
|
+
media.endSN = lastSegment.sn;
|
|
13030
|
+
media.endPartIndex = lastSegment.partIndex;
|
|
13031
|
+
}
|
|
13032
|
+
if (endOfList) {
|
|
13033
|
+
media.live = false;
|
|
12166
13034
|
}
|
|
12167
13035
|
media.totalDuration = totalDuration;
|
|
12168
13036
|
media.endCC = curCC;
|
|
@@ -13259,7 +14127,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13259
14127
|
_defineProperty$3(_assertThisInitialized$2(_this), "_switchUrlOpts", null);
|
|
13260
14128
|
_defineProperty$3(_assertThisInitialized$2(_this), "_isProcessQuotaExceeded", false);
|
|
13261
14129
|
_defineProperty$3(_assertThisInitialized$2(_this), "_loadSegment", /* @__PURE__ */ _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee() {
|
|
13262
|
-
var
|
|
14130
|
+
var _this$_playlist, nextSegment, lastSegment, _assertThisInitialize, config, minFrameDuration, maxBufferThroughout, bInfo, bufferThroughout;
|
|
13263
14131
|
return _regeneratorRuntime$1().wrap(function _callee$(_context) {
|
|
13264
14132
|
while (1)
|
|
13265
14133
|
switch (_context.prev = _context.next) {
|
|
@@ -13270,42 +14138,44 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13270
14138
|
}
|
|
13271
14139
|
return _context.abrupt("return");
|
|
13272
14140
|
case 2:
|
|
13273
|
-
|
|
14141
|
+
_this$_playlist = _this._playlist, nextSegment = _this$_playlist.nextSegment, lastSegment = _this$_playlist.lastSegment;
|
|
13274
14142
|
_assertThisInitialize = _assertThisInitialized$2(_this), config = _assertThisInitialize.config;
|
|
13275
|
-
|
|
13276
|
-
|
|
14143
|
+
minFrameDuration = 0.016;
|
|
14144
|
+
maxBufferThroughout = Math.min(Math.max((lastSegment === null || lastSegment === void 0 ? void 0 : lastSegment.duration) - minFrameDuration / 2 || 0, minFrameDuration), 0.1);
|
|
14145
|
+
if (nextSegment) {
|
|
14146
|
+
_context.next = 8;
|
|
13277
14147
|
break;
|
|
13278
14148
|
}
|
|
13279
14149
|
return _context.abrupt("return");
|
|
13280
|
-
case
|
|
14150
|
+
case 8:
|
|
13281
14151
|
if (_this.isLive) {
|
|
13282
|
-
_context.next =
|
|
14152
|
+
_context.next = 18;
|
|
13283
14153
|
break;
|
|
13284
14154
|
}
|
|
13285
14155
|
bInfo = _this.bufferInfo();
|
|
13286
14156
|
if (_this.media.paused && !_this.media.currentTime) {
|
|
13287
14157
|
bInfo = _this.bufferInfo(bInfo.nextStart || 0.5);
|
|
13288
14158
|
}
|
|
13289
|
-
bufferThroughout = Math.abs(bInfo.end - _this.media.duration) <
|
|
14159
|
+
bufferThroughout = Math.abs(bInfo.end - _this.media.duration) < maxBufferThroughout;
|
|
13290
14160
|
if (!(bInfo.remaining >= config.preloadTime || bufferThroughout)) {
|
|
13291
|
-
_context.next =
|
|
14161
|
+
_context.next = 15;
|
|
13292
14162
|
break;
|
|
13293
14163
|
}
|
|
13294
14164
|
_this._tryEos();
|
|
13295
14165
|
return _context.abrupt("return");
|
|
13296
|
-
case
|
|
14166
|
+
case 15:
|
|
13297
14167
|
if (!(config.preferMMSStreaming && !_this._bufferService.msStreaming)) {
|
|
13298
|
-
_context.next =
|
|
14168
|
+
_context.next = 17;
|
|
13299
14169
|
break;
|
|
13300
14170
|
}
|
|
13301
14171
|
return _context.abrupt("return");
|
|
13302
|
-
case
|
|
13303
|
-
if (!_this._urlSwitching && _this._prevSegSn !==
|
|
14172
|
+
case 17:
|
|
14173
|
+
if (!_this._urlSwitching && _this._prevSegSn !== nextSegment.sn - 1 && bInfo.end && Math.abs(nextSegment.start - bInfo.end) > 1) {
|
|
13304
14174
|
_this._playlist.setNextSegmentByIndex(_this._playlist.findSegmentIndexByTime(bInfo.end + 0.1));
|
|
13305
14175
|
}
|
|
13306
|
-
case
|
|
14176
|
+
case 18:
|
|
13307
14177
|
return _context.abrupt("return", _this._loadSegmentDirect());
|
|
13308
|
-
case
|
|
14178
|
+
case 19:
|
|
13309
14179
|
case "end":
|
|
13310
14180
|
return _context.stop();
|
|
13311
14181
|
}
|
|
@@ -13553,6 +14423,12 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13553
14423
|
var _this$_bufferService;
|
|
13554
14424
|
return (_this$_bufferService = this._bufferService) === null || _this$_bufferService === void 0 ? void 0 : _this$_bufferService.baseDts;
|
|
13555
14425
|
}
|
|
14426
|
+
}, {
|
|
14427
|
+
key: "abrSwitchPoint",
|
|
14428
|
+
get: function get() {
|
|
14429
|
+
var targetSeg = this._urlSwitching ? this._playlist.currentSegment : this._playlist.nextSegment;
|
|
14430
|
+
return targetSeg ? targetSeg.start + targetSeg.duration / 2 : null;
|
|
14431
|
+
}
|
|
13556
14432
|
}, {
|
|
13557
14433
|
key: "speedInfo",
|
|
13558
14434
|
value: function speedInfo() {
|
|
@@ -13578,30 +14454,37 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13578
14454
|
}, {
|
|
13579
14455
|
key: "load",
|
|
13580
14456
|
value: function() {
|
|
13581
|
-
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4(
|
|
13582
|
-
var reuseMse, _args4 = arguments;
|
|
14457
|
+
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4() {
|
|
14458
|
+
var url, options, reuseMse, _args4 = arguments;
|
|
13583
14459
|
return _regeneratorRuntime$1().wrap(function _callee4$(_context4) {
|
|
13584
14460
|
while (1)
|
|
13585
14461
|
switch (_context4.prev = _context4.next) {
|
|
13586
14462
|
case 0:
|
|
13587
|
-
|
|
14463
|
+
url = _args4.length > 0 && _args4[0] !== void 0 ? _args4[0] : "";
|
|
14464
|
+
options = _args4.length > 1 && _args4[1] !== void 0 ? _args4[1] : {};
|
|
14465
|
+
reuseMse = typeof options === "boolean" ? options : !!(options !== null && options !== void 0 && options.reuseMse);
|
|
14466
|
+
if (_typeof$2(options) === "object" && options !== null && options !== void 0 && options.clearSwitchStatus) {
|
|
14467
|
+
this._urlSwitching = false;
|
|
14468
|
+
this._switchUrlOpts = null;
|
|
14469
|
+
this.config.startTime = void 0;
|
|
14470
|
+
}
|
|
13588
14471
|
if (url)
|
|
13589
14472
|
this.config.url = url;
|
|
13590
14473
|
url = this.config.url;
|
|
13591
|
-
_context4.next =
|
|
14474
|
+
_context4.next = 8;
|
|
13592
14475
|
return this._reset(reuseMse);
|
|
13593
|
-
case
|
|
13594
|
-
_context4.next =
|
|
14476
|
+
case 8:
|
|
14477
|
+
_context4.next = 10;
|
|
13595
14478
|
return this._loadData(url);
|
|
13596
|
-
case
|
|
14479
|
+
case 10:
|
|
13597
14480
|
this._startTick();
|
|
13598
|
-
case
|
|
14481
|
+
case 11:
|
|
13599
14482
|
case "end":
|
|
13600
14483
|
return _context4.stop();
|
|
13601
14484
|
}
|
|
13602
14485
|
}, _callee4, this);
|
|
13603
14486
|
}));
|
|
13604
|
-
function load(
|
|
14487
|
+
function load() {
|
|
13605
14488
|
return _load.apply(this, arguments);
|
|
13606
14489
|
}
|
|
13607
14490
|
return load;
|
|
@@ -13610,7 +14493,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13610
14493
|
key: "_loadData",
|
|
13611
14494
|
value: function() {
|
|
13612
14495
|
var _loadData2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee5(url) {
|
|
13613
|
-
var manifest, currentStream, _this$_switchUrlOpts, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint,
|
|
14496
|
+
var manifest, currentStream, preIndex, _this$_switchUrlOpts, _this$_switchUrlOpts3, _this$_switchUrlOpts4, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint, startTime, _this$_switchUrlOpts5;
|
|
13614
14497
|
return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
|
|
13615
14498
|
while (1)
|
|
13616
14499
|
switch (_context5.prev = _context5.next) {
|
|
@@ -13631,41 +14514,46 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13631
14514
|
case 5:
|
|
13632
14515
|
manifest = _context5.sent;
|
|
13633
14516
|
currentStream = this._playlist.currentStream;
|
|
13634
|
-
if (!
|
|
13635
|
-
_context5.next =
|
|
14517
|
+
if (!this._urlSwitching) {
|
|
14518
|
+
_context5.next = 23;
|
|
13636
14519
|
break;
|
|
13637
14520
|
}
|
|
14521
|
+
if (!this.isLive) {
|
|
14522
|
+
_context5.next = 14;
|
|
14523
|
+
break;
|
|
14524
|
+
}
|
|
14525
|
+
preIndex = this._playlist.setNextSegmentBySN(this._prevSegSn);
|
|
14526
|
+
logger.log("segment nb=".concat(this._prevSegSn, " index of ").concat(preIndex, " in the new playlist"));
|
|
14527
|
+
if (preIndex === -1) {
|
|
14528
|
+
this._prevSegCc = null;
|
|
14529
|
+
this._prevSegSn = null;
|
|
14530
|
+
}
|
|
14531
|
+
_context5.next = 23;
|
|
14532
|
+
break;
|
|
14533
|
+
case 14:
|
|
13638
14534
|
if (currentStream.bitrate === 0 && (_this$_switchUrlOpts = this._switchUrlOpts) !== null && _this$_switchUrlOpts !== void 0 && _this$_switchUrlOpts.bitrate) {
|
|
13639
14535
|
currentStream.bitrate = (_this$_switchUrlOpts2 = this._switchUrlOpts) === null || _this$_switchUrlOpts2 === void 0 ? void 0 : _this$_switchUrlOpts2.bitrate;
|
|
13640
14536
|
}
|
|
13641
|
-
switchTimePoint = this._getSeamlessSwitchPoint();
|
|
14537
|
+
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
14538
|
this.config.startTime = switchTimePoint;
|
|
13643
14539
|
segIdx = this._playlist.findSegmentIndexByTime(switchTimePoint);
|
|
13644
14540
|
nextSeg = this._playlist.getSegmentByIndex(segIdx + 1);
|
|
13645
14541
|
if (!nextSeg) {
|
|
13646
|
-
_context5.next =
|
|
14542
|
+
_context5.next = 23;
|
|
13647
14543
|
break;
|
|
13648
14544
|
}
|
|
13649
14545
|
bufferClearStartPoint = nextSeg.start;
|
|
13650
|
-
_context5.next =
|
|
14546
|
+
_context5.next = 23;
|
|
13651
14547
|
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
|
-
}
|
|
14548
|
+
case 23:
|
|
13661
14549
|
if (manifest) {
|
|
13662
|
-
_context5.next =
|
|
14550
|
+
_context5.next = 25;
|
|
13663
14551
|
break;
|
|
13664
14552
|
}
|
|
13665
14553
|
return _context5.abrupt("return");
|
|
13666
|
-
case
|
|
14554
|
+
case 25:
|
|
13667
14555
|
if (!this.isLive) {
|
|
13668
|
-
_context5.next =
|
|
14556
|
+
_context5.next = 36;
|
|
13669
14557
|
break;
|
|
13670
14558
|
}
|
|
13671
14559
|
this._bufferService.setLiveSeekableRange(0, 4294967295);
|
|
@@ -13678,35 +14566,35 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13678
14566
|
if (!manifest.isMaster)
|
|
13679
14567
|
this._pollM3U8(url);
|
|
13680
14568
|
if (!(this._playlist.nbSegments < this.config.minSegmentsStartPlay)) {
|
|
13681
|
-
_context5.next =
|
|
14569
|
+
_context5.next = 33;
|
|
13682
14570
|
break;
|
|
13683
14571
|
}
|
|
13684
14572
|
return _context5.abrupt("return");
|
|
13685
|
-
case
|
|
13686
|
-
_context5.next =
|
|
14573
|
+
case 33:
|
|
14574
|
+
_context5.next = 35;
|
|
13687
14575
|
return this._loadSegment();
|
|
13688
|
-
case
|
|
14576
|
+
case 35:
|
|
13689
14577
|
return _context5.abrupt("return");
|
|
13690
|
-
case
|
|
13691
|
-
_context5.next =
|
|
14578
|
+
case 36:
|
|
14579
|
+
_context5.next = 38;
|
|
13692
14580
|
return this._bufferService.updateDuration(currentStream.totalDuration);
|
|
13693
|
-
case
|
|
14581
|
+
case 38:
|
|
13694
14582
|
startTime = this.config.startTime;
|
|
13695
14583
|
if (startTime) {
|
|
13696
|
-
if (!((_this$
|
|
14584
|
+
if (!((_this$_switchUrlOpts5 = this._switchUrlOpts) !== null && _this$_switchUrlOpts5 !== void 0 && _this$_switchUrlOpts5.seamless)) {
|
|
13697
14585
|
this.media.currentTime = startTime;
|
|
13698
14586
|
}
|
|
13699
14587
|
this._playlist.setNextSegmentByIndex(this._playlist.findSegmentIndexByTime(startTime) || 0);
|
|
13700
14588
|
}
|
|
13701
|
-
_context5.next =
|
|
14589
|
+
_context5.next = 42;
|
|
13702
14590
|
return this._loadSegment();
|
|
13703
|
-
case
|
|
14591
|
+
case 42:
|
|
13704
14592
|
case "end":
|
|
13705
14593
|
return _context5.stop();
|
|
13706
14594
|
}
|
|
13707
14595
|
}, _callee5, this);
|
|
13708
14596
|
}));
|
|
13709
|
-
function _loadData(
|
|
14597
|
+
function _loadData(_x) {
|
|
13710
14598
|
return _loadData2.apply(this, arguments);
|
|
13711
14599
|
}
|
|
13712
14600
|
return _loadData;
|
|
@@ -13720,18 +14608,20 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13720
14608
|
switch (_context6.prev = _context6.next) {
|
|
13721
14609
|
case 0:
|
|
13722
14610
|
this.config.startTime = 0;
|
|
13723
|
-
|
|
14611
|
+
this._urlSwitching = false;
|
|
14612
|
+
this._switchUrlOpts = null;
|
|
14613
|
+
_context6.next = 5;
|
|
13724
14614
|
return this.load();
|
|
13725
|
-
case
|
|
14615
|
+
case 5:
|
|
13726
14616
|
this._reloadOnPlay = false;
|
|
13727
14617
|
return _context6.abrupt("return", this.media.play(!isPlayEmit));
|
|
13728
|
-
case
|
|
14618
|
+
case 7:
|
|
13729
14619
|
case "end":
|
|
13730
14620
|
return _context6.stop();
|
|
13731
14621
|
}
|
|
13732
14622
|
}, _callee6, this);
|
|
13733
14623
|
}));
|
|
13734
|
-
function replay(
|
|
14624
|
+
function replay(_x2) {
|
|
13735
14625
|
return _replay.apply(this, arguments);
|
|
13736
14626
|
}
|
|
13737
14627
|
return replay;
|
|
@@ -13836,7 +14726,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13836
14726
|
}
|
|
13837
14727
|
}, _callee7, this, [[18, 29]]);
|
|
13838
14728
|
}));
|
|
13839
|
-
function switchURL(
|
|
14729
|
+
function switchURL(_x3) {
|
|
13840
14730
|
return _switchURL.apply(this, arguments);
|
|
13841
14731
|
}
|
|
13842
14732
|
return switchURL;
|
|
@@ -13922,7 +14812,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13922
14812
|
}
|
|
13923
14813
|
}, _callee8, this, [[8, 16], [21, 31]]);
|
|
13924
14814
|
}));
|
|
13925
|
-
function switchStream(
|
|
14815
|
+
function switchStream(_x4) {
|
|
13926
14816
|
return _switchStream.apply(this, arguments);
|
|
13927
14817
|
}
|
|
13928
14818
|
return switchStream;
|
|
@@ -14008,7 +14898,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14008
14898
|
}
|
|
14009
14899
|
}, _callee9, this, [[10, 18], [22, 32]]);
|
|
14010
14900
|
}));
|
|
14011
|
-
function switchAudioStream(
|
|
14901
|
+
function switchAudioStream(_x5) {
|
|
14012
14902
|
return _switchAudioStream.apply(this, arguments);
|
|
14013
14903
|
}
|
|
14014
14904
|
return switchAudioStream;
|
|
@@ -14033,25 +14923,50 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14033
14923
|
}
|
|
14034
14924
|
}, _callee10, this);
|
|
14035
14925
|
}));
|
|
14036
|
-
function switchSubtitleStream(
|
|
14926
|
+
function switchSubtitleStream(_x6) {
|
|
14037
14927
|
return _switchSubtitleStream.apply(this, arguments);
|
|
14038
14928
|
}
|
|
14039
14929
|
return switchSubtitleStream;
|
|
14040
14930
|
}()
|
|
14041
14931
|
}, {
|
|
14042
|
-
key: "
|
|
14932
|
+
key: "detachMedia",
|
|
14043
14933
|
value: function() {
|
|
14044
|
-
var
|
|
14045
|
-
var _this$_seiService2;
|
|
14934
|
+
var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee11() {
|
|
14046
14935
|
return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
|
|
14047
14936
|
while (1)
|
|
14048
14937
|
switch (_context11.prev = _context11.next) {
|
|
14938
|
+
case 0:
|
|
14939
|
+
if (!this._bufferService) {
|
|
14940
|
+
_context11.next = 3;
|
|
14941
|
+
break;
|
|
14942
|
+
}
|
|
14943
|
+
_context11.next = 3;
|
|
14944
|
+
return this._bufferService.detachMedia();
|
|
14945
|
+
case 3:
|
|
14946
|
+
case "end":
|
|
14947
|
+
return _context11.stop();
|
|
14948
|
+
}
|
|
14949
|
+
}, _callee11, this);
|
|
14950
|
+
}));
|
|
14951
|
+
function detachMedia() {
|
|
14952
|
+
return _detachMedia.apply(this, arguments);
|
|
14953
|
+
}
|
|
14954
|
+
return detachMedia;
|
|
14955
|
+
}()
|
|
14956
|
+
}, {
|
|
14957
|
+
key: "destroy",
|
|
14958
|
+
value: function() {
|
|
14959
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee12() {
|
|
14960
|
+
var _this$_seiService2;
|
|
14961
|
+
return _regeneratorRuntime$1().wrap(function _callee12$(_context12) {
|
|
14962
|
+
while (1)
|
|
14963
|
+
switch (_context12.prev = _context12.next) {
|
|
14049
14964
|
case 0:
|
|
14050
14965
|
if (this.media) {
|
|
14051
|
-
|
|
14966
|
+
_context12.next = 2;
|
|
14052
14967
|
break;
|
|
14053
14968
|
}
|
|
14054
|
-
return
|
|
14969
|
+
return _context12.abrupt("return");
|
|
14055
14970
|
case 2:
|
|
14056
14971
|
this.removeAllListeners();
|
|
14057
14972
|
this._playlist.reset();
|
|
@@ -14062,15 +14977,15 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14062
14977
|
this.media.removeEventListener("pause", this._onPause);
|
|
14063
14978
|
this.media.removeEventListener("seeking", this._onSeeking);
|
|
14064
14979
|
this.media.removeEventListener("timeupdate", this._onTimeupdate);
|
|
14065
|
-
|
|
14980
|
+
_context12.next = 13;
|
|
14066
14981
|
return Promise.all([this._clear(), this._bufferService.destroy()]);
|
|
14067
14982
|
case 13:
|
|
14068
14983
|
this.media = null;
|
|
14069
14984
|
case 14:
|
|
14070
14985
|
case "end":
|
|
14071
|
-
return
|
|
14986
|
+
return _context12.stop();
|
|
14072
14987
|
}
|
|
14073
|
-
},
|
|
14988
|
+
}, _callee12, this);
|
|
14074
14989
|
}));
|
|
14075
14990
|
function destroy() {
|
|
14076
14991
|
return _destroy.apply(this, arguments);
|
|
@@ -14080,48 +14995,48 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14080
14995
|
}, {
|
|
14081
14996
|
key: "_loadM3U8",
|
|
14082
14997
|
value: function() {
|
|
14083
|
-
var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
14998
|
+
var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee13(url) {
|
|
14084
14999
|
var playlist, _this$config$manifest, _this$config$manifest2, manifest, _ref4, _ref5, _this$_playlist$curre;
|
|
14085
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15000
|
+
return _regeneratorRuntime$1().wrap(function _callee13$(_context13) {
|
|
14086
15001
|
while (1)
|
|
14087
|
-
switch (
|
|
15002
|
+
switch (_context13.prev = _context13.next) {
|
|
14088
15003
|
case 0:
|
|
14089
|
-
|
|
15004
|
+
_context13.prev = 0;
|
|
14090
15005
|
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
15006
|
return x.url === url;
|
|
14092
15007
|
})[0]) === null || _this$config$manifest2 === void 0 ? void 0 : _this$config$manifest2.manifest;
|
|
14093
15008
|
if (!manifest) {
|
|
14094
|
-
|
|
15009
|
+
_context13.next = 6;
|
|
14095
15010
|
break;
|
|
14096
15011
|
}
|
|
14097
|
-
|
|
14098
|
-
|
|
15012
|
+
_context13.t0 = this._manifestLoader.parseText(manifest, url);
|
|
15013
|
+
_context13.next = 9;
|
|
14099
15014
|
break;
|
|
14100
15015
|
case 6:
|
|
14101
|
-
|
|
15016
|
+
_context13.next = 8;
|
|
14102
15017
|
return this._manifestLoader.load(url);
|
|
14103
15018
|
case 8:
|
|
14104
|
-
|
|
15019
|
+
_context13.t0 = _context13.sent;
|
|
14105
15020
|
case 9:
|
|
14106
|
-
_ref4 =
|
|
15021
|
+
_ref4 = _context13.t0;
|
|
14107
15022
|
_ref5 = _slicedToArray$1(_ref4, 1);
|
|
14108
15023
|
playlist = _ref5[0];
|
|
14109
|
-
|
|
15024
|
+
_context13.next = 17;
|
|
14110
15025
|
break;
|
|
14111
15026
|
case 14:
|
|
14112
|
-
|
|
14113
|
-
|
|
14114
|
-
throw this._emitError(StreamingError.create(
|
|
15027
|
+
_context13.prev = 14;
|
|
15028
|
+
_context13.t1 = _context13["catch"](0);
|
|
15029
|
+
throw this._emitError(StreamingError.create(_context13.t1));
|
|
14115
15030
|
case 17:
|
|
14116
15031
|
if (playlist) {
|
|
14117
|
-
|
|
15032
|
+
_context13.next = 19;
|
|
14118
15033
|
break;
|
|
14119
15034
|
}
|
|
14120
|
-
return
|
|
15035
|
+
return _context13.abrupt("return");
|
|
14121
15036
|
case 19:
|
|
14122
15037
|
this._playlist.upsertPlaylist(playlist);
|
|
14123
15038
|
if (!playlist.isMaster) {
|
|
14124
|
-
|
|
15039
|
+
_context13.next = 24;
|
|
14125
15040
|
break;
|
|
14126
15041
|
}
|
|
14127
15042
|
if ((_this$_playlist$curre = this._playlist.currentStream.subtitleStreams) !== null && _this$_playlist$curre !== void 0 && _this$_playlist$curre.length) {
|
|
@@ -14129,18 +15044,18 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14129
15044
|
list: this._playlist.currentStream.subtitleStreams
|
|
14130
15045
|
});
|
|
14131
15046
|
}
|
|
14132
|
-
|
|
15047
|
+
_context13.next = 24;
|
|
14133
15048
|
return this._refreshM3U8();
|
|
14134
15049
|
case 24:
|
|
14135
15050
|
this.emit(Event$1.STREAM_PARSED);
|
|
14136
|
-
return
|
|
15051
|
+
return _context13.abrupt("return", playlist);
|
|
14137
15052
|
case 26:
|
|
14138
15053
|
case "end":
|
|
14139
|
-
return
|
|
15054
|
+
return _context13.stop();
|
|
14140
15055
|
}
|
|
14141
|
-
},
|
|
15056
|
+
}, _callee13, this, [[0, 14]]);
|
|
14142
15057
|
}));
|
|
14143
|
-
function _loadM3U8(
|
|
15058
|
+
function _loadM3U8(_x7) {
|
|
14144
15059
|
return _loadM3U.apply(this, arguments);
|
|
14145
15060
|
}
|
|
14146
15061
|
return _loadM3U8;
|
|
@@ -14174,7 +15089,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14174
15089
|
var isEmpty = this._playlist.isEmpty;
|
|
14175
15090
|
var pollInterval;
|
|
14176
15091
|
if (this._playlist.lowLatency) {
|
|
14177
|
-
pollInterval = (this._playlist.currentStream.partTargetDuration
|
|
15092
|
+
pollInterval = (this._playlist.currentStream.partTargetDuration || 0) * 1e3;
|
|
14178
15093
|
} else {
|
|
14179
15094
|
var _this$_playlist$lastS;
|
|
14180
15095
|
pollInterval = (((_this$_playlist$lastS = this._playlist.lastSegment) === null || _this$_playlist$lastS === void 0 ? void 0 : _this$_playlist$lastS.duration) || 0) * 1e3;
|
|
@@ -14202,53 +15117,53 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14202
15117
|
}, {
|
|
14203
15118
|
key: "_loadSegmentDirect",
|
|
14204
15119
|
value: function() {
|
|
14205
|
-
var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15120
|
+
var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee14(loadOnce) {
|
|
14206
15121
|
var seg, appended, cachedError, _this$_playlist$curre2, bufferEnd, sameStream;
|
|
14207
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15122
|
+
return _regeneratorRuntime$1().wrap(function _callee14$(_context14) {
|
|
14208
15123
|
while (1)
|
|
14209
|
-
switch (
|
|
15124
|
+
switch (_context14.prev = _context14.next) {
|
|
14210
15125
|
case 0:
|
|
14211
15126
|
seg = this._playlist.nextSegment;
|
|
14212
15127
|
if (seg) {
|
|
14213
|
-
|
|
15128
|
+
_context14.next = 3;
|
|
14214
15129
|
break;
|
|
14215
15130
|
}
|
|
14216
|
-
return
|
|
15131
|
+
return _context14.abrupt("return");
|
|
14217
15132
|
case 3:
|
|
14218
15133
|
appended = false;
|
|
14219
15134
|
cachedError = null;
|
|
14220
|
-
|
|
15135
|
+
_context14.prev = 5;
|
|
14221
15136
|
this._segmentProcessing = true;
|
|
14222
15137
|
logger.log("load segment, sn:".concat(seg.sn, ", [").concat(seg.start, ", ").concat(seg.end, "], partIndex:").concat(seg.partIndex));
|
|
14223
|
-
|
|
15138
|
+
_context14.next = 10;
|
|
14224
15139
|
return this._reqAndBufferSegment(seg, this._playlist.getAudioSegment(seg));
|
|
14225
15140
|
case 10:
|
|
14226
|
-
appended =
|
|
14227
|
-
|
|
15141
|
+
appended = _context14.sent;
|
|
15142
|
+
_context14.next = 16;
|
|
14228
15143
|
break;
|
|
14229
15144
|
case 13:
|
|
14230
|
-
|
|
14231
|
-
|
|
14232
|
-
cachedError =
|
|
15145
|
+
_context14.prev = 13;
|
|
15146
|
+
_context14.t0 = _context14["catch"](5);
|
|
15147
|
+
cachedError = _context14.t0;
|
|
14233
15148
|
case 16:
|
|
14234
|
-
|
|
15149
|
+
_context14.prev = 16;
|
|
14235
15150
|
this._segmentProcessing = false;
|
|
14236
|
-
return
|
|
15151
|
+
return _context14.finish(16);
|
|
14237
15152
|
case 19:
|
|
14238
15153
|
if (!cachedError) {
|
|
14239
|
-
|
|
15154
|
+
_context14.next = 26;
|
|
14240
15155
|
break;
|
|
14241
15156
|
}
|
|
14242
15157
|
if (!this._bufferService.isFull()) {
|
|
14243
|
-
|
|
15158
|
+
_context14.next = 25;
|
|
14244
15159
|
break;
|
|
14245
15160
|
}
|
|
14246
15161
|
logger.log("load segment, sn:".concat(seg.sn, ", partIndex:").concat(seg.partIndex));
|
|
14247
15162
|
this._segmentProcessing = true;
|
|
14248
15163
|
this._isProcessQuotaExceeded = true;
|
|
14249
|
-
return
|
|
15164
|
+
return _context14.abrupt("return", false);
|
|
14250
15165
|
case 25:
|
|
14251
|
-
return
|
|
15166
|
+
return _context14.abrupt("return", this._emitError(StreamingError.create(cachedError)));
|
|
14252
15167
|
case 26:
|
|
14253
15168
|
if (appended) {
|
|
14254
15169
|
bufferEnd = this.bufferInfo().end;
|
|
@@ -14274,14 +15189,14 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14274
15189
|
this._loadSegment();
|
|
14275
15190
|
}
|
|
14276
15191
|
}
|
|
14277
|
-
return
|
|
15192
|
+
return _context14.abrupt("return", appended);
|
|
14278
15193
|
case 28:
|
|
14279
15194
|
case "end":
|
|
14280
|
-
return
|
|
15195
|
+
return _context14.stop();
|
|
14281
15196
|
}
|
|
14282
|
-
},
|
|
15197
|
+
}, _callee14, this, [[5, 13, 16, 19]]);
|
|
14283
15198
|
}));
|
|
14284
|
-
function _loadSegmentDirect(
|
|
15199
|
+
function _loadSegmentDirect(_x8) {
|
|
14285
15200
|
return _loadSegmentDirect2.apply(this, arguments);
|
|
14286
15201
|
}
|
|
14287
15202
|
return _loadSegmentDirect;
|
|
@@ -14289,45 +15204,45 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14289
15204
|
}, {
|
|
14290
15205
|
key: "_reqAndBufferSegment",
|
|
14291
15206
|
value: function() {
|
|
14292
|
-
var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15207
|
+
var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee15(seg, audioSeg) {
|
|
14293
15208
|
var _this$_bufferService2;
|
|
14294
15209
|
var cc, discontinuity, responses, data, sn, start, stream, before, contiguous, segStart;
|
|
14295
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15210
|
+
return _regeneratorRuntime$1().wrap(function _callee15$(_context15) {
|
|
14296
15211
|
while (1)
|
|
14297
|
-
switch (
|
|
15212
|
+
switch (_context15.prev = _context15.next) {
|
|
14298
15213
|
case 0:
|
|
14299
15214
|
cc = seg ? seg.cc : audioSeg.cc;
|
|
14300
15215
|
discontinuity = this._prevSegCc !== cc;
|
|
14301
15216
|
responses = [];
|
|
14302
|
-
|
|
14303
|
-
|
|
15217
|
+
_context15.prev = 3;
|
|
15218
|
+
_context15.next = 6;
|
|
14304
15219
|
return this._segmentLoader.load(seg, audioSeg, discontinuity);
|
|
14305
15220
|
case 6:
|
|
14306
|
-
responses =
|
|
14307
|
-
|
|
15221
|
+
responses = _context15.sent;
|
|
15222
|
+
_context15.next = 14;
|
|
14308
15223
|
break;
|
|
14309
15224
|
case 9:
|
|
14310
|
-
|
|
14311
|
-
|
|
14312
|
-
|
|
14313
|
-
this._segmentLoader.error =
|
|
14314
|
-
throw
|
|
15225
|
+
_context15.prev = 9;
|
|
15226
|
+
_context15.t0 = _context15["catch"](3);
|
|
15227
|
+
_context15.t0.fatal = false;
|
|
15228
|
+
this._segmentLoader.error = _context15.t0;
|
|
15229
|
+
throw _context15.t0;
|
|
14315
15230
|
case 14:
|
|
14316
15231
|
if (responses[0]) {
|
|
14317
|
-
|
|
15232
|
+
_context15.next = 16;
|
|
14318
15233
|
break;
|
|
14319
15234
|
}
|
|
14320
|
-
return
|
|
15235
|
+
return _context15.abrupt("return");
|
|
14321
15236
|
case 16:
|
|
14322
|
-
|
|
15237
|
+
_context15.next = 18;
|
|
14323
15238
|
return (_this$_bufferService2 = this._bufferService).decryptBuffer.apply(_this$_bufferService2, _toConsumableArray$2(responses));
|
|
14324
15239
|
case 18:
|
|
14325
|
-
data =
|
|
15240
|
+
data = _context15.sent;
|
|
14326
15241
|
if (data) {
|
|
14327
|
-
|
|
15242
|
+
_context15.next = 21;
|
|
14328
15243
|
break;
|
|
14329
15244
|
}
|
|
14330
|
-
return
|
|
15245
|
+
return _context15.abrupt("return");
|
|
14331
15246
|
case 21:
|
|
14332
15247
|
sn = seg ? seg.sn : audioSeg.sn;
|
|
14333
15248
|
start = seg ? seg.start : audioSeg.start;
|
|
@@ -14341,26 +15256,26 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14341
15256
|
logger.warn("update the new playlist liveEdge, segment id=".concat(sn, ", buffer start=").concat(segStart, ", liveEdge=").concat(this._playlist.liveEdge));
|
|
14342
15257
|
start = segStart;
|
|
14343
15258
|
}
|
|
14344
|
-
|
|
15259
|
+
_context15.next = 30;
|
|
14345
15260
|
return this._bufferService.appendBuffer(seg, audioSeg, data[0], data[1], discontinuity, contiguous, start);
|
|
14346
15261
|
case 30:
|
|
14347
15262
|
this.emit(Event$1.APPEND_COST, {
|
|
14348
15263
|
elapsed: Date.now() - before,
|
|
14349
15264
|
url: seg.url
|
|
14350
15265
|
});
|
|
14351
|
-
|
|
15266
|
+
_context15.next = 33;
|
|
14352
15267
|
return this._bufferService.evictBuffer(this.config.bufferBehind);
|
|
14353
15268
|
case 33:
|
|
14354
15269
|
this._prevSegCc = cc;
|
|
14355
15270
|
this._prevSegSn = sn;
|
|
14356
|
-
return
|
|
15271
|
+
return _context15.abrupt("return", true);
|
|
14357
15272
|
case 36:
|
|
14358
15273
|
case "end":
|
|
14359
|
-
return
|
|
15274
|
+
return _context15.stop();
|
|
14360
15275
|
}
|
|
14361
|
-
},
|
|
15276
|
+
}, _callee15, this, [[3, 9]]);
|
|
14362
15277
|
}));
|
|
14363
|
-
function _reqAndBufferSegment(
|
|
15278
|
+
function _reqAndBufferSegment(_x9, _x10) {
|
|
14364
15279
|
return _reqAndBufferSegment2.apply(this, arguments);
|
|
14365
15280
|
}
|
|
14366
15281
|
return _reqAndBufferSegment;
|
|
@@ -14368,11 +15283,11 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14368
15283
|
}, {
|
|
14369
15284
|
key: "_onCheckQuotaExceeded",
|
|
14370
15285
|
value: function() {
|
|
14371
|
-
var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15286
|
+
var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee16() {
|
|
14372
15287
|
var seekTime, buffered, inBuffered, i, bufferBehind, mediaTime;
|
|
14373
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15288
|
+
return _regeneratorRuntime$1().wrap(function _callee16$(_context16) {
|
|
14374
15289
|
while (1)
|
|
14375
|
-
switch (
|
|
15290
|
+
switch (_context16.prev = _context16.next) {
|
|
14376
15291
|
case 0:
|
|
14377
15292
|
seekTime = this.media.currentTime;
|
|
14378
15293
|
buffered = this.media.buffered;
|
|
@@ -14380,37 +15295,37 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14380
15295
|
i = 0;
|
|
14381
15296
|
case 4:
|
|
14382
15297
|
if (!(i < buffered.length)) {
|
|
14383
|
-
|
|
15298
|
+
_context16.next = 11;
|
|
14384
15299
|
break;
|
|
14385
15300
|
}
|
|
14386
15301
|
if (!(buffered.start(0) >= seekTime && seekTime < buffered.end(i))) {
|
|
14387
|
-
|
|
15302
|
+
_context16.next = 8;
|
|
14388
15303
|
break;
|
|
14389
15304
|
}
|
|
14390
15305
|
inBuffered = true;
|
|
14391
|
-
return
|
|
15306
|
+
return _context16.abrupt("break", 11);
|
|
14392
15307
|
case 8:
|
|
14393
15308
|
i++;
|
|
14394
|
-
|
|
15309
|
+
_context16.next = 4;
|
|
14395
15310
|
break;
|
|
14396
15311
|
case 11:
|
|
14397
15312
|
if (!this._bufferService.isFull()) {
|
|
14398
|
-
|
|
15313
|
+
_context16.next = 17;
|
|
14399
15314
|
break;
|
|
14400
15315
|
}
|
|
14401
15316
|
bufferBehind = inBuffered ? this.config.bufferBehind : 5;
|
|
14402
15317
|
mediaTime = this.media.currentTime;
|
|
14403
15318
|
if (!(mediaTime - bufferBehind > 0)) {
|
|
14404
|
-
|
|
15319
|
+
_context16.next = 17;
|
|
14405
15320
|
break;
|
|
14406
15321
|
}
|
|
14407
|
-
|
|
15322
|
+
_context16.next = 17;
|
|
14408
15323
|
return this._bufferService.removeBuffer(0, mediaTime - bufferBehind);
|
|
14409
15324
|
case 17:
|
|
14410
15325
|
case "end":
|
|
14411
|
-
return
|
|
15326
|
+
return _context16.stop();
|
|
14412
15327
|
}
|
|
14413
|
-
},
|
|
15328
|
+
}, _callee16, this);
|
|
14414
15329
|
}));
|
|
14415
15330
|
function _onCheckQuotaExceeded() {
|
|
14416
15331
|
return _onCheckQuotaExceeded2.apply(this, arguments);
|
|
@@ -14428,22 +15343,22 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14428
15343
|
}, {
|
|
14429
15344
|
key: "_clear",
|
|
14430
15345
|
value: function() {
|
|
14431
|
-
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
14432
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15346
|
+
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee17() {
|
|
15347
|
+
return _regeneratorRuntime$1().wrap(function _callee17$(_context17) {
|
|
14433
15348
|
while (1)
|
|
14434
|
-
switch (
|
|
15349
|
+
switch (_context17.prev = _context17.next) {
|
|
14435
15350
|
case 0:
|
|
14436
15351
|
clearTimeout(this._disconnectTimer);
|
|
14437
15352
|
this._stopTick();
|
|
14438
|
-
|
|
15353
|
+
_context17.next = 4;
|
|
14439
15354
|
return Promise.all([this._segmentLoader.cancel(), this._manifestLoader.stopPoll()]);
|
|
14440
15355
|
case 4:
|
|
14441
15356
|
this._segmentProcessing = false;
|
|
14442
15357
|
case 5:
|
|
14443
15358
|
case "end":
|
|
14444
|
-
return
|
|
15359
|
+
return _context17.stop();
|
|
14445
15360
|
}
|
|
14446
|
-
},
|
|
15361
|
+
}, _callee17, this);
|
|
14447
15362
|
}));
|
|
14448
15363
|
function _clear() {
|
|
14449
15364
|
return _clear2.apply(this, arguments);
|
|
@@ -14453,14 +15368,14 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14453
15368
|
}, {
|
|
14454
15369
|
key: "_reset",
|
|
14455
15370
|
value: function() {
|
|
14456
|
-
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15371
|
+
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee18() {
|
|
14457
15372
|
var _this$_seiService3;
|
|
14458
|
-
var reuseMse,
|
|
14459
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15373
|
+
var reuseMse, _args18 = arguments;
|
|
15374
|
+
return _regeneratorRuntime$1().wrap(function _callee18$(_context18) {
|
|
14460
15375
|
while (1)
|
|
14461
|
-
switch (
|
|
15376
|
+
switch (_context18.prev = _context18.next) {
|
|
14462
15377
|
case 0:
|
|
14463
|
-
reuseMse =
|
|
15378
|
+
reuseMse = _args18.length > 0 && _args18[0] !== void 0 ? _args18[0] : false;
|
|
14464
15379
|
this._reloadOnPlay = false;
|
|
14465
15380
|
this._prevSegSn = null;
|
|
14466
15381
|
this._prevSegCc = null;
|
|
@@ -14469,15 +15384,15 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14469
15384
|
this._segmentLoader.reset();
|
|
14470
15385
|
(_this$_seiService3 = this._seiService) === null || _this$_seiService3 === void 0 ? void 0 : _this$_seiService3.reset();
|
|
14471
15386
|
this._stats.reset();
|
|
14472
|
-
|
|
15387
|
+
_context18.next = 11;
|
|
14473
15388
|
return this._clear();
|
|
14474
15389
|
case 11:
|
|
14475
|
-
return
|
|
15390
|
+
return _context18.abrupt("return", this._bufferService.reset(reuseMse));
|
|
14476
15391
|
case 12:
|
|
14477
15392
|
case "end":
|
|
14478
|
-
return
|
|
15393
|
+
return _context18.stop();
|
|
14479
15394
|
}
|
|
14480
|
-
},
|
|
15395
|
+
}, _callee18, this);
|
|
14481
15396
|
}));
|
|
14482
15397
|
function _reset() {
|
|
14483
15398
|
return _reset2.apply(this, arguments);
|
|
@@ -14558,8 +15473,8 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14558
15473
|
value: function _tryEos() {
|
|
14559
15474
|
var _this$_bufferService3, _this$_bufferService4;
|
|
14560
15475
|
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);
|
|
15476
|
+
var _this$_playlist2 = this._playlist, nextSegment = _this$_playlist2.nextSegment, lastSegment = _this$_playlist2.lastSegment;
|
|
15477
|
+
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
15478
|
if (!eosAllowed) {
|
|
14564
15479
|
return;
|
|
14565
15480
|
}
|
|
@@ -14595,7 +15510,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14595
15510
|
}]);
|
|
14596
15511
|
return Hls2;
|
|
14597
15512
|
}(EventEmitter);
|
|
14598
|
-
_defineProperty$3(Hls, "version", "3.0.
|
|
15513
|
+
_defineProperty$3(Hls, "version", "3.0.20-rc.6");
|
|
14599
15514
|
try {
|
|
14600
15515
|
if (localStorage.getItem("xgd")) {
|
|
14601
15516
|
Hls.enableLogger();
|
|
@@ -14686,6 +15601,7 @@ var PluginExtension = /* @__PURE__ */ function() {
|
|
|
14686
15601
|
}]);
|
|
14687
15602
|
return PluginExtension2;
|
|
14688
15603
|
}();
|
|
15604
|
+
var _excluded = ["currentTime"];
|
|
14689
15605
|
function parseSwitchUrlArgs(args, plugin) {
|
|
14690
15606
|
var player = plugin.player;
|
|
14691
15607
|
var curTime = player.currentTime;
|
|
@@ -14696,9 +15612,14 @@ function parseSwitchUrlArgs(args, plugin) {
|
|
|
14696
15612
|
case "boolean":
|
|
14697
15613
|
options.seamless = args;
|
|
14698
15614
|
break;
|
|
14699
|
-
case "object":
|
|
14700
|
-
|
|
15615
|
+
case "object": {
|
|
15616
|
+
var currentTime = args.currentTime, rest = _objectWithoutProperties$1(args, _excluded);
|
|
15617
|
+
Object.assign(options, rest);
|
|
15618
|
+
if (typeof currentTime === "number") {
|
|
15619
|
+
options.startTime = currentTime;
|
|
15620
|
+
}
|
|
14701
15621
|
break;
|
|
15622
|
+
}
|
|
14702
15623
|
}
|
|
14703
15624
|
return options;
|
|
14704
15625
|
}
|
|
@@ -14708,10 +15629,11 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14708
15629
|
function HlsPlugin2() {
|
|
14709
15630
|
var _this;
|
|
14710
15631
|
_classCallCheck$3(this, HlsPlugin2);
|
|
14711
|
-
for (var _len = arguments.length,
|
|
14712
|
-
|
|
15632
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
15633
|
+
args[_key] = arguments[_key];
|
|
14713
15634
|
}
|
|
14714
|
-
_this = _super.call.apply(_super, [this].concat(
|
|
15635
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
15636
|
+
_defineProperty$3(_assertThisInitialized$2(_this), "logger", logger);
|
|
14715
15637
|
_defineProperty$3(_assertThisInitialized$2(_this), "hls", null);
|
|
14716
15638
|
_defineProperty$3(_assertThisInitialized$2(_this), "pluginExtension", null);
|
|
14717
15639
|
_defineProperty$3(_assertThisInitialized$2(_this), "getStats", function() {
|
|
@@ -14723,24 +15645,6 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14723
15645
|
var lang = _ref.lang;
|
|
14724
15646
|
(_this$hls2 = _this.hls) === null || _this$hls2 === void 0 ? void 0 : _this$hls2.switchSubtitleStream(lang);
|
|
14725
15647
|
});
|
|
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
15648
|
_defineProperty$3(_assertThisInitialized$2(_this), "_keepPauseStatus", function() {
|
|
14745
15649
|
var paused = _this.player.paused;
|
|
14746
15650
|
if (!paused)
|
|
@@ -14765,8 +15669,8 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14765
15669
|
}, {
|
|
14766
15670
|
key: "softDecode",
|
|
14767
15671
|
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$
|
|
15672
|
+
var _this$player, _this$player$config;
|
|
15673
|
+
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
15674
|
return !!mediaType && mediaType !== "video" && mediaType !== "audio";
|
|
14771
15675
|
}
|
|
14772
15676
|
}, {
|
|
@@ -14774,13 +15678,35 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14774
15678
|
value: function beforePlayerInit() {
|
|
14775
15679
|
var _this2 = this;
|
|
14776
15680
|
var config = this.player.config;
|
|
15681
|
+
var mediaElem = this.player.media || this.player.video;
|
|
14777
15682
|
var hlsOpts = config.hls || {};
|
|
14778
15683
|
if (!config.url && !config.__allowHlsEmptyUrl__ || !hlsOpts.preferMMS && MSE.isMMSOnly()) {
|
|
14779
15684
|
return;
|
|
14780
15685
|
}
|
|
14781
15686
|
if (this.hls)
|
|
14782
15687
|
this.hls.destroy();
|
|
14783
|
-
|
|
15688
|
+
var descriptor = Object.getOwnPropertyDescriptor(this.player, "switchURL");
|
|
15689
|
+
if (!descriptor || descriptor.writable) {
|
|
15690
|
+
this.player.switchURL = function(url, args) {
|
|
15691
|
+
return new Promise(function(resolve, reject) {
|
|
15692
|
+
var player = _this2.player, hls = _this2.hls;
|
|
15693
|
+
if (hls) {
|
|
15694
|
+
var _this2$player$config, _this2$player$config$;
|
|
15695
|
+
var options = parseSwitchUrlArgs(args, _this2);
|
|
15696
|
+
player.config.url = url;
|
|
15697
|
+
hls.switchURL(url, options).then(function() {
|
|
15698
|
+
return resolve(true);
|
|
15699
|
+
}).catch(reject);
|
|
15700
|
+
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) {
|
|
15701
|
+
_this2._keepPauseStatus();
|
|
15702
|
+
}
|
|
15703
|
+
} else {
|
|
15704
|
+
reject();
|
|
15705
|
+
}
|
|
15706
|
+
});
|
|
15707
|
+
};
|
|
15708
|
+
}
|
|
15709
|
+
var onSwitchUrl = this.player.switchURL;
|
|
14784
15710
|
this.player.handleSource = false;
|
|
14785
15711
|
hlsOpts.innerDegrade = hlsOpts.innerDegrade || config.innerDegrade;
|
|
14786
15712
|
if (hlsOpts.disconnectTime === null || hlsOpts.disconnectTime === void 0)
|
|
@@ -14788,7 +15714,7 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14788
15714
|
this.hls = new Hls(_objectSpread2$2({
|
|
14789
15715
|
softDecode: this.softDecode,
|
|
14790
15716
|
isLive: config.isLive,
|
|
14791
|
-
media:
|
|
15717
|
+
media: mediaElem,
|
|
14792
15718
|
startTime: config.startTime,
|
|
14793
15719
|
url: config.url
|
|
14794
15720
|
}, hlsOpts));
|
|
@@ -14806,7 +15732,7 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14806
15732
|
if (this.softDecode) {
|
|
14807
15733
|
this.pluginExtension = new PluginExtension(_objectSpread2$2({
|
|
14808
15734
|
isLive: config.isLive,
|
|
14809
|
-
media:
|
|
15735
|
+
media: mediaElem
|
|
14810
15736
|
}, hlsOpts), this);
|
|
14811
15737
|
this.player.forceDegradeToVideo = function() {
|
|
14812
15738
|
var _this2$pluginExtensio;
|
|
@@ -14823,8 +15749,8 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14823
15749
|
return (_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.replay();
|
|
14824
15750
|
});
|
|
14825
15751
|
}
|
|
15752
|
+
this.on(URL_CHANGE, onSwitchUrl);
|
|
14826
15753
|
this.on(SWITCH_SUBTITLE, this._onSwitchSubtitle);
|
|
14827
|
-
this.on(URL_CHANGE, this._onSwitchURL);
|
|
14828
15754
|
this.on(DESTROY, this.destroy.bind(this));
|
|
14829
15755
|
this._transError();
|
|
14830
15756
|
this._transCoreEvent(EVENT.TTFB);
|
|
@@ -14834,6 +15760,7 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14834
15760
|
this._transCoreEvent(EVENT.LOAD_RETRY);
|
|
14835
15761
|
this._transCoreEvent(EVENT.SOURCEBUFFER_CREATED);
|
|
14836
15762
|
this._transCoreEvent(EVENT.MEDIASOURCE_OPENED);
|
|
15763
|
+
this._transCoreEvent(EVENT.APPEND_BUFFER);
|
|
14837
15764
|
this._transCoreEvent(EVENT.REMOVE_BUFFER);
|
|
14838
15765
|
this._transCoreEvent(EVENT.BUFFEREOS);
|
|
14839
15766
|
this._transCoreEvent(EVENT.KEYFRAME);
|
|
@@ -14853,7 +15780,9 @@ var HlsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
14853
15780
|
this._transCoreEvent(Event$1.SUBTITLE_PLAYLIST);
|
|
14854
15781
|
this._transCoreEvent(Event$1.APPEND_COST);
|
|
14855
15782
|
if (config.url) {
|
|
14856
|
-
this.hls.load(config.url,
|
|
15783
|
+
this.hls.load(config.url, {
|
|
15784
|
+
reuseMse: true
|
|
15785
|
+
}).catch(function(e) {
|
|
14857
15786
|
});
|
|
14858
15787
|
}
|
|
14859
15788
|
}
|