@volcengine/veplayer-plugin 2.5.0-rc.0 → 2.6.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/index.development.css +8 -4
- package/esm/index.development.js +12133 -6733
- package/esm/index.production.css +1 -1
- package/esm/index.production.js +6 -6
- package/esm/veplayer.plugin.abr.development.js +12 -0
- package/esm/veplayer.plugin.abr.production.js +1 -1
- package/esm/veplayer.plugin.ad.development.css +8 -4
- package/esm/veplayer.plugin.ad.development.js +4807 -655
- package/esm/veplayer.plugin.ad.production.css +1 -1
- package/esm/veplayer.plugin.ad.production.js +2 -2
- 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 +1159 -369
- 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 +13 -1
- 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/veplayer.plugin.abr.development.js +12 -0
- package/umd/veplayer.plugin.abr.production.js +1 -1
- package/umd/veplayer.plugin.ad.development.css +8 -4
- package/umd/veplayer.plugin.ad.development.js +4786 -634
- package/umd/veplayer.plugin.ad.production.css +1 -1
- package/umd/veplayer.plugin.ad.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 +1126 -336
- 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 +13 -1
- 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
|
@@ -1644,7 +1644,7 @@
|
|
|
1644
1644
|
}
|
|
1645
1645
|
return offsetTime;
|
|
1646
1646
|
};
|
|
1647
|
-
var version = "3.0.
|
|
1647
|
+
var version = "3.0.21-rc.3";
|
|
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,119 @@
|
|
|
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
|
+
if (isFirefox) {
|
|
7382
|
+
track.codec = "mp3";
|
|
7383
|
+
} else {
|
|
7384
|
+
track.container = "audio/mpeg";
|
|
7385
|
+
}
|
|
7386
|
+
track.samples.push(sample);
|
|
7387
|
+
return {
|
|
7388
|
+
length: header.frameLength
|
|
7389
|
+
};
|
|
7390
|
+
}
|
|
7391
|
+
}
|
|
7392
|
+
}, {
|
|
7393
|
+
key: "parseHeader",
|
|
7394
|
+
value: function parseHeader(data, offset) {
|
|
7395
|
+
var mpegVersion = data[offset + 1] >> 3 & 3;
|
|
7396
|
+
var mpegLayer = data[offset + 1] >> 1 & 3;
|
|
7397
|
+
var bitRateIndex = data[offset + 2] >> 4 & 15;
|
|
7398
|
+
var sampleRateIndex = data[offset + 2] >> 2 & 3;
|
|
7399
|
+
if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {
|
|
7400
|
+
var paddingBit = data[offset + 2] >> 1 & 1;
|
|
7401
|
+
var channelMode = data[offset + 3] >> 6;
|
|
7402
|
+
var columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;
|
|
7403
|
+
var bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1e3;
|
|
7404
|
+
var columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;
|
|
7405
|
+
var sampleRate = FREQ[columnInSampleRates * 3 + sampleRateIndex];
|
|
7406
|
+
var channelCount = channelMode === 3 ? 1 : 2;
|
|
7407
|
+
var sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];
|
|
7408
|
+
var bytesInSlot = BytesInSlot[mpegLayer];
|
|
7409
|
+
var samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;
|
|
7410
|
+
var frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot;
|
|
7411
|
+
if (chromeVersion === null) {
|
|
7412
|
+
var userAgent = navigator.userAgent || "";
|
|
7413
|
+
var result = userAgent.match(/Chrome\/(\d+)/i);
|
|
7414
|
+
chromeVersion = result ? parseInt(result[1]) : 0;
|
|
7415
|
+
}
|
|
7416
|
+
var needChromeFix = !!chromeVersion && chromeVersion <= 87;
|
|
7417
|
+
if (needChromeFix && mpegLayer === 2 && bitRate >= 224e3 && channelMode === 0) {
|
|
7418
|
+
data[offset + 3] = data[offset + 3] | 128;
|
|
7419
|
+
}
|
|
7420
|
+
return {
|
|
7421
|
+
sampleRate,
|
|
7422
|
+
channelCount,
|
|
7423
|
+
frameLength,
|
|
7424
|
+
samplesPerFrame
|
|
7425
|
+
};
|
|
7426
|
+
}
|
|
7427
|
+
}
|
|
7428
|
+
}]);
|
|
7429
|
+
return MPEG2;
|
|
7430
|
+
}();
|
|
7243
7431
|
var logger$4 = new Logger$1("TsDemuxer");
|
|
7244
7432
|
var TsDemuxer = /* @__PURE__ */ function() {
|
|
7245
7433
|
function TsDemuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
@@ -7323,6 +7511,13 @@
|
|
|
7323
7511
|
case 15:
|
|
7324
7512
|
audioTrack.pid = audioPid = esPid;
|
|
7325
7513
|
break;
|
|
7514
|
+
case 3:
|
|
7515
|
+
case 4:
|
|
7516
|
+
if (audioTrack.pid === -1) {
|
|
7517
|
+
audioTrack.pid = audioPid = esPid;
|
|
7518
|
+
audioTrack.codecType = AudioCodecType.MP3;
|
|
7519
|
+
}
|
|
7520
|
+
break;
|
|
7326
7521
|
case 27:
|
|
7327
7522
|
if (videoPid !== -1)
|
|
7328
7523
|
break;
|
|
@@ -7522,7 +7717,14 @@
|
|
|
7522
7717
|
logger$4.warn("Cannot parse audio pes", this._audioPesData);
|
|
7523
7718
|
return;
|
|
7524
7719
|
}
|
|
7525
|
-
this.
|
|
7720
|
+
switch (this.audioTrack.codecType) {
|
|
7721
|
+
case AudioCodecType.AAC:
|
|
7722
|
+
this._parseAacData(pes);
|
|
7723
|
+
break;
|
|
7724
|
+
case AudioCodecType.MP3:
|
|
7725
|
+
this._parseMPEG(pes);
|
|
7726
|
+
break;
|
|
7727
|
+
}
|
|
7526
7728
|
this._audioPesData = [];
|
|
7527
7729
|
}
|
|
7528
7730
|
}, {
|
|
@@ -7559,6 +7761,32 @@
|
|
|
7559
7761
|
logger$4.warn("Cannot parse aac adts", pes);
|
|
7560
7762
|
}
|
|
7561
7763
|
}
|
|
7764
|
+
}, {
|
|
7765
|
+
key: "_parseMPEG",
|
|
7766
|
+
value: function _parseMPEG(pes) {
|
|
7767
|
+
var data = pes.data;
|
|
7768
|
+
var length = data.length;
|
|
7769
|
+
var frameIndex = 0;
|
|
7770
|
+
var offset = 0;
|
|
7771
|
+
var pts = pes.pts;
|
|
7772
|
+
if (pts === void 0) {
|
|
7773
|
+
logger$4.warn("[tsdemuxer]: MPEG PES unknown PTS");
|
|
7774
|
+
return;
|
|
7775
|
+
}
|
|
7776
|
+
while (offset < length) {
|
|
7777
|
+
if (MPEG.isHeader(data, offset)) {
|
|
7778
|
+
var frame = MPEG.appendFrame(this.audioTrack, data, offset, pts, frameIndex);
|
|
7779
|
+
if (frame) {
|
|
7780
|
+
offset += frame.length;
|
|
7781
|
+
frameIndex++;
|
|
7782
|
+
} else {
|
|
7783
|
+
break;
|
|
7784
|
+
}
|
|
7785
|
+
} else {
|
|
7786
|
+
offset++;
|
|
7787
|
+
}
|
|
7788
|
+
}
|
|
7789
|
+
}
|
|
7562
7790
|
}], [{
|
|
7563
7791
|
key: "probe",
|
|
7564
7792
|
value: function probe(data) {
|
|
@@ -7605,7 +7833,7 @@
|
|
|
7605
7833
|
_classCallCheck(this, ByteReader2);
|
|
7606
7834
|
this.dv = new DataView(buf);
|
|
7607
7835
|
this.start = this.offset = offset || this.dv.byteOffset;
|
|
7608
|
-
this.end = len ? this.start + len : this.dv.byteLength;
|
|
7836
|
+
this.end = len ? this.start + len : this.start + this.dv.byteLength;
|
|
7609
7837
|
}
|
|
7610
7838
|
_createClass(ByteReader2, [{
|
|
7611
7839
|
key: "buffer",
|
|
@@ -7707,7 +7935,7 @@
|
|
|
7707
7935
|
value: function readToBuffer(len) {
|
|
7708
7936
|
var buffer;
|
|
7709
7937
|
if (this.offset || len) {
|
|
7710
|
-
buffer = this.dv.buffer.slice(this.offset, len ? this.offset + len :
|
|
7938
|
+
buffer = this.dv.buffer.slice(this.offset, len ? this.offset + len : this.end);
|
|
7711
7939
|
} else {
|
|
7712
7940
|
buffer = this.dv.buffer;
|
|
7713
7941
|
}
|
|
@@ -7760,6 +7988,47 @@
|
|
|
7760
7988
|
}]);
|
|
7761
7989
|
return ByteReader2;
|
|
7762
7990
|
}();
|
|
7991
|
+
var BitReader = /* @__PURE__ */ function() {
|
|
7992
|
+
function BitReader2(val, size) {
|
|
7993
|
+
_classCallCheck(this, BitReader2);
|
|
7994
|
+
this.offset = 0;
|
|
7995
|
+
this.val = val;
|
|
7996
|
+
this.size = size;
|
|
7997
|
+
}
|
|
7998
|
+
_createClass(BitReader2, [{
|
|
7999
|
+
key: "skip",
|
|
8000
|
+
value: function skip(len) {
|
|
8001
|
+
this.offset += len;
|
|
8002
|
+
}
|
|
8003
|
+
}, {
|
|
8004
|
+
key: "read",
|
|
8005
|
+
value: function read(len) {
|
|
8006
|
+
var unreadLength = this.size - this.offset - len;
|
|
8007
|
+
if (unreadLength >= 0) {
|
|
8008
|
+
var bits = 0, i = 0;
|
|
8009
|
+
this.offset += len;
|
|
8010
|
+
if (this.size > 31) {
|
|
8011
|
+
for (; i < len; i++) {
|
|
8012
|
+
bits += Math.pow(2, i);
|
|
8013
|
+
}
|
|
8014
|
+
return this.val / Math.pow(2, unreadLength) & bits;
|
|
8015
|
+
} else {
|
|
8016
|
+
for (; i < len; i++) {
|
|
8017
|
+
bits += 1 << i;
|
|
8018
|
+
}
|
|
8019
|
+
return this.val >>> unreadLength & bits;
|
|
8020
|
+
}
|
|
8021
|
+
}
|
|
8022
|
+
throw new Error("the number of the read operation exceeds the total length limit of bits");
|
|
8023
|
+
}
|
|
8024
|
+
}], [{
|
|
8025
|
+
key: "fromByte",
|
|
8026
|
+
value: function fromByte(byte, len) {
|
|
8027
|
+
return new BitReader2(byte.read(len), len << 3);
|
|
8028
|
+
}
|
|
8029
|
+
}]);
|
|
8030
|
+
return BitReader2;
|
|
8031
|
+
}();
|
|
7763
8032
|
var MP4Parser = /* @__PURE__ */ function() {
|
|
7764
8033
|
function MP4Parser2() {
|
|
7765
8034
|
_classCallCheck(this, MP4Parser2);
|
|
@@ -8099,6 +8368,8 @@
|
|
|
8099
8368
|
ret.entryCount = readBig32(data);
|
|
8100
8369
|
ret.entries = MP4Parser2.findBox(data.subarray(4), [], start + 4).map(function(b) {
|
|
8101
8370
|
switch (b.type) {
|
|
8371
|
+
case "av01":
|
|
8372
|
+
return MP4Parser2.av01(b);
|
|
8102
8373
|
case "avc1":
|
|
8103
8374
|
case "avc2":
|
|
8104
8375
|
case "avc3":
|
|
@@ -8178,6 +8449,69 @@
|
|
|
8178
8449
|
}
|
|
8179
8450
|
});
|
|
8180
8451
|
}
|
|
8452
|
+
}, {
|
|
8453
|
+
key: "colr",
|
|
8454
|
+
value: function colr(box) {
|
|
8455
|
+
return parseBox(box, false, function(ret, data) {
|
|
8456
|
+
var byte = ByteReader.fromUint8(data);
|
|
8457
|
+
ret.data = box.data;
|
|
8458
|
+
ret.colorType = byte.readString(4);
|
|
8459
|
+
if (ret.colorType === "nclx") {
|
|
8460
|
+
ret.colorPrimaries = byte.read(2);
|
|
8461
|
+
ret.transferCharacteristics = byte.read(2);
|
|
8462
|
+
ret.matrixCoefficients = byte.read(2);
|
|
8463
|
+
ret.fullRangeFlag = byte.read(1) >> 7;
|
|
8464
|
+
} else if (ret.colorType === "rICC" || ret.colorType === "prof") {
|
|
8465
|
+
ret.iccProfile = data.readToUint8();
|
|
8466
|
+
}
|
|
8467
|
+
});
|
|
8468
|
+
}
|
|
8469
|
+
}, {
|
|
8470
|
+
key: "av01",
|
|
8471
|
+
value: function av01(box) {
|
|
8472
|
+
return parseBox(box, false, function(ret, data, start) {
|
|
8473
|
+
var bodyStart = parseVisualSampleEntry(ret, data);
|
|
8474
|
+
var bodyData = data.subarray(bodyStart);
|
|
8475
|
+
start += bodyStart;
|
|
8476
|
+
ret.av1C = MP4Parser2.av1C(MP4Parser2.findBox(bodyData, ["av1C"], start)[0]);
|
|
8477
|
+
ret.colr = MP4Parser2.colr(MP4Parser2.findBox(bodyData, ["colr"], start)[0]);
|
|
8478
|
+
});
|
|
8479
|
+
}
|
|
8480
|
+
}, {
|
|
8481
|
+
key: "av1C",
|
|
8482
|
+
value: function av1C(box) {
|
|
8483
|
+
return parseBox(box, false, function(ret, data) {
|
|
8484
|
+
ret.data = box.data;
|
|
8485
|
+
var byte = ByteReader.fromUint8(data);
|
|
8486
|
+
var bit = BitReader.fromByte(byte, 4);
|
|
8487
|
+
ret.marker = bit.read(1);
|
|
8488
|
+
ret.version = bit.read(7);
|
|
8489
|
+
ret.seqProfile = bit.read(3);
|
|
8490
|
+
ret.seqLevelIdx0 = bit.read(5);
|
|
8491
|
+
ret.seqTier0 = bit.read(1);
|
|
8492
|
+
ret.highBitdepth = bit.read(1);
|
|
8493
|
+
ret.twelveBit = bit.read(1);
|
|
8494
|
+
ret.monochrome = bit.read(1);
|
|
8495
|
+
ret.chromaSubsamplingX = bit.read(1);
|
|
8496
|
+
ret.chromaSubsamplingY = bit.read(1);
|
|
8497
|
+
ret.chromaSamplePosition = bit.read(2);
|
|
8498
|
+
ret.reserved = bit.read(3);
|
|
8499
|
+
ret.initialPresentationDelayPresent = bit.read(1);
|
|
8500
|
+
if (ret.initialPresentationDelayPresent) {
|
|
8501
|
+
ret.initialPresentationDelayMinusOne = bit.read(4);
|
|
8502
|
+
} else {
|
|
8503
|
+
ret.initialPresentationDelayMinusOne = 0;
|
|
8504
|
+
}
|
|
8505
|
+
ret.configOBUs = byte.readToUint8();
|
|
8506
|
+
var bitdepth;
|
|
8507
|
+
if (ret.seqLevelIdx0 === 2 && ret.highBitdepth === 1) {
|
|
8508
|
+
bitdepth = ret.twelveBit === 1 ? "12" : "10";
|
|
8509
|
+
} else if (ret.seqProfile <= 2) {
|
|
8510
|
+
bitdepth = ret.highBitdepth === 1 ? "10" : "08";
|
|
8511
|
+
}
|
|
8512
|
+
ret.codec = ["av01", ret.seqProfile, (ret.seqLevelIdx0 < 10 ? "0" + ret.seqLevelIdx0 : ret.seqLevelIdx0) + (ret.seqTier0 ? "H" : "M"), bitdepth].join(".");
|
|
8513
|
+
});
|
|
8514
|
+
}
|
|
8181
8515
|
}, {
|
|
8182
8516
|
key: "avc1",
|
|
8183
8517
|
value: function avc1(box) {
|
|
@@ -8611,7 +8945,12 @@
|
|
|
8611
8945
|
if (e1.pasp) {
|
|
8612
8946
|
v.sarRatio = [e1.pasp.hSpacing, e1.pasp.vSpacing];
|
|
8613
8947
|
}
|
|
8614
|
-
if (e1.
|
|
8948
|
+
if (e1.av1C) {
|
|
8949
|
+
v.codecType = VideoCodecType.AV1;
|
|
8950
|
+
v.codec = e1.av1C.codec;
|
|
8951
|
+
v.av1C = e1.av1C.data;
|
|
8952
|
+
v.colr = e1.colr.data;
|
|
8953
|
+
} else if (e1.hvcC) {
|
|
8615
8954
|
v.codecType = VideoCodecType.HEVC;
|
|
8616
8955
|
v.codec = e1.hvcC.codec;
|
|
8617
8956
|
v.vps = e1.hvcC.vps;
|
|
@@ -8930,8 +9269,9 @@
|
|
|
8930
9269
|
function parseBox(box, isFullBox, parse2) {
|
|
8931
9270
|
if (!box)
|
|
8932
9271
|
return;
|
|
8933
|
-
if (box.size !== box.data.length)
|
|
9272
|
+
if (box.size !== box.data.length) {
|
|
8934
9273
|
throw new Error("box ".concat(box.type, " size !== data.length"));
|
|
9274
|
+
}
|
|
8935
9275
|
var ret = {
|
|
8936
9276
|
start: box.start,
|
|
8937
9277
|
size: box.size,
|
|
@@ -8970,11 +9310,167 @@
|
|
|
8970
9310
|
var FMP4Demuxer = /* @__PURE__ */ function() {
|
|
8971
9311
|
function FMP4Demuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
8972
9312
|
_classCallCheck(this, FMP4Demuxer2);
|
|
9313
|
+
_defineProperty(this, "__loadedMoofWraps", []);
|
|
9314
|
+
_defineProperty(this, "__lastRemainData", null);
|
|
9315
|
+
_defineProperty(this, "__lastRemainDataStart", 0);
|
|
9316
|
+
_defineProperty(this, "__nextMoofStart", -1);
|
|
8973
9317
|
this.videoTrack = videoTrack || new VideoTrack();
|
|
8974
9318
|
this.audioTrack = audioTrack || new AudioTrack();
|
|
8975
9319
|
this.metadataTrack = metadataTrack || new MetadataTrack();
|
|
8976
9320
|
}
|
|
8977
9321
|
_createClass(FMP4Demuxer2, [{
|
|
9322
|
+
key: "demuxPart",
|
|
9323
|
+
value: function demuxPart(partData, partDataStart, moov) {
|
|
9324
|
+
var _this = this;
|
|
9325
|
+
var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
|
|
9326
|
+
var videoExist = videoTrack.exist();
|
|
9327
|
+
var audioExist = audioTrack.exist();
|
|
9328
|
+
var isAV01 = /av01/.test(videoTrack.codec);
|
|
9329
|
+
videoTrack.samples = [];
|
|
9330
|
+
audioTrack.samples = [];
|
|
9331
|
+
var data = partData;
|
|
9332
|
+
var dataStart = partDataStart;
|
|
9333
|
+
if (this.__lastRemainData) {
|
|
9334
|
+
var lastRemainDataEnd = this.__lastRemainDataStart + this.__lastRemainData.byteLength;
|
|
9335
|
+
var continuous = partDataStart <= lastRemainDataEnd && partDataStart > this.__lastRemainDataStart && partDataStart + partData.byteLength > lastRemainDataEnd;
|
|
9336
|
+
if (continuous) {
|
|
9337
|
+
var noDuplicateData = partData.subarray(this.__lastRemainData.byteLength + this.__lastRemainDataStart - partDataStart);
|
|
9338
|
+
data = concatUint8Array(this.__lastRemainData, noDuplicateData);
|
|
9339
|
+
dataStart = this.__lastRemainDataStart;
|
|
9340
|
+
this.__lastRemainData = null;
|
|
9341
|
+
} else {
|
|
9342
|
+
this.__lastRemainData = null;
|
|
9343
|
+
this.__lastRemainDataStart = 0;
|
|
9344
|
+
this.__nextMoofStart = -1;
|
|
9345
|
+
}
|
|
9346
|
+
}
|
|
9347
|
+
if (!moov) {
|
|
9348
|
+
var moovBox = MP4Parser.findBox(data, ["moov"])[0];
|
|
9349
|
+
if (!moovBox)
|
|
9350
|
+
throw new Error("cannot found moov box");
|
|
9351
|
+
moov = MP4Parser.moov(moovBox);
|
|
9352
|
+
}
|
|
9353
|
+
if (data) {
|
|
9354
|
+
var dataEnd = dataStart + data.byteLength;
|
|
9355
|
+
if (!videoExist && !audioExist) {
|
|
9356
|
+
MP4Parser.moovToTrack(moov, videoTrack, audioTrack);
|
|
9357
|
+
}
|
|
9358
|
+
var moofBoxes = [];
|
|
9359
|
+
if (this.__nextMoofStart < 0) {
|
|
9360
|
+
MP4Parser.findBox(data, ["moof"], dataStart).forEach(function(v) {
|
|
9361
|
+
return moofBoxes.push(v);
|
|
9362
|
+
});
|
|
9363
|
+
} else if (this.__nextMoofStart >= dataStart && this.__nextMoofStart <= dataEnd - 8) {
|
|
9364
|
+
MP4Parser.findBox(data.subarray(this.__nextMoofStart - dataStart), ["moof"], this.__nextMoofStart).forEach(function(v) {
|
|
9365
|
+
return moofBoxes.push(v);
|
|
9366
|
+
});
|
|
9367
|
+
}
|
|
9368
|
+
moofBoxes.filter(function(moofBox) {
|
|
9369
|
+
return moofBox.size <= moofBox.data.length;
|
|
9370
|
+
}).forEach(function(moofBox) {
|
|
9371
|
+
var moof = MP4Parser.moof(moofBox);
|
|
9372
|
+
_this.__nextMoofStart = moof.start + Math.max.apply(Math, _toConsumableArray(moof.traf.map(function(v) {
|
|
9373
|
+
return v.trun.samples.reduce(function(ret, w) {
|
|
9374
|
+
return ret + w.size;
|
|
9375
|
+
}, v.trun.dataOffset || 0);
|
|
9376
|
+
})));
|
|
9377
|
+
_this.__loadedMoofWraps.push({
|
|
9378
|
+
start: moof.start,
|
|
9379
|
+
nextMoofStart: _this.__nextMoofStart,
|
|
9380
|
+
moof
|
|
9381
|
+
});
|
|
9382
|
+
_this.__loadedMoofWraps.sort(function(p, n) {
|
|
9383
|
+
return p.start - n.start;
|
|
9384
|
+
});
|
|
9385
|
+
});
|
|
9386
|
+
var _iterator = _createForOfIteratorHelper(this.__loadedMoofWraps), _step;
|
|
9387
|
+
try {
|
|
9388
|
+
var _loop = function _loop2() {
|
|
9389
|
+
var moofWrap = _step.value;
|
|
9390
|
+
if (moofWrap.start > dataEnd || moofWrap.nextMoofStart < dataStart) {
|
|
9391
|
+
return "continue";
|
|
9392
|
+
}
|
|
9393
|
+
var moofStart = moofWrap.start;
|
|
9394
|
+
var tracks = MP4Parser.moofToSamples(moofWrap.moof, videoTrack, audioTrack);
|
|
9395
|
+
var videoBaseMediaDecodeTime = videoTrack.baseMediaDecodeTime;
|
|
9396
|
+
var audioBaseMediaDecodeTime = audioTrack.baseMediaDecodeTime;
|
|
9397
|
+
var nalSize;
|
|
9398
|
+
Object.keys(tracks).forEach(function(k) {
|
|
9399
|
+
if (videoTrack.id == k) {
|
|
9400
|
+
tracks[k].some(function(x) {
|
|
9401
|
+
var xStart = x.offset += moofStart;
|
|
9402
|
+
if (xStart < dataStart) {
|
|
9403
|
+
return;
|
|
9404
|
+
}
|
|
9405
|
+
if (xStart + x.size > dataEnd) {
|
|
9406
|
+
return true;
|
|
9407
|
+
}
|
|
9408
|
+
var sample = new VideoSample((x.pts || x.dts) + videoBaseMediaDecodeTime, x.dts + videoBaseMediaDecodeTime);
|
|
9409
|
+
sample.duration = x.duration;
|
|
9410
|
+
sample.gopId = x.gopId;
|
|
9411
|
+
if (x.keyframe)
|
|
9412
|
+
sample.setToKeyframe();
|
|
9413
|
+
var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
|
|
9414
|
+
sample.data = sampleData;
|
|
9415
|
+
if (!isAV01) {
|
|
9416
|
+
var start = 0;
|
|
9417
|
+
var len = sampleData.length - 1;
|
|
9418
|
+
while (start < len) {
|
|
9419
|
+
nalSize = readBig32(sampleData, start);
|
|
9420
|
+
start += 4;
|
|
9421
|
+
sample.units.push(sampleData.subarray(start, start + nalSize));
|
|
9422
|
+
start += nalSize;
|
|
9423
|
+
}
|
|
9424
|
+
}
|
|
9425
|
+
_this.__lastRemainDataStart = xStart + x.size;
|
|
9426
|
+
videoTrack.samples.push(sample);
|
|
9427
|
+
});
|
|
9428
|
+
} else if (audioTrack.id == k) {
|
|
9429
|
+
tracks[k].some(function(x) {
|
|
9430
|
+
var xStart = x.offset + moofStart;
|
|
9431
|
+
if (xStart < dataStart) {
|
|
9432
|
+
return;
|
|
9433
|
+
}
|
|
9434
|
+
if (xStart + x.size > dataEnd) {
|
|
9435
|
+
return true;
|
|
9436
|
+
}
|
|
9437
|
+
var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
|
|
9438
|
+
audioTrack.samples.push(new AudioSample(x.dts + audioBaseMediaDecodeTime, sampleData, x.duration));
|
|
9439
|
+
_this.__lastRemainDataStart = xStart + x.size;
|
|
9440
|
+
});
|
|
9441
|
+
}
|
|
9442
|
+
});
|
|
9443
|
+
};
|
|
9444
|
+
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
9445
|
+
var _ret = _loop();
|
|
9446
|
+
if (_ret === "continue")
|
|
9447
|
+
continue;
|
|
9448
|
+
}
|
|
9449
|
+
} catch (err) {
|
|
9450
|
+
_iterator.e(err);
|
|
9451
|
+
} finally {
|
|
9452
|
+
_iterator.f();
|
|
9453
|
+
}
|
|
9454
|
+
}
|
|
9455
|
+
if (this.__lastRemainDataStart > dataStart && this.__lastRemainDataStart < data.byteLength + dataStart) {
|
|
9456
|
+
this.__lastRemainData = data.subarray(this.__lastRemainDataStart - dataStart);
|
|
9457
|
+
} else {
|
|
9458
|
+
this.__lastRemainData = data;
|
|
9459
|
+
this.__lastRemainDataStart = dataStart;
|
|
9460
|
+
}
|
|
9461
|
+
if (videoTrack.samples.length) {
|
|
9462
|
+
videoTrack.baseMediaDecodeTime = videoTrack.samples[0].pts;
|
|
9463
|
+
}
|
|
9464
|
+
if (audioTrack.samples.length) {
|
|
9465
|
+
audioTrack.baseMediaDecodeTime = audioTrack.samples[0].pts;
|
|
9466
|
+
}
|
|
9467
|
+
return {
|
|
9468
|
+
videoTrack,
|
|
9469
|
+
audioTrack,
|
|
9470
|
+
metadataTrack: this.metadataTrack
|
|
9471
|
+
};
|
|
9472
|
+
}
|
|
9473
|
+
}, {
|
|
8978
9474
|
key: "demux",
|
|
8979
9475
|
value: function demux(videoData, audioData) {
|
|
8980
9476
|
var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
|
|
@@ -9466,10 +9962,16 @@
|
|
|
9466
9962
|
if (track.useEME && track.enca) {
|
|
9467
9963
|
content = MP42.enca(track);
|
|
9468
9964
|
} else {
|
|
9469
|
-
|
|
9965
|
+
if (track.codecType === AudioCodecType.OPUS) {
|
|
9966
|
+
content = MP42.opus(track);
|
|
9967
|
+
} else {
|
|
9968
|
+
content = MP42.mp4a(track);
|
|
9969
|
+
}
|
|
9470
9970
|
}
|
|
9471
9971
|
} else if (track.useEME && track.encv) {
|
|
9472
9972
|
content = MP42.encv(track);
|
|
9973
|
+
} else if (track.av1C) {
|
|
9974
|
+
content = MP42.av01(track);
|
|
9473
9975
|
} else {
|
|
9474
9976
|
content = MP42.avc1hev1(track);
|
|
9475
9977
|
}
|
|
@@ -9683,12 +10185,9 @@
|
|
|
9683
10185
|
return MP42.box(MP42.types.sinf, content, MP42.box(MP42.types.frma, frma), MP42.box(MP42.types.schm, schm), schi);
|
|
9684
10186
|
}
|
|
9685
10187
|
}, {
|
|
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([
|
|
10188
|
+
key: "av01",
|
|
10189
|
+
value: function av01(track) {
|
|
10190
|
+
return MP42.box(MP42.types.av01, new Uint8Array([
|
|
9692
10191
|
0,
|
|
9693
10192
|
0,
|
|
9694
10193
|
0,
|
|
@@ -9767,48 +10266,135 @@
|
|
|
9767
10266
|
24,
|
|
9768
10267
|
17,
|
|
9769
10268
|
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));
|
|
10269
|
+
]), track.av1C, track.colr);
|
|
9777
10270
|
}
|
|
9778
10271
|
}, {
|
|
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 = [
|
|
10272
|
+
key: "avc1hev1",
|
|
10273
|
+
value: function avc1hev1(track) {
|
|
10274
|
+
var isHevc = track.codecType === VideoCodecType.HEVC;
|
|
10275
|
+
var typ = isHevc ? MP42.types.hvc1 : MP42.types.avc1;
|
|
10276
|
+
var config = isHevc ? MP42.hvcC(track) : MP42.avcC(track);
|
|
10277
|
+
var boxes = [new Uint8Array([
|
|
10278
|
+
0,
|
|
10279
|
+
0,
|
|
10280
|
+
0,
|
|
10281
|
+
0,
|
|
10282
|
+
0,
|
|
10283
|
+
0,
|
|
10284
|
+
0,
|
|
9798
10285
|
1,
|
|
9799
|
-
|
|
9800
|
-
|
|
9801
|
-
|
|
9802
|
-
|
|
9803
|
-
|
|
9804
|
-
|
|
9805
|
-
|
|
9806
|
-
|
|
9807
|
-
|
|
9808
|
-
|
|
9809
|
-
|
|
9810
|
-
|
|
9811
|
-
|
|
10286
|
+
0,
|
|
10287
|
+
0,
|
|
10288
|
+
0,
|
|
10289
|
+
0,
|
|
10290
|
+
0,
|
|
10291
|
+
0,
|
|
10292
|
+
0,
|
|
10293
|
+
0,
|
|
10294
|
+
0,
|
|
10295
|
+
0,
|
|
10296
|
+
0,
|
|
10297
|
+
0,
|
|
10298
|
+
0,
|
|
10299
|
+
0,
|
|
10300
|
+
0,
|
|
10301
|
+
0,
|
|
10302
|
+
track.width >> 8 & 255,
|
|
10303
|
+
track.width & 255,
|
|
10304
|
+
track.height >> 8 & 255,
|
|
10305
|
+
track.height & 255,
|
|
10306
|
+
0,
|
|
10307
|
+
72,
|
|
10308
|
+
0,
|
|
10309
|
+
0,
|
|
10310
|
+
0,
|
|
10311
|
+
72,
|
|
10312
|
+
0,
|
|
10313
|
+
0,
|
|
10314
|
+
0,
|
|
10315
|
+
0,
|
|
10316
|
+
0,
|
|
10317
|
+
0,
|
|
10318
|
+
0,
|
|
10319
|
+
1,
|
|
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
|
+
0,
|
|
10348
|
+
0,
|
|
10349
|
+
0,
|
|
10350
|
+
0,
|
|
10351
|
+
0,
|
|
10352
|
+
0,
|
|
10353
|
+
24,
|
|
10354
|
+
17,
|
|
10355
|
+
17
|
|
10356
|
+
]), config];
|
|
10357
|
+
if (isHevc) {
|
|
10358
|
+
boxes.push(MP42.box(MP42.types.fiel, new Uint8Array([1, 0])));
|
|
10359
|
+
} else if (track.sarRatio && track.sarRatio.length > 1) {
|
|
10360
|
+
boxes.push(MP42.pasp(track.sarRatio));
|
|
10361
|
+
}
|
|
10362
|
+
return MP42.box.apply(MP42, [typ].concat(boxes));
|
|
10363
|
+
}
|
|
10364
|
+
}, {
|
|
10365
|
+
key: "avcC",
|
|
10366
|
+
value: function avcC(track) {
|
|
10367
|
+
var _concat$concat2, _ref2;
|
|
10368
|
+
var sps = [];
|
|
10369
|
+
var pps = [];
|
|
10370
|
+
var len;
|
|
10371
|
+
track.sps.forEach(function(s) {
|
|
10372
|
+
len = s.byteLength;
|
|
10373
|
+
sps.push(len >>> 8 & 255);
|
|
10374
|
+
sps.push(len & 255);
|
|
10375
|
+
sps.push.apply(sps, _toConsumableArray(s));
|
|
10376
|
+
});
|
|
10377
|
+
track.pps.forEach(function(p) {
|
|
10378
|
+
len = p.byteLength;
|
|
10379
|
+
pps.push(len >>> 8 & 255);
|
|
10380
|
+
pps.push(len & 255);
|
|
10381
|
+
pps.push.apply(pps, _toConsumableArray(p));
|
|
10382
|
+
});
|
|
10383
|
+
return MP42.box(MP42.types.avcC, new Uint8Array((_concat$concat2 = (_ref2 = [
|
|
10384
|
+
1,
|
|
10385
|
+
sps[3],
|
|
10386
|
+
sps[4],
|
|
10387
|
+
sps[5],
|
|
10388
|
+
252 | 3,
|
|
10389
|
+
224 | track.sps.length
|
|
10390
|
+
]).concat.apply(_ref2, sps).concat([track.pps.length])).concat.apply(_concat$concat2, pps)));
|
|
10391
|
+
}
|
|
10392
|
+
}, {
|
|
10393
|
+
key: "hvcC",
|
|
10394
|
+
value: function hvcC(track) {
|
|
10395
|
+
var hvcC2 = track.hvcC;
|
|
10396
|
+
if (hvcC2 instanceof ArrayBuffer || hvcC2 instanceof Uint8Array)
|
|
10397
|
+
return hvcC2;
|
|
9812
10398
|
var vps = track.vps, sps = track.sps, pps = track.pps;
|
|
9813
10399
|
var data;
|
|
9814
10400
|
if (hvcC2) {
|
|
@@ -10052,6 +10638,53 @@
|
|
|
10052
10638
|
)));
|
|
10053
10639
|
return esds2;
|
|
10054
10640
|
}
|
|
10641
|
+
}, {
|
|
10642
|
+
key: "opus",
|
|
10643
|
+
value: function opus(track) {
|
|
10644
|
+
var opusAudioDescription = new Uint8Array([
|
|
10645
|
+
0,
|
|
10646
|
+
0,
|
|
10647
|
+
0,
|
|
10648
|
+
0,
|
|
10649
|
+
0,
|
|
10650
|
+
0,
|
|
10651
|
+
0,
|
|
10652
|
+
1,
|
|
10653
|
+
0,
|
|
10654
|
+
0,
|
|
10655
|
+
0,
|
|
10656
|
+
0,
|
|
10657
|
+
0,
|
|
10658
|
+
0,
|
|
10659
|
+
0,
|
|
10660
|
+
0,
|
|
10661
|
+
0,
|
|
10662
|
+
track.channelCount,
|
|
10663
|
+
0,
|
|
10664
|
+
16,
|
|
10665
|
+
0,
|
|
10666
|
+
0,
|
|
10667
|
+
0,
|
|
10668
|
+
0,
|
|
10669
|
+
track.sampleRate >> 8 & 255,
|
|
10670
|
+
track.sampleRate & 255,
|
|
10671
|
+
0,
|
|
10672
|
+
0
|
|
10673
|
+
]);
|
|
10674
|
+
var opusSpecificConfig = track.config.length ? MP42.dOps(track) : [];
|
|
10675
|
+
return MP42.box(MP42.types.Opus, opusAudioDescription, opusSpecificConfig);
|
|
10676
|
+
}
|
|
10677
|
+
}, {
|
|
10678
|
+
key: "dOps",
|
|
10679
|
+
value: function dOps(track) {
|
|
10680
|
+
if (track.config) {
|
|
10681
|
+
track.config[4] = track.sampleRate >>> 24 & 255;
|
|
10682
|
+
track.config[5] = track.sampleRate >>> 16 & 255;
|
|
10683
|
+
track.config[6] = track.sampleRate >>> 8 & 255;
|
|
10684
|
+
track.config[7] = track.sampleRate & 255;
|
|
10685
|
+
return MP42.box(MP42.types.dOps, track.config);
|
|
10686
|
+
}
|
|
10687
|
+
}
|
|
10055
10688
|
}, {
|
|
10056
10689
|
key: "mvex",
|
|
10057
10690
|
value: function mvex(tracks) {
|
|
@@ -10654,7 +11287,7 @@
|
|
|
10654
11287
|
}]);
|
|
10655
11288
|
return MP42;
|
|
10656
11289
|
}();
|
|
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) {
|
|
11290
|
+
_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
11291
|
p[c] = [c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2), c.charCodeAt(3)];
|
|
10659
11292
|
return p;
|
|
10660
11293
|
}, /* @__PURE__ */ Object.create(null)));
|
|
@@ -10989,30 +11622,46 @@
|
|
|
10989
11622
|
};
|
|
10990
11623
|
}
|
|
10991
11624
|
var samples = track.samples;
|
|
11625
|
+
var isAV01 = /av01/.test(track.codec);
|
|
10992
11626
|
var mdatSize = 0;
|
|
10993
|
-
|
|
10994
|
-
|
|
10995
|
-
|
|
10996
|
-
}, 0);
|
|
10997
|
-
mdatSize += s.units.length * 4;
|
|
10998
|
-
});
|
|
10999
|
-
var mdata = new Uint8Array(mdatSize);
|
|
11000
|
-
var mdatView = new DataView(mdata.buffer);
|
|
11001
|
-
var _loop = function _loop2(_offset, _sample) {
|
|
11002
|
-
_sample = samples[i];
|
|
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;
|
|
11627
|
+
if (isAV01) {
|
|
11628
|
+
samples.forEach(function(s) {
|
|
11629
|
+
mdatSize += s.data.byteLength;
|
|
11010
11630
|
});
|
|
11011
|
-
|
|
11012
|
-
|
|
11013
|
-
|
|
11014
|
-
|
|
11015
|
-
|
|
11631
|
+
} else {
|
|
11632
|
+
samples.forEach(function(s) {
|
|
11633
|
+
mdatSize += s.units.reduce(function(t, c) {
|
|
11634
|
+
return t + c.byteLength;
|
|
11635
|
+
}, 0);
|
|
11636
|
+
mdatSize += s.units.length * 4;
|
|
11637
|
+
});
|
|
11638
|
+
}
|
|
11639
|
+
var mdata = new Uint8Array(mdatSize);
|
|
11640
|
+
if (isAV01) {
|
|
11641
|
+
for (var i = 0, l = samples.length, offset = 0, sample; i < l; i++) {
|
|
11642
|
+
sample = samples[i];
|
|
11643
|
+
mdata.set(sample.data, offset);
|
|
11644
|
+
sample.size = sample.data.byteLength;
|
|
11645
|
+
offset += sample.size;
|
|
11646
|
+
}
|
|
11647
|
+
} else {
|
|
11648
|
+
var mdatView = new DataView(mdata.buffer);
|
|
11649
|
+
var _loop = function _loop2(_offset2, _sample2) {
|
|
11650
|
+
_sample2 = samples[_i];
|
|
11651
|
+
var sampleSize = 0;
|
|
11652
|
+
_sample2.units.forEach(function(u) {
|
|
11653
|
+
mdatView.setUint32(_offset2, u.byteLength);
|
|
11654
|
+
_offset2 += 4;
|
|
11655
|
+
mdata.set(u, _offset2);
|
|
11656
|
+
_offset2 += u.byteLength;
|
|
11657
|
+
sampleSize += 4 + u.byteLength;
|
|
11658
|
+
});
|
|
11659
|
+
_sample2.size = sampleSize;
|
|
11660
|
+
_offset = _offset2, _sample = _sample2;
|
|
11661
|
+
};
|
|
11662
|
+
for (var _i = 0, _l = samples.length, _offset = 0, _sample; _i < _l; _i++) {
|
|
11663
|
+
_loop(_offset, _sample);
|
|
11664
|
+
}
|
|
11016
11665
|
}
|
|
11017
11666
|
var mdat = MP4.mdat(mdata);
|
|
11018
11667
|
var moof = MP4.moof([track]);
|
|
@@ -11206,7 +11855,8 @@
|
|
|
11206
11855
|
timescale: audioTrack.timescale,
|
|
11207
11856
|
firstDts: audioTrack.firstDts / videoTrack.timescale,
|
|
11208
11857
|
firstPts: audioTrack.firstPts / videoTrack.timescale,
|
|
11209
|
-
duration: audioTrack.samplesDuration / videoTrack.timescale
|
|
11858
|
+
duration: audioTrack.samplesDuration / videoTrack.timescale,
|
|
11859
|
+
container: audioTrack.container
|
|
11210
11860
|
};
|
|
11211
11861
|
var newId = "".concat(videoTrack.codec, "/").concat(videoTrack.width, "/").concat(videoTrack.height, "/").concat(audioTrack.codec, "/").concat(audioTrack.config);
|
|
11212
11862
|
if (newId !== this._initSegmentId) {
|
|
@@ -11330,7 +11980,7 @@
|
|
|
11330
11980
|
}]);
|
|
11331
11981
|
return Transmuxer2;
|
|
11332
11982
|
}();
|
|
11333
|
-
var _excluded = ["data"], _excluded2 = ["data"];
|
|
11983
|
+
var _excluded$1 = ["data"], _excluded2 = ["data"];
|
|
11334
11984
|
var logger$2 = new Logger$2("BufferService");
|
|
11335
11985
|
var BufferService = /* @__PURE__ */ function() {
|
|
11336
11986
|
function BufferService2(hls) {
|
|
@@ -11496,7 +12146,8 @@
|
|
|
11496
12146
|
key: "appendBuffer",
|
|
11497
12147
|
value: function() {
|
|
11498
12148
|
var _appendBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2(segment, audioSegment, videoChunk, audioChunk, discontinuity, contiguous, startTime) {
|
|
11499
|
-
var
|
|
12149
|
+
var _this2 = this;
|
|
12150
|
+
var afterAppend, p, needInit, _this$_transmuxer$tra, _this$_transmuxer$tra2, video, audio, isFirstAppend, mse, _p, videoData, videoRest, audioData, audioRest;
|
|
11500
12151
|
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
11501
12152
|
while (1)
|
|
11502
12153
|
switch (_context2.prev = _context2.next) {
|
|
@@ -11507,8 +12158,18 @@
|
|
|
11507
12158
|
}
|
|
11508
12159
|
return _context2.abrupt("return");
|
|
11509
12160
|
case 2:
|
|
12161
|
+
afterAppend = function afterAppend2() {
|
|
12162
|
+
var _this2$hls;
|
|
12163
|
+
if ((_this2$hls = _this2.hls) !== null && _this2$hls !== void 0 && _this2$hls.emit) {
|
|
12164
|
+
var _this2$hls2;
|
|
12165
|
+
(_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.emit(EVENT.APPEND_BUFFER, {
|
|
12166
|
+
start: segment.start,
|
|
12167
|
+
end: segment.end
|
|
12168
|
+
});
|
|
12169
|
+
}
|
|
12170
|
+
};
|
|
11510
12171
|
if (!this._directAppend) {
|
|
11511
|
-
_context2.next =
|
|
12172
|
+
_context2.next = 8;
|
|
11512
12173
|
break;
|
|
11513
12174
|
}
|
|
11514
12175
|
p = [];
|
|
@@ -11516,8 +12177,8 @@
|
|
|
11516
12177
|
p.push(this._mse.append(MSE.VIDEO, videoChunk));
|
|
11517
12178
|
if (audioChunk)
|
|
11518
12179
|
p.push(this._mse.append(MSE.AUDIO, audioChunk));
|
|
11519
|
-
return _context2.abrupt("return", Promise.all(p));
|
|
11520
|
-
case
|
|
12180
|
+
return _context2.abrupt("return", Promise.all(p).then(afterAppend));
|
|
12181
|
+
case 8:
|
|
11521
12182
|
needInit = this._needInitSegment || discontinuity;
|
|
11522
12183
|
_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
12184
|
if (audioChunk && audioSegment) {
|
|
@@ -11533,21 +12194,22 @@
|
|
|
11533
12194
|
this.hls.emit(Event$1.NO_AUDIO_TRACK);
|
|
11534
12195
|
}
|
|
11535
12196
|
if (!this._softVideo) {
|
|
11536
|
-
_context2.next =
|
|
12197
|
+
_context2.next = 20;
|
|
11537
12198
|
break;
|
|
11538
12199
|
}
|
|
11539
12200
|
this._softVideo.appendBuffer(video, audio);
|
|
11540
12201
|
this._needInitSegment = false;
|
|
11541
|
-
|
|
12202
|
+
afterAppend();
|
|
12203
|
+
_context2.next = 30;
|
|
11542
12204
|
break;
|
|
11543
|
-
case
|
|
12205
|
+
case 20:
|
|
11544
12206
|
if (!this._mse) {
|
|
11545
|
-
_context2.next =
|
|
12207
|
+
_context2.next = 30;
|
|
11546
12208
|
break;
|
|
11547
12209
|
}
|
|
11548
12210
|
isFirstAppend = !this._sourceCreated;
|
|
11549
12211
|
if (isFirstAppend) {
|
|
11550
|
-
this._createMseSource(video === null || video === void 0 ? void 0 : video.codec, audio === null || audio === void 0 ? void 0 : audio.codec);
|
|
12212
|
+
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
12213
|
}
|
|
11552
12214
|
this._needInitSegment = false;
|
|
11553
12215
|
mse = this._mse;
|
|
@@ -11558,15 +12220,15 @@
|
|
|
11558
12220
|
});
|
|
11559
12221
|
}
|
|
11560
12222
|
if (video) {
|
|
11561
|
-
videoData = video.data, videoRest = _objectWithoutProperties$1(video, _excluded);
|
|
12223
|
+
videoData = video.data, videoRest = _objectWithoutProperties$1(video, _excluded$1);
|
|
11562
12224
|
_p.push(mse.append(MSE.VIDEO, videoData, videoRest));
|
|
11563
12225
|
}
|
|
11564
12226
|
if (audio) {
|
|
11565
12227
|
audioData = audio.data, audioRest = _objectWithoutProperties$1(audio, _excluded2);
|
|
11566
12228
|
_p.push(mse.append(MSE.AUDIO, audioData, audioRest));
|
|
11567
12229
|
}
|
|
11568
|
-
return _context2.abrupt("return", Promise.all(_p));
|
|
11569
|
-
case
|
|
12230
|
+
return _context2.abrupt("return", Promise.all(_p).then(afterAppend));
|
|
12231
|
+
case 30:
|
|
11570
12232
|
case "end":
|
|
11571
12233
|
return _context2.stop();
|
|
11572
12234
|
}
|
|
@@ -11581,7 +12243,7 @@
|
|
|
11581
12243
|
key: "removeBuffer",
|
|
11582
12244
|
value: function() {
|
|
11583
12245
|
var _removeBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee3() {
|
|
11584
|
-
var
|
|
12246
|
+
var _this3 = this;
|
|
11585
12247
|
var start, end, media, _args3 = arguments;
|
|
11586
12248
|
return _regeneratorRuntime$1().wrap(function _callee3$(_context3) {
|
|
11587
12249
|
while (1)
|
|
@@ -11597,7 +12259,7 @@
|
|
|
11597
12259
|
return _context3.abrupt("return");
|
|
11598
12260
|
case 5:
|
|
11599
12261
|
return _context3.abrupt("return", this._mse.clearBuffer(start, end).then(function() {
|
|
11600
|
-
return
|
|
12262
|
+
return _this3.hls.emit(EVENT.REMOVE_BUFFER, {
|
|
11601
12263
|
start,
|
|
11602
12264
|
end,
|
|
11603
12265
|
removeEnd: end
|
|
@@ -11778,30 +12440,51 @@
|
|
|
11778
12440
|
return setLiveSeekableRange;
|
|
11779
12441
|
}()
|
|
11780
12442
|
}, {
|
|
11781
|
-
key: "
|
|
12443
|
+
key: "detachMedia",
|
|
11782
12444
|
value: function() {
|
|
11783
|
-
var
|
|
11784
|
-
var _this$_decryptor;
|
|
12445
|
+
var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee9() {
|
|
11785
12446
|
return _regeneratorRuntime$1().wrap(function _callee9$(_context9) {
|
|
11786
12447
|
while (1)
|
|
11787
12448
|
switch (_context9.prev = _context9.next) {
|
|
11788
12449
|
case 0:
|
|
11789
|
-
(_this$_decryptor = this._decryptor) === null || _this$_decryptor === void 0 ? void 0 : _this$_decryptor.destroy();
|
|
11790
12450
|
if (!this._mse) {
|
|
11791
|
-
_context9.next =
|
|
12451
|
+
_context9.next = 3;
|
|
11792
12452
|
break;
|
|
11793
12453
|
}
|
|
11794
|
-
_context9.next =
|
|
12454
|
+
_context9.next = 3;
|
|
11795
12455
|
return this._mse.unbindMedia();
|
|
11796
|
-
case
|
|
12456
|
+
case 3:
|
|
12457
|
+
case "end":
|
|
12458
|
+
return _context9.stop();
|
|
12459
|
+
}
|
|
12460
|
+
}, _callee9, this);
|
|
12461
|
+
}));
|
|
12462
|
+
function detachMedia() {
|
|
12463
|
+
return _detachMedia.apply(this, arguments);
|
|
12464
|
+
}
|
|
12465
|
+
return detachMedia;
|
|
12466
|
+
}()
|
|
12467
|
+
}, {
|
|
12468
|
+
key: "destroy",
|
|
12469
|
+
value: function() {
|
|
12470
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee10() {
|
|
12471
|
+
var _this$_decryptor;
|
|
12472
|
+
return _regeneratorRuntime$1().wrap(function _callee10$(_context10) {
|
|
12473
|
+
while (1)
|
|
12474
|
+
switch (_context10.prev = _context10.next) {
|
|
12475
|
+
case 0:
|
|
12476
|
+
(_this$_decryptor = this._decryptor) === null || _this$_decryptor === void 0 ? void 0 : _this$_decryptor.destroy();
|
|
12477
|
+
_context10.next = 3;
|
|
12478
|
+
return this.detachMedia();
|
|
12479
|
+
case 3:
|
|
11797
12480
|
this._decryptor = null;
|
|
11798
12481
|
this._mse = null;
|
|
11799
12482
|
this._softVideo = null;
|
|
11800
|
-
case
|
|
12483
|
+
case 6:
|
|
11801
12484
|
case "end":
|
|
11802
|
-
return
|
|
12485
|
+
return _context10.stop();
|
|
11803
12486
|
}
|
|
11804
|
-
},
|
|
12487
|
+
}, _callee10, this);
|
|
11805
12488
|
}));
|
|
11806
12489
|
function destroy() {
|
|
11807
12490
|
return _destroy.apply(this, arguments);
|
|
@@ -11810,7 +12493,7 @@
|
|
|
11810
12493
|
}()
|
|
11811
12494
|
}, {
|
|
11812
12495
|
key: "_createMseSource",
|
|
11813
|
-
value: function _createMseSource(videoCodec, audioCodec) {
|
|
12496
|
+
value: function _createMseSource(videoCodec, audioCodec, container) {
|
|
11814
12497
|
logger$2.debug("create mse source, videoCodec=".concat(videoCodec, ", audioCodec=").concat(audioCodec));
|
|
11815
12498
|
var mse = this._mse;
|
|
11816
12499
|
if (!mse)
|
|
@@ -11822,6 +12505,9 @@
|
|
|
11822
12505
|
if (audioCodec) {
|
|
11823
12506
|
mse.createSource(MSE.AUDIO, "audio/mp4;codecs=".concat(audioCodec));
|
|
11824
12507
|
this._sourceCreated = true;
|
|
12508
|
+
} else if (container) {
|
|
12509
|
+
mse.createSource(MSE.AUDIO, "".concat(container, ';codecs=""'));
|
|
12510
|
+
this._sourceCreated = true;
|
|
11825
12511
|
}
|
|
11826
12512
|
this.hls.emit(EVENT.SOURCEBUFFER_CREATED);
|
|
11827
12513
|
}
|
|
@@ -12131,6 +12817,31 @@
|
|
|
12131
12817
|
}]);
|
|
12132
12818
|
return MediaSegmentKey2;
|
|
12133
12819
|
}();
|
|
12820
|
+
var HlsUrlParameters = /* @__PURE__ */ function() {
|
|
12821
|
+
function HlsUrlParameters2(msn, part, skip) {
|
|
12822
|
+
_classCallCheck$3(this, HlsUrlParameters2);
|
|
12823
|
+
this.msn = msn;
|
|
12824
|
+
this.part = part;
|
|
12825
|
+
this.skip = skip;
|
|
12826
|
+
}
|
|
12827
|
+
_createClass$3(HlsUrlParameters2, [{
|
|
12828
|
+
key: "addDirectives",
|
|
12829
|
+
value: function addDirectives(uri) {
|
|
12830
|
+
var url = new self.URL(uri);
|
|
12831
|
+
if (this.msn !== void 0) {
|
|
12832
|
+
url.searchParams.set("_HLS_msn", this.msn.toString());
|
|
12833
|
+
}
|
|
12834
|
+
if (this.part) {
|
|
12835
|
+
url.searchParams.set("_HLS_part", this.part.toString());
|
|
12836
|
+
}
|
|
12837
|
+
if (this.skip) {
|
|
12838
|
+
url.searchParams.set("_HLS_skip", this.skip);
|
|
12839
|
+
}
|
|
12840
|
+
return url.href;
|
|
12841
|
+
}
|
|
12842
|
+
}]);
|
|
12843
|
+
return HlsUrlParameters2;
|
|
12844
|
+
}();
|
|
12134
12845
|
var REGEXP_TAG = /^#(EXT[^:]*)(?::(.*))?$/;
|
|
12135
12846
|
var REGEXP_ATTR = /([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g;
|
|
12136
12847
|
var REGEXP_ABSOLUTE_URL = /^(?:[a-zA-Z0-9+\-.]+:)?\/\//;
|
|
@@ -12369,7 +13080,7 @@
|
|
|
12369
13080
|
media.canBlockReload = _attr["CAN-BLOCK-RELOAD"] === "YES";
|
|
12370
13081
|
media.partHoldBack = parseFloat(_attr["PART-HOLD-BACK"] || 0);
|
|
12371
13082
|
media.canSkipUntil = parseFloat(_attr["CAN-SKIP-UNTIL"] || 0);
|
|
12372
|
-
media.canSkipDateRanges = _attr["CAN-SKIP-DATERANGES"] === "YES";
|
|
13083
|
+
media.canSkipDateRanges = media.canSkipUntil > 0 && _attr["CAN-SKIP-DATERANGES"] === "YES";
|
|
12373
13084
|
}
|
|
12374
13085
|
break;
|
|
12375
13086
|
case "ENDLIST":
|
|
@@ -12413,6 +13124,15 @@
|
|
|
12413
13124
|
}
|
|
12414
13125
|
break;
|
|
12415
13126
|
case "PRELOAD-HINT":
|
|
13127
|
+
{
|
|
13128
|
+
var _attr3 = parseAttr(data);
|
|
13129
|
+
media.preloadHint = _attr3;
|
|
13130
|
+
if (_attr3["TYPE"] === "PART" && _attr3["URI"]) {
|
|
13131
|
+
var tmp = _attr3["URI"].split(".ts")[0].split("-");
|
|
13132
|
+
media.nextSN = tmp[3];
|
|
13133
|
+
media.nextIndex = tmp[tmp.length - 1];
|
|
13134
|
+
}
|
|
13135
|
+
}
|
|
12416
13136
|
break;
|
|
12417
13137
|
case "PROGRAM-DATE-TIME":
|
|
12418
13138
|
curSegment.dataTime = data;
|
|
@@ -12432,21 +13152,21 @@
|
|
|
12432
13152
|
break;
|
|
12433
13153
|
case "KEY":
|
|
12434
13154
|
{
|
|
12435
|
-
var
|
|
12436
|
-
if (
|
|
13155
|
+
var _attr4 = parseAttr(data);
|
|
13156
|
+
if (_attr4.METHOD === "NONE") {
|
|
12437
13157
|
curKey = null;
|
|
12438
13158
|
break;
|
|
12439
13159
|
}
|
|
12440
13160
|
curKey = new MediaSegmentKey();
|
|
12441
|
-
curKey.method =
|
|
12442
|
-
curKey.url = /^blob:/.test(
|
|
12443
|
-
curKey.keyFormat =
|
|
12444
|
-
curKey.keyFormatVersions =
|
|
13161
|
+
curKey.method = _attr4.METHOD;
|
|
13162
|
+
curKey.url = /^blob:/.test(_attr4.URI) ? _attr4.URI : getAbsoluteUrl(_attr4.URI, parentUrl);
|
|
13163
|
+
curKey.keyFormat = _attr4.KEYFORMAT || "identity";
|
|
13164
|
+
curKey.keyFormatVersions = _attr4.KEYFORMATVERSIONS;
|
|
12445
13165
|
if (!curKey.isSupported()) {
|
|
12446
|
-
throw new Error("encrypt ".concat(
|
|
13166
|
+
throw new Error("encrypt ".concat(_attr4.METHOD, "/").concat(_attr4.KEYFORMAT, " is not supported"));
|
|
12447
13167
|
}
|
|
12448
|
-
if (
|
|
12449
|
-
var str =
|
|
13168
|
+
if (_attr4.IV) {
|
|
13169
|
+
var str = _attr4.IV.slice(2);
|
|
12450
13170
|
str = (str.length & 1 ? "0" : "") + str;
|
|
12451
13171
|
curKey.iv = new Uint8Array(str.length / 2);
|
|
12452
13172
|
for (var i = 0, l = str.length / 2; i < l; i++) {
|
|
@@ -12457,10 +13177,10 @@
|
|
|
12457
13177
|
break;
|
|
12458
13178
|
case "MAP":
|
|
12459
13179
|
{
|
|
12460
|
-
var
|
|
12461
|
-
curSegment.url = getAbsoluteUrl(
|
|
12462
|
-
if (
|
|
12463
|
-
curSegment.setByteRange(
|
|
13180
|
+
var _attr5 = parseAttr(data);
|
|
13181
|
+
curSegment.url = getAbsoluteUrl(_attr5.URI, parentUrl);
|
|
13182
|
+
if (_attr5.BYTERANGE)
|
|
13183
|
+
curSegment.setByteRange(_attr5.BYTERANGE);
|
|
12464
13184
|
curSegment.isInitSegment = true;
|
|
12465
13185
|
curSegment.sn = 0;
|
|
12466
13186
|
if (curKey) {
|
|
@@ -12472,24 +13192,25 @@
|
|
|
12472
13192
|
break;
|
|
12473
13193
|
case "SKIP":
|
|
12474
13194
|
{
|
|
12475
|
-
var
|
|
12476
|
-
var skippedSegments = parseInt(
|
|
13195
|
+
var _attr6 = parseAttr(data);
|
|
13196
|
+
var skippedSegments = parseInt(_attr6["SKIPPED-SEGMENTS"], 10);
|
|
12477
13197
|
if (skippedSegments <= Number.MAX_SAFE_INTEGER) {
|
|
12478
13198
|
media.skippedSegments += skippedSegments;
|
|
13199
|
+
curSN += skippedSegments;
|
|
12479
13200
|
}
|
|
12480
13201
|
}
|
|
12481
13202
|
break;
|
|
12482
13203
|
case "DATERANGE":
|
|
12483
13204
|
{
|
|
12484
|
-
var
|
|
12485
|
-
var dateRangeWithSameId = media.dateRanges[
|
|
12486
|
-
|
|
12487
|
-
var endDate = (dateRangeWithSameId === null || dateRangeWithSameId === void 0 ? void 0 : dateRangeWithSameId._endDate) || new Date(
|
|
13205
|
+
var _attr7 = parseAttr(data);
|
|
13206
|
+
var dateRangeWithSameId = media.dateRanges[_attr7.ID];
|
|
13207
|
+
_attr7._startDate = dateRangeWithSameId ? dateRangeWithSameId._startDate : new Date(_attr7["START-DATE"]);
|
|
13208
|
+
var endDate = (dateRangeWithSameId === null || dateRangeWithSameId === void 0 ? void 0 : dateRangeWithSameId._endDate) || new Date(_attr7.END_DATE);
|
|
12488
13209
|
if (Number.isFinite(endDate)) {
|
|
12489
|
-
|
|
13210
|
+
_attr7._endDate = endDate;
|
|
12490
13211
|
}
|
|
12491
|
-
if (isValidDaterange(
|
|
12492
|
-
media.dateRanges[
|
|
13212
|
+
if (isValidDaterange(_attr7, dateRangeWithSameId) || media.skippedSegments) {
|
|
13213
|
+
media.dateRanges[_attr7.ID] = _attr7;
|
|
12493
13214
|
}
|
|
12494
13215
|
}
|
|
12495
13216
|
break;
|
|
@@ -12686,6 +13407,13 @@
|
|
|
12686
13407
|
playlist
|
|
12687
13408
|
});
|
|
12688
13409
|
} else {
|
|
13410
|
+
if (this._useLowLatency) {
|
|
13411
|
+
if (playlist.canBlockReload) {
|
|
13412
|
+
this.deliveryDirectives = new HlsUrlParameters(playlist.nextSN, playlist.nextIndex, "");
|
|
13413
|
+
} else {
|
|
13414
|
+
this.deliveryDirectives = null;
|
|
13415
|
+
}
|
|
13416
|
+
}
|
|
12689
13417
|
this.hls.emit(Event$1.HLS_LEVEL_LOADED, {
|
|
12690
13418
|
playlist
|
|
12691
13419
|
});
|
|
@@ -12742,41 +13470,45 @@
|
|
|
12742
13470
|
var retryCount = this.hls.config.pollRetryCount;
|
|
12743
13471
|
var fn = /* @__PURE__ */ function() {
|
|
12744
13472
|
var _ref2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2() {
|
|
12745
|
-
var res;
|
|
13473
|
+
var reqUrl, res;
|
|
12746
13474
|
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
12747
13475
|
while (1)
|
|
12748
13476
|
switch (_context2.prev = _context2.next) {
|
|
12749
13477
|
case 0:
|
|
12750
13478
|
clearTimeout(_this2._timer);
|
|
12751
|
-
|
|
12752
|
-
_context2.
|
|
12753
|
-
|
|
12754
|
-
|
|
13479
|
+
reqUrl = url;
|
|
13480
|
+
_context2.prev = 2;
|
|
13481
|
+
if (_this2.deliveryDirectives) {
|
|
13482
|
+
reqUrl = _this2.deliveryDirectives.addDirectives(url);
|
|
13483
|
+
}
|
|
13484
|
+
_context2.next = 6;
|
|
13485
|
+
return _this2.load(reqUrl, audioUrl, subtitleUrl);
|
|
13486
|
+
case 6:
|
|
12755
13487
|
res = _context2.sent;
|
|
12756
13488
|
if (res[0]) {
|
|
12757
|
-
_context2.next =
|
|
13489
|
+
_context2.next = 9;
|
|
12758
13490
|
break;
|
|
12759
13491
|
}
|
|
12760
13492
|
return _context2.abrupt("return");
|
|
12761
|
-
case
|
|
13493
|
+
case 9:
|
|
12762
13494
|
retryCount = _this2.hls.config.pollRetryCount;
|
|
12763
13495
|
cb(res[0], res[1], res[2]);
|
|
12764
|
-
_context2.next =
|
|
13496
|
+
_context2.next = 17;
|
|
12765
13497
|
break;
|
|
12766
|
-
case
|
|
12767
|
-
_context2.prev =
|
|
12768
|
-
_context2.t0 = _context2["catch"](
|
|
13498
|
+
case 13:
|
|
13499
|
+
_context2.prev = 13;
|
|
13500
|
+
_context2.t0 = _context2["catch"](2);
|
|
12769
13501
|
retryCount--;
|
|
12770
13502
|
if (retryCount <= 0) {
|
|
12771
13503
|
errorCb(_context2.t0);
|
|
12772
13504
|
}
|
|
12773
|
-
case
|
|
13505
|
+
case 17:
|
|
12774
13506
|
_this2._timer = setTimeout(fn, time);
|
|
12775
|
-
case
|
|
13507
|
+
case 18:
|
|
12776
13508
|
case "end":
|
|
12777
13509
|
return _context2.stop();
|
|
12778
13510
|
}
|
|
12779
|
-
}, _callee2, null, [[
|
|
13511
|
+
}, _callee2, null, [[2, 13]]);
|
|
12780
13512
|
}));
|
|
12781
13513
|
return function fn2() {
|
|
12782
13514
|
return _ref2.apply(this, arguments);
|
|
@@ -13306,7 +14038,7 @@
|
|
|
13306
14038
|
}, {
|
|
13307
14039
|
key: "clearOldSegment",
|
|
13308
14040
|
value: function clearOldSegment() {
|
|
13309
|
-
var maxPlaylistSize = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 50;
|
|
14041
|
+
var maxPlaylistSize = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.hls.config.maxPlaylistSize || 50;
|
|
13310
14042
|
var stream = this.currentStream;
|
|
13311
14043
|
if (!this.dvrWindow || !stream)
|
|
13312
14044
|
return;
|
|
@@ -13817,7 +14549,6 @@
|
|
|
13817
14549
|
return;
|
|
13818
14550
|
_this._startTick();
|
|
13819
14551
|
var media = _this.media;
|
|
13820
|
-
var buffered = Buffer$1.get(media);
|
|
13821
14552
|
var segLoaderError = _this._segmentLoader.error;
|
|
13822
14553
|
_this._onCheckQuotaExceeded();
|
|
13823
14554
|
if (_this._isProcessQuotaExceeded) {
|
|
@@ -13834,7 +14565,7 @@
|
|
|
13834
14565
|
}
|
|
13835
14566
|
return;
|
|
13836
14567
|
}
|
|
13837
|
-
if (
|
|
14568
|
+
if (media.readyState) {
|
|
13838
14569
|
if (isMediaPlaying(media)) {
|
|
13839
14570
|
_this._loadSegment();
|
|
13840
14571
|
if (_this._gapService) {
|
|
@@ -13900,6 +14631,12 @@
|
|
|
13900
14631
|
var _this$_bufferService;
|
|
13901
14632
|
return (_this$_bufferService = this._bufferService) === null || _this$_bufferService === void 0 ? void 0 : _this$_bufferService.baseDts;
|
|
13902
14633
|
}
|
|
14634
|
+
}, {
|
|
14635
|
+
key: "abrSwitchPoint",
|
|
14636
|
+
get: function get() {
|
|
14637
|
+
var targetSeg = this._urlSwitching ? this._playlist.currentSegment : this._playlist.nextSegment;
|
|
14638
|
+
return targetSeg ? targetSeg.start + targetSeg.duration / 2 : null;
|
|
14639
|
+
}
|
|
13903
14640
|
}, {
|
|
13904
14641
|
key: "speedInfo",
|
|
13905
14642
|
value: function speedInfo() {
|
|
@@ -13925,30 +14662,37 @@
|
|
|
13925
14662
|
}, {
|
|
13926
14663
|
key: "load",
|
|
13927
14664
|
value: function() {
|
|
13928
|
-
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4(
|
|
13929
|
-
var reuseMse, _args4 = arguments;
|
|
14665
|
+
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4() {
|
|
14666
|
+
var url, options, reuseMse, _args4 = arguments;
|
|
13930
14667
|
return _regeneratorRuntime$1().wrap(function _callee4$(_context4) {
|
|
13931
14668
|
while (1)
|
|
13932
14669
|
switch (_context4.prev = _context4.next) {
|
|
13933
14670
|
case 0:
|
|
13934
|
-
|
|
14671
|
+
url = _args4.length > 0 && _args4[0] !== void 0 ? _args4[0] : "";
|
|
14672
|
+
options = _args4.length > 1 && _args4[1] !== void 0 ? _args4[1] : {};
|
|
14673
|
+
reuseMse = typeof options === "boolean" ? options : !!(options !== null && options !== void 0 && options.reuseMse);
|
|
14674
|
+
if (_typeof$2(options) === "object" && options !== null && options !== void 0 && options.clearSwitchStatus) {
|
|
14675
|
+
this._urlSwitching = false;
|
|
14676
|
+
this._switchUrlOpts = null;
|
|
14677
|
+
this.config.startTime = void 0;
|
|
14678
|
+
}
|
|
13935
14679
|
if (url)
|
|
13936
14680
|
this.config.url = url;
|
|
13937
14681
|
url = this.config.url;
|
|
13938
|
-
_context4.next =
|
|
14682
|
+
_context4.next = 8;
|
|
13939
14683
|
return this._reset(reuseMse);
|
|
13940
|
-
case
|
|
13941
|
-
_context4.next =
|
|
14684
|
+
case 8:
|
|
14685
|
+
_context4.next = 10;
|
|
13942
14686
|
return this._loadData(url);
|
|
13943
|
-
case
|
|
14687
|
+
case 10:
|
|
13944
14688
|
this._startTick();
|
|
13945
|
-
case
|
|
14689
|
+
case 11:
|
|
13946
14690
|
case "end":
|
|
13947
14691
|
return _context4.stop();
|
|
13948
14692
|
}
|
|
13949
14693
|
}, _callee4, this);
|
|
13950
14694
|
}));
|
|
13951
|
-
function load(
|
|
14695
|
+
function load() {
|
|
13952
14696
|
return _load.apply(this, arguments);
|
|
13953
14697
|
}
|
|
13954
14698
|
return load;
|
|
@@ -13957,7 +14701,7 @@
|
|
|
13957
14701
|
key: "_loadData",
|
|
13958
14702
|
value: function() {
|
|
13959
14703
|
var _loadData2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee5(url) {
|
|
13960
|
-
var manifest, currentStream, _this$_switchUrlOpts, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint,
|
|
14704
|
+
var manifest, currentStream, preIndex, _this$_switchUrlOpts, _this$_switchUrlOpts3, _this$_switchUrlOpts4, _this$_switchUrlOpts2, switchTimePoint, segIdx, nextSeg, bufferClearStartPoint, startTime, _this$_switchUrlOpts5;
|
|
13961
14705
|
return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
|
|
13962
14706
|
while (1)
|
|
13963
14707
|
switch (_context5.prev = _context5.next) {
|
|
@@ -13978,41 +14722,46 @@
|
|
|
13978
14722
|
case 5:
|
|
13979
14723
|
manifest = _context5.sent;
|
|
13980
14724
|
currentStream = this._playlist.currentStream;
|
|
13981
|
-
if (!
|
|
13982
|
-
_context5.next =
|
|
14725
|
+
if (!this._urlSwitching) {
|
|
14726
|
+
_context5.next = 23;
|
|
13983
14727
|
break;
|
|
13984
14728
|
}
|
|
14729
|
+
if (!this.isLive) {
|
|
14730
|
+
_context5.next = 14;
|
|
14731
|
+
break;
|
|
14732
|
+
}
|
|
14733
|
+
preIndex = this._playlist.setNextSegmentBySN(this._prevSegSn);
|
|
14734
|
+
logger.log("segment nb=".concat(this._prevSegSn, " index of ").concat(preIndex, " in the new playlist"));
|
|
14735
|
+
if (preIndex === -1) {
|
|
14736
|
+
this._prevSegCc = null;
|
|
14737
|
+
this._prevSegSn = null;
|
|
14738
|
+
}
|
|
14739
|
+
_context5.next = 23;
|
|
14740
|
+
break;
|
|
14741
|
+
case 14:
|
|
13985
14742
|
if (currentStream.bitrate === 0 && (_this$_switchUrlOpts = this._switchUrlOpts) !== null && _this$_switchUrlOpts !== void 0 && _this$_switchUrlOpts.bitrate) {
|
|
13986
14743
|
currentStream.bitrate = (_this$_switchUrlOpts2 = this._switchUrlOpts) === null || _this$_switchUrlOpts2 === void 0 ? void 0 : _this$_switchUrlOpts2.bitrate;
|
|
13987
14744
|
}
|
|
13988
|
-
switchTimePoint = this._getSeamlessSwitchPoint();
|
|
14745
|
+
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
14746
|
this.config.startTime = switchTimePoint;
|
|
13990
14747
|
segIdx = this._playlist.findSegmentIndexByTime(switchTimePoint);
|
|
13991
14748
|
nextSeg = this._playlist.getSegmentByIndex(segIdx + 1);
|
|
13992
14749
|
if (!nextSeg) {
|
|
13993
|
-
_context5.next =
|
|
14750
|
+
_context5.next = 23;
|
|
13994
14751
|
break;
|
|
13995
14752
|
}
|
|
13996
14753
|
bufferClearStartPoint = nextSeg.start;
|
|
13997
|
-
_context5.next =
|
|
14754
|
+
_context5.next = 23;
|
|
13998
14755
|
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
|
-
}
|
|
14756
|
+
case 23:
|
|
14008
14757
|
if (manifest) {
|
|
14009
|
-
_context5.next =
|
|
14758
|
+
_context5.next = 25;
|
|
14010
14759
|
break;
|
|
14011
14760
|
}
|
|
14012
14761
|
return _context5.abrupt("return");
|
|
14013
|
-
case
|
|
14762
|
+
case 25:
|
|
14014
14763
|
if (!this.isLive) {
|
|
14015
|
-
_context5.next =
|
|
14764
|
+
_context5.next = 36;
|
|
14016
14765
|
break;
|
|
14017
14766
|
}
|
|
14018
14767
|
this._bufferService.setLiveSeekableRange(0, 4294967295);
|
|
@@ -14025,35 +14774,35 @@
|
|
|
14025
14774
|
if (!manifest.isMaster)
|
|
14026
14775
|
this._pollM3U8(url);
|
|
14027
14776
|
if (!(this._playlist.nbSegments < this.config.minSegmentsStartPlay)) {
|
|
14028
|
-
_context5.next =
|
|
14777
|
+
_context5.next = 33;
|
|
14029
14778
|
break;
|
|
14030
14779
|
}
|
|
14031
14780
|
return _context5.abrupt("return");
|
|
14032
|
-
case
|
|
14033
|
-
_context5.next =
|
|
14781
|
+
case 33:
|
|
14782
|
+
_context5.next = 35;
|
|
14034
14783
|
return this._loadSegment();
|
|
14035
|
-
case
|
|
14784
|
+
case 35:
|
|
14036
14785
|
return _context5.abrupt("return");
|
|
14037
|
-
case
|
|
14038
|
-
_context5.next =
|
|
14786
|
+
case 36:
|
|
14787
|
+
_context5.next = 38;
|
|
14039
14788
|
return this._bufferService.updateDuration(currentStream.totalDuration);
|
|
14040
|
-
case
|
|
14789
|
+
case 38:
|
|
14041
14790
|
startTime = this.config.startTime;
|
|
14042
14791
|
if (startTime) {
|
|
14043
|
-
if (!((_this$
|
|
14792
|
+
if (!((_this$_switchUrlOpts5 = this._switchUrlOpts) !== null && _this$_switchUrlOpts5 !== void 0 && _this$_switchUrlOpts5.seamless)) {
|
|
14044
14793
|
this.media.currentTime = startTime;
|
|
14045
14794
|
}
|
|
14046
14795
|
this._playlist.setNextSegmentByIndex(this._playlist.findSegmentIndexByTime(startTime) || 0);
|
|
14047
14796
|
}
|
|
14048
|
-
_context5.next =
|
|
14797
|
+
_context5.next = 42;
|
|
14049
14798
|
return this._loadSegment();
|
|
14050
|
-
case
|
|
14799
|
+
case 42:
|
|
14051
14800
|
case "end":
|
|
14052
14801
|
return _context5.stop();
|
|
14053
14802
|
}
|
|
14054
14803
|
}, _callee5, this);
|
|
14055
14804
|
}));
|
|
14056
|
-
function _loadData(
|
|
14805
|
+
function _loadData(_x) {
|
|
14057
14806
|
return _loadData2.apply(this, arguments);
|
|
14058
14807
|
}
|
|
14059
14808
|
return _loadData;
|
|
@@ -14067,18 +14816,20 @@
|
|
|
14067
14816
|
switch (_context6.prev = _context6.next) {
|
|
14068
14817
|
case 0:
|
|
14069
14818
|
this.config.startTime = 0;
|
|
14070
|
-
|
|
14819
|
+
this._urlSwitching = false;
|
|
14820
|
+
this._switchUrlOpts = null;
|
|
14821
|
+
_context6.next = 5;
|
|
14071
14822
|
return this.load();
|
|
14072
|
-
case
|
|
14823
|
+
case 5:
|
|
14073
14824
|
this._reloadOnPlay = false;
|
|
14074
14825
|
return _context6.abrupt("return", this.media.play(!isPlayEmit));
|
|
14075
|
-
case
|
|
14826
|
+
case 7:
|
|
14076
14827
|
case "end":
|
|
14077
14828
|
return _context6.stop();
|
|
14078
14829
|
}
|
|
14079
14830
|
}, _callee6, this);
|
|
14080
14831
|
}));
|
|
14081
|
-
function replay(
|
|
14832
|
+
function replay(_x2) {
|
|
14082
14833
|
return _replay.apply(this, arguments);
|
|
14083
14834
|
}
|
|
14084
14835
|
return replay;
|
|
@@ -14183,7 +14934,7 @@
|
|
|
14183
14934
|
}
|
|
14184
14935
|
}, _callee7, this, [[18, 29]]);
|
|
14185
14936
|
}));
|
|
14186
|
-
function switchURL(
|
|
14937
|
+
function switchURL(_x3) {
|
|
14187
14938
|
return _switchURL.apply(this, arguments);
|
|
14188
14939
|
}
|
|
14189
14940
|
return switchURL;
|
|
@@ -14269,7 +15020,7 @@
|
|
|
14269
15020
|
}
|
|
14270
15021
|
}, _callee8, this, [[8, 16], [21, 31]]);
|
|
14271
15022
|
}));
|
|
14272
|
-
function switchStream(
|
|
15023
|
+
function switchStream(_x4) {
|
|
14273
15024
|
return _switchStream.apply(this, arguments);
|
|
14274
15025
|
}
|
|
14275
15026
|
return switchStream;
|
|
@@ -14355,7 +15106,7 @@
|
|
|
14355
15106
|
}
|
|
14356
15107
|
}, _callee9, this, [[10, 18], [22, 32]]);
|
|
14357
15108
|
}));
|
|
14358
|
-
function switchAudioStream(
|
|
15109
|
+
function switchAudioStream(_x5) {
|
|
14359
15110
|
return _switchAudioStream.apply(this, arguments);
|
|
14360
15111
|
}
|
|
14361
15112
|
return switchAudioStream;
|
|
@@ -14380,25 +15131,50 @@
|
|
|
14380
15131
|
}
|
|
14381
15132
|
}, _callee10, this);
|
|
14382
15133
|
}));
|
|
14383
|
-
function switchSubtitleStream(
|
|
15134
|
+
function switchSubtitleStream(_x6) {
|
|
14384
15135
|
return _switchSubtitleStream.apply(this, arguments);
|
|
14385
15136
|
}
|
|
14386
15137
|
return switchSubtitleStream;
|
|
14387
15138
|
}()
|
|
14388
15139
|
}, {
|
|
14389
|
-
key: "
|
|
15140
|
+
key: "detachMedia",
|
|
14390
15141
|
value: function() {
|
|
14391
|
-
var
|
|
14392
|
-
var _this$_seiService2;
|
|
15142
|
+
var _detachMedia = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee11() {
|
|
14393
15143
|
return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
|
|
14394
15144
|
while (1)
|
|
14395
15145
|
switch (_context11.prev = _context11.next) {
|
|
15146
|
+
case 0:
|
|
15147
|
+
if (!this._bufferService) {
|
|
15148
|
+
_context11.next = 3;
|
|
15149
|
+
break;
|
|
15150
|
+
}
|
|
15151
|
+
_context11.next = 3;
|
|
15152
|
+
return this._bufferService.detachMedia();
|
|
15153
|
+
case 3:
|
|
15154
|
+
case "end":
|
|
15155
|
+
return _context11.stop();
|
|
15156
|
+
}
|
|
15157
|
+
}, _callee11, this);
|
|
15158
|
+
}));
|
|
15159
|
+
function detachMedia() {
|
|
15160
|
+
return _detachMedia.apply(this, arguments);
|
|
15161
|
+
}
|
|
15162
|
+
return detachMedia;
|
|
15163
|
+
}()
|
|
15164
|
+
}, {
|
|
15165
|
+
key: "destroy",
|
|
15166
|
+
value: function() {
|
|
15167
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee12() {
|
|
15168
|
+
var _this$_seiService2;
|
|
15169
|
+
return _regeneratorRuntime$1().wrap(function _callee12$(_context12) {
|
|
15170
|
+
while (1)
|
|
15171
|
+
switch (_context12.prev = _context12.next) {
|
|
14396
15172
|
case 0:
|
|
14397
15173
|
if (this.media) {
|
|
14398
|
-
|
|
15174
|
+
_context12.next = 2;
|
|
14399
15175
|
break;
|
|
14400
15176
|
}
|
|
14401
|
-
return
|
|
15177
|
+
return _context12.abrupt("return");
|
|
14402
15178
|
case 2:
|
|
14403
15179
|
this.removeAllListeners();
|
|
14404
15180
|
this._playlist.reset();
|
|
@@ -14409,15 +15185,15 @@
|
|
|
14409
15185
|
this.media.removeEventListener("pause", this._onPause);
|
|
14410
15186
|
this.media.removeEventListener("seeking", this._onSeeking);
|
|
14411
15187
|
this.media.removeEventListener("timeupdate", this._onTimeupdate);
|
|
14412
|
-
|
|
15188
|
+
_context12.next = 13;
|
|
14413
15189
|
return Promise.all([this._clear(), this._bufferService.destroy()]);
|
|
14414
15190
|
case 13:
|
|
14415
15191
|
this.media = null;
|
|
14416
15192
|
case 14:
|
|
14417
15193
|
case "end":
|
|
14418
|
-
return
|
|
15194
|
+
return _context12.stop();
|
|
14419
15195
|
}
|
|
14420
|
-
},
|
|
15196
|
+
}, _callee12, this);
|
|
14421
15197
|
}));
|
|
14422
15198
|
function destroy() {
|
|
14423
15199
|
return _destroy.apply(this, arguments);
|
|
@@ -14427,48 +15203,48 @@
|
|
|
14427
15203
|
}, {
|
|
14428
15204
|
key: "_loadM3U8",
|
|
14429
15205
|
value: function() {
|
|
14430
|
-
var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15206
|
+
var _loadM3U = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee13(url) {
|
|
14431
15207
|
var playlist, _this$config$manifest, _this$config$manifest2, manifest, _ref4, _ref5, _this$_playlist$curre;
|
|
14432
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15208
|
+
return _regeneratorRuntime$1().wrap(function _callee13$(_context13) {
|
|
14433
15209
|
while (1)
|
|
14434
|
-
switch (
|
|
15210
|
+
switch (_context13.prev = _context13.next) {
|
|
14435
15211
|
case 0:
|
|
14436
|
-
|
|
15212
|
+
_context13.prev = 0;
|
|
14437
15213
|
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
15214
|
return x.url === url;
|
|
14439
15215
|
})[0]) === null || _this$config$manifest2 === void 0 ? void 0 : _this$config$manifest2.manifest;
|
|
14440
15216
|
if (!manifest) {
|
|
14441
|
-
|
|
15217
|
+
_context13.next = 6;
|
|
14442
15218
|
break;
|
|
14443
15219
|
}
|
|
14444
|
-
|
|
14445
|
-
|
|
15220
|
+
_context13.t0 = this._manifestLoader.parseText(manifest, url);
|
|
15221
|
+
_context13.next = 9;
|
|
14446
15222
|
break;
|
|
14447
15223
|
case 6:
|
|
14448
|
-
|
|
15224
|
+
_context13.next = 8;
|
|
14449
15225
|
return this._manifestLoader.load(url);
|
|
14450
15226
|
case 8:
|
|
14451
|
-
|
|
15227
|
+
_context13.t0 = _context13.sent;
|
|
14452
15228
|
case 9:
|
|
14453
|
-
_ref4 =
|
|
15229
|
+
_ref4 = _context13.t0;
|
|
14454
15230
|
_ref5 = _slicedToArray$1(_ref4, 1);
|
|
14455
15231
|
playlist = _ref5[0];
|
|
14456
|
-
|
|
15232
|
+
_context13.next = 17;
|
|
14457
15233
|
break;
|
|
14458
15234
|
case 14:
|
|
14459
|
-
|
|
14460
|
-
|
|
14461
|
-
throw this._emitError(StreamingError.create(
|
|
15235
|
+
_context13.prev = 14;
|
|
15236
|
+
_context13.t1 = _context13["catch"](0);
|
|
15237
|
+
throw this._emitError(StreamingError.create(_context13.t1));
|
|
14462
15238
|
case 17:
|
|
14463
15239
|
if (playlist) {
|
|
14464
|
-
|
|
15240
|
+
_context13.next = 19;
|
|
14465
15241
|
break;
|
|
14466
15242
|
}
|
|
14467
|
-
return
|
|
15243
|
+
return _context13.abrupt("return");
|
|
14468
15244
|
case 19:
|
|
14469
15245
|
this._playlist.upsertPlaylist(playlist);
|
|
14470
15246
|
if (!playlist.isMaster) {
|
|
14471
|
-
|
|
15247
|
+
_context13.next = 24;
|
|
14472
15248
|
break;
|
|
14473
15249
|
}
|
|
14474
15250
|
if ((_this$_playlist$curre = this._playlist.currentStream.subtitleStreams) !== null && _this$_playlist$curre !== void 0 && _this$_playlist$curre.length) {
|
|
@@ -14476,18 +15252,18 @@
|
|
|
14476
15252
|
list: this._playlist.currentStream.subtitleStreams
|
|
14477
15253
|
});
|
|
14478
15254
|
}
|
|
14479
|
-
|
|
15255
|
+
_context13.next = 24;
|
|
14480
15256
|
return this._refreshM3U8();
|
|
14481
15257
|
case 24:
|
|
14482
15258
|
this.emit(Event$1.STREAM_PARSED);
|
|
14483
|
-
return
|
|
15259
|
+
return _context13.abrupt("return", playlist);
|
|
14484
15260
|
case 26:
|
|
14485
15261
|
case "end":
|
|
14486
|
-
return
|
|
15262
|
+
return _context13.stop();
|
|
14487
15263
|
}
|
|
14488
|
-
},
|
|
15264
|
+
}, _callee13, this, [[0, 14]]);
|
|
14489
15265
|
}));
|
|
14490
|
-
function _loadM3U8(
|
|
15266
|
+
function _loadM3U8(_x7) {
|
|
14491
15267
|
return _loadM3U.apply(this, arguments);
|
|
14492
15268
|
}
|
|
14493
15269
|
return _loadM3U8;
|
|
@@ -14521,7 +15297,7 @@
|
|
|
14521
15297
|
var isEmpty = this._playlist.isEmpty;
|
|
14522
15298
|
var pollInterval;
|
|
14523
15299
|
if (this._playlist.lowLatency) {
|
|
14524
|
-
pollInterval = (this._playlist.currentStream.partTargetDuration
|
|
15300
|
+
pollInterval = (this._playlist.currentStream.partTargetDuration || 0) * 1e3;
|
|
14525
15301
|
} else {
|
|
14526
15302
|
var _this$_playlist$lastS;
|
|
14527
15303
|
pollInterval = (((_this$_playlist$lastS = this._playlist.lastSegment) === null || _this$_playlist$lastS === void 0 ? void 0 : _this$_playlist$lastS.duration) || 0) * 1e3;
|
|
@@ -14549,53 +15325,53 @@
|
|
|
14549
15325
|
}, {
|
|
14550
15326
|
key: "_loadSegmentDirect",
|
|
14551
15327
|
value: function() {
|
|
14552
|
-
var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15328
|
+
var _loadSegmentDirect2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee14(loadOnce) {
|
|
14553
15329
|
var seg, appended, cachedError, _this$_playlist$curre2, bufferEnd, sameStream;
|
|
14554
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15330
|
+
return _regeneratorRuntime$1().wrap(function _callee14$(_context14) {
|
|
14555
15331
|
while (1)
|
|
14556
|
-
switch (
|
|
15332
|
+
switch (_context14.prev = _context14.next) {
|
|
14557
15333
|
case 0:
|
|
14558
15334
|
seg = this._playlist.nextSegment;
|
|
14559
15335
|
if (seg) {
|
|
14560
|
-
|
|
15336
|
+
_context14.next = 3;
|
|
14561
15337
|
break;
|
|
14562
15338
|
}
|
|
14563
|
-
return
|
|
15339
|
+
return _context14.abrupt("return");
|
|
14564
15340
|
case 3:
|
|
14565
15341
|
appended = false;
|
|
14566
15342
|
cachedError = null;
|
|
14567
|
-
|
|
15343
|
+
_context14.prev = 5;
|
|
14568
15344
|
this._segmentProcessing = true;
|
|
14569
15345
|
logger.log("load segment, sn:".concat(seg.sn, ", [").concat(seg.start, ", ").concat(seg.end, "], partIndex:").concat(seg.partIndex));
|
|
14570
|
-
|
|
15346
|
+
_context14.next = 10;
|
|
14571
15347
|
return this._reqAndBufferSegment(seg, this._playlist.getAudioSegment(seg));
|
|
14572
15348
|
case 10:
|
|
14573
|
-
appended =
|
|
14574
|
-
|
|
15349
|
+
appended = _context14.sent;
|
|
15350
|
+
_context14.next = 16;
|
|
14575
15351
|
break;
|
|
14576
15352
|
case 13:
|
|
14577
|
-
|
|
14578
|
-
|
|
14579
|
-
cachedError =
|
|
15353
|
+
_context14.prev = 13;
|
|
15354
|
+
_context14.t0 = _context14["catch"](5);
|
|
15355
|
+
cachedError = _context14.t0;
|
|
14580
15356
|
case 16:
|
|
14581
|
-
|
|
15357
|
+
_context14.prev = 16;
|
|
14582
15358
|
this._segmentProcessing = false;
|
|
14583
|
-
return
|
|
15359
|
+
return _context14.finish(16);
|
|
14584
15360
|
case 19:
|
|
14585
15361
|
if (!cachedError) {
|
|
14586
|
-
|
|
15362
|
+
_context14.next = 26;
|
|
14587
15363
|
break;
|
|
14588
15364
|
}
|
|
14589
15365
|
if (!this._bufferService.isFull()) {
|
|
14590
|
-
|
|
15366
|
+
_context14.next = 25;
|
|
14591
15367
|
break;
|
|
14592
15368
|
}
|
|
14593
15369
|
logger.log("load segment, sn:".concat(seg.sn, ", partIndex:").concat(seg.partIndex));
|
|
14594
15370
|
this._segmentProcessing = true;
|
|
14595
15371
|
this._isProcessQuotaExceeded = true;
|
|
14596
|
-
return
|
|
15372
|
+
return _context14.abrupt("return", false);
|
|
14597
15373
|
case 25:
|
|
14598
|
-
return
|
|
15374
|
+
return _context14.abrupt("return", this._emitError(StreamingError.create(cachedError)));
|
|
14599
15375
|
case 26:
|
|
14600
15376
|
if (appended) {
|
|
14601
15377
|
bufferEnd = this.bufferInfo().end;
|
|
@@ -14621,14 +15397,14 @@
|
|
|
14621
15397
|
this._loadSegment();
|
|
14622
15398
|
}
|
|
14623
15399
|
}
|
|
14624
|
-
return
|
|
15400
|
+
return _context14.abrupt("return", appended);
|
|
14625
15401
|
case 28:
|
|
14626
15402
|
case "end":
|
|
14627
|
-
return
|
|
15403
|
+
return _context14.stop();
|
|
14628
15404
|
}
|
|
14629
|
-
},
|
|
15405
|
+
}, _callee14, this, [[5, 13, 16, 19]]);
|
|
14630
15406
|
}));
|
|
14631
|
-
function _loadSegmentDirect(
|
|
15407
|
+
function _loadSegmentDirect(_x8) {
|
|
14632
15408
|
return _loadSegmentDirect2.apply(this, arguments);
|
|
14633
15409
|
}
|
|
14634
15410
|
return _loadSegmentDirect;
|
|
@@ -14636,45 +15412,45 @@
|
|
|
14636
15412
|
}, {
|
|
14637
15413
|
key: "_reqAndBufferSegment",
|
|
14638
15414
|
value: function() {
|
|
14639
|
-
var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15415
|
+
var _reqAndBufferSegment2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee15(seg, audioSeg) {
|
|
14640
15416
|
var _this$_bufferService2;
|
|
14641
15417
|
var cc, discontinuity, responses, data, sn, start, stream, before, contiguous, segStart;
|
|
14642
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15418
|
+
return _regeneratorRuntime$1().wrap(function _callee15$(_context15) {
|
|
14643
15419
|
while (1)
|
|
14644
|
-
switch (
|
|
15420
|
+
switch (_context15.prev = _context15.next) {
|
|
14645
15421
|
case 0:
|
|
14646
15422
|
cc = seg ? seg.cc : audioSeg.cc;
|
|
14647
15423
|
discontinuity = this._prevSegCc !== cc;
|
|
14648
15424
|
responses = [];
|
|
14649
|
-
|
|
14650
|
-
|
|
15425
|
+
_context15.prev = 3;
|
|
15426
|
+
_context15.next = 6;
|
|
14651
15427
|
return this._segmentLoader.load(seg, audioSeg, discontinuity);
|
|
14652
15428
|
case 6:
|
|
14653
|
-
responses =
|
|
14654
|
-
|
|
15429
|
+
responses = _context15.sent;
|
|
15430
|
+
_context15.next = 14;
|
|
14655
15431
|
break;
|
|
14656
15432
|
case 9:
|
|
14657
|
-
|
|
14658
|
-
|
|
14659
|
-
|
|
14660
|
-
this._segmentLoader.error =
|
|
14661
|
-
throw
|
|
15433
|
+
_context15.prev = 9;
|
|
15434
|
+
_context15.t0 = _context15["catch"](3);
|
|
15435
|
+
_context15.t0.fatal = false;
|
|
15436
|
+
this._segmentLoader.error = _context15.t0;
|
|
15437
|
+
throw _context15.t0;
|
|
14662
15438
|
case 14:
|
|
14663
15439
|
if (responses[0]) {
|
|
14664
|
-
|
|
15440
|
+
_context15.next = 16;
|
|
14665
15441
|
break;
|
|
14666
15442
|
}
|
|
14667
|
-
return
|
|
15443
|
+
return _context15.abrupt("return");
|
|
14668
15444
|
case 16:
|
|
14669
|
-
|
|
15445
|
+
_context15.next = 18;
|
|
14670
15446
|
return (_this$_bufferService2 = this._bufferService).decryptBuffer.apply(_this$_bufferService2, _toConsumableArray$2(responses));
|
|
14671
15447
|
case 18:
|
|
14672
|
-
data =
|
|
15448
|
+
data = _context15.sent;
|
|
14673
15449
|
if (data) {
|
|
14674
|
-
|
|
15450
|
+
_context15.next = 21;
|
|
14675
15451
|
break;
|
|
14676
15452
|
}
|
|
14677
|
-
return
|
|
15453
|
+
return _context15.abrupt("return");
|
|
14678
15454
|
case 21:
|
|
14679
15455
|
sn = seg ? seg.sn : audioSeg.sn;
|
|
14680
15456
|
start = seg ? seg.start : audioSeg.start;
|
|
@@ -14688,26 +15464,26 @@
|
|
|
14688
15464
|
logger.warn("update the new playlist liveEdge, segment id=".concat(sn, ", buffer start=").concat(segStart, ", liveEdge=").concat(this._playlist.liveEdge));
|
|
14689
15465
|
start = segStart;
|
|
14690
15466
|
}
|
|
14691
|
-
|
|
15467
|
+
_context15.next = 30;
|
|
14692
15468
|
return this._bufferService.appendBuffer(seg, audioSeg, data[0], data[1], discontinuity, contiguous, start);
|
|
14693
15469
|
case 30:
|
|
14694
15470
|
this.emit(Event$1.APPEND_COST, {
|
|
14695
15471
|
elapsed: Date.now() - before,
|
|
14696
15472
|
url: seg.url
|
|
14697
15473
|
});
|
|
14698
|
-
|
|
15474
|
+
_context15.next = 33;
|
|
14699
15475
|
return this._bufferService.evictBuffer(this.config.bufferBehind);
|
|
14700
15476
|
case 33:
|
|
14701
15477
|
this._prevSegCc = cc;
|
|
14702
15478
|
this._prevSegSn = sn;
|
|
14703
|
-
return
|
|
15479
|
+
return _context15.abrupt("return", true);
|
|
14704
15480
|
case 36:
|
|
14705
15481
|
case "end":
|
|
14706
|
-
return
|
|
15482
|
+
return _context15.stop();
|
|
14707
15483
|
}
|
|
14708
|
-
},
|
|
15484
|
+
}, _callee15, this, [[3, 9]]);
|
|
14709
15485
|
}));
|
|
14710
|
-
function _reqAndBufferSegment(
|
|
15486
|
+
function _reqAndBufferSegment(_x9, _x10) {
|
|
14711
15487
|
return _reqAndBufferSegment2.apply(this, arguments);
|
|
14712
15488
|
}
|
|
14713
15489
|
return _reqAndBufferSegment;
|
|
@@ -14715,11 +15491,11 @@
|
|
|
14715
15491
|
}, {
|
|
14716
15492
|
key: "_onCheckQuotaExceeded",
|
|
14717
15493
|
value: function() {
|
|
14718
|
-
var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15494
|
+
var _onCheckQuotaExceeded2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee16() {
|
|
14719
15495
|
var seekTime, buffered, inBuffered, i, bufferBehind, mediaTime;
|
|
14720
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15496
|
+
return _regeneratorRuntime$1().wrap(function _callee16$(_context16) {
|
|
14721
15497
|
while (1)
|
|
14722
|
-
switch (
|
|
15498
|
+
switch (_context16.prev = _context16.next) {
|
|
14723
15499
|
case 0:
|
|
14724
15500
|
seekTime = this.media.currentTime;
|
|
14725
15501
|
buffered = this.media.buffered;
|
|
@@ -14727,37 +15503,37 @@
|
|
|
14727
15503
|
i = 0;
|
|
14728
15504
|
case 4:
|
|
14729
15505
|
if (!(i < buffered.length)) {
|
|
14730
|
-
|
|
15506
|
+
_context16.next = 11;
|
|
14731
15507
|
break;
|
|
14732
15508
|
}
|
|
14733
15509
|
if (!(buffered.start(0) >= seekTime && seekTime < buffered.end(i))) {
|
|
14734
|
-
|
|
15510
|
+
_context16.next = 8;
|
|
14735
15511
|
break;
|
|
14736
15512
|
}
|
|
14737
15513
|
inBuffered = true;
|
|
14738
|
-
return
|
|
15514
|
+
return _context16.abrupt("break", 11);
|
|
14739
15515
|
case 8:
|
|
14740
15516
|
i++;
|
|
14741
|
-
|
|
15517
|
+
_context16.next = 4;
|
|
14742
15518
|
break;
|
|
14743
15519
|
case 11:
|
|
14744
15520
|
if (!this._bufferService.isFull()) {
|
|
14745
|
-
|
|
15521
|
+
_context16.next = 17;
|
|
14746
15522
|
break;
|
|
14747
15523
|
}
|
|
14748
15524
|
bufferBehind = inBuffered ? this.config.bufferBehind : 5;
|
|
14749
15525
|
mediaTime = this.media.currentTime;
|
|
14750
15526
|
if (!(mediaTime - bufferBehind > 0)) {
|
|
14751
|
-
|
|
15527
|
+
_context16.next = 17;
|
|
14752
15528
|
break;
|
|
14753
15529
|
}
|
|
14754
|
-
|
|
15530
|
+
_context16.next = 17;
|
|
14755
15531
|
return this._bufferService.removeBuffer(0, mediaTime - bufferBehind);
|
|
14756
15532
|
case 17:
|
|
14757
15533
|
case "end":
|
|
14758
|
-
return
|
|
15534
|
+
return _context16.stop();
|
|
14759
15535
|
}
|
|
14760
|
-
},
|
|
15536
|
+
}, _callee16, this);
|
|
14761
15537
|
}));
|
|
14762
15538
|
function _onCheckQuotaExceeded() {
|
|
14763
15539
|
return _onCheckQuotaExceeded2.apply(this, arguments);
|
|
@@ -14775,22 +15551,22 @@
|
|
|
14775
15551
|
}, {
|
|
14776
15552
|
key: "_clear",
|
|
14777
15553
|
value: function() {
|
|
14778
|
-
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
14779
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15554
|
+
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee17() {
|
|
15555
|
+
return _regeneratorRuntime$1().wrap(function _callee17$(_context17) {
|
|
14780
15556
|
while (1)
|
|
14781
|
-
switch (
|
|
15557
|
+
switch (_context17.prev = _context17.next) {
|
|
14782
15558
|
case 0:
|
|
14783
15559
|
clearTimeout(this._disconnectTimer);
|
|
14784
15560
|
this._stopTick();
|
|
14785
|
-
|
|
15561
|
+
_context17.next = 4;
|
|
14786
15562
|
return Promise.all([this._segmentLoader.cancel(), this._manifestLoader.stopPoll()]);
|
|
14787
15563
|
case 4:
|
|
14788
15564
|
this._segmentProcessing = false;
|
|
14789
15565
|
case 5:
|
|
14790
15566
|
case "end":
|
|
14791
|
-
return
|
|
15567
|
+
return _context17.stop();
|
|
14792
15568
|
}
|
|
14793
|
-
},
|
|
15569
|
+
}, _callee17, this);
|
|
14794
15570
|
}));
|
|
14795
15571
|
function _clear() {
|
|
14796
15572
|
return _clear2.apply(this, arguments);
|
|
@@ -14800,14 +15576,14 @@
|
|
|
14800
15576
|
}, {
|
|
14801
15577
|
key: "_reset",
|
|
14802
15578
|
value: function() {
|
|
14803
|
-
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
15579
|
+
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee18() {
|
|
14804
15580
|
var _this$_seiService3;
|
|
14805
|
-
var reuseMse,
|
|
14806
|
-
return _regeneratorRuntime$1().wrap(function
|
|
15581
|
+
var reuseMse, _args18 = arguments;
|
|
15582
|
+
return _regeneratorRuntime$1().wrap(function _callee18$(_context18) {
|
|
14807
15583
|
while (1)
|
|
14808
|
-
switch (
|
|
15584
|
+
switch (_context18.prev = _context18.next) {
|
|
14809
15585
|
case 0:
|
|
14810
|
-
reuseMse =
|
|
15586
|
+
reuseMse = _args18.length > 0 && _args18[0] !== void 0 ? _args18[0] : false;
|
|
14811
15587
|
this._reloadOnPlay = false;
|
|
14812
15588
|
this._prevSegSn = null;
|
|
14813
15589
|
this._prevSegCc = null;
|
|
@@ -14816,15 +15592,15 @@
|
|
|
14816
15592
|
this._segmentLoader.reset();
|
|
14817
15593
|
(_this$_seiService3 = this._seiService) === null || _this$_seiService3 === void 0 ? void 0 : _this$_seiService3.reset();
|
|
14818
15594
|
this._stats.reset();
|
|
14819
|
-
|
|
15595
|
+
_context18.next = 11;
|
|
14820
15596
|
return this._clear();
|
|
14821
15597
|
case 11:
|
|
14822
|
-
return
|
|
15598
|
+
return _context18.abrupt("return", this._bufferService.reset(reuseMse));
|
|
14823
15599
|
case 12:
|
|
14824
15600
|
case "end":
|
|
14825
|
-
return
|
|
15601
|
+
return _context18.stop();
|
|
14826
15602
|
}
|
|
14827
|
-
},
|
|
15603
|
+
}, _callee18, this);
|
|
14828
15604
|
}));
|
|
14829
15605
|
function _reset() {
|
|
14830
15606
|
return _reset2.apply(this, arguments);
|
|
@@ -14942,7 +15718,7 @@
|
|
|
14942
15718
|
}]);
|
|
14943
15719
|
return Hls2;
|
|
14944
15720
|
}(EventEmitter);
|
|
14945
|
-
_defineProperty$3(Hls, "version", "3.0.
|
|
15721
|
+
_defineProperty$3(Hls, "version", "3.0.21-rc.3");
|
|
14946
15722
|
try {
|
|
14947
15723
|
if (localStorage.getItem("xgd")) {
|
|
14948
15724
|
Hls.enableLogger();
|
|
@@ -15033,6 +15809,7 @@
|
|
|
15033
15809
|
}]);
|
|
15034
15810
|
return PluginExtension2;
|
|
15035
15811
|
}();
|
|
15812
|
+
var _excluded = ["currentTime"];
|
|
15036
15813
|
function parseSwitchUrlArgs(args, plugin) {
|
|
15037
15814
|
var player = plugin.player;
|
|
15038
15815
|
var curTime = player.currentTime;
|
|
@@ -15043,9 +15820,14 @@
|
|
|
15043
15820
|
case "boolean":
|
|
15044
15821
|
options.seamless = args;
|
|
15045
15822
|
break;
|
|
15046
|
-
case "object":
|
|
15047
|
-
|
|
15823
|
+
case "object": {
|
|
15824
|
+
var currentTime = args.currentTime, rest = _objectWithoutProperties$1(args, _excluded);
|
|
15825
|
+
Object.assign(options, rest);
|
|
15826
|
+
if (typeof currentTime === "number") {
|
|
15827
|
+
options.startTime = currentTime;
|
|
15828
|
+
}
|
|
15048
15829
|
break;
|
|
15830
|
+
}
|
|
15049
15831
|
}
|
|
15050
15832
|
return options;
|
|
15051
15833
|
}
|
|
@@ -15055,10 +15837,11 @@
|
|
|
15055
15837
|
function HlsPlugin2() {
|
|
15056
15838
|
var _this;
|
|
15057
15839
|
_classCallCheck$3(this, HlsPlugin2);
|
|
15058
|
-
for (var _len = arguments.length,
|
|
15059
|
-
|
|
15840
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
15841
|
+
args[_key] = arguments[_key];
|
|
15060
15842
|
}
|
|
15061
|
-
_this = _super.call.apply(_super, [this].concat(
|
|
15843
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
15844
|
+
_defineProperty$3(_assertThisInitialized$2(_this), "logger", logger);
|
|
15062
15845
|
_defineProperty$3(_assertThisInitialized$2(_this), "hls", null);
|
|
15063
15846
|
_defineProperty$3(_assertThisInitialized$2(_this), "pluginExtension", null);
|
|
15064
15847
|
_defineProperty$3(_assertThisInitialized$2(_this), "getStats", function() {
|
|
@@ -15070,24 +15853,6 @@
|
|
|
15070
15853
|
var lang = _ref.lang;
|
|
15071
15854
|
(_this$hls2 = _this.hls) === null || _this$hls2 === void 0 ? void 0 : _this$hls2.switchSubtitleStream(lang);
|
|
15072
15855
|
});
|
|
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
15856
|
_defineProperty$3(_assertThisInitialized$2(_this), "_keepPauseStatus", function() {
|
|
15092
15857
|
var paused = _this.player.paused;
|
|
15093
15858
|
if (!paused)
|
|
@@ -15112,8 +15877,8 @@
|
|
|
15112
15877
|
}, {
|
|
15113
15878
|
key: "softDecode",
|
|
15114
15879
|
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$
|
|
15880
|
+
var _this$player, _this$player$config;
|
|
15881
|
+
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
15882
|
return !!mediaType && mediaType !== "video" && mediaType !== "audio";
|
|
15118
15883
|
}
|
|
15119
15884
|
}, {
|
|
@@ -15121,13 +15886,35 @@
|
|
|
15121
15886
|
value: function beforePlayerInit() {
|
|
15122
15887
|
var _this2 = this;
|
|
15123
15888
|
var config = this.player.config;
|
|
15889
|
+
var mediaElem = this.player.media || this.player.video;
|
|
15124
15890
|
var hlsOpts = config.hls || {};
|
|
15125
15891
|
if (!config.url && !config.__allowHlsEmptyUrl__ || !hlsOpts.preferMMS && MSE.isMMSOnly()) {
|
|
15126
15892
|
return;
|
|
15127
15893
|
}
|
|
15128
15894
|
if (this.hls)
|
|
15129
15895
|
this.hls.destroy();
|
|
15130
|
-
|
|
15896
|
+
var descriptor = Object.getOwnPropertyDescriptor(this.player, "switchURL");
|
|
15897
|
+
if (!descriptor || descriptor.writable) {
|
|
15898
|
+
this.player.switchURL = function(url, args) {
|
|
15899
|
+
return new Promise(function(resolve, reject) {
|
|
15900
|
+
var player = _this2.player, hls = _this2.hls;
|
|
15901
|
+
if (hls) {
|
|
15902
|
+
var _this2$player$config, _this2$player$config$;
|
|
15903
|
+
var options = parseSwitchUrlArgs(args, _this2);
|
|
15904
|
+
player.config.url = url;
|
|
15905
|
+
hls.switchURL(url, options).then(function() {
|
|
15906
|
+
return resolve(true);
|
|
15907
|
+
}).catch(reject);
|
|
15908
|
+
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) {
|
|
15909
|
+
_this2._keepPauseStatus();
|
|
15910
|
+
}
|
|
15911
|
+
} else {
|
|
15912
|
+
reject();
|
|
15913
|
+
}
|
|
15914
|
+
});
|
|
15915
|
+
};
|
|
15916
|
+
}
|
|
15917
|
+
var onSwitchUrl = this.player.switchURL;
|
|
15131
15918
|
this.player.handleSource = false;
|
|
15132
15919
|
hlsOpts.innerDegrade = hlsOpts.innerDegrade || config.innerDegrade;
|
|
15133
15920
|
if (hlsOpts.disconnectTime === null || hlsOpts.disconnectTime === void 0)
|
|
@@ -15135,7 +15922,7 @@
|
|
|
15135
15922
|
this.hls = new Hls(_objectSpread2$2({
|
|
15136
15923
|
softDecode: this.softDecode,
|
|
15137
15924
|
isLive: config.isLive,
|
|
15138
|
-
media:
|
|
15925
|
+
media: mediaElem,
|
|
15139
15926
|
startTime: config.startTime,
|
|
15140
15927
|
url: config.url
|
|
15141
15928
|
}, hlsOpts));
|
|
@@ -15153,7 +15940,7 @@
|
|
|
15153
15940
|
if (this.softDecode) {
|
|
15154
15941
|
this.pluginExtension = new PluginExtension(_objectSpread2$2({
|
|
15155
15942
|
isLive: config.isLive,
|
|
15156
|
-
media:
|
|
15943
|
+
media: mediaElem
|
|
15157
15944
|
}, hlsOpts), this);
|
|
15158
15945
|
this.player.forceDegradeToVideo = function() {
|
|
15159
15946
|
var _this2$pluginExtensio;
|
|
@@ -15170,8 +15957,8 @@
|
|
|
15170
15957
|
return (_this2$hls2 = _this2.hls) === null || _this2$hls2 === void 0 ? void 0 : _this2$hls2.replay();
|
|
15171
15958
|
});
|
|
15172
15959
|
}
|
|
15960
|
+
this.on(URL_CHANGE, onSwitchUrl);
|
|
15173
15961
|
this.on(SWITCH_SUBTITLE, this._onSwitchSubtitle);
|
|
15174
|
-
this.on(URL_CHANGE, this._onSwitchURL);
|
|
15175
15962
|
this.on(DESTROY, this.destroy.bind(this));
|
|
15176
15963
|
this._transError();
|
|
15177
15964
|
this._transCoreEvent(EVENT.TTFB);
|
|
@@ -15181,6 +15968,7 @@
|
|
|
15181
15968
|
this._transCoreEvent(EVENT.LOAD_RETRY);
|
|
15182
15969
|
this._transCoreEvent(EVENT.SOURCEBUFFER_CREATED);
|
|
15183
15970
|
this._transCoreEvent(EVENT.MEDIASOURCE_OPENED);
|
|
15971
|
+
this._transCoreEvent(EVENT.APPEND_BUFFER);
|
|
15184
15972
|
this._transCoreEvent(EVENT.REMOVE_BUFFER);
|
|
15185
15973
|
this._transCoreEvent(EVENT.BUFFEREOS);
|
|
15186
15974
|
this._transCoreEvent(EVENT.KEYFRAME);
|
|
@@ -15200,7 +15988,9 @@
|
|
|
15200
15988
|
this._transCoreEvent(Event$1.SUBTITLE_PLAYLIST);
|
|
15201
15989
|
this._transCoreEvent(Event$1.APPEND_COST);
|
|
15202
15990
|
if (config.url) {
|
|
15203
|
-
this.hls.load(config.url,
|
|
15991
|
+
this.hls.load(config.url, {
|
|
15992
|
+
reuseMse: true
|
|
15993
|
+
}).catch(function(e) {
|
|
15204
15994
|
});
|
|
15205
15995
|
}
|
|
15206
15996
|
}
|