@volcengine/veplayer-plugin 2.5.0-rc.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/index.d.ts +0 -1
- package/esm/index.development.css +0 -7
- package/esm/index.development.js +47254 -53339
- package/esm/index.production.css +1 -1
- package/esm/index.production.js +4 -13
- package/esm/veplayer.plugin.abr.development.js +12 -0
- package/esm/veplayer.plugin.abr.production.js +1 -1
- package/esm/veplayer.plugin.drm.development.js +12 -0
- package/esm/veplayer.plugin.drm.production.js +1 -1
- package/esm/veplayer.plugin.flv.development.js +670 -193
- package/esm/veplayer.plugin.flv.production.js +1 -1
- package/esm/veplayer.plugin.hls.development.js +1155 -371
- package/esm/veplayer.plugin.hls.production.js +1 -1
- package/esm/veplayer.plugin.mp4.development.js +13 -1
- package/esm/veplayer.plugin.mp4.production.js +1 -1
- package/esm/veplayer.plugin.rtm.development.js +154 -45
- package/esm/veplayer.plugin.rtm.production.js +1 -1
- package/esm/veplayer.plugin.shaka.development.js +12 -0
- package/esm/veplayer.plugin.shaka.production.js +1 -1
- package/package.json +1 -1
- package/umd/index.d.ts +0 -1
- package/umd/veplayer.plugin.abr.development.js +12 -0
- package/umd/veplayer.plugin.abr.production.js +1 -1
- package/umd/veplayer.plugin.drm.development.js +12 -0
- package/umd/veplayer.plugin.drm.production.js +1 -1
- package/umd/veplayer.plugin.flv.development.js +670 -193
- package/umd/veplayer.plugin.flv.production.js +1 -1
- package/umd/veplayer.plugin.hls.development.js +1122 -338
- package/umd/veplayer.plugin.hls.production.js +1 -1
- package/umd/veplayer.plugin.mp4.development.js +13 -1
- package/umd/veplayer.plugin.mp4.production.js +1 -1
- package/umd/veplayer.plugin.rtm.development.js +154 -45
- package/umd/veplayer.plugin.rtm.production.js +1 -1
- package/umd/veplayer.plugin.shaka.development.js +12 -0
- package/umd/veplayer.plugin.shaka.production.js +1 -1
- package/esm/veplayer.plugin.ad.development.css +0 -7
- package/esm/veplayer.plugin.ad.development.js +0 -9042
- package/esm/veplayer.plugin.ad.production.css +0 -1
- package/esm/veplayer.plugin.ad.production.js +0 -4
- package/umd/veplayer.plugin.ad.development.css +0 -7
- package/umd/veplayer.plugin.ad.development.js +0 -9045
- package/umd/veplayer.plugin.ad.production.css +0 -1
- package/umd/veplayer.plugin.ad.production.js +0 -1
|
@@ -1644,7 +1644,7 @@
|
|
|
1644
1644
|
}
|
|
1645
1645
|
return offsetTime;
|
|
1646
1646
|
};
|
|
1647
|
-
var version = "3.0.
|
|
1647
|
+
var version = "3.0.21-rc.2";
|
|
1648
1648
|
var ERROR_MAP = {
|
|
1649
1649
|
1: 5101,
|
|
1650
1650
|
2: 5102,
|
|
@@ -2112,6 +2112,18 @@
|
|
|
2112
2112
|
}
|
|
2113
2113
|
}
|
|
2114
2114
|
}
|
|
2115
|
+
}, {
|
|
2116
|
+
key: "defineMethod",
|
|
2117
|
+
value: function defineMethod(Obj, map) {
|
|
2118
|
+
for (var key in map) {
|
|
2119
|
+
if (Object.prototype.hasOwnProperty.call(map, key) && typeof map[key] === "function") {
|
|
2120
|
+
Object.defineProperty(Obj, key, {
|
|
2121
|
+
configurable: true,
|
|
2122
|
+
value: map[key]
|
|
2123
|
+
});
|
|
2124
|
+
}
|
|
2125
|
+
}
|
|
2126
|
+
}
|
|
2115
2127
|
}, {
|
|
2116
2128
|
key: "defaultConfig",
|
|
2117
2129
|
get: function get() {
|
|
@@ -2734,7 +2746,7 @@
|
|
|
2734
2746
|
arr2[i] = arr[i];
|
|
2735
2747
|
return arr2;
|
|
2736
2748
|
}
|
|
2737
|
-
function _createForOfIteratorHelper(o, allowArrayLike) {
|
|
2749
|
+
function _createForOfIteratorHelper$1(o, allowArrayLike) {
|
|
2738
2750
|
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
2739
2751
|
if (!it) {
|
|
2740
2752
|
if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
@@ -3089,7 +3101,7 @@
|
|
|
3089
3101
|
this.logCache.apply(this, [LogCacheLevel.DEBUG].concat(args));
|
|
3090
3102
|
if (Logger2.disabled)
|
|
3091
3103
|
return;
|
|
3092
|
-
(_console = console).debug.apply(_console, [
|
|
3104
|
+
(_console = console).debug.apply(_console, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
3093
3105
|
}
|
|
3094
3106
|
}, {
|
|
3095
3107
|
key: "log",
|
|
@@ -3101,7 +3113,7 @@
|
|
|
3101
3113
|
this.logCache.apply(this, [LogCacheLevel.LOG].concat(args));
|
|
3102
3114
|
if (Logger2.disabled)
|
|
3103
3115
|
return;
|
|
3104
|
-
(_console2 = console).log.apply(_console2, [
|
|
3116
|
+
(_console2 = console).log.apply(_console2, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
3105
3117
|
}
|
|
3106
3118
|
}, {
|
|
3107
3119
|
key: "warn",
|
|
@@ -3113,7 +3125,7 @@
|
|
|
3113
3125
|
this.logCache.apply(this, [LogCacheLevel.WARN].concat(args));
|
|
3114
3126
|
if (Logger2.disabled)
|
|
3115
3127
|
return;
|
|
3116
|
-
(_console3 = console).warn.apply(_console3, [
|
|
3128
|
+
(_console3 = console).warn.apply(_console3, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
3117
3129
|
}
|
|
3118
3130
|
}, {
|
|
3119
3131
|
key: "error",
|
|
@@ -3125,7 +3137,7 @@
|
|
|
3125
3137
|
this.logCache.apply(this, [LogCacheLevel.ERROR].concat(args));
|
|
3126
3138
|
if (Logger2.disabled)
|
|
3127
3139
|
return;
|
|
3128
|
-
(_console4 = console).error.apply(_console4, [
|
|
3140
|
+
(_console4 = console).error.apply(_console4, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
3129
3141
|
}
|
|
3130
3142
|
}, {
|
|
3131
3143
|
key: "logCache",
|
|
@@ -3140,7 +3152,7 @@
|
|
|
3140
3152
|
var finLogText = logText.map(function(item) {
|
|
3141
3153
|
return logable(item);
|
|
3142
3154
|
});
|
|
3143
|
-
text =
|
|
3155
|
+
text = "[".concat(nowTime$1(), "]") + this._prefix + JSON.stringify(finLogText);
|
|
3144
3156
|
} catch (e) {
|
|
3145
3157
|
return;
|
|
3146
3158
|
}
|
|
@@ -4056,8 +4068,8 @@
|
|
|
4056
4068
|
response
|
|
4057
4069
|
};
|
|
4058
4070
|
}
|
|
4059
|
-
function calculateSpeed(byteLen,
|
|
4060
|
-
return Math.round(byteLen * 8 * 1e3 /
|
|
4071
|
+
function calculateSpeed(byteLen, milliSecond) {
|
|
4072
|
+
return Math.round(byteLen * 8 * 1e3 / milliSecond / 1024);
|
|
4061
4073
|
}
|
|
4062
4074
|
var EVENT = {
|
|
4063
4075
|
ERROR: "error",
|
|
@@ -4069,6 +4081,7 @@
|
|
|
4069
4081
|
SOURCEBUFFER_CREATED: "core.sourcebuffercreated",
|
|
4070
4082
|
MEDIASOURCE_OPENED: "core.mediasourceopened",
|
|
4071
4083
|
ANALYZE_DURATION_EXCEEDED: "core.analyzedurationexceeded",
|
|
4084
|
+
APPEND_BUFFER: "core.appendbuffer",
|
|
4072
4085
|
REMOVE_BUFFER: "core.removebuffer",
|
|
4073
4086
|
BUFFEREOS: "core.buffereos",
|
|
4074
4087
|
KEYFRAME: "core.keyframe",
|
|
@@ -4841,7 +4854,7 @@
|
|
|
4841
4854
|
value: function _getHeaders(xhr) {
|
|
4842
4855
|
var headerLines = xhr.getAllResponseHeaders().trim().split("\r\n");
|
|
4843
4856
|
var headers = {};
|
|
4844
|
-
var _iterator = _createForOfIteratorHelper(headerLines), _step;
|
|
4857
|
+
var _iterator = _createForOfIteratorHelper$1(headerLines), _step;
|
|
4845
4858
|
try {
|
|
4846
4859
|
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
4847
4860
|
var header = _step.value;
|
|
@@ -4863,7 +4876,7 @@
|
|
|
4863
4876
|
}]);
|
|
4864
4877
|
return XhrLoader2;
|
|
4865
4878
|
}(EventEmitter);
|
|
4866
|
-
var _excluded$
|
|
4879
|
+
var _excluded$2 = ["retry", "retryDelay", "onRetryError", "transformError"];
|
|
4867
4880
|
var Task = /* @__PURE__ */ function() {
|
|
4868
4881
|
function Task2(type, config) {
|
|
4869
4882
|
_classCallCheck$1(this, Task2);
|
|
@@ -4883,7 +4896,7 @@
|
|
|
4883
4896
|
key: "exec",
|
|
4884
4897
|
value: function exec() {
|
|
4885
4898
|
var _this = this;
|
|
4886
|
-
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$
|
|
4899
|
+
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);
|
|
4887
4900
|
var request = /* @__PURE__ */ function() {
|
|
4888
4901
|
var _ref = _asyncToGenerator(/* @__PURE__ */ _regeneratorRuntime().mark(function _callee() {
|
|
4889
4902
|
var response, error, isRetry;
|
|
@@ -5679,6 +5692,60 @@
|
|
|
5679
5692
|
function _nonIterableRest() {
|
|
5680
5693
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
5681
5694
|
}
|
|
5695
|
+
function _createForOfIteratorHelper(o, allowArrayLike) {
|
|
5696
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
5697
|
+
if (!it) {
|
|
5698
|
+
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
5699
|
+
if (it)
|
|
5700
|
+
o = it;
|
|
5701
|
+
var i = 0;
|
|
5702
|
+
var F = function() {
|
|
5703
|
+
};
|
|
5704
|
+
return {
|
|
5705
|
+
s: F,
|
|
5706
|
+
n: function() {
|
|
5707
|
+
if (i >= o.length)
|
|
5708
|
+
return {
|
|
5709
|
+
done: true
|
|
5710
|
+
};
|
|
5711
|
+
return {
|
|
5712
|
+
done: false,
|
|
5713
|
+
value: o[i++]
|
|
5714
|
+
};
|
|
5715
|
+
},
|
|
5716
|
+
e: function(e) {
|
|
5717
|
+
throw e;
|
|
5718
|
+
},
|
|
5719
|
+
f: F
|
|
5720
|
+
};
|
|
5721
|
+
}
|
|
5722
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
5723
|
+
}
|
|
5724
|
+
var normalCompletion = true, didErr = false, err;
|
|
5725
|
+
return {
|
|
5726
|
+
s: function() {
|
|
5727
|
+
it = it.call(o);
|
|
5728
|
+
},
|
|
5729
|
+
n: function() {
|
|
5730
|
+
var step = it.next();
|
|
5731
|
+
normalCompletion = step.done;
|
|
5732
|
+
return step;
|
|
5733
|
+
},
|
|
5734
|
+
e: function(e) {
|
|
5735
|
+
didErr = true;
|
|
5736
|
+
err = e;
|
|
5737
|
+
},
|
|
5738
|
+
f: function() {
|
|
5739
|
+
try {
|
|
5740
|
+
if (!normalCompletion && it.return != null)
|
|
5741
|
+
it.return();
|
|
5742
|
+
} finally {
|
|
5743
|
+
if (didErr)
|
|
5744
|
+
throw err;
|
|
5745
|
+
}
|
|
5746
|
+
}
|
|
5747
|
+
};
|
|
5748
|
+
}
|
|
5682
5749
|
function _toPrimitive(input, hint) {
|
|
5683
5750
|
if (typeof input !== "object" || input === null)
|
|
5684
5751
|
return input;
|
|
@@ -5701,13 +5768,16 @@
|
|
|
5701
5768
|
METADATA: "metadata"
|
|
5702
5769
|
};
|
|
5703
5770
|
var VideoCodecType = {
|
|
5771
|
+
AV1: "av1",
|
|
5704
5772
|
AVC: "avc",
|
|
5705
5773
|
HEVC: "hevc"
|
|
5706
5774
|
};
|
|
5707
5775
|
var AudioCodecType = {
|
|
5708
5776
|
AAC: "aac",
|
|
5709
5777
|
G711PCMA: "g7110a",
|
|
5710
|
-
G711PCMU: "g7110m"
|
|
5778
|
+
G711PCMU: "g7110m",
|
|
5779
|
+
OPUS: "opus",
|
|
5780
|
+
MP3: "mp3"
|
|
5711
5781
|
};
|
|
5712
5782
|
var WarningType = {
|
|
5713
5783
|
LARGE_AV_SHIFT: "LARGE_AV_SHIFT",
|
|
@@ -5747,6 +5817,7 @@
|
|
|
5747
5817
|
_defineProperty(this, "isVideoEncryption", false);
|
|
5748
5818
|
_defineProperty(this, "isAudioEncryption", false);
|
|
5749
5819
|
_defineProperty(this, "isVideo", true);
|
|
5820
|
+
_defineProperty(this, "lastKeyFrameDts", 0);
|
|
5750
5821
|
_defineProperty(this, "kid", null);
|
|
5751
5822
|
_defineProperty(this, "pssh", null);
|
|
5752
5823
|
_defineProperty(this, "ext", void 0);
|
|
@@ -5789,6 +5860,9 @@
|
|
|
5789
5860
|
}, {
|
|
5790
5861
|
key: "exist",
|
|
5791
5862
|
value: function exist() {
|
|
5863
|
+
if (/av01/.test(this.codec)) {
|
|
5864
|
+
return true;
|
|
5865
|
+
}
|
|
5792
5866
|
return !!(this.pps.length && this.sps.length && this.codec);
|
|
5793
5867
|
}
|
|
5794
5868
|
}, {
|
|
@@ -5812,6 +5886,7 @@
|
|
|
5812
5886
|
_defineProperty(this, "codecType", AudioCodecType.AAC);
|
|
5813
5887
|
_defineProperty(this, "pid", -1);
|
|
5814
5888
|
_defineProperty(this, "codec", "");
|
|
5889
|
+
_defineProperty(this, "container", "");
|
|
5815
5890
|
_defineProperty(this, "sequenceNumber", 0);
|
|
5816
5891
|
_defineProperty(this, "sampleDuration", 0);
|
|
5817
5892
|
_defineProperty(this, "timescale", 0);
|
|
@@ -5852,7 +5927,7 @@
|
|
|
5852
5927
|
}, {
|
|
5853
5928
|
key: "exist",
|
|
5854
5929
|
value: function exist() {
|
|
5855
|
-
return !!(this.sampleRate && this.channelCount && this.codec && this.codecType === AudioCodecType.AAC);
|
|
5930
|
+
return !!(this.sampleRate && this.channelCount && (this.codec || this.container) && (this.codecType === AudioCodecType.AAC || this.codecType === AudioCodecType.G711PCMA || this.codecType === AudioCodecType.G711PCMU || this.codecType === AudioCodecType.OPUS || this.codecType === AudioCodecType.MP3));
|
|
5856
5931
|
}
|
|
5857
5932
|
}, {
|
|
5858
5933
|
key: "hasSample",
|
|
@@ -7240,6 +7315,115 @@
|
|
|
7240
7315
|
}]);
|
|
7241
7316
|
return TsFixer2;
|
|
7242
7317
|
}();
|
|
7318
|
+
var BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];
|
|
7319
|
+
var FREQ = [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3];
|
|
7320
|
+
var SamplesCoefficients = [
|
|
7321
|
+
[
|
|
7322
|
+
0,
|
|
7323
|
+
72,
|
|
7324
|
+
144,
|
|
7325
|
+
12
|
|
7326
|
+
],
|
|
7327
|
+
[
|
|
7328
|
+
0,
|
|
7329
|
+
0,
|
|
7330
|
+
0,
|
|
7331
|
+
0
|
|
7332
|
+
],
|
|
7333
|
+
[
|
|
7334
|
+
0,
|
|
7335
|
+
72,
|
|
7336
|
+
144,
|
|
7337
|
+
12
|
|
7338
|
+
],
|
|
7339
|
+
[
|
|
7340
|
+
0,
|
|
7341
|
+
144,
|
|
7342
|
+
144,
|
|
7343
|
+
12
|
|
7344
|
+
]
|
|
7345
|
+
];
|
|
7346
|
+
var BytesInSlot = [
|
|
7347
|
+
0,
|
|
7348
|
+
1,
|
|
7349
|
+
1,
|
|
7350
|
+
4
|
|
7351
|
+
];
|
|
7352
|
+
var chromeVersion = null;
|
|
7353
|
+
var MPEG = /* @__PURE__ */ function() {
|
|
7354
|
+
function MPEG2() {
|
|
7355
|
+
_classCallCheck(this, MPEG2);
|
|
7356
|
+
}
|
|
7357
|
+
_createClass(MPEG2, null, [{
|
|
7358
|
+
key: "isHeader",
|
|
7359
|
+
value: function isHeader(data, offset) {
|
|
7360
|
+
return offset + 1 < data.length && data[offset] === 255 && (data[offset + 1] & 224) === 224 && (data[offset + 1] & 6) !== 0;
|
|
7361
|
+
}
|
|
7362
|
+
}, {
|
|
7363
|
+
key: "appendFrame",
|
|
7364
|
+
value: function appendFrame(track, data, offset, pts, frameIndex) {
|
|
7365
|
+
if (offset + 24 > data.length) {
|
|
7366
|
+
return;
|
|
7367
|
+
}
|
|
7368
|
+
var header = MPEG2.parseHeader(data, offset);
|
|
7369
|
+
if (header && offset + header.frameLength <= data.length) {
|
|
7370
|
+
var frameDuration = header.samplesPerFrame * 9e4 / header.sampleRate;
|
|
7371
|
+
var stamp = pts + frameIndex * frameDuration;
|
|
7372
|
+
var sample = {
|
|
7373
|
+
data: data.subarray(offset, offset + header.frameLength),
|
|
7374
|
+
pts: stamp,
|
|
7375
|
+
dts: stamp
|
|
7376
|
+
};
|
|
7377
|
+
sample.size = sample.data.byteLength;
|
|
7378
|
+
track.config = [];
|
|
7379
|
+
track.channelCount = header.channelCount;
|
|
7380
|
+
track.sampleRate = header.sampleRate;
|
|
7381
|
+
track.container = "audio/mpeg";
|
|
7382
|
+
track.samples.push(sample);
|
|
7383
|
+
return {
|
|
7384
|
+
length: header.frameLength
|
|
7385
|
+
};
|
|
7386
|
+
}
|
|
7387
|
+
}
|
|
7388
|
+
}, {
|
|
7389
|
+
key: "parseHeader",
|
|
7390
|
+
value: function parseHeader(data, offset) {
|
|
7391
|
+
var mpegVersion = data[offset + 1] >> 3 & 3;
|
|
7392
|
+
var mpegLayer = data[offset + 1] >> 1 & 3;
|
|
7393
|
+
var bitRateIndex = data[offset + 2] >> 4 & 15;
|
|
7394
|
+
var sampleRateIndex = data[offset + 2] >> 2 & 3;
|
|
7395
|
+
if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {
|
|
7396
|
+
var paddingBit = data[offset + 2] >> 1 & 1;
|
|
7397
|
+
var channelMode = data[offset + 3] >> 6;
|
|
7398
|
+
var columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;
|
|
7399
|
+
var bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1e3;
|
|
7400
|
+
var columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;
|
|
7401
|
+
var sampleRate = FREQ[columnInSampleRates * 3 + sampleRateIndex];
|
|
7402
|
+
var channelCount = channelMode === 3 ? 1 : 2;
|
|
7403
|
+
var sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];
|
|
7404
|
+
var bytesInSlot = BytesInSlot[mpegLayer];
|
|
7405
|
+
var samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;
|
|
7406
|
+
var frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot;
|
|
7407
|
+
if (chromeVersion === null) {
|
|
7408
|
+
var userAgent = navigator.userAgent || "";
|
|
7409
|
+
var result = userAgent.match(/Chrome\/(\d+)/i);
|
|
7410
|
+
chromeVersion = result ? parseInt(result[1]) : 0;
|
|
7411
|
+
}
|
|
7412
|
+
var needChromeFix = !!chromeVersion && chromeVersion <= 87;
|
|
7413
|
+
if (needChromeFix && mpegLayer === 2 && bitRate >= 224e3 && channelMode === 0) {
|
|
7414
|
+
data[offset + 3] = data[offset + 3] | 128;
|
|
7415
|
+
}
|
|
7416
|
+
return {
|
|
7417
|
+
sampleRate,
|
|
7418
|
+
channelCount,
|
|
7419
|
+
frameLength,
|
|
7420
|
+
samplesPerFrame
|
|
7421
|
+
};
|
|
7422
|
+
}
|
|
7423
|
+
}
|
|
7424
|
+
}]);
|
|
7425
|
+
return MPEG2;
|
|
7426
|
+
}();
|
|
7243
7427
|
var logger$4 = new Logger$1("TsDemuxer");
|
|
7244
7428
|
var TsDemuxer = /* @__PURE__ */ function() {
|
|
7245
7429
|
function TsDemuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
@@ -7323,6 +7507,11 @@
|
|
|
7323
7507
|
case 15:
|
|
7324
7508
|
audioTrack.pid = audioPid = esPid;
|
|
7325
7509
|
break;
|
|
7510
|
+
case 3:
|
|
7511
|
+
case 4:
|
|
7512
|
+
audioTrack.pid = audioPid = esPid;
|
|
7513
|
+
audioTrack.codecType = AudioCodecType.MP3;
|
|
7514
|
+
break;
|
|
7326
7515
|
case 27:
|
|
7327
7516
|
if (videoPid !== -1)
|
|
7328
7517
|
break;
|
|
@@ -7522,7 +7711,14 @@
|
|
|
7522
7711
|
logger$4.warn("Cannot parse audio pes", this._audioPesData);
|
|
7523
7712
|
return;
|
|
7524
7713
|
}
|
|
7525
|
-
this.
|
|
7714
|
+
switch (this.audioTrack.codecType) {
|
|
7715
|
+
case AudioCodecType.AAC:
|
|
7716
|
+
this._parseAacData(pes);
|
|
7717
|
+
break;
|
|
7718
|
+
case AudioCodecType.MP3:
|
|
7719
|
+
this._parseMPEG(pes);
|
|
7720
|
+
break;
|
|
7721
|
+
}
|
|
7526
7722
|
this._audioPesData = [];
|
|
7527
7723
|
}
|
|
7528
7724
|
}, {
|
|
@@ -7559,6 +7755,32 @@
|
|
|
7559
7755
|
logger$4.warn("Cannot parse aac adts", pes);
|
|
7560
7756
|
}
|
|
7561
7757
|
}
|
|
7758
|
+
}, {
|
|
7759
|
+
key: "_parseMPEG",
|
|
7760
|
+
value: function _parseMPEG(pes) {
|
|
7761
|
+
var data = pes.data;
|
|
7762
|
+
var length = data.length;
|
|
7763
|
+
var frameIndex = 0;
|
|
7764
|
+
var offset = 0;
|
|
7765
|
+
var pts = pes.pts;
|
|
7766
|
+
if (pts === void 0) {
|
|
7767
|
+
logger$4.warn("[tsdemuxer]: MPEG PES unknown PTS");
|
|
7768
|
+
return;
|
|
7769
|
+
}
|
|
7770
|
+
while (offset < length) {
|
|
7771
|
+
if (MPEG.isHeader(data, offset)) {
|
|
7772
|
+
var frame = MPEG.appendFrame(this.audioTrack, data, offset, pts, frameIndex);
|
|
7773
|
+
if (frame) {
|
|
7774
|
+
offset += frame.length;
|
|
7775
|
+
frameIndex++;
|
|
7776
|
+
} else {
|
|
7777
|
+
break;
|
|
7778
|
+
}
|
|
7779
|
+
} else {
|
|
7780
|
+
offset++;
|
|
7781
|
+
}
|
|
7782
|
+
}
|
|
7783
|
+
}
|
|
7562
7784
|
}], [{
|
|
7563
7785
|
key: "probe",
|
|
7564
7786
|
value: function probe(data) {
|
|
@@ -7605,7 +7827,7 @@
|
|
|
7605
7827
|
_classCallCheck(this, ByteReader2);
|
|
7606
7828
|
this.dv = new DataView(buf);
|
|
7607
7829
|
this.start = this.offset = offset || this.dv.byteOffset;
|
|
7608
|
-
this.end = len ? this.start + len : this.dv.byteLength;
|
|
7830
|
+
this.end = len ? this.start + len : this.start + this.dv.byteLength;
|
|
7609
7831
|
}
|
|
7610
7832
|
_createClass(ByteReader2, [{
|
|
7611
7833
|
key: "buffer",
|
|
@@ -7707,7 +7929,7 @@
|
|
|
7707
7929
|
value: function readToBuffer(len) {
|
|
7708
7930
|
var buffer;
|
|
7709
7931
|
if (this.offset || len) {
|
|
7710
|
-
buffer = this.dv.buffer.slice(this.offset, len ? this.offset + len :
|
|
7932
|
+
buffer = this.dv.buffer.slice(this.offset, len ? this.offset + len : this.end);
|
|
7711
7933
|
} else {
|
|
7712
7934
|
buffer = this.dv.buffer;
|
|
7713
7935
|
}
|
|
@@ -7760,6 +7982,47 @@
|
|
|
7760
7982
|
}]);
|
|
7761
7983
|
return ByteReader2;
|
|
7762
7984
|
}();
|
|
7985
|
+
var BitReader = /* @__PURE__ */ function() {
|
|
7986
|
+
function BitReader2(val, size) {
|
|
7987
|
+
_classCallCheck(this, BitReader2);
|
|
7988
|
+
this.offset = 0;
|
|
7989
|
+
this.val = val;
|
|
7990
|
+
this.size = size;
|
|
7991
|
+
}
|
|
7992
|
+
_createClass(BitReader2, [{
|
|
7993
|
+
key: "skip",
|
|
7994
|
+
value: function skip(len) {
|
|
7995
|
+
this.offset += len;
|
|
7996
|
+
}
|
|
7997
|
+
}, {
|
|
7998
|
+
key: "read",
|
|
7999
|
+
value: function read(len) {
|
|
8000
|
+
var unreadLength = this.size - this.offset - len;
|
|
8001
|
+
if (unreadLength >= 0) {
|
|
8002
|
+
var bits = 0, i = 0;
|
|
8003
|
+
this.offset += len;
|
|
8004
|
+
if (this.size > 31) {
|
|
8005
|
+
for (; i < len; i++) {
|
|
8006
|
+
bits += Math.pow(2, i);
|
|
8007
|
+
}
|
|
8008
|
+
return this.val / Math.pow(2, unreadLength) & bits;
|
|
8009
|
+
} else {
|
|
8010
|
+
for (; i < len; i++) {
|
|
8011
|
+
bits += 1 << i;
|
|
8012
|
+
}
|
|
8013
|
+
return this.val >>> unreadLength & bits;
|
|
8014
|
+
}
|
|
8015
|
+
}
|
|
8016
|
+
throw new Error("the number of the read operation exceeds the total length limit of bits");
|
|
8017
|
+
}
|
|
8018
|
+
}], [{
|
|
8019
|
+
key: "fromByte",
|
|
8020
|
+
value: function fromByte(byte, len) {
|
|
8021
|
+
return new BitReader2(byte.read(len), len << 3);
|
|
8022
|
+
}
|
|
8023
|
+
}]);
|
|
8024
|
+
return BitReader2;
|
|
8025
|
+
}();
|
|
7763
8026
|
var MP4Parser = /* @__PURE__ */ function() {
|
|
7764
8027
|
function MP4Parser2() {
|
|
7765
8028
|
_classCallCheck(this, MP4Parser2);
|
|
@@ -8099,6 +8362,8 @@
|
|
|
8099
8362
|
ret.entryCount = readBig32(data);
|
|
8100
8363
|
ret.entries = MP4Parser2.findBox(data.subarray(4), [], start + 4).map(function(b) {
|
|
8101
8364
|
switch (b.type) {
|
|
8365
|
+
case "av01":
|
|
8366
|
+
return MP4Parser2.av01(b);
|
|
8102
8367
|
case "avc1":
|
|
8103
8368
|
case "avc2":
|
|
8104
8369
|
case "avc3":
|
|
@@ -8178,6 +8443,69 @@
|
|
|
8178
8443
|
}
|
|
8179
8444
|
});
|
|
8180
8445
|
}
|
|
8446
|
+
}, {
|
|
8447
|
+
key: "colr",
|
|
8448
|
+
value: function colr(box) {
|
|
8449
|
+
return parseBox(box, false, function(ret, data) {
|
|
8450
|
+
var byte = ByteReader.fromUint8(data);
|
|
8451
|
+
ret.data = box.data;
|
|
8452
|
+
ret.colorType = byte.readString(4);
|
|
8453
|
+
if (ret.colorType === "nclx") {
|
|
8454
|
+
ret.colorPrimaries = byte.read(2);
|
|
8455
|
+
ret.transferCharacteristics = byte.read(2);
|
|
8456
|
+
ret.matrixCoefficients = byte.read(2);
|
|
8457
|
+
ret.fullRangeFlag = byte.read(1) >> 7;
|
|
8458
|
+
} else if (ret.colorType === "rICC" || ret.colorType === "prof") {
|
|
8459
|
+
ret.iccProfile = data.readToUint8();
|
|
8460
|
+
}
|
|
8461
|
+
});
|
|
8462
|
+
}
|
|
8463
|
+
}, {
|
|
8464
|
+
key: "av01",
|
|
8465
|
+
value: function av01(box) {
|
|
8466
|
+
return parseBox(box, false, function(ret, data, start) {
|
|
8467
|
+
var bodyStart = parseVisualSampleEntry(ret, data);
|
|
8468
|
+
var bodyData = data.subarray(bodyStart);
|
|
8469
|
+
start += bodyStart;
|
|
8470
|
+
ret.av1C = MP4Parser2.av1C(MP4Parser2.findBox(bodyData, ["av1C"], start)[0]);
|
|
8471
|
+
ret.colr = MP4Parser2.colr(MP4Parser2.findBox(bodyData, ["colr"], start)[0]);
|
|
8472
|
+
});
|
|
8473
|
+
}
|
|
8474
|
+
}, {
|
|
8475
|
+
key: "av1C",
|
|
8476
|
+
value: function av1C(box) {
|
|
8477
|
+
return parseBox(box, false, function(ret, data) {
|
|
8478
|
+
ret.data = box.data;
|
|
8479
|
+
var byte = ByteReader.fromUint8(data);
|
|
8480
|
+
var bit = BitReader.fromByte(byte, 4);
|
|
8481
|
+
ret.marker = bit.read(1);
|
|
8482
|
+
ret.version = bit.read(7);
|
|
8483
|
+
ret.seqProfile = bit.read(3);
|
|
8484
|
+
ret.seqLevelIdx0 = bit.read(5);
|
|
8485
|
+
ret.seqTier0 = bit.read(1);
|
|
8486
|
+
ret.highBitdepth = bit.read(1);
|
|
8487
|
+
ret.twelveBit = bit.read(1);
|
|
8488
|
+
ret.monochrome = bit.read(1);
|
|
8489
|
+
ret.chromaSubsamplingX = bit.read(1);
|
|
8490
|
+
ret.chromaSubsamplingY = bit.read(1);
|
|
8491
|
+
ret.chromaSamplePosition = bit.read(2);
|
|
8492
|
+
ret.reserved = bit.read(3);
|
|
8493
|
+
ret.initialPresentationDelayPresent = bit.read(1);
|
|
8494
|
+
if (ret.initialPresentationDelayPresent) {
|
|
8495
|
+
ret.initialPresentationDelayMinusOne = bit.read(4);
|
|
8496
|
+
} else {
|
|
8497
|
+
ret.initialPresentationDelayMinusOne = 0;
|
|
8498
|
+
}
|
|
8499
|
+
ret.configOBUs = byte.readToUint8();
|
|
8500
|
+
var bitdepth;
|
|
8501
|
+
if (ret.seqLevelIdx0 === 2 && ret.highBitdepth === 1) {
|
|
8502
|
+
bitdepth = ret.twelveBit === 1 ? "12" : "10";
|
|
8503
|
+
} else if (ret.seqProfile <= 2) {
|
|
8504
|
+
bitdepth = ret.highBitdepth === 1 ? "10" : "08";
|
|
8505
|
+
}
|
|
8506
|
+
ret.codec = ["av01", ret.seqProfile, (ret.seqLevelIdx0 < 10 ? "0" + ret.seqLevelIdx0 : ret.seqLevelIdx0) + (ret.seqTier0 ? "H" : "M"), bitdepth].join(".");
|
|
8507
|
+
});
|
|
8508
|
+
}
|
|
8181
8509
|
}, {
|
|
8182
8510
|
key: "avc1",
|
|
8183
8511
|
value: function avc1(box) {
|
|
@@ -8611,7 +8939,12 @@
|
|
|
8611
8939
|
if (e1.pasp) {
|
|
8612
8940
|
v.sarRatio = [e1.pasp.hSpacing, e1.pasp.vSpacing];
|
|
8613
8941
|
}
|
|
8614
|
-
if (e1.
|
|
8942
|
+
if (e1.av1C) {
|
|
8943
|
+
v.codecType = VideoCodecType.AV1;
|
|
8944
|
+
v.codec = e1.av1C.codec;
|
|
8945
|
+
v.av1C = e1.av1C.data;
|
|
8946
|
+
v.colr = e1.colr.data;
|
|
8947
|
+
} else if (e1.hvcC) {
|
|
8615
8948
|
v.codecType = VideoCodecType.HEVC;
|
|
8616
8949
|
v.codec = e1.hvcC.codec;
|
|
8617
8950
|
v.vps = e1.hvcC.vps;
|
|
@@ -8930,8 +9263,9 @@
|
|
|
8930
9263
|
function parseBox(box, isFullBox, parse2) {
|
|
8931
9264
|
if (!box)
|
|
8932
9265
|
return;
|
|
8933
|
-
if (box.size !== box.data.length)
|
|
9266
|
+
if (box.size !== box.data.length) {
|
|
8934
9267
|
throw new Error("box ".concat(box.type, " size !== data.length"));
|
|
9268
|
+
}
|
|
8935
9269
|
var ret = {
|
|
8936
9270
|
start: box.start,
|
|
8937
9271
|
size: box.size,
|
|
@@ -8970,11 +9304,167 @@
|
|
|
8970
9304
|
var FMP4Demuxer = /* @__PURE__ */ function() {
|
|
8971
9305
|
function FMP4Demuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
8972
9306
|
_classCallCheck(this, FMP4Demuxer2);
|
|
9307
|
+
_defineProperty(this, "__loadedMoofWraps", []);
|
|
9308
|
+
_defineProperty(this, "__lastRemainData", null);
|
|
9309
|
+
_defineProperty(this, "__lastRemainDataStart", 0);
|
|
9310
|
+
_defineProperty(this, "__nextMoofStart", -1);
|
|
8973
9311
|
this.videoTrack = videoTrack || new VideoTrack();
|
|
8974
9312
|
this.audioTrack = audioTrack || new AudioTrack();
|
|
8975
9313
|
this.metadataTrack = metadataTrack || new MetadataTrack();
|
|
8976
9314
|
}
|
|
8977
9315
|
_createClass(FMP4Demuxer2, [{
|
|
9316
|
+
key: "demuxPart",
|
|
9317
|
+
value: function demuxPart(partData, partDataStart, moov) {
|
|
9318
|
+
var _this = this;
|
|
9319
|
+
var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
|
|
9320
|
+
var videoExist = videoTrack.exist();
|
|
9321
|
+
var audioExist = audioTrack.exist();
|
|
9322
|
+
var isAV01 = /av01/.test(videoTrack.codec);
|
|
9323
|
+
videoTrack.samples = [];
|
|
9324
|
+
audioTrack.samples = [];
|
|
9325
|
+
var data = partData;
|
|
9326
|
+
var dataStart = partDataStart;
|
|
9327
|
+
if (this.__lastRemainData) {
|
|
9328
|
+
var lastRemainDataEnd = this.__lastRemainDataStart + this.__lastRemainData.byteLength;
|
|
9329
|
+
var continuous = partDataStart <= lastRemainDataEnd && partDataStart > this.__lastRemainDataStart && partDataStart + partData.byteLength > lastRemainDataEnd;
|
|
9330
|
+
if (continuous) {
|
|
9331
|
+
var noDuplicateData = partData.subarray(this.__lastRemainData.byteLength + this.__lastRemainDataStart - partDataStart);
|
|
9332
|
+
data = concatUint8Array(this.__lastRemainData, noDuplicateData);
|
|
9333
|
+
dataStart = this.__lastRemainDataStart;
|
|
9334
|
+
this.__lastRemainData = null;
|
|
9335
|
+
} else {
|
|
9336
|
+
this.__lastRemainData = null;
|
|
9337
|
+
this.__lastRemainDataStart = 0;
|
|
9338
|
+
this.__nextMoofStart = -1;
|
|
9339
|
+
}
|
|
9340
|
+
}
|
|
9341
|
+
if (!moov) {
|
|
9342
|
+
var moovBox = MP4Parser.findBox(data, ["moov"])[0];
|
|
9343
|
+
if (!moovBox)
|
|
9344
|
+
throw new Error("cannot found moov box");
|
|
9345
|
+
moov = MP4Parser.moov(moovBox);
|
|
9346
|
+
}
|
|
9347
|
+
if (data) {
|
|
9348
|
+
var dataEnd = dataStart + data.byteLength;
|
|
9349
|
+
if (!videoExist && !audioExist) {
|
|
9350
|
+
MP4Parser.moovToTrack(moov, videoTrack, audioTrack);
|
|
9351
|
+
}
|
|
9352
|
+
var moofBoxes = [];
|
|
9353
|
+
if (this.__nextMoofStart < 0) {
|
|
9354
|
+
MP4Parser.findBox(data, ["moof"], dataStart).forEach(function(v) {
|
|
9355
|
+
return moofBoxes.push(v);
|
|
9356
|
+
});
|
|
9357
|
+
} else if (this.__nextMoofStart >= dataStart && this.__nextMoofStart <= dataEnd - 8) {
|
|
9358
|
+
MP4Parser.findBox(data.subarray(this.__nextMoofStart - dataStart), ["moof"], this.__nextMoofStart).forEach(function(v) {
|
|
9359
|
+
return moofBoxes.push(v);
|
|
9360
|
+
});
|
|
9361
|
+
}
|
|
9362
|
+
moofBoxes.filter(function(moofBox) {
|
|
9363
|
+
return moofBox.size <= moofBox.data.length;
|
|
9364
|
+
}).forEach(function(moofBox) {
|
|
9365
|
+
var moof = MP4Parser.moof(moofBox);
|
|
9366
|
+
_this.__nextMoofStart = moof.start + Math.max.apply(Math, _toConsumableArray(moof.traf.map(function(v) {
|
|
9367
|
+
return v.trun.samples.reduce(function(ret, w) {
|
|
9368
|
+
return ret + w.size;
|
|
9369
|
+
}, v.trun.dataOffset || 0);
|
|
9370
|
+
})));
|
|
9371
|
+
_this.__loadedMoofWraps.push({
|
|
9372
|
+
start: moof.start,
|
|
9373
|
+
nextMoofStart: _this.__nextMoofStart,
|
|
9374
|
+
moof
|
|
9375
|
+
});
|
|
9376
|
+
_this.__loadedMoofWraps.sort(function(p, n) {
|
|
9377
|
+
return p.start - n.start;
|
|
9378
|
+
});
|
|
9379
|
+
});
|
|
9380
|
+
var _iterator = _createForOfIteratorHelper(this.__loadedMoofWraps), _step;
|
|
9381
|
+
try {
|
|
9382
|
+
var _loop = function _loop2() {
|
|
9383
|
+
var moofWrap = _step.value;
|
|
9384
|
+
if (moofWrap.start > dataEnd || moofWrap.nextMoofStart < dataStart) {
|
|
9385
|
+
return "continue";
|
|
9386
|
+
}
|
|
9387
|
+
var moofStart = moofWrap.start;
|
|
9388
|
+
var tracks = MP4Parser.moofToSamples(moofWrap.moof, videoTrack, audioTrack);
|
|
9389
|
+
var videoBaseMediaDecodeTime = videoTrack.baseMediaDecodeTime;
|
|
9390
|
+
var audioBaseMediaDecodeTime = audioTrack.baseMediaDecodeTime;
|
|
9391
|
+
var nalSize;
|
|
9392
|
+
Object.keys(tracks).forEach(function(k) {
|
|
9393
|
+
if (videoTrack.id == k) {
|
|
9394
|
+
tracks[k].some(function(x) {
|
|
9395
|
+
var xStart = x.offset += moofStart;
|
|
9396
|
+
if (xStart < dataStart) {
|
|
9397
|
+
return;
|
|
9398
|
+
}
|
|
9399
|
+
if (xStart + x.size > dataEnd) {
|
|
9400
|
+
return true;
|
|
9401
|
+
}
|
|
9402
|
+
var sample = new VideoSample((x.pts || x.dts) + videoBaseMediaDecodeTime, x.dts + videoBaseMediaDecodeTime);
|
|
9403
|
+
sample.duration = x.duration;
|
|
9404
|
+
sample.gopId = x.gopId;
|
|
9405
|
+
if (x.keyframe)
|
|
9406
|
+
sample.setToKeyframe();
|
|
9407
|
+
var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
|
|
9408
|
+
sample.data = sampleData;
|
|
9409
|
+
if (!isAV01) {
|
|
9410
|
+
var start = 0;
|
|
9411
|
+
var len = sampleData.length - 1;
|
|
9412
|
+
while (start < len) {
|
|
9413
|
+
nalSize = readBig32(sampleData, start);
|
|
9414
|
+
start += 4;
|
|
9415
|
+
sample.units.push(sampleData.subarray(start, start + nalSize));
|
|
9416
|
+
start += nalSize;
|
|
9417
|
+
}
|
|
9418
|
+
}
|
|
9419
|
+
_this.__lastRemainDataStart = xStart + x.size;
|
|
9420
|
+
videoTrack.samples.push(sample);
|
|
9421
|
+
});
|
|
9422
|
+
} else if (audioTrack.id == k) {
|
|
9423
|
+
tracks[k].some(function(x) {
|
|
9424
|
+
var xStart = x.offset + moofStart;
|
|
9425
|
+
if (xStart < dataStart) {
|
|
9426
|
+
return;
|
|
9427
|
+
}
|
|
9428
|
+
if (xStart + x.size > dataEnd) {
|
|
9429
|
+
return true;
|
|
9430
|
+
}
|
|
9431
|
+
var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
|
|
9432
|
+
audioTrack.samples.push(new AudioSample(x.dts + audioBaseMediaDecodeTime, sampleData, x.duration));
|
|
9433
|
+
_this.__lastRemainDataStart = xStart + x.size;
|
|
9434
|
+
});
|
|
9435
|
+
}
|
|
9436
|
+
});
|
|
9437
|
+
};
|
|
9438
|
+
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
9439
|
+
var _ret = _loop();
|
|
9440
|
+
if (_ret === "continue")
|
|
9441
|
+
continue;
|
|
9442
|
+
}
|
|
9443
|
+
} catch (err) {
|
|
9444
|
+
_iterator.e(err);
|
|
9445
|
+
} finally {
|
|
9446
|
+
_iterator.f();
|
|
9447
|
+
}
|
|
9448
|
+
}
|
|
9449
|
+
if (this.__lastRemainDataStart > dataStart && this.__lastRemainDataStart < data.byteLength + dataStart) {
|
|
9450
|
+
this.__lastRemainData = data.subarray(this.__lastRemainDataStart - dataStart);
|
|
9451
|
+
} else {
|
|
9452
|
+
this.__lastRemainData = data;
|
|
9453
|
+
this.__lastRemainDataStart = dataStart;
|
|
9454
|
+
}
|
|
9455
|
+
if (videoTrack.samples.length) {
|
|
9456
|
+
videoTrack.baseMediaDecodeTime = videoTrack.samples[0].pts;
|
|
9457
|
+
}
|
|
9458
|
+
if (audioTrack.samples.length) {
|
|
9459
|
+
audioTrack.baseMediaDecodeTime = audioTrack.samples[0].pts;
|
|
9460
|
+
}
|
|
9461
|
+
return {
|
|
9462
|
+
videoTrack,
|
|
9463
|
+
audioTrack,
|
|
9464
|
+
metadataTrack: this.metadataTrack
|
|
9465
|
+
};
|
|
9466
|
+
}
|
|
9467
|
+
}, {
|
|
8978
9468
|
key: "demux",
|
|
8979
9469
|
value: function demux(videoData, audioData) {
|
|
8980
9470
|
var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
|
|
@@ -9466,10 +9956,16 @@
|
|
|
9466
9956
|
if (track.useEME && track.enca) {
|
|
9467
9957
|
content = MP42.enca(track);
|
|
9468
9958
|
} else {
|
|
9469
|
-
|
|
9959
|
+
if (track.codecType === AudioCodecType.OPUS) {
|
|
9960
|
+
content = MP42.opus(track);
|
|
9961
|
+
} else {
|
|
9962
|
+
content = MP42.mp4a(track);
|
|
9963
|
+
}
|
|
9470
9964
|
}
|
|
9471
9965
|
} else if (track.useEME && track.encv) {
|
|
9472
9966
|
content = MP42.encv(track);
|
|
9967
|
+
} else if (track.av1C) {
|
|
9968
|
+
content = MP42.av01(track);
|
|
9473
9969
|
} else {
|
|
9474
9970
|
content = MP42.avc1hev1(track);
|
|
9475
9971
|
}
|
|
@@ -9683,12 +10179,9 @@
|
|
|
9683
10179
|
return MP42.box(MP42.types.sinf, content, MP42.box(MP42.types.frma, frma), MP42.box(MP42.types.schm, schm), schi);
|
|
9684
10180
|
}
|
|
9685
10181
|
}, {
|
|
9686
|
-
key: "
|
|
9687
|
-
value: function
|
|
9688
|
-
|
|
9689
|
-
var typ = isHevc ? MP42.types.hvc1 : MP42.types.avc1;
|
|
9690
|
-
var config = isHevc ? MP42.hvcC(track) : MP42.avcC(track);
|
|
9691
|
-
var boxes = [new Uint8Array([
|
|
10182
|
+
key: "av01",
|
|
10183
|
+
value: function av01(track) {
|
|
10184
|
+
return MP42.box(MP42.types.av01, new Uint8Array([
|
|
9692
10185
|
0,
|
|
9693
10186
|
0,
|
|
9694
10187
|
0,
|
|
@@ -9767,50 +10260,137 @@
|
|
|
9767
10260
|
24,
|
|
9768
10261
|
17,
|
|
9769
10262
|
17
|
|
9770
|
-
]),
|
|
9771
|
-
if (isHevc) {
|
|
9772
|
-
boxes.push(MP42.box(MP42.types.fiel, new Uint8Array([1, 0])));
|
|
9773
|
-
} else if (track.sarRatio && track.sarRatio.length > 1) {
|
|
9774
|
-
boxes.push(MP42.pasp(track.sarRatio));
|
|
9775
|
-
}
|
|
9776
|
-
return MP42.box.apply(MP42, [typ].concat(boxes));
|
|
10263
|
+
]), track.av1C, track.colr);
|
|
9777
10264
|
}
|
|
9778
10265
|
}, {
|
|
9779
|
-
key: "
|
|
9780
|
-
value: function
|
|
9781
|
-
var
|
|
9782
|
-
var
|
|
9783
|
-
var
|
|
9784
|
-
var
|
|
9785
|
-
|
|
9786
|
-
|
|
9787
|
-
|
|
9788
|
-
|
|
9789
|
-
|
|
9790
|
-
|
|
9791
|
-
|
|
9792
|
-
len = p.byteLength;
|
|
9793
|
-
pps.push(len >>> 8 & 255);
|
|
9794
|
-
pps.push(len & 255);
|
|
9795
|
-
pps.push.apply(pps, _toConsumableArray(p));
|
|
9796
|
-
});
|
|
9797
|
-
return MP42.box(MP42.types.avcC, new Uint8Array((_concat$concat2 = (_ref2 = [
|
|
10266
|
+
key: "avc1hev1",
|
|
10267
|
+
value: function avc1hev1(track) {
|
|
10268
|
+
var isHevc = track.codecType === VideoCodecType.HEVC;
|
|
10269
|
+
var typ = isHevc ? MP42.types.hvc1 : MP42.types.avc1;
|
|
10270
|
+
var config = isHevc ? MP42.hvcC(track) : MP42.avcC(track);
|
|
10271
|
+
var boxes = [new Uint8Array([
|
|
10272
|
+
0,
|
|
10273
|
+
0,
|
|
10274
|
+
0,
|
|
10275
|
+
0,
|
|
10276
|
+
0,
|
|
10277
|
+
0,
|
|
10278
|
+
0,
|
|
9798
10279
|
1,
|
|
9799
|
-
|
|
9800
|
-
|
|
9801
|
-
|
|
9802
|
-
|
|
9803
|
-
|
|
9804
|
-
|
|
9805
|
-
|
|
9806
|
-
|
|
9807
|
-
|
|
9808
|
-
|
|
9809
|
-
|
|
9810
|
-
|
|
9811
|
-
|
|
9812
|
-
|
|
9813
|
-
|
|
10280
|
+
0,
|
|
10281
|
+
0,
|
|
10282
|
+
0,
|
|
10283
|
+
0,
|
|
10284
|
+
0,
|
|
10285
|
+
0,
|
|
10286
|
+
0,
|
|
10287
|
+
0,
|
|
10288
|
+
0,
|
|
10289
|
+
0,
|
|
10290
|
+
0,
|
|
10291
|
+
0,
|
|
10292
|
+
0,
|
|
10293
|
+
0,
|
|
10294
|
+
0,
|
|
10295
|
+
0,
|
|
10296
|
+
track.width >> 8 & 255,
|
|
10297
|
+
track.width & 255,
|
|
10298
|
+
track.height >> 8 & 255,
|
|
10299
|
+
track.height & 255,
|
|
10300
|
+
0,
|
|
10301
|
+
72,
|
|
10302
|
+
0,
|
|
10303
|
+
0,
|
|
10304
|
+
0,
|
|
10305
|
+
72,
|
|
10306
|
+
0,
|
|
10307
|
+
0,
|
|
10308
|
+
0,
|
|
10309
|
+
0,
|
|
10310
|
+
0,
|
|
10311
|
+
0,
|
|
10312
|
+
0,
|
|
10313
|
+
1,
|
|
10314
|
+
0,
|
|
10315
|
+
0,
|
|
10316
|
+
0,
|
|
10317
|
+
0,
|
|
10318
|
+
0,
|
|
10319
|
+
0,
|
|
10320
|
+
0,
|
|
10321
|
+
0,
|
|
10322
|
+
0,
|
|
10323
|
+
0,
|
|
10324
|
+
0,
|
|
10325
|
+
0,
|
|
10326
|
+
0,
|
|
10327
|
+
0,
|
|
10328
|
+
0,
|
|
10329
|
+
0,
|
|
10330
|
+
0,
|
|
10331
|
+
0,
|
|
10332
|
+
0,
|
|
10333
|
+
0,
|
|
10334
|
+
0,
|
|
10335
|
+
0,
|
|
10336
|
+
0,
|
|
10337
|
+
0,
|
|
10338
|
+
0,
|
|
10339
|
+
0,
|
|
10340
|
+
0,
|
|
10341
|
+
0,
|
|
10342
|
+
0,
|
|
10343
|
+
0,
|
|
10344
|
+
0,
|
|
10345
|
+
0,
|
|
10346
|
+
0,
|
|
10347
|
+
24,
|
|
10348
|
+
17,
|
|
10349
|
+
17
|
|
10350
|
+
]), config];
|
|
10351
|
+
if (isHevc) {
|
|
10352
|
+
boxes.push(MP42.box(MP42.types.fiel, new Uint8Array([1, 0])));
|
|
10353
|
+
} else if (track.sarRatio && track.sarRatio.length > 1) {
|
|
10354
|
+
boxes.push(MP42.pasp(track.sarRatio));
|
|
10355
|
+
}
|
|
10356
|
+
return MP42.box.apply(MP42, [typ].concat(boxes));
|
|
10357
|
+
}
|
|
10358
|
+
}, {
|
|
10359
|
+
key: "avcC",
|
|
10360
|
+
value: function avcC(track) {
|
|
10361
|
+
var _concat$concat2, _ref2;
|
|
10362
|
+
var sps = [];
|
|
10363
|
+
var pps = [];
|
|
10364
|
+
var len;
|
|
10365
|
+
track.sps.forEach(function(s) {
|
|
10366
|
+
len = s.byteLength;
|
|
10367
|
+
sps.push(len >>> 8 & 255);
|
|
10368
|
+
sps.push(len & 255);
|
|
10369
|
+
sps.push.apply(sps, _toConsumableArray(s));
|
|
10370
|
+
});
|
|
10371
|
+
track.pps.forEach(function(p) {
|
|
10372
|
+
len = p.byteLength;
|
|
10373
|
+
pps.push(len >>> 8 & 255);
|
|
10374
|
+
pps.push(len & 255);
|
|
10375
|
+
pps.push.apply(pps, _toConsumableArray(p));
|
|
10376
|
+
});
|
|
10377
|
+
return MP42.box(MP42.types.avcC, new Uint8Array((_concat$concat2 = (_ref2 = [
|
|
10378
|
+
1,
|
|
10379
|
+
sps[3],
|
|
10380
|
+
sps[4],
|
|
10381
|
+
sps[5],
|
|
10382
|
+
252 | 3,
|
|
10383
|
+
224 | track.sps.length
|
|
10384
|
+
]).concat.apply(_ref2, sps).concat([track.pps.length])).concat.apply(_concat$concat2, pps)));
|
|
10385
|
+
}
|
|
10386
|
+
}, {
|
|
10387
|
+
key: "hvcC",
|
|
10388
|
+
value: function hvcC(track) {
|
|
10389
|
+
var hvcC2 = track.hvcC;
|
|
10390
|
+
if (hvcC2 instanceof ArrayBuffer || hvcC2 instanceof Uint8Array)
|
|
10391
|
+
return hvcC2;
|
|
10392
|
+
var vps = track.vps, sps = track.sps, pps = track.pps;
|
|
10393
|
+
var data;
|
|
9814
10394
|
if (hvcC2) {
|
|
9815
10395
|
var pcf = hvcC2.generalProfileCompatibilityFlags;
|
|
9816
10396
|
var cif = hvcC2.generalConstraintIndicatorFlags;
|
|
@@ -10052,6 +10632,53 @@
|
|
|
10052
10632
|
)));
|
|
10053
10633
|
return esds2;
|
|
10054
10634
|
}
|
|
10635
|
+
}, {
|
|
10636
|
+
key: "opus",
|
|
10637
|
+
value: function opus(track) {
|
|
10638
|
+
var opusAudioDescription = new Uint8Array([
|
|
10639
|
+
0,
|
|
10640
|
+
0,
|
|
10641
|
+
0,
|
|
10642
|
+
0,
|
|
10643
|
+
0,
|
|
10644
|
+
0,
|
|
10645
|
+
0,
|
|
10646
|
+
1,
|
|
10647
|
+
0,
|
|
10648
|
+
0,
|
|
10649
|
+
0,
|
|
10650
|
+
0,
|
|
10651
|
+
0,
|
|
10652
|
+
0,
|
|
10653
|
+
0,
|
|
10654
|
+
0,
|
|
10655
|
+
0,
|
|
10656
|
+
track.channelCount,
|
|
10657
|
+
0,
|
|
10658
|
+
16,
|
|
10659
|
+
0,
|
|
10660
|
+
0,
|
|
10661
|
+
0,
|
|
10662
|
+
0,
|
|
10663
|
+
track.sampleRate >> 8 & 255,
|
|
10664
|
+
track.sampleRate & 255,
|
|
10665
|
+
0,
|
|
10666
|
+
0
|
|
10667
|
+
]);
|
|
10668
|
+
var opusSpecificConfig = track.config.length ? MP42.dOps(track) : [];
|
|
10669
|
+
return MP42.box(MP42.types.Opus, opusAudioDescription, opusSpecificConfig);
|
|
10670
|
+
}
|
|
10671
|
+
}, {
|
|
10672
|
+
key: "dOps",
|
|
10673
|
+
value: function dOps(track) {
|
|
10674
|
+
if (track.config) {
|
|
10675
|
+
track.config[4] = track.sampleRate >>> 24 & 255;
|
|
10676
|
+
track.config[5] = track.sampleRate >>> 16 & 255;
|
|
10677
|
+
track.config[6] = track.sampleRate >>> 8 & 255;
|
|
10678
|
+
track.config[7] = track.sampleRate & 255;
|
|
10679
|
+
return MP42.box(MP42.types.dOps, track.config);
|
|
10680
|
+
}
|
|
10681
|
+
}
|
|
10055
10682
|
}, {
|
|
10056
10683
|
key: "mvex",
|
|
10057
10684
|
value: function mvex(tracks) {
|
|
@@ -10654,7 +11281,7 @@
|
|
|
10654
11281
|
}]);
|
|
10655
11282
|
return MP42;
|
|
10656
11283
|
}();
|
|
10657
|
-
_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) {
|
|
11284
|
+
_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) {
|
|
10658
11285
|
p[c] = [c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2), c.charCodeAt(3)];
|
|
10659
11286
|
return p;
|
|
10660
11287
|
}, /* @__PURE__ */ Object.create(null)));
|
|
@@ -10989,30 +11616,46 @@
|
|
|
10989
11616
|
};
|
|
10990
11617
|
}
|
|
10991
11618
|
var samples = track.samples;
|
|
11619
|
+
var isAV01 = /av01/.test(track.codec);
|
|
10992
11620
|
var mdatSize = 0;
|
|
10993
|
-
|
|
10994
|
-
|
|
10995
|
-
|
|
10996
|
-
}
|
|
10997
|
-
|
|
10998
|
-
|
|
10999
|
-
|
|
11000
|
-
|
|
11001
|
-
|
|
11002
|
-
|
|
11003
|
-
var sampleSize = 0;
|
|
11004
|
-
_sample.units.forEach(function(u) {
|
|
11005
|
-
mdatView.setUint32(_offset, u.byteLength);
|
|
11006
|
-
_offset += 4;
|
|
11007
|
-
mdata.set(u, _offset);
|
|
11008
|
-
_offset += u.byteLength;
|
|
11009
|
-
sampleSize += 4 + u.byteLength;
|
|
11621
|
+
if (isAV01) {
|
|
11622
|
+
samples.forEach(function(s) {
|
|
11623
|
+
mdatSize += s.data.byteLength;
|
|
11624
|
+
});
|
|
11625
|
+
} else {
|
|
11626
|
+
samples.forEach(function(s) {
|
|
11627
|
+
mdatSize += s.units.reduce(function(t, c) {
|
|
11628
|
+
return t + c.byteLength;
|
|
11629
|
+
}, 0);
|
|
11630
|
+
mdatSize += s.units.length * 4;
|
|
11010
11631
|
});
|
|
11011
|
-
|
|
11012
|
-
|
|
11013
|
-
|
|
11014
|
-
|
|
11015
|
-
|
|
11632
|
+
}
|
|
11633
|
+
var mdata = new Uint8Array(mdatSize);
|
|
11634
|
+
if (isAV01) {
|
|
11635
|
+
for (var i = 0, l = samples.length, offset = 0, sample; i < l; i++) {
|
|
11636
|
+
sample = samples[i];
|
|
11637
|
+
mdata.set(sample.data, offset);
|
|
11638
|
+
sample.size = sample.data.byteLength;
|
|
11639
|
+
offset += sample.size;
|
|
11640
|
+
}
|
|
11641
|
+
} else {
|
|
11642
|
+
var mdatView = new DataView(mdata.buffer);
|
|
11643
|
+
var _loop = function _loop2(_offset2, _sample2) {
|
|
11644
|
+
_sample2 = samples[_i];
|
|
11645
|
+
var sampleSize = 0;
|
|
11646
|
+
_sample2.units.forEach(function(u) {
|
|
11647
|
+
mdatView.setUint32(_offset2, u.byteLength);
|
|
11648
|
+
_offset2 += 4;
|
|
11649
|
+
mdata.set(u, _offset2);
|
|
11650
|
+
_offset2 += u.byteLength;
|
|
11651
|
+
sampleSize += 4 + u.byteLength;
|
|
11652
|
+
});
|
|
11653
|
+
_sample2.size = sampleSize;
|
|
11654
|
+
_offset = _offset2, _sample = _sample2;
|
|
11655
|
+
};
|
|
11656
|
+
for (var _i = 0, _l = samples.length, _offset = 0, _sample; _i < _l; _i++) {
|
|
11657
|
+
_loop(_offset, _sample);
|
|
11658
|
+
}
|
|
11016
11659
|
}
|
|
11017
11660
|
var mdat = MP4.mdat(mdata);
|
|
11018
11661
|
var moof = MP4.moof([track]);
|
|
@@ -11206,7 +11849,8 @@
|
|
|
11206
11849
|
timescale: audioTrack.timescale,
|
|
11207
11850
|
firstDts: audioTrack.firstDts / videoTrack.timescale,
|
|
11208
11851
|
firstPts: audioTrack.firstPts / videoTrack.timescale,
|
|
11209
|
-
duration: audioTrack.samplesDuration / videoTrack.timescale
|
|
11852
|
+
duration: audioTrack.samplesDuration / videoTrack.timescale,
|
|
11853
|
+
container: audioTrack.container
|
|
11210
11854
|
};
|
|
11211
11855
|
var newId = "".concat(videoTrack.codec, "/").concat(videoTrack.width, "/").concat(videoTrack.height, "/").concat(audioTrack.codec, "/").concat(audioTrack.config);
|
|
11212
11856
|
if (newId !== this._initSegmentId) {
|
|
@@ -11330,7 +11974,7 @@
|
|
|
11330
11974
|
}]);
|
|
11331
11975
|
return Transmuxer2;
|
|
11332
11976
|
}();
|
|
11333
|
-
var _excluded = ["data"], _excluded2 = ["data"];
|
|
11977
|
+
var _excluded$1 = ["data"], _excluded2 = ["data"];
|
|
11334
11978
|
var logger$2 = new Logger$2("BufferService");
|
|
11335
11979
|
var BufferService = /* @__PURE__ */ function() {
|
|
11336
11980
|
function BufferService2(hls) {
|
|
@@ -11496,7 +12140,8 @@
|
|
|
11496
12140
|
key: "appendBuffer",
|
|
11497
12141
|
value: function() {
|
|
11498
12142
|
var _appendBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2(segment, audioSegment, videoChunk, audioChunk, discontinuity, contiguous, startTime) {
|
|
11499
|
-
var
|
|
12143
|
+
var _this2 = this;
|
|
12144
|
+
var afterAppend, p, needInit, _this$_transmuxer$tra, _this$_transmuxer$tra2, video, audio, isFirstAppend, mse, _p, videoData, videoRest, audioData, audioRest;
|
|
11500
12145
|
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
11501
12146
|
while (1)
|
|
11502
12147
|
switch (_context2.prev = _context2.next) {
|
|
@@ -11507,8 +12152,18 @@
|
|
|
11507
12152
|
}
|
|
11508
12153
|
return _context2.abrupt("return");
|
|
11509
12154
|
case 2:
|
|
12155
|
+
afterAppend = function afterAppend2() {
|
|
12156
|
+
var _this2$hls;
|
|
12157
|
+
if ((_this2$hls = _this2.hls) !== null && _this2$hls !== void 0 && _this2$hls.emit) {
|
|
12158
|
+
var _this2$hls2;
|
|
12159
|
+
(_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.emit(EVENT.APPEND_BUFFER, {
|
|
12160
|
+
start: segment.start,
|
|
12161
|
+
end: segment.end
|
|
12162
|
+
});
|
|
12163
|
+
}
|
|
12164
|
+
};
|
|
11510
12165
|
if (!this._directAppend) {
|
|
11511
|
-
_context2.next =
|
|
12166
|
+
_context2.next = 8;
|
|
11512
12167
|
break;
|
|
11513
12168
|
}
|
|
11514
12169
|
p = [];
|
|
@@ -11516,8 +12171,8 @@
|
|
|
11516
12171
|
p.push(this._mse.append(MSE.VIDEO, videoChunk));
|
|
11517
12172
|
if (audioChunk)
|
|
11518
12173
|
p.push(this._mse.append(MSE.AUDIO, audioChunk));
|
|
11519
|
-
return _context2.abrupt("return", Promise.all(p));
|
|
11520
|
-
case
|
|
12174
|
+
return _context2.abrupt("return", Promise.all(p).then(afterAppend));
|
|
12175
|
+
case 8:
|
|
11521
12176
|
needInit = this._needInitSegment || discontinuity;
|
|
11522
12177
|
_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];
|
|
11523
12178
|
if (audioChunk && audioSegment) {
|
|
@@ -11533,21 +12188,22 @@
|
|
|
11533
12188
|
this.hls.emit(Event$1.NO_AUDIO_TRACK);
|
|
11534
12189
|
}
|
|
11535
12190
|
if (!this._softVideo) {
|
|
11536
|
-
_context2.next =
|
|
12191
|
+
_context2.next = 20;
|
|
11537
12192
|
break;
|
|
11538
12193
|
}
|
|
11539
12194
|
this._softVideo.appendBuffer(video, audio);
|
|
11540
12195
|
this._needInitSegment = false;
|
|
11541
|
-
|
|
12196
|
+
afterAppend();
|
|
12197
|
+
_context2.next = 30;
|
|
11542
12198
|
break;
|
|
11543
|
-
case
|
|
12199
|
+
case 20:
|
|
11544
12200
|
if (!this._mse) {
|
|
11545
|
-
_context2.next =
|
|
12201
|
+
_context2.next = 30;
|
|
11546
12202
|
break;
|
|
11547
12203
|
}
|
|
11548
12204
|
isFirstAppend = !this._sourceCreated;
|
|
11549
12205
|
if (isFirstAppend) {
|
|
11550
|
-
this._createMseSource(video === null || video === void 0 ? void 0 : video.codec, audio === null || audio === void 0 ? void 0 : audio.codec);
|
|
12206
|
+
this._createMseSource(video === null || video === void 0 ? void 0 : video.codec, audio === null || audio === void 0 ? void 0 : audio.codec, audio === null || audio === void 0 ? void 0 : audio.container);
|
|
11551
12207
|
}
|
|
11552
12208
|
this._needInitSegment = false;
|
|
11553
12209
|
mse = this._mse;
|
|
@@ -11558,15 +12214,15 @@
|
|
|
11558
12214
|
});
|
|
11559
12215
|
}
|
|
11560
12216
|
if (video) {
|
|
11561
|
-
videoData = video.data, videoRest = _objectWithoutProperties$1(video, _excluded);
|
|
12217
|
+
videoData = video.data, videoRest = _objectWithoutProperties$1(video, _excluded$1);
|
|
11562
12218
|
_p.push(mse.append(MSE.VIDEO, videoData, videoRest));
|
|
11563
12219
|
}
|
|
11564
12220
|
if (audio) {
|
|
11565
12221
|
audioData = audio.data, audioRest = _objectWithoutProperties$1(audio, _excluded2);
|
|
11566
12222
|
_p.push(mse.append(MSE.AUDIO, audioData, audioRest));
|
|
11567
12223
|
}
|
|
11568
|
-
return _context2.abrupt("return", Promise.all(_p));
|
|
11569
|
-
case
|
|
12224
|
+
return _context2.abrupt("return", Promise.all(_p).then(afterAppend));
|
|
12225
|
+
case 30:
|
|
11570
12226
|
case "end":
|
|
11571
12227
|
return _context2.stop();
|
|
11572
12228
|
}
|
|
@@ -11581,7 +12237,7 @@
|
|
|
11581
12237
|
key: "removeBuffer",
|
|
11582
12238
|
value: function() {
|
|
11583
12239
|
var _removeBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee3() {
|
|
11584
|
-
var
|
|
12240
|
+
var _this3 = this;
|
|
11585
12241
|
var start, end, media, _args3 = arguments;
|
|
11586
12242
|
return _regeneratorRuntime$1().wrap(function _callee3$(_context3) {
|
|
11587
12243
|
while (1)
|
|
@@ -11597,7 +12253,7 @@
|
|
|
11597
12253
|
return _context3.abrupt("return");
|
|
11598
12254
|
case 5:
|
|
11599
12255
|
return _context3.abrupt("return", this._mse.clearBuffer(start, end).then(function() {
|
|
11600
|
-
return
|
|
12256
|
+
return _this3.hls.emit(EVENT.REMOVE_BUFFER, {
|
|
11601
12257
|
start,
|
|
11602
12258
|
end,
|
|
11603
12259
|
removeEnd: end
|
|
@@ -11778,30 +12434,51 @@
|
|
|
11778
12434
|
return setLiveSeekableRange;
|
|
11779
12435
|
}()
|
|
11780
12436
|
}, {
|
|
11781
|
-
key: "
|
|
12437
|
+
key: "detachMedia",
|
|
11782
12438
|
value: function() {
|
|
11783
|
-
var
|
|
11784
|
-
var _this$_decryptor;
|
|
12439
|
+
var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee9() {
|
|
11785
12440
|
return _regeneratorRuntime$1().wrap(function _callee9$(_context9) {
|
|
11786
12441
|
while (1)
|
|
11787
12442
|
switch (_context9.prev = _context9.next) {
|
|
11788
12443
|
case 0:
|
|
11789
|
-
(_this$_decryptor = this._decryptor) === null || _this$_decryptor === void 0 ? void 0 : _this$_decryptor.destroy();
|
|
11790
12444
|
if (!this._mse) {
|
|
11791
|
-
_context9.next =
|
|
12445
|
+
_context9.next = 3;
|
|
11792
12446
|
break;
|
|
11793
12447
|
}
|
|
11794
|
-
_context9.next =
|
|
12448
|
+
_context9.next = 3;
|
|
11795
12449
|
return this._mse.unbindMedia();
|
|
11796
|
-
case
|
|
12450
|
+
case 3:
|
|
12451
|
+
case "end":
|
|
12452
|
+
return _context9.stop();
|
|
12453
|
+
}
|
|
12454
|
+
}, _callee9, this);
|
|
12455
|
+
}));
|
|
12456
|
+
function detachMedia() {
|
|
12457
|
+
return _detachMedia.apply(this, arguments);
|
|
12458
|
+
}
|
|
12459
|
+
return detachMedia;
|
|
12460
|
+
}()
|
|
12461
|
+
}, {
|
|
12462
|
+
key: "destroy",
|
|
12463
|
+
value: function() {
|
|
12464
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee10() {
|
|
12465
|
+
var _this$_decryptor;
|
|
12466
|
+
return _regeneratorRuntime$1().wrap(function _callee10$(_context10) {
|
|
12467
|
+
while (1)
|
|
12468
|
+
switch (_context10.prev = _context10.next) {
|
|
12469
|
+
case 0:
|
|
12470
|
+
(_this$_decryptor = this._decryptor) === null || _this$_decryptor === void 0 ? void 0 : _this$_decryptor.destroy();
|
|
12471
|
+
_context10.next = 3;
|
|
12472
|
+
return this.detachMedia();
|
|
12473
|
+
case 3:
|
|
11797
12474
|
this._decryptor = null;
|
|
11798
12475
|
this._mse = null;
|
|
11799
12476
|
this._softVideo = null;
|
|
11800
|
-
case
|
|
12477
|
+
case 6:
|
|
11801
12478
|
case "end":
|
|
11802
|
-
return
|
|
12479
|
+
return _context10.stop();
|
|
11803
12480
|
}
|
|
11804
|
-
},
|
|
12481
|
+
}, _callee10, this);
|
|
11805
12482
|
}));
|
|
11806
12483
|
function destroy() {
|
|
11807
12484
|
return _destroy.apply(this, arguments);
|
|
@@ -11810,7 +12487,7 @@
|
|
|
11810
12487
|
}()
|
|
11811
12488
|
}, {
|
|
11812
12489
|
key: "_createMseSource",
|
|
11813
|
-
value: function _createMseSource(videoCodec, audioCodec) {
|
|
12490
|
+
value: function _createMseSource(videoCodec, audioCodec, container) {
|
|
11814
12491
|
logger$2.debug("create mse source, videoCodec=".concat(videoCodec, ", audioCodec=").concat(audioCodec));
|
|
11815
12492
|
var mse = this._mse;
|
|
11816
12493
|
if (!mse)
|
|
@@ -11822,6 +12499,9 @@
|
|
|
11822
12499
|
if (audioCodec) {
|
|
11823
12500
|
mse.createSource(MSE.AUDIO, "audio/mp4;codecs=".concat(audioCodec));
|
|
11824
12501
|
this._sourceCreated = true;
|
|
12502
|
+
} else if (container) {
|
|
12503
|
+
mse.createSource(MSE.AUDIO, "".concat(container, ';codecs=""'));
|
|
12504
|
+
this._sourceCreated = true;
|
|
11825
12505
|
}
|
|
11826
12506
|
this.hls.emit(EVENT.SOURCEBUFFER_CREATED);
|
|
11827
12507
|
}
|
|
@@ -12131,6 +12811,31 @@
|
|
|
12131
12811
|
}]);
|
|
12132
12812
|
return MediaSegmentKey2;
|
|
12133
12813
|
}();
|
|
12814
|
+
var HlsUrlParameters = /* @__PURE__ */ function() {
|
|
12815
|
+
function HlsUrlParameters2(msn, part, skip) {
|
|
12816
|
+
_classCallCheck$3(this, HlsUrlParameters2);
|
|
12817
|
+
this.msn = msn;
|
|
12818
|
+
this.part = part;
|
|
12819
|
+
this.skip = skip;
|
|
12820
|
+
}
|
|
12821
|
+
_createClass$3(HlsUrlParameters2, [{
|
|
12822
|
+
key: "addDirectives",
|
|
12823
|
+
value: function addDirectives(uri) {
|
|
12824
|
+
var url = new self.URL(uri);
|
|
12825
|
+
if (this.msn !== void 0) {
|
|
12826
|
+
url.searchParams.set("_HLS_msn", this.msn.toString());
|
|
12827
|
+
}
|
|
12828
|
+
if (this.part) {
|
|
12829
|
+
url.searchParams.set("_HLS_part", this.part.toString());
|
|
12830
|
+
}
|
|
12831
|
+
if (this.skip) {
|
|
12832
|
+
url.searchParams.set("_HLS_skip", this.skip);
|
|
12833
|
+
}
|
|
12834
|
+
return url.href;
|
|
12835
|
+
}
|
|
12836
|
+
}]);
|
|
12837
|
+
return HlsUrlParameters2;
|
|
12838
|
+
}();
|
|
12134
12839
|
var REGEXP_TAG = /^#(EXT[^:]*)(?::(.*))?$/;
|
|
12135
12840
|
var REGEXP_ATTR = /([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g;
|
|
12136
12841
|
var REGEXP_ABSOLUTE_URL = /^(?:[a-zA-Z0-9+\-.]+:)?\/\//;
|
|
@@ -12369,7 +13074,7 @@
|
|
|
12369
13074
|
media.canBlockReload = _attr["CAN-BLOCK-RELOAD"] === "YES";
|
|
12370
13075
|
media.partHoldBack = parseFloat(_attr["PART-HOLD-BACK"] || 0);
|
|
12371
13076
|
media.canSkipUntil = parseFloat(_attr["CAN-SKIP-UNTIL"] || 0);
|
|
12372
|
-
media.canSkipDateRanges = _attr["CAN-SKIP-DATERANGES"] === "YES";
|
|
13077
|
+
media.canSkipDateRanges = media.canSkipUntil > 0 && _attr["CAN-SKIP-DATERANGES"] === "YES";
|
|
12373
13078
|
}
|
|
12374
13079
|
break;
|
|
12375
13080
|
case "ENDLIST":
|
|
@@ -12413,6 +13118,15 @@
|
|
|
12413
13118
|
}
|
|
12414
13119
|
break;
|
|
12415
13120
|
case "PRELOAD-HINT":
|
|
13121
|
+
{
|
|
13122
|
+
var _attr3 = parseAttr(data);
|
|
13123
|
+
media.preloadHint = _attr3;
|
|
13124
|
+
if (_attr3["TYPE"] === "PART" && _attr3["URI"]) {
|
|
13125
|
+
var tmp = _attr3["URI"].split(".ts")[0].split("-");
|
|
13126
|
+
media.nextSN = tmp[3];
|
|
13127
|
+
media.nextIndex = tmp[tmp.length - 1];
|
|
13128
|
+
}
|
|
13129
|
+
}
|
|
12416
13130
|
break;
|
|
12417
13131
|
case "PROGRAM-DATE-TIME":
|
|
12418
13132
|
curSegment.dataTime = data;
|
|
@@ -12432,21 +13146,21 @@
|
|
|
12432
13146
|
break;
|
|
12433
13147
|
case "KEY":
|
|
12434
13148
|
{
|
|
12435
|
-
var
|
|
12436
|
-
if (
|
|
13149
|
+
var _attr4 = parseAttr(data);
|
|
13150
|
+
if (_attr4.METHOD === "NONE") {
|
|
12437
13151
|
curKey = null;
|
|
12438
13152
|
break;
|
|
12439
13153
|
}
|
|
12440
13154
|
curKey = new MediaSegmentKey();
|
|
12441
|
-
curKey.method =
|
|
12442
|
-
curKey.url = /^blob:/.test(
|
|
12443
|
-
curKey.keyFormat =
|
|
12444
|
-
curKey.keyFormatVersions =
|
|
13155
|
+
curKey.method = _attr4.METHOD;
|
|
13156
|
+
curKey.url = /^blob:/.test(_attr4.URI) ? _attr4.URI : getAbsoluteUrl(_attr4.URI, parentUrl);
|
|
13157
|
+
curKey.keyFormat = _attr4.KEYFORMAT || "identity";
|
|
13158
|
+
curKey.keyFormatVersions = _attr4.KEYFORMATVERSIONS;
|
|
12445
13159
|
if (!curKey.isSupported()) {
|
|
12446
|
-
throw new Error("encrypt ".concat(
|
|
13160
|
+
throw new Error("encrypt ".concat(_attr4.METHOD, "/").concat(_attr4.KEYFORMAT, " is not supported"));
|
|
12447
13161
|
}
|
|
12448
|
-
if (
|
|
12449
|
-
var str =
|
|
13162
|
+
if (_attr4.IV) {
|
|
13163
|
+
var str = _attr4.IV.slice(2);
|
|
12450
13164
|
str = (str.length & 1 ? "0" : "") + str;
|
|
12451
13165
|
curKey.iv = new Uint8Array(str.length / 2);
|
|
12452
13166
|
for (var i = 0, l = str.length / 2; i < l; i++) {
|
|
@@ -12457,10 +13171,10 @@
|
|
|
12457
13171
|
break;
|
|
12458
13172
|
case "MAP":
|
|
12459
13173
|
{
|
|
12460
|
-
var
|
|
12461
|
-
curSegment.url = getAbsoluteUrl(
|
|
12462
|
-
if (
|
|
12463
|
-
curSegment.setByteRange(
|
|
13174
|
+
var _attr5 = parseAttr(data);
|
|
13175
|
+
curSegment.url = getAbsoluteUrl(_attr5.URI, parentUrl);
|
|
13176
|
+
if (_attr5.BYTERANGE)
|
|
13177
|
+
curSegment.setByteRange(_attr5.BYTERANGE);
|
|
12464
13178
|
curSegment.isInitSegment = true;
|
|
12465
13179
|
curSegment.sn = 0;
|
|
12466
13180
|
if (curKey) {
|
|
@@ -12472,24 +13186,25 @@
|
|
|
12472
13186
|
break;
|
|
12473
13187
|
case "SKIP":
|
|
12474
13188
|
{
|
|
12475
|
-
var
|
|
12476
|
-
var skippedSegments = parseInt(
|
|
13189
|
+
var _attr6 = parseAttr(data);
|
|
13190
|
+
var skippedSegments = parseInt(_attr6["SKIPPED-SEGMENTS"], 10);
|
|
12477
13191
|
if (skippedSegments <= Number.MAX_SAFE_INTEGER) {
|
|
12478
13192
|
media.skippedSegments += skippedSegments;
|
|
13193
|
+
curSN += skippedSegments;
|
|
12479
13194
|
}
|
|
12480
13195
|
}
|
|
12481
13196
|
break;
|
|
12482
13197
|
case "DATERANGE":
|
|
12483
13198
|
{
|
|
12484
|
-
var
|
|
12485
|
-
var dateRangeWithSameId = media.dateRanges[
|
|
12486
|
-
|
|
12487
|
-
var endDate = (dateRangeWithSameId === null || dateRangeWithSameId === void 0 ? void 0 : dateRangeWithSameId._endDate) || new Date(
|
|
13199
|
+
var _attr7 = parseAttr(data);
|
|
13200
|
+
var dateRangeWithSameId = media.dateRanges[_attr7.ID];
|
|
13201
|
+
_attr7._startDate = dateRangeWithSameId ? dateRangeWithSameId._startDate : new Date(_attr7["START-DATE"]);
|
|
13202
|
+
var endDate = (dateRangeWithSameId === null || dateRangeWithSameId === void 0 ? void 0 : dateRangeWithSameId._endDate) || new Date(_attr7.END_DATE);
|
|
12488
13203
|
if (Number.isFinite(endDate)) {
|
|
12489
|
-
|
|
13204
|
+
_attr7._endDate = endDate;
|
|
12490
13205
|
}
|
|
12491
|
-
if (isValidDaterange(
|
|
12492
|
-
media.dateRanges[
|
|
13206
|
+
if (isValidDaterange(_attr7, dateRangeWithSameId) || media.skippedSegments) {
|
|
13207
|
+
media.dateRanges[_attr7.ID] = _attr7;
|
|
12493
13208
|
}
|
|
12494
13209
|
}
|
|
12495
13210
|
break;
|
|
@@ -12686,6 +13401,13 @@
|
|
|
12686
13401
|
playlist
|
|
12687
13402
|
});
|
|
12688
13403
|
} else {
|
|
13404
|
+
if (this._useLowLatency) {
|
|
13405
|
+
if (playlist.canBlockReload) {
|
|
13406
|
+
this.deliveryDirectives = new HlsUrlParameters(playlist.nextSN, playlist.nextIndex, "");
|
|
13407
|
+
} else {
|
|
13408
|
+
this.deliveryDirectives = null;
|
|
13409
|
+
}
|
|
13410
|
+
}
|
|
12689
13411
|
this.hls.emit(Event$1.HLS_LEVEL_LOADED, {
|
|
12690
13412
|
playlist
|
|
12691
13413
|
});
|
|
@@ -12742,41 +13464,45 @@
|
|
|
12742
13464
|
var retryCount = this.hls.config.pollRetryCount;
|
|
12743
13465
|
var fn = /* @__PURE__ */ function() {
|
|
12744
13466
|
var _ref2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2() {
|
|
12745
|
-
var res;
|
|
13467
|
+
var reqUrl, res;
|
|
12746
13468
|
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
12747
13469
|
while (1)
|
|
12748
13470
|
switch (_context2.prev = _context2.next) {
|
|
12749
13471
|
case 0:
|
|
12750
13472
|
clearTimeout(_this2._timer);
|
|
12751
|
-
|
|
12752
|
-
_context2.
|
|
12753
|
-
|
|
12754
|
-
|
|
13473
|
+
reqUrl = url;
|
|
13474
|
+
_context2.prev = 2;
|
|
13475
|
+
if (_this2.deliveryDirectives) {
|
|
13476
|
+
reqUrl = _this2.deliveryDirectives.addDirectives(url);
|
|
13477
|
+
}
|
|
13478
|
+
_context2.next = 6;
|
|
13479
|
+
return _this2.load(reqUrl, audioUrl, subtitleUrl);
|
|
13480
|
+
case 6:
|
|
12755
13481
|
res = _context2.sent;
|
|
12756
13482
|
if (res[0]) {
|
|
12757
|
-
_context2.next =
|
|
13483
|
+
_context2.next = 9;
|
|
12758
13484
|
break;
|
|
12759
13485
|
}
|
|
12760
13486
|
return _context2.abrupt("return");
|
|
12761
|
-
case
|
|
13487
|
+
case 9:
|
|
12762
13488
|
retryCount = _this2.hls.config.pollRetryCount;
|
|
12763
13489
|
cb(res[0], res[1], res[2]);
|
|
12764
|
-
_context2.next =
|
|
13490
|
+
_context2.next = 17;
|
|
12765
13491
|
break;
|
|
12766
|
-
case
|
|
12767
|
-
_context2.prev =
|
|
12768
|
-
_context2.t0 = _context2["catch"](
|
|
13492
|
+
case 13:
|
|
13493
|
+
_context2.prev = 13;
|
|
13494
|
+
_context2.t0 = _context2["catch"](2);
|
|
12769
13495
|
retryCount--;
|
|
12770
13496
|
if (retryCount <= 0) {
|
|
12771
13497
|
errorCb(_context2.t0);
|
|
12772
13498
|
}
|
|
12773
|
-
case
|
|
13499
|
+
case 17:
|
|
12774
13500
|
_this2._timer = setTimeout(fn, time);
|
|
12775
|
-
case
|
|
13501
|
+
case 18:
|
|
12776
13502
|
case "end":
|
|
12777
13503
|
return _context2.stop();
|
|
12778
13504
|
}
|
|
12779
|
-
}, _callee2, null, [[
|
|
13505
|
+
}, _callee2, null, [[2, 13]]);
|
|
12780
13506
|
}));
|
|
12781
13507
|
return function fn2() {
|
|
12782
13508
|
return _ref2.apply(this, arguments);
|
|
@@ -13306,7 +14032,7 @@
|
|
|
13306
14032
|
}, {
|
|
13307
14033
|
key: "clearOldSegment",
|
|
13308
14034
|
value: function clearOldSegment() {
|
|
13309
|
-
var maxPlaylistSize = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 50;
|
|
14035
|
+
var maxPlaylistSize = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.hls.config.maxPlaylistSize || 50;
|
|
13310
14036
|
var stream = this.currentStream;
|
|
13311
14037
|
if (!this.dvrWindow || !stream)
|
|
13312
14038
|
return;
|
|
@@ -13817,7 +14543,6 @@
|
|
|
13817
14543
|
return;
|
|
13818
14544
|
_this._startTick();
|
|
13819
14545
|
var media = _this.media;
|
|
13820
|
-
var buffered = Buffer$1.get(media);
|
|
13821
14546
|
var segLoaderError = _this._segmentLoader.error;
|
|
13822
14547
|
_this._onCheckQuotaExceeded();
|
|
13823
14548
|
if (_this._isProcessQuotaExceeded) {
|
|
@@ -13834,7 +14559,7 @@
|
|
|
13834
14559
|
}
|
|
13835
14560
|
return;
|
|
13836
14561
|
}
|
|
13837
|
-
if (
|
|
14562
|
+
if (media.readyState) {
|
|
13838
14563
|
if (isMediaPlaying(media)) {
|
|
13839
14564
|
_this._loadSegment();
|
|
13840
14565
|
if (_this._gapService) {
|
|
@@ -13900,6 +14625,12 @@
|
|
|
13900
14625
|
var _this$_bufferService;
|
|
13901
14626
|
return (_this$_bufferService = this._bufferService) === null || _this$_bufferService === void 0 ? void 0 : _this$_bufferService.baseDts;
|
|
13902
14627
|
}
|
|
14628
|
+
}, {
|
|
14629
|
+
key: "abrSwitchPoint",
|
|
14630
|
+
get: function get() {
|
|
14631
|
+
var targetSeg = this._urlSwitching ? this._playlist.currentSegment : this._playlist.nextSegment;
|
|
14632
|
+
return targetSeg ? targetSeg.start + targetSeg.duration / 2 : null;
|
|
14633
|
+
}
|
|
13903
14634
|
}, {
|
|
13904
14635
|
key: "speedInfo",
|
|
13905
14636
|
value: function speedInfo() {
|
|
@@ -13925,30 +14656,37 @@
|
|
|
13925
14656
|
}, {
|
|
13926
14657
|
key: "load",
|
|
13927
14658
|
value: function() {
|
|
13928
|
-
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4(
|
|
13929
|
-
var reuseMse, _args4 = arguments;
|
|
14659
|
+
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4() {
|
|
14660
|
+
var url, options, reuseMse, _args4 = arguments;
|
|
13930
14661
|
return _regeneratorRuntime$1().wrap(function _callee4$(_context4) {
|
|
13931
14662
|
while (1)
|
|
13932
14663
|
switch (_context4.prev = _context4.next) {
|
|
13933
14664
|
case 0:
|
|
13934
|
-
|
|
14665
|
+
url = _args4.length > 0 && _args4[0] !== void 0 ? _args4[0] : "";
|
|
14666
|
+
options = _args4.length > 1 && _args4[1] !== void 0 ? _args4[1] : {};
|
|
14667
|
+
reuseMse = typeof options === "boolean" ? options : !!(options !== null && options !== void 0 && options.reuseMse);
|
|
14668
|
+
if (_typeof$2(options) === "object" && options !== null && options !== void 0 && options.clearSwitchStatus) {
|
|
14669
|
+
this._urlSwitching = false;
|
|
14670
|
+
this._switchUrlOpts = null;
|
|
14671
|
+
this.config.startTime = void 0;
|
|
14672
|
+
}
|
|
13935
14673
|
if (url)
|
|
13936
14674
|
this.config.url = url;
|
|
13937
14675
|
url = this.config.url;
|
|
13938
|
-
_context4.next =
|
|
14676
|
+
_context4.next = 8;
|
|
13939
14677
|
return this._reset(reuseMse);
|
|
13940
|
-
case
|
|
13941
|
-
_context4.next =
|
|
14678
|
+
case 8:
|
|
14679
|
+
_context4.next = 10;
|
|
13942
14680
|
return this._loadData(url);
|
|
13943
|
-
case
|
|
14681
|
+
case 10:
|
|
13944
14682
|
this._startTick();
|
|
13945
|
-
case
|
|
14683
|
+
case 11:
|
|
13946
14684
|
case "end":
|
|
13947
14685
|
return _context4.stop();
|
|
13948
14686
|
}
|
|
13949
14687
|
}, _callee4, this);
|
|
13950
14688
|
}));
|
|
13951
|
-
function load(
|
|
14689
|
+
function load() {
|
|
13952
14690
|
return _load.apply(this, arguments);
|
|
13953
14691
|
}
|
|
13954
14692
|
return load;
|
|
@@ -13957,7 +14695,7 @@
|
|
|
13957
14695
|
key: "_loadData",
|
|
13958
14696
|
value: function() {
|
|
13959
14697
|
var _loadData2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee5(url) {
|
|
13960
|
-
var manifest, currentStream, _this$_switchUrlOpts, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint,
|
|
14698
|
+
var manifest, currentStream, preIndex, _this$_switchUrlOpts, _this$_switchUrlOpts3, _this$_switchUrlOpts4, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint, startTime, _this$_switchUrlOpts5;
|
|
13961
14699
|
return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
|
|
13962
14700
|
while (1)
|
|
13963
14701
|
switch (_context5.prev = _context5.next) {
|
|
@@ -13978,41 +14716,46 @@
|
|
|
13978
14716
|
case 5:
|
|
13979
14717
|
manifest = _context5.sent;
|
|
13980
14718
|
currentStream = this._playlist.currentStream;
|
|
13981
|
-
if (!
|
|
13982
|
-
_context5.next =
|
|
14719
|
+
if (!this._urlSwitching) {
|
|
14720
|
+
_context5.next = 23;
|
|
13983
14721
|
break;
|
|
13984
14722
|
}
|
|
14723
|
+
if (!this.isLive) {
|
|
14724
|
+
_context5.next = 14;
|
|
14725
|
+
break;
|
|
14726
|
+
}
|
|
14727
|
+
preIndex = this._playlist.setNextSegmentBySN(this._prevSegSn);
|
|
14728
|
+
logger.log("segment nb=".concat(this._prevSegSn, " index of ").concat(preIndex, " in the new playlist"));
|
|
14729
|
+
if (preIndex === -1) {
|
|
14730
|
+
this._prevSegCc = null;
|
|
14731
|
+
this._prevSegSn = null;
|
|
14732
|
+
}
|
|
14733
|
+
_context5.next = 23;
|
|
14734
|
+
break;
|
|
14735
|
+
case 14:
|
|
13985
14736
|
if (currentStream.bitrate === 0 && (_this$_switchUrlOpts = this._switchUrlOpts) !== null && _this$_switchUrlOpts !== void 0 && _this$_switchUrlOpts.bitrate) {
|
|
13986
14737
|
currentStream.bitrate = (_this$_switchUrlOpts2 = this._switchUrlOpts) === null || _this$_switchUrlOpts2 === void 0 ? void 0 : _this$_switchUrlOpts2.bitrate;
|
|
13987
14738
|
}
|
|
13988
|
-
switchTimePoint = this._getSeamlessSwitchPoint();
|
|
14739
|
+
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();
|
|
13989
14740
|
this.config.startTime = switchTimePoint;
|
|
13990
14741
|
segIdx = this._playlist.findSegmentIndexByTime(switchTimePoint);
|
|
13991
14742
|
nextSeg = this._playlist.getSegmentByIndex(segIdx + 1);
|
|
13992
14743
|
if (!nextSeg) {
|
|
13993
|
-
_context5.next =
|
|
14744
|
+
_context5.next = 23;
|
|
13994
14745
|
break;
|
|
13995
14746
|
}
|
|
13996
14747
|
bufferClearStartPoint = nextSeg.start;
|
|
13997
|
-
_context5.next =
|
|
14748
|
+
_context5.next = 23;
|
|
13998
14749
|
return this._bufferService.removeBuffer(bufferClearStartPoint);
|
|
13999
|
-
case
|
|
14000
|
-
if (this._urlSwitching && this.isLive) {
|
|
14001
|
-
preIndex = this._playlist.setNextSegmentBySN(this._prevSegSn);
|
|
14002
|
-
logger.log("segment nb=".concat(this._prevSegSn, " index of ").concat(preIndex, " in the new playlist"));
|
|
14003
|
-
if (preIndex === -1) {
|
|
14004
|
-
this._prevSegCc = null;
|
|
14005
|
-
this._prevSegSn = null;
|
|
14006
|
-
}
|
|
14007
|
-
}
|
|
14750
|
+
case 23:
|
|
14008
14751
|
if (manifest) {
|
|
14009
|
-
_context5.next =
|
|
14752
|
+
_context5.next = 25;
|
|
14010
14753
|
break;
|
|
14011
14754
|
}
|
|
14012
14755
|
return _context5.abrupt("return");
|
|
14013
|
-
case
|
|
14756
|
+
case 25:
|
|
14014
14757
|
if (!this.isLive) {
|
|
14015
|
-
_context5.next =
|
|
14758
|
+
_context5.next = 36;
|
|
14016
14759
|
break;
|
|
14017
14760
|
}
|
|
14018
14761
|
this._bufferService.setLiveSeekableRange(0, 4294967295);
|
|
@@ -14025,35 +14768,35 @@
|
|
|
14025
14768
|
if (!manifest.isMaster)
|
|
14026
14769
|
this._pollM3U8(url);
|
|
14027
14770
|
if (!(this._playlist.nbSegments < this.config.minSegmentsStartPlay)) {
|
|
14028
|
-
_context5.next =
|
|
14771
|
+
_context5.next = 33;
|
|
14029
14772
|
break;
|
|
14030
14773
|
}
|
|
14031
14774
|
return _context5.abrupt("return");
|
|
14032
|
-
case
|
|
14033
|
-
_context5.next =
|
|
14775
|
+
case 33:
|
|
14776
|
+
_context5.next = 35;
|
|
14034
14777
|
return this._loadSegment();
|
|
14035
|
-
case
|
|
14778
|
+
case 35:
|
|
14036
14779
|
return _context5.abrupt("return");
|
|
14037
|
-
case
|
|
14038
|
-
_context5.next =
|
|
14780
|
+
case 36:
|
|
14781
|
+
_context5.next = 38;
|
|
14039
14782
|
return this._bufferService.updateDuration(currentStream.totalDuration);
|
|
14040
|
-
case
|
|
14783
|
+
case 38:
|
|
14041
14784
|
startTime = this.config.startTime;
|
|
14042
14785
|
if (startTime) {
|
|
14043
|
-
if (!((_this$
|
|
14786
|
+
if (!((_this$_switchUrlOpts5 = this._switchUrlOpts) !== null && _this$_switchUrlOpts5 !== void 0 && _this$_switchUrlOpts5.seamless)) {
|
|
14044
14787
|
this.media.currentTime = startTime;
|
|
14045
14788
|
}
|
|
14046
14789
|
this._playlist.setNextSegmentByIndex(this._playlist.findSegmentIndexByTime(startTime) || 0);
|
|
14047
14790
|
}
|
|
14048
|
-
_context5.next =
|
|
14791
|
+
_context5.next = 42;
|
|
14049
14792
|
return this._loadSegment();
|
|
14050
|
-
case
|
|
14793
|
+
case 42:
|
|
14051
14794
|
case "end":
|
|
14052
14795
|
return _context5.stop();
|
|
14053
14796
|
}
|
|
14054
14797
|
}, _callee5, this);
|
|
14055
14798
|
}));
|
|
14056
|
-
function _loadData(
|
|
14799
|
+
function _loadData(_x) {
|
|
14057
14800
|
return _loadData2.apply(this, arguments);
|
|
14058
14801
|
}
|
|
14059
14802
|
return _loadData;
|
|
@@ -14067,18 +14810,20 @@
|
|
|
14067
14810
|
switch (_context6.prev = _context6.next) {
|
|
14068
14811
|
case 0:
|
|
14069
14812
|
this.config.startTime = 0;
|
|
14070
|
-
|
|
14813
|
+
this._urlSwitching = false;
|
|
14814
|
+
this._switchUrlOpts = null;
|
|
14815
|
+
_context6.next = 5;
|
|
14071
14816
|
return this.load();
|
|
14072
|
-
case
|
|
14817
|
+
case 5:
|
|
14073
14818
|
this._reloadOnPlay = false;
|
|
14074
14819
|
return _context6.abrupt("return", this.media.play(!isPlayEmit));
|
|
14075
|
-
case
|
|
14820
|
+
case 7:
|
|
14076
14821
|
case "end":
|
|
14077
14822
|
return _context6.stop();
|
|
14078
14823
|
}
|
|
14079
14824
|
}, _callee6, this);
|
|
14080
14825
|
}));
|
|
14081
|
-
function replay(
|
|
14826
|
+
function replay(_x2) {
|
|
14082
14827
|
return _replay.apply(this, arguments);
|
|
14083
14828
|
}
|
|
14084
14829
|
return replay;
|
|
@@ -14183,7 +14928,7 @@
|
|
|
14183
14928
|
}
|
|
14184
14929
|
}, _callee7, this, [[18, 29]]);
|
|
14185
14930
|
}));
|
|
14186
|
-
function switchURL(
|
|
14931
|
+
function switchURL(_x3) {
|
|
14187
14932
|
return _switchURL.apply(this, arguments);
|
|
14188
14933
|
}
|
|
14189
14934
|
return switchURL;
|
|
@@ -14269,7 +15014,7 @@
|
|
|
14269
15014
|
}
|
|
14270
15015
|
}, _callee8, this, [[8, 16], [21, 31]]);
|
|
14271
15016
|
}));
|
|
14272
|
-
function switchStream(
|
|
15017
|
+
function switchStream(_x4) {
|
|
14273
15018
|
return _switchStream.apply(this, arguments);
|
|
14274
15019
|
}
|
|
14275
15020
|
return switchStream;
|
|
@@ -14355,7 +15100,7 @@
|
|
|
14355
15100
|
}
|
|
14356
15101
|
}, _callee9, this, [[10, 18], [22, 32]]);
|
|
14357
15102
|
}));
|
|
14358
|
-
function switchAudioStream(
|
|
15103
|
+
function switchAudioStream(_x5) {
|
|
14359
15104
|
return _switchAudioStream.apply(this, arguments);
|
|
14360
15105
|
}
|
|
14361
15106
|
return switchAudioStream;
|
|
@@ -14380,25 +15125,50 @@
|
|
|
14380
15125
|
}
|
|
14381
15126
|
}, _callee10, this);
|
|
14382
15127
|
}));
|
|
14383
|
-
function switchSubtitleStream(
|
|
15128
|
+
function switchSubtitleStream(_x6) {
|
|
14384
15129
|
return _switchSubtitleStream.apply(this, arguments);
|
|
14385
15130
|
}
|
|
14386
15131
|
return switchSubtitleStream;
|
|
14387
15132
|
}()
|
|
14388
15133
|
}, {
|
|
14389
|
-
key: "
|
|
15134
|
+
key: "detachMedia",
|
|
14390
15135
|
value: function() {
|
|
14391
|
-
var
|
|
14392
|
-
var _this$_seiService2;
|
|
15136
|
+
var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee11() {
|
|
14393
15137
|
return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
|
|
14394
15138
|
while (1)
|
|
14395
15139
|
switch (_context11.prev = _context11.next) {
|
|
15140
|
+
case 0:
|
|
15141
|
+
if (!this._bufferService) {
|
|
15142
|
+
_context11.next = 3;
|
|
15143
|
+
break;
|
|
15144
|
+
}
|
|
15145
|
+
_context11.next = 3;
|
|
15146
|
+
return this._bufferService.detachMedia();
|
|
15147
|
+
case 3:
|
|
15148
|
+
case "end":
|
|
15149
|
+
return _context11.stop();
|
|
15150
|
+
}
|
|
15151
|
+
}, _callee11, this);
|
|
15152
|
+
}));
|
|
15153
|
+
function detachMedia() {
|
|
15154
|
+
return _detachMedia.apply(this, arguments);
|
|
15155
|
+
}
|
|
15156
|
+
return detachMedia;
|
|
15157
|
+
}()
|
|
15158
|
+
}, {
|
|
15159
|
+
key: "destroy",
|
|
15160
|
+
value: function() {
|
|
15161
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee12() {
|
|
15162
|
+
var _this$_seiService2;
|
|
15163
|
+
return _regeneratorRuntime$1().wrap(function _callee12$(_context12) {
|
|
15164
|
+
while (1)
|
|
15165
|
+
switch (_context12.prev = _context12.next) {
|
|
14396
15166
|
case 0:
|
|
14397
15167
|
if (this.media) {
|
|
14398
|
-
|
|
15168
|
+
_context12.next = 2;
|
|
14399
15169
|
break;
|
|
14400
15170
|
}
|
|
14401
|
-
return
|
|
15171
|
+
return _context12.abrupt("return");
|
|
14402
15172
|
case 2:
|
|
14403
15173
|
this.removeAllListeners();
|
|
14404
15174
|
this._playlist.reset();
|
|
@@ -14409,15 +15179,15 @@
|
|
|
14409
15179
|
this.media.removeEventListener("pause", this._onPause);
|
|
14410
15180
|
this.media.removeEventListener("seeking", this._onSeeking);
|
|
14411
15181
|
this.media.removeEventListener("timeupdate", this._onTimeupdate);
|
|
14412
|
-
|
|
15182
|
+
_context12.next = 13;
|
|
14413
15183
|
return Promise.all([this._clear(), this._bufferService.destroy()]);
|
|
14414
15184
|
case 13:
|
|
14415
15185
|
this.media = null;
|
|
14416
15186
|
case 14:
|
|
14417
15187
|
case "end":
|
|
14418
|
-
return
|
|
15188
|
+
return _context12.stop();
|
|
14419
15189
|
}
|
|
14420
|
-
},
|
|
15190
|
+
}, _callee12, this);
|
|
14421
15191
|
}));
|
|
14422
15192
|
function destroy() {
|
|
14423
15193
|
return _destroy.apply(this, arguments);
|
|
@@ -14427,48 +15197,48 @@
|
|
|
14427
15197
|
}, {
|
|
14428
15198
|
key: "_loadM3U8",
|
|
14429
15199
|
value: function() {
|
|
14430
|
-
var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15200
|
+
var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee13(url) {
|
|
14431
15201
|
var playlist, _this$config$manifest, _this$config$manifest2, manifest, _ref4, _ref5, _this$_playlist$curre;
|
|
14432
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15202
|
+
return _regeneratorRuntime$1().wrap(function _callee13$(_context13) {
|
|
14433
15203
|
while (1)
|
|
14434
|
-
switch (
|
|
15204
|
+
switch (_context13.prev = _context13.next) {
|
|
14435
15205
|
case 0:
|
|
14436
|
-
|
|
15206
|
+
_context13.prev = 0;
|
|
14437
15207
|
manifest = (_this$config$manifest = this.config.manifestList) === null || _this$config$manifest === void 0 ? void 0 : (_this$config$manifest2 = _this$config$manifest.filter(function(x) {
|
|
14438
15208
|
return x.url === url;
|
|
14439
15209
|
})[0]) === null || _this$config$manifest2 === void 0 ? void 0 : _this$config$manifest2.manifest;
|
|
14440
15210
|
if (!manifest) {
|
|
14441
|
-
|
|
15211
|
+
_context13.next = 6;
|
|
14442
15212
|
break;
|
|
14443
15213
|
}
|
|
14444
|
-
|
|
14445
|
-
|
|
15214
|
+
_context13.t0 = this._manifestLoader.parseText(manifest, url);
|
|
15215
|
+
_context13.next = 9;
|
|
14446
15216
|
break;
|
|
14447
15217
|
case 6:
|
|
14448
|
-
|
|
15218
|
+
_context13.next = 8;
|
|
14449
15219
|
return this._manifestLoader.load(url);
|
|
14450
15220
|
case 8:
|
|
14451
|
-
|
|
15221
|
+
_context13.t0 = _context13.sent;
|
|
14452
15222
|
case 9:
|
|
14453
|
-
_ref4 =
|
|
15223
|
+
_ref4 = _context13.t0;
|
|
14454
15224
|
_ref5 = _slicedToArray$1(_ref4, 1);
|
|
14455
15225
|
playlist = _ref5[0];
|
|
14456
|
-
|
|
15226
|
+
_context13.next = 17;
|
|
14457
15227
|
break;
|
|
14458
15228
|
case 14:
|
|
14459
|
-
|
|
14460
|
-
|
|
14461
|
-
throw this._emitError(StreamingError.create(
|
|
15229
|
+
_context13.prev = 14;
|
|
15230
|
+
_context13.t1 = _context13["catch"](0);
|
|
15231
|
+
throw this._emitError(StreamingError.create(_context13.t1));
|
|
14462
15232
|
case 17:
|
|
14463
15233
|
if (playlist) {
|
|
14464
|
-
|
|
15234
|
+
_context13.next = 19;
|
|
14465
15235
|
break;
|
|
14466
15236
|
}
|
|
14467
|
-
return
|
|
15237
|
+
return _context13.abrupt("return");
|
|
14468
15238
|
case 19:
|
|
14469
15239
|
this._playlist.upsertPlaylist(playlist);
|
|
14470
15240
|
if (!playlist.isMaster) {
|
|
14471
|
-
|
|
15241
|
+
_context13.next = 24;
|
|
14472
15242
|
break;
|
|
14473
15243
|
}
|
|
14474
15244
|
if ((_this$_playlist$curre = this._playlist.currentStream.subtitleStreams) !== null && _this$_playlist$curre !== void 0 && _this$_playlist$curre.length) {
|
|
@@ -14476,18 +15246,18 @@
|
|
|
14476
15246
|
list: this._playlist.currentStream.subtitleStreams
|
|
14477
15247
|
});
|
|
14478
15248
|
}
|
|
14479
|
-
|
|
15249
|
+
_context13.next = 24;
|
|
14480
15250
|
return this._refreshM3U8();
|
|
14481
15251
|
case 24:
|
|
14482
15252
|
this.emit(Event$1.STREAM_PARSED);
|
|
14483
|
-
return
|
|
15253
|
+
return _context13.abrupt("return", playlist);
|
|
14484
15254
|
case 26:
|
|
14485
15255
|
case "end":
|
|
14486
|
-
return
|
|
15256
|
+
return _context13.stop();
|
|
14487
15257
|
}
|
|
14488
|
-
},
|
|
15258
|
+
}, _callee13, this, [[0, 14]]);
|
|
14489
15259
|
}));
|
|
14490
|
-
function _loadM3U8(
|
|
15260
|
+
function _loadM3U8(_x7) {
|
|
14491
15261
|
return _loadM3U.apply(this, arguments);
|
|
14492
15262
|
}
|
|
14493
15263
|
return _loadM3U8;
|
|
@@ -14521,7 +15291,7 @@
|
|
|
14521
15291
|
var isEmpty = this._playlist.isEmpty;
|
|
14522
15292
|
var pollInterval;
|
|
14523
15293
|
if (this._playlist.lowLatency) {
|
|
14524
|
-
pollInterval = (this._playlist.currentStream.partTargetDuration
|
|
15294
|
+
pollInterval = (this._playlist.currentStream.partTargetDuration || 0) * 1e3;
|
|
14525
15295
|
} else {
|
|
14526
15296
|
var _this$_playlist$lastS;
|
|
14527
15297
|
pollInterval = (((_this$_playlist$lastS = this._playlist.lastSegment) === null || _this$_playlist$lastS === void 0 ? void 0 : _this$_playlist$lastS.duration) || 0) * 1e3;
|
|
@@ -14549,53 +15319,53 @@
|
|
|
14549
15319
|
}, {
|
|
14550
15320
|
key: "_loadSegmentDirect",
|
|
14551
15321
|
value: function() {
|
|
14552
|
-
var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15322
|
+
var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee14(loadOnce) {
|
|
14553
15323
|
var seg, appended, cachedError, _this$_playlist$curre2, bufferEnd, sameStream;
|
|
14554
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15324
|
+
return _regeneratorRuntime$1().wrap(function _callee14$(_context14) {
|
|
14555
15325
|
while (1)
|
|
14556
|
-
switch (
|
|
15326
|
+
switch (_context14.prev = _context14.next) {
|
|
14557
15327
|
case 0:
|
|
14558
15328
|
seg = this._playlist.nextSegment;
|
|
14559
15329
|
if (seg) {
|
|
14560
|
-
|
|
15330
|
+
_context14.next = 3;
|
|
14561
15331
|
break;
|
|
14562
15332
|
}
|
|
14563
|
-
return
|
|
15333
|
+
return _context14.abrupt("return");
|
|
14564
15334
|
case 3:
|
|
14565
15335
|
appended = false;
|
|
14566
15336
|
cachedError = null;
|
|
14567
|
-
|
|
15337
|
+
_context14.prev = 5;
|
|
14568
15338
|
this._segmentProcessing = true;
|
|
14569
15339
|
logger.log("load segment, sn:".concat(seg.sn, ", [").concat(seg.start, ", ").concat(seg.end, "], partIndex:").concat(seg.partIndex));
|
|
14570
|
-
|
|
15340
|
+
_context14.next = 10;
|
|
14571
15341
|
return this._reqAndBufferSegment(seg, this._playlist.getAudioSegment(seg));
|
|
14572
15342
|
case 10:
|
|
14573
|
-
appended =
|
|
14574
|
-
|
|
15343
|
+
appended = _context14.sent;
|
|
15344
|
+
_context14.next = 16;
|
|
14575
15345
|
break;
|
|
14576
15346
|
case 13:
|
|
14577
|
-
|
|
14578
|
-
|
|
14579
|
-
cachedError =
|
|
15347
|
+
_context14.prev = 13;
|
|
15348
|
+
_context14.t0 = _context14["catch"](5);
|
|
15349
|
+
cachedError = _context14.t0;
|
|
14580
15350
|
case 16:
|
|
14581
|
-
|
|
15351
|
+
_context14.prev = 16;
|
|
14582
15352
|
this._segmentProcessing = false;
|
|
14583
|
-
return
|
|
15353
|
+
return _context14.finish(16);
|
|
14584
15354
|
case 19:
|
|
14585
15355
|
if (!cachedError) {
|
|
14586
|
-
|
|
15356
|
+
_context14.next = 26;
|
|
14587
15357
|
break;
|
|
14588
15358
|
}
|
|
14589
15359
|
if (!this._bufferService.isFull()) {
|
|
14590
|
-
|
|
15360
|
+
_context14.next = 25;
|
|
14591
15361
|
break;
|
|
14592
15362
|
}
|
|
14593
15363
|
logger.log("load segment, sn:".concat(seg.sn, ", partIndex:").concat(seg.partIndex));
|
|
14594
15364
|
this._segmentProcessing = true;
|
|
14595
15365
|
this._isProcessQuotaExceeded = true;
|
|
14596
|
-
return
|
|
15366
|
+
return _context14.abrupt("return", false);
|
|
14597
15367
|
case 25:
|
|
14598
|
-
return
|
|
15368
|
+
return _context14.abrupt("return", this._emitError(StreamingError.create(cachedError)));
|
|
14599
15369
|
case 26:
|
|
14600
15370
|
if (appended) {
|
|
14601
15371
|
bufferEnd = this.bufferInfo().end;
|
|
@@ -14621,14 +15391,14 @@
|
|
|
14621
15391
|
this._loadSegment();
|
|
14622
15392
|
}
|
|
14623
15393
|
}
|
|
14624
|
-
return
|
|
15394
|
+
return _context14.abrupt("return", appended);
|
|
14625
15395
|
case 28:
|
|
14626
15396
|
case "end":
|
|
14627
|
-
return
|
|
15397
|
+
return _context14.stop();
|
|
14628
15398
|
}
|
|
14629
|
-
},
|
|
15399
|
+
}, _callee14, this, [[5, 13, 16, 19]]);
|
|
14630
15400
|
}));
|
|
14631
|
-
function _loadSegmentDirect(
|
|
15401
|
+
function _loadSegmentDirect(_x8) {
|
|
14632
15402
|
return _loadSegmentDirect2.apply(this, arguments);
|
|
14633
15403
|
}
|
|
14634
15404
|
return _loadSegmentDirect;
|
|
@@ -14636,45 +15406,45 @@
|
|
|
14636
15406
|
}, {
|
|
14637
15407
|
key: "_reqAndBufferSegment",
|
|
14638
15408
|
value: function() {
|
|
14639
|
-
var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15409
|
+
var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee15(seg, audioSeg) {
|
|
14640
15410
|
var _this$_bufferService2;
|
|
14641
15411
|
var cc, discontinuity, responses, data, sn, start, stream, before, contiguous, segStart;
|
|
14642
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15412
|
+
return _regeneratorRuntime$1().wrap(function _callee15$(_context15) {
|
|
14643
15413
|
while (1)
|
|
14644
|
-
switch (
|
|
15414
|
+
switch (_context15.prev = _context15.next) {
|
|
14645
15415
|
case 0:
|
|
14646
15416
|
cc = seg ? seg.cc : audioSeg.cc;
|
|
14647
15417
|
discontinuity = this._prevSegCc !== cc;
|
|
14648
15418
|
responses = [];
|
|
14649
|
-
|
|
14650
|
-
|
|
15419
|
+
_context15.prev = 3;
|
|
15420
|
+
_context15.next = 6;
|
|
14651
15421
|
return this._segmentLoader.load(seg, audioSeg, discontinuity);
|
|
14652
15422
|
case 6:
|
|
14653
|
-
responses =
|
|
14654
|
-
|
|
15423
|
+
responses = _context15.sent;
|
|
15424
|
+
_context15.next = 14;
|
|
14655
15425
|
break;
|
|
14656
15426
|
case 9:
|
|
14657
|
-
|
|
14658
|
-
|
|
14659
|
-
|
|
14660
|
-
this._segmentLoader.error =
|
|
14661
|
-
throw
|
|
15427
|
+
_context15.prev = 9;
|
|
15428
|
+
_context15.t0 = _context15["catch"](3);
|
|
15429
|
+
_context15.t0.fatal = false;
|
|
15430
|
+
this._segmentLoader.error = _context15.t0;
|
|
15431
|
+
throw _context15.t0;
|
|
14662
15432
|
case 14:
|
|
14663
15433
|
if (responses[0]) {
|
|
14664
|
-
|
|
15434
|
+
_context15.next = 16;
|
|
14665
15435
|
break;
|
|
14666
15436
|
}
|
|
14667
|
-
return
|
|
15437
|
+
return _context15.abrupt("return");
|
|
14668
15438
|
case 16:
|
|
14669
|
-
|
|
15439
|
+
_context15.next = 18;
|
|
14670
15440
|
return (_this$_bufferService2 = this._bufferService).decryptBuffer.apply(_this$_bufferService2, _toConsumableArray$2(responses));
|
|
14671
15441
|
case 18:
|
|
14672
|
-
data =
|
|
15442
|
+
data = _context15.sent;
|
|
14673
15443
|
if (data) {
|
|
14674
|
-
|
|
15444
|
+
_context15.next = 21;
|
|
14675
15445
|
break;
|
|
14676
15446
|
}
|
|
14677
|
-
return
|
|
15447
|
+
return _context15.abrupt("return");
|
|
14678
15448
|
case 21:
|
|
14679
15449
|
sn = seg ? seg.sn : audioSeg.sn;
|
|
14680
15450
|
start = seg ? seg.start : audioSeg.start;
|
|
@@ -14688,26 +15458,26 @@
|
|
|
14688
15458
|
logger.warn("update the new playlist liveEdge, segment id=".concat(sn, ", buffer start=").concat(segStart, ", liveEdge=").concat(this._playlist.liveEdge));
|
|
14689
15459
|
start = segStart;
|
|
14690
15460
|
}
|
|
14691
|
-
|
|
15461
|
+
_context15.next = 30;
|
|
14692
15462
|
return this._bufferService.appendBuffer(seg, audioSeg, data[0], data[1], discontinuity, contiguous, start);
|
|
14693
15463
|
case 30:
|
|
14694
15464
|
this.emit(Event$1.APPEND_COST, {
|
|
14695
15465
|
elapsed: Date.now() - before,
|
|
14696
15466
|
url: seg.url
|
|
14697
15467
|
});
|
|
14698
|
-
|
|
15468
|
+
_context15.next = 33;
|
|
14699
15469
|
return this._bufferService.evictBuffer(this.config.bufferBehind);
|
|
14700
15470
|
case 33:
|
|
14701
15471
|
this._prevSegCc = cc;
|
|
14702
15472
|
this._prevSegSn = sn;
|
|
14703
|
-
return
|
|
15473
|
+
return _context15.abrupt("return", true);
|
|
14704
15474
|
case 36:
|
|
14705
15475
|
case "end":
|
|
14706
|
-
return
|
|
15476
|
+
return _context15.stop();
|
|
14707
15477
|
}
|
|
14708
|
-
},
|
|
15478
|
+
}, _callee15, this, [[3, 9]]);
|
|
14709
15479
|
}));
|
|
14710
|
-
function _reqAndBufferSegment(
|
|
15480
|
+
function _reqAndBufferSegment(_x9, _x10) {
|
|
14711
15481
|
return _reqAndBufferSegment2.apply(this, arguments);
|
|
14712
15482
|
}
|
|
14713
15483
|
return _reqAndBufferSegment;
|
|
@@ -14715,11 +15485,11 @@
|
|
|
14715
15485
|
}, {
|
|
14716
15486
|
key: "_onCheckQuotaExceeded",
|
|
14717
15487
|
value: function() {
|
|
14718
|
-
var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15488
|
+
var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee16() {
|
|
14719
15489
|
var seekTime, buffered, inBuffered, i, bufferBehind, mediaTime;
|
|
14720
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15490
|
+
return _regeneratorRuntime$1().wrap(function _callee16$(_context16) {
|
|
14721
15491
|
while (1)
|
|
14722
|
-
switch (
|
|
15492
|
+
switch (_context16.prev = _context16.next) {
|
|
14723
15493
|
case 0:
|
|
14724
15494
|
seekTime = this.media.currentTime;
|
|
14725
15495
|
buffered = this.media.buffered;
|
|
@@ -14727,37 +15497,37 @@
|
|
|
14727
15497
|
i = 0;
|
|
14728
15498
|
case 4:
|
|
14729
15499
|
if (!(i < buffered.length)) {
|
|
14730
|
-
|
|
15500
|
+
_context16.next = 11;
|
|
14731
15501
|
break;
|
|
14732
15502
|
}
|
|
14733
15503
|
if (!(buffered.start(0) >= seekTime && seekTime < buffered.end(i))) {
|
|
14734
|
-
|
|
15504
|
+
_context16.next = 8;
|
|
14735
15505
|
break;
|
|
14736
15506
|
}
|
|
14737
15507
|
inBuffered = true;
|
|
14738
|
-
return
|
|
15508
|
+
return _context16.abrupt("break", 11);
|
|
14739
15509
|
case 8:
|
|
14740
15510
|
i++;
|
|
14741
|
-
|
|
15511
|
+
_context16.next = 4;
|
|
14742
15512
|
break;
|
|
14743
15513
|
case 11:
|
|
14744
15514
|
if (!this._bufferService.isFull()) {
|
|
14745
|
-
|
|
15515
|
+
_context16.next = 17;
|
|
14746
15516
|
break;
|
|
14747
15517
|
}
|
|
14748
15518
|
bufferBehind = inBuffered ? this.config.bufferBehind : 5;
|
|
14749
15519
|
mediaTime = this.media.currentTime;
|
|
14750
15520
|
if (!(mediaTime - bufferBehind > 0)) {
|
|
14751
|
-
|
|
15521
|
+
_context16.next = 17;
|
|
14752
15522
|
break;
|
|
14753
15523
|
}
|
|
14754
|
-
|
|
15524
|
+
_context16.next = 17;
|
|
14755
15525
|
return this._bufferService.removeBuffer(0, mediaTime - bufferBehind);
|
|
14756
15526
|
case 17:
|
|
14757
15527
|
case "end":
|
|
14758
|
-
return
|
|
15528
|
+
return _context16.stop();
|
|
14759
15529
|
}
|
|
14760
|
-
},
|
|
15530
|
+
}, _callee16, this);
|
|
14761
15531
|
}));
|
|
14762
15532
|
function _onCheckQuotaExceeded() {
|
|
14763
15533
|
return _onCheckQuotaExceeded2.apply(this, arguments);
|
|
@@ -14775,22 +15545,22 @@
|
|
|
14775
15545
|
}, {
|
|
14776
15546
|
key: "_clear",
|
|
14777
15547
|
value: function() {
|
|
14778
|
-
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
14779
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15548
|
+
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee17() {
|
|
15549
|
+
return _regeneratorRuntime$1().wrap(function _callee17$(_context17) {
|
|
14780
15550
|
while (1)
|
|
14781
|
-
switch (
|
|
15551
|
+
switch (_context17.prev = _context17.next) {
|
|
14782
15552
|
case 0:
|
|
14783
15553
|
clearTimeout(this._disconnectTimer);
|
|
14784
15554
|
this._stopTick();
|
|
14785
|
-
|
|
15555
|
+
_context17.next = 4;
|
|
14786
15556
|
return Promise.all([this._segmentLoader.cancel(), this._manifestLoader.stopPoll()]);
|
|
14787
15557
|
case 4:
|
|
14788
15558
|
this._segmentProcessing = false;
|
|
14789
15559
|
case 5:
|
|
14790
15560
|
case "end":
|
|
14791
|
-
return
|
|
15561
|
+
return _context17.stop();
|
|
14792
15562
|
}
|
|
14793
|
-
},
|
|
15563
|
+
}, _callee17, this);
|
|
14794
15564
|
}));
|
|
14795
15565
|
function _clear() {
|
|
14796
15566
|
return _clear2.apply(this, arguments);
|
|
@@ -14800,14 +15570,14 @@
|
|
|
14800
15570
|
}, {
|
|
14801
15571
|
key: "_reset",
|
|
14802
15572
|
value: function() {
|
|
14803
|
-
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15573
|
+
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee18() {
|
|
14804
15574
|
var _this$_seiService3;
|
|
14805
|
-
var reuseMse,
|
|
14806
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15575
|
+
var reuseMse, _args18 = arguments;
|
|
15576
|
+
return _regeneratorRuntime$1().wrap(function _callee18$(_context18) {
|
|
14807
15577
|
while (1)
|
|
14808
|
-
switch (
|
|
15578
|
+
switch (_context18.prev = _context18.next) {
|
|
14809
15579
|
case 0:
|
|
14810
|
-
reuseMse =
|
|
15580
|
+
reuseMse = _args18.length > 0 && _args18[0] !== void 0 ? _args18[0] : false;
|
|
14811
15581
|
this._reloadOnPlay = false;
|
|
14812
15582
|
this._prevSegSn = null;
|
|
14813
15583
|
this._prevSegCc = null;
|
|
@@ -14816,15 +15586,15 @@
|
|
|
14816
15586
|
this._segmentLoader.reset();
|
|
14817
15587
|
(_this$_seiService3 = this._seiService) === null || _this$_seiService3 === void 0 ? void 0 : _this$_seiService3.reset();
|
|
14818
15588
|
this._stats.reset();
|
|
14819
|
-
|
|
15589
|
+
_context18.next = 11;
|
|
14820
15590
|
return this._clear();
|
|
14821
15591
|
case 11:
|
|
14822
|
-
return
|
|
15592
|
+
return _context18.abrupt("return", this._bufferService.reset(reuseMse));
|
|
14823
15593
|
case 12:
|
|
14824
15594
|
case "end":
|
|
14825
|
-
return
|
|
15595
|
+
return _context18.stop();
|
|
14826
15596
|
}
|
|
14827
|
-
},
|
|
15597
|
+
}, _callee18, this);
|
|
14828
15598
|
}));
|
|
14829
15599
|
function _reset() {
|
|
14830
15600
|
return _reset2.apply(this, arguments);
|
|
@@ -14942,7 +15712,7 @@
|
|
|
14942
15712
|
}]);
|
|
14943
15713
|
return Hls2;
|
|
14944
15714
|
}(EventEmitter);
|
|
14945
|
-
_defineProperty$3(Hls, "version", "3.0.
|
|
15715
|
+
_defineProperty$3(Hls, "version", "3.0.21-rc.2");
|
|
14946
15716
|
try {
|
|
14947
15717
|
if (localStorage.getItem("xgd")) {
|
|
14948
15718
|
Hls.enableLogger();
|
|
@@ -15033,6 +15803,7 @@
|
|
|
15033
15803
|
}]);
|
|
15034
15804
|
return PluginExtension2;
|
|
15035
15805
|
}();
|
|
15806
|
+
var _excluded = ["currentTime"];
|
|
15036
15807
|
function parseSwitchUrlArgs(args, plugin) {
|
|
15037
15808
|
var player = plugin.player;
|
|
15038
15809
|
var curTime = player.currentTime;
|
|
@@ -15043,9 +15814,14 @@
|
|
|
15043
15814
|
case "boolean":
|
|
15044
15815
|
options.seamless = args;
|
|
15045
15816
|
break;
|
|
15046
|
-
case "object":
|
|
15047
|
-
|
|
15817
|
+
case "object": {
|
|
15818
|
+
var currentTime = args.currentTime, rest = _objectWithoutProperties$1(args, _excluded);
|
|
15819
|
+
Object.assign(options, rest);
|
|
15820
|
+
if (typeof currentTime === "number") {
|
|
15821
|
+
options.startTime = currentTime;
|
|
15822
|
+
}
|
|
15048
15823
|
break;
|
|
15824
|
+
}
|
|
15049
15825
|
}
|
|
15050
15826
|
return options;
|
|
15051
15827
|
}
|
|
@@ -15055,10 +15831,11 @@
|
|
|
15055
15831
|
function HlsPlugin2() {
|
|
15056
15832
|
var _this;
|
|
15057
15833
|
_classCallCheck$3(this, HlsPlugin2);
|
|
15058
|
-
for (var _len = arguments.length,
|
|
15059
|
-
|
|
15834
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
15835
|
+
args[_key] = arguments[_key];
|
|
15060
15836
|
}
|
|
15061
|
-
_this = _super.call.apply(_super, [this].concat(
|
|
15837
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
15838
|
+
_defineProperty$3(_assertThisInitialized$2(_this), "logger", logger);
|
|
15062
15839
|
_defineProperty$3(_assertThisInitialized$2(_this), "hls", null);
|
|
15063
15840
|
_defineProperty$3(_assertThisInitialized$2(_this), "pluginExtension", null);
|
|
15064
15841
|
_defineProperty$3(_assertThisInitialized$2(_this), "getStats", function() {
|
|
@@ -15070,24 +15847,6 @@
|
|
|
15070
15847
|
var lang = _ref.lang;
|
|
15071
15848
|
(_this$hls2 = _this.hls) === null || _this$hls2 === void 0 ? void 0 : _this$hls2.switchSubtitleStream(lang);
|
|
15072
15849
|
});
|
|
15073
|
-
_defineProperty$3(_assertThisInitialized$2(_this), "_onSwitchURL", function(url, args) {
|
|
15074
|
-
return new Promise(function(resolve, reject) {
|
|
15075
|
-
var _assertThisInitialize = _assertThisInitialized$2(_this), player = _assertThisInitialize.player, hls = _assertThisInitialize.hls;
|
|
15076
|
-
if (hls) {
|
|
15077
|
-
var _this$player$config, _this$player$config$h;
|
|
15078
|
-
var options = parseSwitchUrlArgs(args, _assertThisInitialized$2(_this));
|
|
15079
|
-
player.config.url = url;
|
|
15080
|
-
hls.switchURL(url, options).then(function() {
|
|
15081
|
-
return resolve(true);
|
|
15082
|
-
}).catch(reject);
|
|
15083
|
-
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) {
|
|
15084
|
-
_this._keepPauseStatus();
|
|
15085
|
-
}
|
|
15086
|
-
} else {
|
|
15087
|
-
reject();
|
|
15088
|
-
}
|
|
15089
|
-
});
|
|
15090
|
-
});
|
|
15091
15850
|
_defineProperty$3(_assertThisInitialized$2(_this), "_keepPauseStatus", function() {
|
|
15092
15851
|
var paused = _this.player.paused;
|
|
15093
15852
|
if (!paused)
|
|
@@ -15112,8 +15871,8 @@
|
|
|
15112
15871
|
}, {
|
|
15113
15872
|
key: "softDecode",
|
|
15114
15873
|
get: function get() {
|
|
15115
|
-
var _this$player, _this$player$
|
|
15116
|
-
var mediaType = (_this$player = this.player) === null || _this$player === void 0 ? void 0 : (_this$player$
|
|
15874
|
+
var _this$player, _this$player$config;
|
|
15875
|
+
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;
|
|
15117
15876
|
return !!mediaType && mediaType !== "video" && mediaType !== "audio";
|
|
15118
15877
|
}
|
|
15119
15878
|
}, {
|
|
@@ -15121,13 +15880,35 @@
|
|
|
15121
15880
|
value: function beforePlayerInit() {
|
|
15122
15881
|
var _this2 = this;
|
|
15123
15882
|
var config = this.player.config;
|
|
15883
|
+
var mediaElem = this.player.media || this.player.video;
|
|
15124
15884
|
var hlsOpts = config.hls || {};
|
|
15125
15885
|
if (!config.url && !config.__allowHlsEmptyUrl__ || !hlsOpts.preferMMS && MSE.isMMSOnly()) {
|
|
15126
15886
|
return;
|
|
15127
15887
|
}
|
|
15128
15888
|
if (this.hls)
|
|
15129
15889
|
this.hls.destroy();
|
|
15130
|
-
|
|
15890
|
+
var descriptor = Object.getOwnPropertyDescriptor(this.player, "switchURL");
|
|
15891
|
+
if (!descriptor || descriptor.writable) {
|
|
15892
|
+
this.player.switchURL = function(url, args) {
|
|
15893
|
+
return new Promise(function(resolve, reject) {
|
|
15894
|
+
var player = _this2.player, hls = _this2.hls;
|
|
15895
|
+
if (hls) {
|
|
15896
|
+
var _this2$player$config, _this2$player$config$;
|
|
15897
|
+
var options = parseSwitchUrlArgs(args, _this2);
|
|
15898
|
+
player.config.url = url;
|
|
15899
|
+
hls.switchURL(url, options).then(function() {
|
|
15900
|
+
return resolve(true);
|
|
15901
|
+
}).catch(reject);
|
|
15902
|
+
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) {
|
|
15903
|
+
_this2._keepPauseStatus();
|
|
15904
|
+
}
|
|
15905
|
+
} else {
|
|
15906
|
+
reject();
|
|
15907
|
+
}
|
|
15908
|
+
});
|
|
15909
|
+
};
|
|
15910
|
+
}
|
|
15911
|
+
var onSwitchUrl = this.player.switchURL;
|
|
15131
15912
|
this.player.handleSource = false;
|
|
15132
15913
|
hlsOpts.innerDegrade = hlsOpts.innerDegrade || config.innerDegrade;
|
|
15133
15914
|
if (hlsOpts.disconnectTime === null || hlsOpts.disconnectTime === void 0)
|
|
@@ -15135,7 +15916,7 @@
|
|
|
15135
15916
|
this.hls = new Hls(_objectSpread2$2({
|
|
15136
15917
|
softDecode: this.softDecode,
|
|
15137
15918
|
isLive: config.isLive,
|
|
15138
|
-
media:
|
|
15919
|
+
media: mediaElem,
|
|
15139
15920
|
startTime: config.startTime,
|
|
15140
15921
|
url: config.url
|
|
15141
15922
|
}, hlsOpts));
|
|
@@ -15153,7 +15934,7 @@
|
|
|
15153
15934
|
if (this.softDecode) {
|
|
15154
15935
|
this.pluginExtension = new PluginExtension(_objectSpread2$2({
|
|
15155
15936
|
isLive: config.isLive,
|
|
15156
|
-
media:
|
|
15937
|
+
media: mediaElem
|
|
15157
15938
|
}, hlsOpts), this);
|
|
15158
15939
|
this.player.forceDegradeToVideo = function() {
|
|
15159
15940
|
var _this2$pluginExtensio;
|
|
@@ -15170,8 +15951,8 @@
|
|
|
15170
15951
|
return (_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.replay();
|
|
15171
15952
|
});
|
|
15172
15953
|
}
|
|
15954
|
+
this.on(URL_CHANGE, onSwitchUrl);
|
|
15173
15955
|
this.on(SWITCH_SUBTITLE, this._onSwitchSubtitle);
|
|
15174
|
-
this.on(URL_CHANGE, this._onSwitchURL);
|
|
15175
15956
|
this.on(DESTROY, this.destroy.bind(this));
|
|
15176
15957
|
this._transError();
|
|
15177
15958
|
this._transCoreEvent(EVENT.TTFB);
|
|
@@ -15181,6 +15962,7 @@
|
|
|
15181
15962
|
this._transCoreEvent(EVENT.LOAD_RETRY);
|
|
15182
15963
|
this._transCoreEvent(EVENT.SOURCEBUFFER_CREATED);
|
|
15183
15964
|
this._transCoreEvent(EVENT.MEDIASOURCE_OPENED);
|
|
15965
|
+
this._transCoreEvent(EVENT.APPEND_BUFFER);
|
|
15184
15966
|
this._transCoreEvent(EVENT.REMOVE_BUFFER);
|
|
15185
15967
|
this._transCoreEvent(EVENT.BUFFEREOS);
|
|
15186
15968
|
this._transCoreEvent(EVENT.KEYFRAME);
|
|
@@ -15200,7 +15982,9 @@
|
|
|
15200
15982
|
this._transCoreEvent(Event$1.SUBTITLE_PLAYLIST);
|
|
15201
15983
|
this._transCoreEvent(Event$1.APPEND_COST);
|
|
15202
15984
|
if (config.url) {
|
|
15203
|
-
this.hls.load(config.url,
|
|
15985
|
+
this.hls.load(config.url, {
|
|
15986
|
+
reuseMse: true
|
|
15987
|
+
}).catch(function(e) {
|
|
15204
15988
|
});
|
|
15205
15989
|
}
|
|
15206
15990
|
}
|