@byteplus/veplayer-plugin 2.4.0 → 2.4.1-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/index.development.js +43395 -42054
- package/esm/index.production.js +3 -3
- package/esm/veplayer.plugin.abr.development.js +2555 -2238
- package/esm/veplayer.plugin.abr.production.js +1 -1
- package/esm/veplayer.plugin.flv.development.js +419 -158
- package/esm/veplayer.plugin.flv.production.js +1 -1
- package/esm/veplayer.plugin.hls.development.js +738 -79
- package/esm/veplayer.plugin.hls.production.js +1 -1
- package/esm/veplayer.plugin.mp4.development.js +2 -2
- package/esm/veplayer.plugin.mp4.production.js +1 -1
- package/esm/veplayer.plugin.rtm.development.js +10 -4
- package/esm/veplayer.plugin.rtm.production.js +1 -1
- package/esm/veplayer.plugin.shaka.development.js +1 -1
- package/esm/veplayer.plugin.shaka.production.js +1 -1
- package/package.json +1 -1
- package/umd/veplayer.plugin.abr.development.js +2555 -2238
- package/umd/veplayer.plugin.abr.production.js +1 -1
- package/umd/veplayer.plugin.flv.development.js +419 -158
- package/umd/veplayer.plugin.flv.production.js +1 -1
- package/umd/veplayer.plugin.hls.development.js +738 -79
- package/umd/veplayer.plugin.hls.production.js +1 -1
- package/umd/veplayer.plugin.mp4.development.js +2 -2
- package/umd/veplayer.plugin.mp4.production.js +1 -1
- package/umd/veplayer.plugin.rtm.development.js +10 -4
- package/umd/veplayer.plugin.rtm.production.js +1 -1
- package/umd/veplayer.plugin.shaka.development.js +1 -1
- package/umd/veplayer.plugin.shaka.production.js +1 -1
|
@@ -1640,7 +1640,7 @@ util.getCurrentTimeByOffset = function(offsetTime, segments) {
|
|
|
1640
1640
|
}
|
|
1641
1641
|
return offsetTime;
|
|
1642
1642
|
};
|
|
1643
|
-
var version = "3.0.
|
|
1643
|
+
var version = "3.0.20-rc.3";
|
|
1644
1644
|
var ERROR_MAP = {
|
|
1645
1645
|
1: 5101,
|
|
1646
1646
|
2: 5102,
|
|
@@ -2674,7 +2674,7 @@ function _arrayLikeToArray$1(arr, len) {
|
|
|
2674
2674
|
arr2[i] = arr[i];
|
|
2675
2675
|
return arr2;
|
|
2676
2676
|
}
|
|
2677
|
-
function _createForOfIteratorHelper(o, allowArrayLike) {
|
|
2677
|
+
function _createForOfIteratorHelper$1(o, allowArrayLike) {
|
|
2678
2678
|
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
2679
2679
|
if (!it) {
|
|
2680
2680
|
if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
@@ -2862,6 +2862,21 @@ var Buffer$1 = /* @__PURE__ */ function() {
|
|
|
2862
2862
|
length: Buffer2.totalLength && Buffer2.totalLength(buffers)
|
|
2863
2863
|
};
|
|
2864
2864
|
}
|
|
2865
|
+
}, {
|
|
2866
|
+
key: "isBuffered",
|
|
2867
|
+
value: function isBuffered(media, pos) {
|
|
2868
|
+
if (media) {
|
|
2869
|
+
var buffered = Buffer2.get(media);
|
|
2870
|
+
if (buffered !== null && buffered !== void 0 && buffered.length) {
|
|
2871
|
+
for (var i = 0; i < buffered.length; i++) {
|
|
2872
|
+
if (pos >= buffered.start(i) && pos <= buffered.end(i)) {
|
|
2873
|
+
return true;
|
|
2874
|
+
}
|
|
2875
|
+
}
|
|
2876
|
+
}
|
|
2877
|
+
}
|
|
2878
|
+
return false;
|
|
2879
|
+
}
|
|
2865
2880
|
}]);
|
|
2866
2881
|
return Buffer2;
|
|
2867
2882
|
}();
|
|
@@ -4766,7 +4781,7 @@ var XhrLoader = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
4766
4781
|
value: function _getHeaders(xhr) {
|
|
4767
4782
|
var headerLines = xhr.getAllResponseHeaders().trim().split("\r\n");
|
|
4768
4783
|
var headers = {};
|
|
4769
|
-
var _iterator = _createForOfIteratorHelper(headerLines), _step;
|
|
4784
|
+
var _iterator = _createForOfIteratorHelper$1(headerLines), _step;
|
|
4770
4785
|
try {
|
|
4771
4786
|
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
4772
4787
|
var header = _step.value;
|
|
@@ -5604,6 +5619,60 @@ function _nonIterableSpread() {
|
|
|
5604
5619
|
function _nonIterableRest() {
|
|
5605
5620
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
5606
5621
|
}
|
|
5622
|
+
function _createForOfIteratorHelper(o, allowArrayLike) {
|
|
5623
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
5624
|
+
if (!it) {
|
|
5625
|
+
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
5626
|
+
if (it)
|
|
5627
|
+
o = it;
|
|
5628
|
+
var i = 0;
|
|
5629
|
+
var F = function() {
|
|
5630
|
+
};
|
|
5631
|
+
return {
|
|
5632
|
+
s: F,
|
|
5633
|
+
n: function() {
|
|
5634
|
+
if (i >= o.length)
|
|
5635
|
+
return {
|
|
5636
|
+
done: true
|
|
5637
|
+
};
|
|
5638
|
+
return {
|
|
5639
|
+
done: false,
|
|
5640
|
+
value: o[i++]
|
|
5641
|
+
};
|
|
5642
|
+
},
|
|
5643
|
+
e: function(e) {
|
|
5644
|
+
throw e;
|
|
5645
|
+
},
|
|
5646
|
+
f: F
|
|
5647
|
+
};
|
|
5648
|
+
}
|
|
5649
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
5650
|
+
}
|
|
5651
|
+
var normalCompletion = true, didErr = false, err;
|
|
5652
|
+
return {
|
|
5653
|
+
s: function() {
|
|
5654
|
+
it = it.call(o);
|
|
5655
|
+
},
|
|
5656
|
+
n: function() {
|
|
5657
|
+
var step = it.next();
|
|
5658
|
+
normalCompletion = step.done;
|
|
5659
|
+
return step;
|
|
5660
|
+
},
|
|
5661
|
+
e: function(e) {
|
|
5662
|
+
didErr = true;
|
|
5663
|
+
err = e;
|
|
5664
|
+
},
|
|
5665
|
+
f: function() {
|
|
5666
|
+
try {
|
|
5667
|
+
if (!normalCompletion && it.return != null)
|
|
5668
|
+
it.return();
|
|
5669
|
+
} finally {
|
|
5670
|
+
if (didErr)
|
|
5671
|
+
throw err;
|
|
5672
|
+
}
|
|
5673
|
+
}
|
|
5674
|
+
};
|
|
5675
|
+
}
|
|
5607
5676
|
function _toPrimitive(input, hint) {
|
|
5608
5677
|
if (typeof input !== "object" || input === null)
|
|
5609
5678
|
return input;
|
|
@@ -5626,6 +5695,7 @@ var TrackType = {
|
|
|
5626
5695
|
METADATA: "metadata"
|
|
5627
5696
|
};
|
|
5628
5697
|
var VideoCodecType = {
|
|
5698
|
+
AV1: "av1",
|
|
5629
5699
|
AVC: "avc",
|
|
5630
5700
|
HEVC: "hevc"
|
|
5631
5701
|
};
|
|
@@ -5672,6 +5742,7 @@ var VideoTrack = /* @__PURE__ */ function() {
|
|
|
5672
5742
|
_defineProperty(this, "isVideoEncryption", false);
|
|
5673
5743
|
_defineProperty(this, "isAudioEncryption", false);
|
|
5674
5744
|
_defineProperty(this, "isVideo", true);
|
|
5745
|
+
_defineProperty(this, "lastKeyFrameDts", 0);
|
|
5675
5746
|
_defineProperty(this, "kid", null);
|
|
5676
5747
|
_defineProperty(this, "pssh", null);
|
|
5677
5748
|
_defineProperty(this, "ext", void 0);
|
|
@@ -5714,6 +5785,9 @@ var VideoTrack = /* @__PURE__ */ function() {
|
|
|
5714
5785
|
}, {
|
|
5715
5786
|
key: "exist",
|
|
5716
5787
|
value: function exist() {
|
|
5788
|
+
if (/av01/.test(this.codec)) {
|
|
5789
|
+
return true;
|
|
5790
|
+
}
|
|
5717
5791
|
return !!(this.pps.length && this.sps.length && this.codec);
|
|
5718
5792
|
}
|
|
5719
5793
|
}, {
|
|
@@ -5982,7 +6056,7 @@ var AAC = /* @__PURE__ */ function() {
|
|
|
5982
6056
|
continue;
|
|
5983
6057
|
}
|
|
5984
6058
|
frameLength = (data[i + 3] & 3) << 11 | data[i + 4] << 3 | (data[i + 5] & 224) >> 5;
|
|
5985
|
-
if (len - i < frameLength)
|
|
6059
|
+
if (!frameLength || len - i < frameLength)
|
|
5986
6060
|
break;
|
|
5987
6061
|
protectionSkipBytes = (~data[i + 1] & 1) * 2;
|
|
5988
6062
|
frames.push({
|
|
@@ -6176,6 +6250,15 @@ function parse2(a) {
|
|
|
6176
6250
|
return parseInt(item, 16);
|
|
6177
6251
|
});
|
|
6178
6252
|
}
|
|
6253
|
+
function combineToFloat(integer, decimal) {
|
|
6254
|
+
return Number(integer + "." + decimal);
|
|
6255
|
+
}
|
|
6256
|
+
function toDegree(matrix) {
|
|
6257
|
+
if (matrix.length < 5)
|
|
6258
|
+
return 0;
|
|
6259
|
+
var scaled0 = Math.hypot(matrix[0], matrix[3]), scaled1 = Math.hypot(matrix[1], matrix[4]);
|
|
6260
|
+
return 0 === scaled0 || 0 === scaled1 ? 0 : 180 * Math.atan2(matrix[1] / scaled1, matrix[0] / scaled0) / Math.PI;
|
|
6261
|
+
}
|
|
6179
6262
|
var NALu = /* @__PURE__ */ function() {
|
|
6180
6263
|
function NALu2() {
|
|
6181
6264
|
_classCallCheck(this, NALu2);
|
|
@@ -6838,13 +6921,16 @@ var MAX_SILENT_FRAME_DURATION = 9e4;
|
|
|
6838
6921
|
var AUDIO_EXCETION_LOG_EMIT_DURATION = 5 * 9e4;
|
|
6839
6922
|
var MAX_VIDEO_FRAME_DURATION = 9e4;
|
|
6840
6923
|
var MAX_DTS_DELTA_WITH_NEXT_CHUNK = 9e4 / 2;
|
|
6924
|
+
var LARGE_AV_FIRST_FRAME_FORCE_FIX_THRESHOLD = 9e4 * 5;
|
|
6841
6925
|
var TsFixer = /* @__PURE__ */ function() {
|
|
6842
|
-
function TsFixer2(videoTrack, audioTrack, metadataTrack) {
|
|
6926
|
+
function TsFixer2(videoTrack, audioTrack, metadataTrack, fixerConfig) {
|
|
6843
6927
|
_classCallCheck(this, TsFixer2);
|
|
6844
6928
|
this.videoTrack = videoTrack;
|
|
6845
6929
|
this.audioTrack = audioTrack;
|
|
6846
6930
|
this.metadataTrack = metadataTrack;
|
|
6847
6931
|
this._baseDts = -1;
|
|
6932
|
+
this._baseVideoDts = -1;
|
|
6933
|
+
this._baseAudioDts = -1;
|
|
6848
6934
|
this._baseDtsInited = false;
|
|
6849
6935
|
this._audioNextPts = void 0;
|
|
6850
6936
|
this._videoNextDts = void 0;
|
|
@@ -6853,6 +6939,8 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
6853
6939
|
this._lastAudioExceptionGapDot = 0;
|
|
6854
6940
|
this._lastAudioExceptionOverlapDot = 0;
|
|
6855
6941
|
this._lastAudioExceptionLargeGapDot = 0;
|
|
6942
|
+
this._needForceFixLargeGap = fixerConfig === null || fixerConfig === void 0 ? void 0 : fixerConfig.forceFixLargeGap;
|
|
6943
|
+
this._largeGapThreshold = (fixerConfig === null || fixerConfig === void 0 ? void 0 : fixerConfig.largeGapThreshold) || LARGE_AV_FIRST_FRAME_FORCE_FIX_THRESHOLD;
|
|
6856
6944
|
}
|
|
6857
6945
|
_createClass(TsFixer2, [{
|
|
6858
6946
|
key: "fix",
|
|
@@ -6880,10 +6968,16 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
6880
6968
|
if (discontinuity) {
|
|
6881
6969
|
this._calculateBaseDts(this.audioTrack, this.videoTrack);
|
|
6882
6970
|
this._baseDts -= startTime;
|
|
6971
|
+
this._baseAudioDts -= startTime;
|
|
6972
|
+
this._baseVideoDts -= startTime;
|
|
6883
6973
|
}
|
|
6884
6974
|
if (!contiguous) {
|
|
6885
6975
|
this._videoNextDts = vaDelta > 0 ? startTime + vaDelta : startTime;
|
|
6886
6976
|
this._audioNextPts = vaDelta > 0 ? startTime : startTime - vaDelta;
|
|
6977
|
+
if (this._needForceFixLargeGap) {
|
|
6978
|
+
this._videoNextDts = 0;
|
|
6979
|
+
this._audioNextPts = 0;
|
|
6980
|
+
}
|
|
6887
6981
|
var vDeltaToNextDts = firstVideoSample ? firstVideoSample.dts - this._baseDts - this._videoNextDts : 0;
|
|
6888
6982
|
var aDeltaToNextDts = firstAudioSample ? firstAudioSample.pts - this._baseDts - this._audioNextPts : 0;
|
|
6889
6983
|
if (Math.abs(vDeltaToNextDts || aDeltaToNextDts) > MAX_VIDEO_FRAME_DURATION) {
|
|
@@ -6916,8 +7010,8 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
6916
7010
|
if (!samples.length)
|
|
6917
7011
|
return;
|
|
6918
7012
|
samples.forEach(function(x) {
|
|
6919
|
-
x.dts -= _this2._baseDts;
|
|
6920
|
-
x.pts -= _this2._baseDts;
|
|
7013
|
+
x.dts -= _this2._needForceFixLargeGap ? _this2._baseVideoDts : _this2._baseDts;
|
|
7014
|
+
x.pts -= _this2._needForceFixLargeGap ? _this2._baseVideoDts : _this2._baseDts;
|
|
6921
7015
|
});
|
|
6922
7016
|
if (this._videoNextDts === void 0) {
|
|
6923
7017
|
var samp0 = samples[0];
|
|
@@ -7010,7 +7104,7 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7010
7104
|
if (!samples.length)
|
|
7011
7105
|
return;
|
|
7012
7106
|
samples.forEach(function(x) {
|
|
7013
|
-
x.pts -= _this3._baseDts;
|
|
7107
|
+
x.pts -= _this3._needForceFixLargeGap ? _this3._baseAudioDts : _this3._baseDts;
|
|
7014
7108
|
x.dts = x.pts;
|
|
7015
7109
|
});
|
|
7016
7110
|
this._doFixAudioInternal(audioTrack, samples, 9e4);
|
|
@@ -7027,12 +7121,15 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7027
7121
|
var videoBaseDts = Infinity;
|
|
7028
7122
|
if (audioSamps.length) {
|
|
7029
7123
|
audioTrack.baseDts = audioBasePts = audioSamps[0].pts;
|
|
7124
|
+
this._baseAudioDts = audioBasePts;
|
|
7030
7125
|
}
|
|
7031
7126
|
if (videoSamps.length) {
|
|
7032
7127
|
videoTrack.baseDts = videoBaseDts = videoSamps[0].dts;
|
|
7128
|
+
this._baseVideoDts = videoBaseDts;
|
|
7033
7129
|
}
|
|
7034
7130
|
this._baseDts = Math.min(audioBasePts, videoBaseDts);
|
|
7035
7131
|
var delta = videoBaseDts - audioBasePts;
|
|
7132
|
+
var largeGap = false;
|
|
7036
7133
|
if (Number.isFinite(delta) && Math.abs(delta) > LARGE_AV_FIRST_FRAME_GAP) {
|
|
7037
7134
|
videoTrack.warnings.push({
|
|
7038
7135
|
type: WarningType.LARGE_AV_SHIFT,
|
|
@@ -7042,6 +7139,16 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7042
7139
|
delta
|
|
7043
7140
|
});
|
|
7044
7141
|
}
|
|
7142
|
+
if (Number.isFinite(delta) && Math.abs(delta) > this._largeGapThreshold * MAX_SILENT_FRAME_DURATION) {
|
|
7143
|
+
largeGap = true;
|
|
7144
|
+
}
|
|
7145
|
+
if (!this._baseDtsInited) {
|
|
7146
|
+
if (largeGap && this._needForceFixLargeGap) {
|
|
7147
|
+
this._needForceFixLargeGap = true;
|
|
7148
|
+
} else {
|
|
7149
|
+
this._needForceFixLargeGap = false;
|
|
7150
|
+
}
|
|
7151
|
+
}
|
|
7045
7152
|
this._baseDtsInited = true;
|
|
7046
7153
|
return true;
|
|
7047
7154
|
}
|
|
@@ -7135,6 +7242,7 @@ var TsFixer = /* @__PURE__ */ function() {
|
|
|
7135
7242
|
var logger$4 = new Logger$1("TsDemuxer");
|
|
7136
7243
|
var TsDemuxer = /* @__PURE__ */ function() {
|
|
7137
7244
|
function TsDemuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
7245
|
+
var fixerConfig = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
|
|
7138
7246
|
_classCallCheck(this, TsDemuxer2);
|
|
7139
7247
|
_defineProperty(this, "_pmtId", -1);
|
|
7140
7248
|
_defineProperty(this, "_remainingPacketData", null);
|
|
@@ -7144,7 +7252,7 @@ var TsDemuxer = /* @__PURE__ */ function() {
|
|
|
7144
7252
|
this.videoTrack = videoTrack || new VideoTrack();
|
|
7145
7253
|
this.audioTrack = audioTrack || new AudioTrack();
|
|
7146
7254
|
this.metadataTrack = metadataTrack || new MetadataTrack();
|
|
7147
|
-
this._fixer = new TsFixer(this.videoTrack, this.audioTrack, this.metadataTrack);
|
|
7255
|
+
this._fixer = new TsFixer(this.videoTrack, this.audioTrack, this.metadataTrack, fixerConfig);
|
|
7148
7256
|
}
|
|
7149
7257
|
_createClass(TsDemuxer2, [{
|
|
7150
7258
|
key: "demux",
|
|
@@ -7491,6 +7599,207 @@ var TsDemuxer = /* @__PURE__ */ function() {
|
|
|
7491
7599
|
}]);
|
|
7492
7600
|
return TsDemuxer2;
|
|
7493
7601
|
}();
|
|
7602
|
+
var ByteReader = /* @__PURE__ */ function() {
|
|
7603
|
+
function ByteReader2(buf, offset, len) {
|
|
7604
|
+
_classCallCheck(this, ByteReader2);
|
|
7605
|
+
this.dv = new DataView(buf);
|
|
7606
|
+
this.start = this.offset = offset || this.dv.byteOffset;
|
|
7607
|
+
this.end = len ? this.start + len : this.start + this.dv.byteLength;
|
|
7608
|
+
}
|
|
7609
|
+
_createClass(ByteReader2, [{
|
|
7610
|
+
key: "buffer",
|
|
7611
|
+
get: function get() {
|
|
7612
|
+
return this.dv.buffer;
|
|
7613
|
+
}
|
|
7614
|
+
}, {
|
|
7615
|
+
key: "unreadLength",
|
|
7616
|
+
get: function get() {
|
|
7617
|
+
return Math.max(this.end - this.offset, 0);
|
|
7618
|
+
}
|
|
7619
|
+
}, {
|
|
7620
|
+
key: "size",
|
|
7621
|
+
get: function get() {
|
|
7622
|
+
return this.end - this.start;
|
|
7623
|
+
}
|
|
7624
|
+
}, {
|
|
7625
|
+
key: "readFloat",
|
|
7626
|
+
value: function readFloat(byteNum) {
|
|
7627
|
+
var val = 0;
|
|
7628
|
+
switch (byteNum) {
|
|
7629
|
+
case 4:
|
|
7630
|
+
val = this.dv.getFloat32(this.offset);
|
|
7631
|
+
break;
|
|
7632
|
+
case 8:
|
|
7633
|
+
val = this.dv.getFloat64(this.offset);
|
|
7634
|
+
break;
|
|
7635
|
+
default:
|
|
7636
|
+
throw new Error("read ".concat(byteNum, "-byte float is not supported"));
|
|
7637
|
+
}
|
|
7638
|
+
this.offset += byteNum;
|
|
7639
|
+
return val;
|
|
7640
|
+
}
|
|
7641
|
+
}, {
|
|
7642
|
+
key: "back",
|
|
7643
|
+
value: function back(byteNum) {
|
|
7644
|
+
this.offset -= byteNum;
|
|
7645
|
+
}
|
|
7646
|
+
}, {
|
|
7647
|
+
key: "skip",
|
|
7648
|
+
value: function skip(byteNum) {
|
|
7649
|
+
this.offset += byteNum;
|
|
7650
|
+
}
|
|
7651
|
+
}, {
|
|
7652
|
+
key: "readInt",
|
|
7653
|
+
value: function readInt(byteNum) {
|
|
7654
|
+
var offset = this.offset;
|
|
7655
|
+
this.offset += byteNum;
|
|
7656
|
+
switch (byteNum) {
|
|
7657
|
+
case 1:
|
|
7658
|
+
return this.dv.getInt8(offset);
|
|
7659
|
+
case 2:
|
|
7660
|
+
return this.dv.getInt16(offset);
|
|
7661
|
+
case 4:
|
|
7662
|
+
return this.dv.getInt32(offset);
|
|
7663
|
+
default:
|
|
7664
|
+
throw new Error("read ".concat(byteNum, "-byte integers is not supported"));
|
|
7665
|
+
}
|
|
7666
|
+
}
|
|
7667
|
+
}, {
|
|
7668
|
+
key: "read",
|
|
7669
|
+
value: function read(byteNum) {
|
|
7670
|
+
var offset = this.offset;
|
|
7671
|
+
this.offset += byteNum;
|
|
7672
|
+
switch (byteNum) {
|
|
7673
|
+
case 1:
|
|
7674
|
+
return this.dv.getUint8(offset);
|
|
7675
|
+
case 2:
|
|
7676
|
+
return this.dv.getUint16(offset);
|
|
7677
|
+
case 3:
|
|
7678
|
+
return (this.dv.getUint16(offset) << 8) + this.dv.getUint8(offset + 2);
|
|
7679
|
+
case 4:
|
|
7680
|
+
return this.dv.getUint32(offset);
|
|
7681
|
+
default:
|
|
7682
|
+
this.back(byteNum - 4);
|
|
7683
|
+
return this.read(byteNum - 4) + this.dv.getUint32(offset) * Math.pow(256, byteNum - 4);
|
|
7684
|
+
}
|
|
7685
|
+
}
|
|
7686
|
+
}, {
|
|
7687
|
+
key: "write",
|
|
7688
|
+
value: function write(byteNum, val) {
|
|
7689
|
+
var offset = this.offset;
|
|
7690
|
+
this.offset += byteNum;
|
|
7691
|
+
switch (byteNum) {
|
|
7692
|
+
case 1:
|
|
7693
|
+
return this.dv.setUint8(offset, val);
|
|
7694
|
+
case 2:
|
|
7695
|
+
return this.dv.setUint16(offset, val);
|
|
7696
|
+
case 3:
|
|
7697
|
+
return this.dv.setUint8(offset, val >>> 16), this.dv.setUint16(offset + 1, 65535 & val);
|
|
7698
|
+
case 4:
|
|
7699
|
+
return this.dv.setUint32(offset, val);
|
|
7700
|
+
default:
|
|
7701
|
+
throw new Error("write ".concat(byteNum, "-byte integers is not supported"));
|
|
7702
|
+
}
|
|
7703
|
+
}
|
|
7704
|
+
}, {
|
|
7705
|
+
key: "readToBuffer",
|
|
7706
|
+
value: function readToBuffer(len) {
|
|
7707
|
+
var buffer;
|
|
7708
|
+
if (this.offset || len) {
|
|
7709
|
+
buffer = this.dv.buffer.slice(this.offset, len ? this.offset + len : this.end);
|
|
7710
|
+
} else {
|
|
7711
|
+
buffer = this.dv.buffer;
|
|
7712
|
+
}
|
|
7713
|
+
this.offset += buffer.byteLength;
|
|
7714
|
+
return buffer;
|
|
7715
|
+
}
|
|
7716
|
+
}, {
|
|
7717
|
+
key: "readToUint8",
|
|
7718
|
+
value: function readToUint8(len) {
|
|
7719
|
+
var uint8 = new Uint8Array(this.dv.buffer, this.offset, len || this.unreadLength);
|
|
7720
|
+
this.offset += uint8.byteLength;
|
|
7721
|
+
return uint8;
|
|
7722
|
+
}
|
|
7723
|
+
}, {
|
|
7724
|
+
key: "readString",
|
|
7725
|
+
value: function readString(len) {
|
|
7726
|
+
var i = 0, str = "";
|
|
7727
|
+
for (; i < len; i++) {
|
|
7728
|
+
str += String.fromCharCode(this.dv.getUint8(this.offset));
|
|
7729
|
+
this.offset++;
|
|
7730
|
+
}
|
|
7731
|
+
return str;
|
|
7732
|
+
}
|
|
7733
|
+
}], [{
|
|
7734
|
+
key: "fromUint8",
|
|
7735
|
+
value: function fromUint8(uint8) {
|
|
7736
|
+
return new ByteReader2(uint8.buffer, uint8.byteOffset, uint8.byteLength);
|
|
7737
|
+
}
|
|
7738
|
+
}, {
|
|
7739
|
+
key: "concatUint8s",
|
|
7740
|
+
value: function concatUint8s(args) {
|
|
7741
|
+
var uint8 = new Uint8Array(args.reduce(function(ret, v) {
|
|
7742
|
+
return ret + v.byteLength;
|
|
7743
|
+
}, 0));
|
|
7744
|
+
var offset = 0;
|
|
7745
|
+
args.forEach(function(v) {
|
|
7746
|
+
uint8.set(v, offset);
|
|
7747
|
+
offset += v.byteLength;
|
|
7748
|
+
});
|
|
7749
|
+
return uint8;
|
|
7750
|
+
}
|
|
7751
|
+
}, {
|
|
7752
|
+
key: "concatUint8",
|
|
7753
|
+
value: function concatUint8() {
|
|
7754
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
7755
|
+
args[_key] = arguments[_key];
|
|
7756
|
+
}
|
|
7757
|
+
return this.concatUint8s(args);
|
|
7758
|
+
}
|
|
7759
|
+
}]);
|
|
7760
|
+
return ByteReader2;
|
|
7761
|
+
}();
|
|
7762
|
+
var BitReader = /* @__PURE__ */ function() {
|
|
7763
|
+
function BitReader2(val, size) {
|
|
7764
|
+
_classCallCheck(this, BitReader2);
|
|
7765
|
+
this.offset = 0;
|
|
7766
|
+
this.val = val;
|
|
7767
|
+
this.size = size;
|
|
7768
|
+
}
|
|
7769
|
+
_createClass(BitReader2, [{
|
|
7770
|
+
key: "skip",
|
|
7771
|
+
value: function skip(len) {
|
|
7772
|
+
this.offset += len;
|
|
7773
|
+
}
|
|
7774
|
+
}, {
|
|
7775
|
+
key: "read",
|
|
7776
|
+
value: function read(len) {
|
|
7777
|
+
var unreadLength = this.size - this.offset - len;
|
|
7778
|
+
if (unreadLength >= 0) {
|
|
7779
|
+
var bits = 0, i = 0;
|
|
7780
|
+
this.offset += len;
|
|
7781
|
+
if (this.size > 31) {
|
|
7782
|
+
for (; i < len; i++) {
|
|
7783
|
+
bits += Math.pow(2, i);
|
|
7784
|
+
}
|
|
7785
|
+
return this.val / Math.pow(2, unreadLength) & bits;
|
|
7786
|
+
} else {
|
|
7787
|
+
for (; i < len; i++) {
|
|
7788
|
+
bits += 1 << i;
|
|
7789
|
+
}
|
|
7790
|
+
return this.val >>> unreadLength & bits;
|
|
7791
|
+
}
|
|
7792
|
+
}
|
|
7793
|
+
throw new Error("the number of the read operation exceeds the total length limit of bits");
|
|
7794
|
+
}
|
|
7795
|
+
}], [{
|
|
7796
|
+
key: "fromByte",
|
|
7797
|
+
value: function fromByte(byte, len) {
|
|
7798
|
+
return new BitReader2(byte.read(len), len << 3);
|
|
7799
|
+
}
|
|
7800
|
+
}]);
|
|
7801
|
+
return BitReader2;
|
|
7802
|
+
}();
|
|
7494
7803
|
var MP4Parser = /* @__PURE__ */ function() {
|
|
7495
7804
|
function MP4Parser2() {
|
|
7496
7805
|
_classCallCheck(this, MP4Parser2);
|
|
@@ -7648,18 +7957,36 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7648
7957
|
key: "tkhd",
|
|
7649
7958
|
value: function tkhd(box) {
|
|
7650
7959
|
return parseBox(box, true, function(ret, data) {
|
|
7651
|
-
var
|
|
7960
|
+
var byte = ByteReader.fromUint8(data);
|
|
7652
7961
|
if (ret.version === 1) {
|
|
7653
|
-
|
|
7654
|
-
|
|
7655
|
-
|
|
7962
|
+
byte.read(8);
|
|
7963
|
+
byte.read(8);
|
|
7964
|
+
ret.trackId = byte.read(4);
|
|
7965
|
+
byte.read(4);
|
|
7966
|
+
ret.duration = byte.read(8);
|
|
7656
7967
|
} else {
|
|
7657
|
-
|
|
7658
|
-
|
|
7659
|
-
|
|
7968
|
+
byte.read(4);
|
|
7969
|
+
byte.read(4);
|
|
7970
|
+
ret.trackId = byte.read(4);
|
|
7971
|
+
byte.read(4);
|
|
7972
|
+
ret.duration = byte.read(4);
|
|
7973
|
+
}
|
|
7974
|
+
byte.skip(16);
|
|
7975
|
+
ret.matrix = [];
|
|
7976
|
+
for (var i = 0; i < 36; i++) {
|
|
7977
|
+
ret.matrix.push(byte.read(1));
|
|
7978
|
+
}
|
|
7979
|
+
byte.back(36);
|
|
7980
|
+
var caculatedMatrix = [];
|
|
7981
|
+
for (var _i = 0, int32; _i < 3; _i++) {
|
|
7982
|
+
caculatedMatrix.push(combineToFloat(byte.readInt(2), byte.readInt(2)));
|
|
7983
|
+
caculatedMatrix.push(combineToFloat(byte.readInt(2), byte.readInt(2)));
|
|
7984
|
+
int32 = byte.readInt(4);
|
|
7985
|
+
caculatedMatrix.push(combineToFloat(int32 >> 30, int32 & 1073741823));
|
|
7660
7986
|
}
|
|
7661
|
-
ret.
|
|
7662
|
-
ret.
|
|
7987
|
+
ret.rotation = toDegree(caculatedMatrix);
|
|
7988
|
+
ret.width = byte.read(4);
|
|
7989
|
+
ret.height = byte.read(4);
|
|
7663
7990
|
});
|
|
7664
7991
|
}
|
|
7665
7992
|
}, {
|
|
@@ -7789,7 +8116,7 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7789
8116
|
if (ret.version > 0) {
|
|
7790
8117
|
var numKeyIds = readBig32(data, start);
|
|
7791
8118
|
start += 4;
|
|
7792
|
-
for (var
|
|
8119
|
+
for (var _i2 = 0; _i2 < ("" + numKeyIds).length; _i2++) {
|
|
7793
8120
|
for (var j = 0; j < 16; j++) {
|
|
7794
8121
|
var keyId = data[start];
|
|
7795
8122
|
start += 1;
|
|
@@ -7812,6 +8139,8 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7812
8139
|
ret.entryCount = readBig32(data);
|
|
7813
8140
|
ret.entries = MP4Parser2.findBox(data.subarray(4), [], start + 4).map(function(b) {
|
|
7814
8141
|
switch (b.type) {
|
|
8142
|
+
case "av01":
|
|
8143
|
+
return MP4Parser2.av01(b);
|
|
7815
8144
|
case "avc1":
|
|
7816
8145
|
case "avc2":
|
|
7817
8146
|
case "avc3":
|
|
@@ -7891,6 +8220,69 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7891
8220
|
}
|
|
7892
8221
|
});
|
|
7893
8222
|
}
|
|
8223
|
+
}, {
|
|
8224
|
+
key: "colr",
|
|
8225
|
+
value: function colr(box) {
|
|
8226
|
+
return parseBox(box, false, function(ret, data) {
|
|
8227
|
+
var byte = ByteReader.fromUint8(data);
|
|
8228
|
+
ret.data = box.data;
|
|
8229
|
+
ret.colorType = byte.readString(4);
|
|
8230
|
+
if (ret.colorType === "nclx") {
|
|
8231
|
+
ret.colorPrimaries = byte.read(2);
|
|
8232
|
+
ret.transferCharacteristics = byte.read(2);
|
|
8233
|
+
ret.matrixCoefficients = byte.read(2);
|
|
8234
|
+
ret.fullRangeFlag = byte.read(1) >> 7;
|
|
8235
|
+
} else if (ret.colorType === "rICC" || ret.colorType === "prof") {
|
|
8236
|
+
ret.iccProfile = data.readToUint8();
|
|
8237
|
+
}
|
|
8238
|
+
});
|
|
8239
|
+
}
|
|
8240
|
+
}, {
|
|
8241
|
+
key: "av01",
|
|
8242
|
+
value: function av01(box) {
|
|
8243
|
+
return parseBox(box, false, function(ret, data, start) {
|
|
8244
|
+
var bodyStart = parseVisualSampleEntry(ret, data);
|
|
8245
|
+
var bodyData = data.subarray(bodyStart);
|
|
8246
|
+
start += bodyStart;
|
|
8247
|
+
ret.av1C = MP4Parser2.av1C(MP4Parser2.findBox(bodyData, ["av1C"], start)[0]);
|
|
8248
|
+
ret.colr = MP4Parser2.colr(MP4Parser2.findBox(bodyData, ["colr"], start)[0]);
|
|
8249
|
+
});
|
|
8250
|
+
}
|
|
8251
|
+
}, {
|
|
8252
|
+
key: "av1C",
|
|
8253
|
+
value: function av1C(box) {
|
|
8254
|
+
return parseBox(box, false, function(ret, data) {
|
|
8255
|
+
ret.data = box.data;
|
|
8256
|
+
var byte = ByteReader.fromUint8(data);
|
|
8257
|
+
var bit = BitReader.fromByte(byte, 4);
|
|
8258
|
+
ret.marker = bit.read(1);
|
|
8259
|
+
ret.version = bit.read(7);
|
|
8260
|
+
ret.seqProfile = bit.read(3);
|
|
8261
|
+
ret.seqLevelIdx0 = bit.read(5);
|
|
8262
|
+
ret.seqTier0 = bit.read(1);
|
|
8263
|
+
ret.highBitdepth = bit.read(1);
|
|
8264
|
+
ret.twelveBit = bit.read(1);
|
|
8265
|
+
ret.monochrome = bit.read(1);
|
|
8266
|
+
ret.chromaSubsamplingX = bit.read(1);
|
|
8267
|
+
ret.chromaSubsamplingY = bit.read(1);
|
|
8268
|
+
ret.chromaSamplePosition = bit.read(2);
|
|
8269
|
+
ret.reserved = bit.read(3);
|
|
8270
|
+
ret.initialPresentationDelayPresent = bit.read(1);
|
|
8271
|
+
if (ret.initialPresentationDelayPresent) {
|
|
8272
|
+
ret.initialPresentationDelayMinusOne = bit.read(4);
|
|
8273
|
+
} else {
|
|
8274
|
+
ret.initialPresentationDelayMinusOne = 0;
|
|
8275
|
+
}
|
|
8276
|
+
ret.configOBUs = byte.readToUint8();
|
|
8277
|
+
var bitdepth;
|
|
8278
|
+
if (ret.seqLevelIdx0 === 2 && ret.highBitdepth === 1) {
|
|
8279
|
+
bitdepth = ret.twelveBit === 1 ? "12" : "10";
|
|
8280
|
+
} else if (ret.seqProfile <= 2) {
|
|
8281
|
+
bitdepth = ret.highBitdepth === 1 ? "10" : "08";
|
|
8282
|
+
}
|
|
8283
|
+
ret.codec = ["av01", ret.seqProfile, (ret.seqLevelIdx0 < 10 ? "0" + ret.seqLevelIdx0 : ret.seqLevelIdx0) + (ret.seqTier0 ? "H" : "M"), bitdepth].join(".");
|
|
8284
|
+
});
|
|
8285
|
+
}
|
|
7894
8286
|
}, {
|
|
7895
8287
|
key: "avc1",
|
|
7896
8288
|
value: function avc1(box) {
|
|
@@ -7925,7 +8317,7 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
7925
8317
|
ret.ppsLength = data[start];
|
|
7926
8318
|
start += 1;
|
|
7927
8319
|
ret.pps = [];
|
|
7928
|
-
for (var
|
|
8320
|
+
for (var _i3 = 0; _i3 < ret.ppsLength; _i3++) {
|
|
7929
8321
|
var _size = readBig16(data, start);
|
|
7930
8322
|
start += 2;
|
|
7931
8323
|
ret.pps.push(data.subarray(start, start += _size));
|
|
@@ -8094,7 +8486,7 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
8094
8486
|
start += 8;
|
|
8095
8487
|
}
|
|
8096
8488
|
} else {
|
|
8097
|
-
for (var
|
|
8489
|
+
for (var _i4 = 0; _i4 < entryCount; _i4++) {
|
|
8098
8490
|
entries.push({
|
|
8099
8491
|
count: readBig32(data, start),
|
|
8100
8492
|
offset: -(~readBig32(data, start + 4) + 1)
|
|
@@ -8316,13 +8708,20 @@ var MP4Parser = /* @__PURE__ */ function() {
|
|
|
8316
8708
|
v.mvhdTimecale = moov.mvhd.timescale;
|
|
8317
8709
|
v.timescale = v.formatTimescale = vTrack.mdia.mdhd.timescale;
|
|
8318
8710
|
v.duration = vTrack.mdia.mdhd.duration || v.mvhdDurtion / v.mvhdTimecale * v.timescale;
|
|
8711
|
+
v.rotation = vTrack.tkhd.rotation;
|
|
8712
|
+
v.matrix = vTrack.tkhd.matrix;
|
|
8319
8713
|
var e1 = vTrack.mdia.minf.stbl.stsd.entries[0];
|
|
8320
8714
|
v.width = e1.width;
|
|
8321
8715
|
v.height = e1.height;
|
|
8322
8716
|
if (e1.pasp) {
|
|
8323
8717
|
v.sarRatio = [e1.pasp.hSpacing, e1.pasp.vSpacing];
|
|
8324
8718
|
}
|
|
8325
|
-
if (e1.
|
|
8719
|
+
if (e1.av1C) {
|
|
8720
|
+
v.codecType = VideoCodecType.AV1;
|
|
8721
|
+
v.codec = e1.av1C.codec;
|
|
8722
|
+
v.av1C = e1.av1C.data;
|
|
8723
|
+
v.colr = e1.colr.data;
|
|
8724
|
+
} else if (e1.hvcC) {
|
|
8326
8725
|
v.codecType = VideoCodecType.HEVC;
|
|
8327
8726
|
v.codec = e1.hvcC.codec;
|
|
8328
8727
|
v.vps = e1.hvcC.vps;
|
|
@@ -8641,8 +9040,9 @@ function parseAudioSampleEntry(ret, data) {
|
|
|
8641
9040
|
function parseBox(box, isFullBox, parse3) {
|
|
8642
9041
|
if (!box)
|
|
8643
9042
|
return;
|
|
8644
|
-
if (box.size !== box.data.length)
|
|
9043
|
+
if (box.size !== box.data.length) {
|
|
8645
9044
|
throw new Error("box ".concat(box.type, " size !== data.length"));
|
|
9045
|
+
}
|
|
8646
9046
|
var ret = {
|
|
8647
9047
|
start: box.start,
|
|
8648
9048
|
size: box.size,
|
|
@@ -8681,11 +9081,167 @@ var toHex = function toHex2() {
|
|
|
8681
9081
|
var FMP4Demuxer = /* @__PURE__ */ function() {
|
|
8682
9082
|
function FMP4Demuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
8683
9083
|
_classCallCheck(this, FMP4Demuxer2);
|
|
9084
|
+
_defineProperty(this, "__loadedMoofWraps", []);
|
|
9085
|
+
_defineProperty(this, "__lastRemainData", null);
|
|
9086
|
+
_defineProperty(this, "__lastRemainDataStart", 0);
|
|
9087
|
+
_defineProperty(this, "__nextMoofStart", -1);
|
|
8684
9088
|
this.videoTrack = videoTrack || new VideoTrack();
|
|
8685
9089
|
this.audioTrack = audioTrack || new AudioTrack();
|
|
8686
9090
|
this.metadataTrack = metadataTrack || new MetadataTrack();
|
|
8687
9091
|
}
|
|
8688
9092
|
_createClass(FMP4Demuxer2, [{
|
|
9093
|
+
key: "demuxPart",
|
|
9094
|
+
value: function demuxPart(partData, partDataStart, moov) {
|
|
9095
|
+
var _this = this;
|
|
9096
|
+
var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
|
|
9097
|
+
var videoExist = videoTrack.exist();
|
|
9098
|
+
var audioExist = audioTrack.exist();
|
|
9099
|
+
var isAV01 = /av01/.test(videoTrack.codec);
|
|
9100
|
+
videoTrack.samples = [];
|
|
9101
|
+
audioTrack.samples = [];
|
|
9102
|
+
var data = partData;
|
|
9103
|
+
var dataStart = partDataStart;
|
|
9104
|
+
if (this.__lastRemainData) {
|
|
9105
|
+
var lastRemainDataEnd = this.__lastRemainDataStart + this.__lastRemainData.byteLength;
|
|
9106
|
+
var continuous = partDataStart <= lastRemainDataEnd && partDataStart > this.__lastRemainDataStart && partDataStart + partData.byteLength > lastRemainDataEnd;
|
|
9107
|
+
if (continuous) {
|
|
9108
|
+
var noDuplicateData = partData.subarray(this.__lastRemainData.byteLength + this.__lastRemainDataStart - partDataStart);
|
|
9109
|
+
data = concatUint8Array(this.__lastRemainData, noDuplicateData);
|
|
9110
|
+
dataStart = this.__lastRemainDataStart;
|
|
9111
|
+
this.__lastRemainData = null;
|
|
9112
|
+
} else {
|
|
9113
|
+
this.__lastRemainData = null;
|
|
9114
|
+
this.__lastRemainDataStart = 0;
|
|
9115
|
+
this.__nextMoofStart = -1;
|
|
9116
|
+
}
|
|
9117
|
+
}
|
|
9118
|
+
if (!moov) {
|
|
9119
|
+
var moovBox = MP4Parser.findBox(data, ["moov"])[0];
|
|
9120
|
+
if (!moovBox)
|
|
9121
|
+
throw new Error("cannot found moov box");
|
|
9122
|
+
moov = MP4Parser.moov(moovBox);
|
|
9123
|
+
}
|
|
9124
|
+
if (data) {
|
|
9125
|
+
var dataEnd = dataStart + data.byteLength;
|
|
9126
|
+
if (!videoExist && !audioExist) {
|
|
9127
|
+
MP4Parser.moovToTrack(moov, videoTrack, audioTrack);
|
|
9128
|
+
}
|
|
9129
|
+
var moofBoxes = [];
|
|
9130
|
+
if (this.__nextMoofStart < 0) {
|
|
9131
|
+
MP4Parser.findBox(data, ["moof"], dataStart).forEach(function(v) {
|
|
9132
|
+
return moofBoxes.push(v);
|
|
9133
|
+
});
|
|
9134
|
+
} else if (this.__nextMoofStart >= dataStart && this.__nextMoofStart <= dataEnd - 8) {
|
|
9135
|
+
MP4Parser.findBox(data.subarray(this.__nextMoofStart - dataStart), ["moof"], this.__nextMoofStart).forEach(function(v) {
|
|
9136
|
+
return moofBoxes.push(v);
|
|
9137
|
+
});
|
|
9138
|
+
}
|
|
9139
|
+
moofBoxes.filter(function(moofBox) {
|
|
9140
|
+
return moofBox.size <= moofBox.data.length;
|
|
9141
|
+
}).forEach(function(moofBox) {
|
|
9142
|
+
var moof = MP4Parser.moof(moofBox);
|
|
9143
|
+
_this.__nextMoofStart = moof.start + Math.max.apply(Math, _toConsumableArray(moof.traf.map(function(v) {
|
|
9144
|
+
return v.trun.samples.reduce(function(ret, w) {
|
|
9145
|
+
return ret + w.size;
|
|
9146
|
+
}, v.trun.dataOffset || 0);
|
|
9147
|
+
})));
|
|
9148
|
+
_this.__loadedMoofWraps.push({
|
|
9149
|
+
start: moof.start,
|
|
9150
|
+
nextMoofStart: _this.__nextMoofStart,
|
|
9151
|
+
moof
|
|
9152
|
+
});
|
|
9153
|
+
_this.__loadedMoofWraps.sort(function(p, n) {
|
|
9154
|
+
return p.start - n.start;
|
|
9155
|
+
});
|
|
9156
|
+
});
|
|
9157
|
+
var _iterator = _createForOfIteratorHelper(this.__loadedMoofWraps), _step;
|
|
9158
|
+
try {
|
|
9159
|
+
var _loop = function _loop2() {
|
|
9160
|
+
var moofWrap = _step.value;
|
|
9161
|
+
if (moofWrap.start > dataEnd || moofWrap.nextMoofStart < dataStart) {
|
|
9162
|
+
return "continue";
|
|
9163
|
+
}
|
|
9164
|
+
var moofStart = moofWrap.start;
|
|
9165
|
+
var tracks = MP4Parser.moofToSamples(moofWrap.moof, videoTrack, audioTrack);
|
|
9166
|
+
var videoBaseMediaDecodeTime = videoTrack.baseMediaDecodeTime;
|
|
9167
|
+
var audioBaseMediaDecodeTime = audioTrack.baseMediaDecodeTime;
|
|
9168
|
+
var nalSize;
|
|
9169
|
+
Object.keys(tracks).forEach(function(k) {
|
|
9170
|
+
if (videoTrack.id == k) {
|
|
9171
|
+
tracks[k].some(function(x) {
|
|
9172
|
+
var xStart = x.offset += moofStart;
|
|
9173
|
+
if (xStart < dataStart) {
|
|
9174
|
+
return;
|
|
9175
|
+
}
|
|
9176
|
+
if (xStart + x.size > dataEnd) {
|
|
9177
|
+
return true;
|
|
9178
|
+
}
|
|
9179
|
+
var sample = new VideoSample((x.pts || x.dts) + videoBaseMediaDecodeTime, x.dts + videoBaseMediaDecodeTime);
|
|
9180
|
+
sample.duration = x.duration;
|
|
9181
|
+
sample.gopId = x.gopId;
|
|
9182
|
+
if (x.keyframe)
|
|
9183
|
+
sample.setToKeyframe();
|
|
9184
|
+
var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
|
|
9185
|
+
sample.data = sampleData;
|
|
9186
|
+
if (!isAV01) {
|
|
9187
|
+
var start = 0;
|
|
9188
|
+
var len = sampleData.length - 1;
|
|
9189
|
+
while (start < len) {
|
|
9190
|
+
nalSize = readBig32(sampleData, start);
|
|
9191
|
+
start += 4;
|
|
9192
|
+
sample.units.push(sampleData.subarray(start, start + nalSize));
|
|
9193
|
+
start += nalSize;
|
|
9194
|
+
}
|
|
9195
|
+
}
|
|
9196
|
+
_this.__lastRemainDataStart = xStart + x.size;
|
|
9197
|
+
videoTrack.samples.push(sample);
|
|
9198
|
+
});
|
|
9199
|
+
} else if (audioTrack.id == k) {
|
|
9200
|
+
tracks[k].some(function(x) {
|
|
9201
|
+
var xStart = x.offset + moofStart;
|
|
9202
|
+
if (xStart < dataStart) {
|
|
9203
|
+
return;
|
|
9204
|
+
}
|
|
9205
|
+
if (xStart + x.size > dataEnd) {
|
|
9206
|
+
return true;
|
|
9207
|
+
}
|
|
9208
|
+
var sampleData = data.subarray(xStart - dataStart, xStart - dataStart + x.size);
|
|
9209
|
+
audioTrack.samples.push(new AudioSample(x.dts + audioBaseMediaDecodeTime, sampleData, x.duration));
|
|
9210
|
+
_this.__lastRemainDataStart = xStart + x.size;
|
|
9211
|
+
});
|
|
9212
|
+
}
|
|
9213
|
+
});
|
|
9214
|
+
};
|
|
9215
|
+
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
9216
|
+
var _ret = _loop();
|
|
9217
|
+
if (_ret === "continue")
|
|
9218
|
+
continue;
|
|
9219
|
+
}
|
|
9220
|
+
} catch (err) {
|
|
9221
|
+
_iterator.e(err);
|
|
9222
|
+
} finally {
|
|
9223
|
+
_iterator.f();
|
|
9224
|
+
}
|
|
9225
|
+
}
|
|
9226
|
+
if (this.__lastRemainDataStart > dataStart && this.__lastRemainDataStart < data.byteLength + dataStart) {
|
|
9227
|
+
this.__lastRemainData = data.subarray(this.__lastRemainDataStart - dataStart);
|
|
9228
|
+
} else {
|
|
9229
|
+
this.__lastRemainData = data;
|
|
9230
|
+
this.__lastRemainDataStart = dataStart;
|
|
9231
|
+
}
|
|
9232
|
+
if (videoTrack.samples.length) {
|
|
9233
|
+
videoTrack.baseMediaDecodeTime = videoTrack.samples[0].pts;
|
|
9234
|
+
}
|
|
9235
|
+
if (audioTrack.samples.length) {
|
|
9236
|
+
audioTrack.baseMediaDecodeTime = audioTrack.samples[0].pts;
|
|
9237
|
+
}
|
|
9238
|
+
return {
|
|
9239
|
+
videoTrack,
|
|
9240
|
+
audioTrack,
|
|
9241
|
+
metadataTrack: this.metadataTrack
|
|
9242
|
+
};
|
|
9243
|
+
}
|
|
9244
|
+
}, {
|
|
8689
9245
|
key: "demux",
|
|
8690
9246
|
value: function demux(videoData, audioData) {
|
|
8691
9247
|
var videoTrack = this.videoTrack, audioTrack = this.audioTrack;
|
|
@@ -9181,6 +9737,8 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9181
9737
|
}
|
|
9182
9738
|
} else if (track.useEME && track.encv) {
|
|
9183
9739
|
content = MP42.encv(track);
|
|
9740
|
+
} else if (track.av1C) {
|
|
9741
|
+
content = MP42.av01(track);
|
|
9184
9742
|
} else {
|
|
9185
9743
|
content = MP42.avc1hev1(track);
|
|
9186
9744
|
}
|
|
@@ -9393,6 +9951,90 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9393
9951
|
var schi = MP42.schi(data);
|
|
9394
9952
|
return MP42.box(MP42.types.sinf, content, MP42.box(MP42.types.frma, frma), MP42.box(MP42.types.schm, schm), schi);
|
|
9395
9953
|
}
|
|
9954
|
+
}, {
|
|
9955
|
+
key: "av01",
|
|
9956
|
+
value: function av01(track) {
|
|
9957
|
+
return MP42.box(MP42.types.av01, new Uint8Array([
|
|
9958
|
+
0,
|
|
9959
|
+
0,
|
|
9960
|
+
0,
|
|
9961
|
+
0,
|
|
9962
|
+
0,
|
|
9963
|
+
0,
|
|
9964
|
+
0,
|
|
9965
|
+
1,
|
|
9966
|
+
0,
|
|
9967
|
+
0,
|
|
9968
|
+
0,
|
|
9969
|
+
0,
|
|
9970
|
+
0,
|
|
9971
|
+
0,
|
|
9972
|
+
0,
|
|
9973
|
+
0,
|
|
9974
|
+
0,
|
|
9975
|
+
0,
|
|
9976
|
+
0,
|
|
9977
|
+
0,
|
|
9978
|
+
0,
|
|
9979
|
+
0,
|
|
9980
|
+
0,
|
|
9981
|
+
0,
|
|
9982
|
+
track.width >> 8 & 255,
|
|
9983
|
+
track.width & 255,
|
|
9984
|
+
track.height >> 8 & 255,
|
|
9985
|
+
track.height & 255,
|
|
9986
|
+
0,
|
|
9987
|
+
72,
|
|
9988
|
+
0,
|
|
9989
|
+
0,
|
|
9990
|
+
0,
|
|
9991
|
+
72,
|
|
9992
|
+
0,
|
|
9993
|
+
0,
|
|
9994
|
+
0,
|
|
9995
|
+
0,
|
|
9996
|
+
0,
|
|
9997
|
+
0,
|
|
9998
|
+
0,
|
|
9999
|
+
1,
|
|
10000
|
+
0,
|
|
10001
|
+
0,
|
|
10002
|
+
0,
|
|
10003
|
+
0,
|
|
10004
|
+
0,
|
|
10005
|
+
0,
|
|
10006
|
+
0,
|
|
10007
|
+
0,
|
|
10008
|
+
0,
|
|
10009
|
+
0,
|
|
10010
|
+
0,
|
|
10011
|
+
0,
|
|
10012
|
+
0,
|
|
10013
|
+
0,
|
|
10014
|
+
0,
|
|
10015
|
+
0,
|
|
10016
|
+
0,
|
|
10017
|
+
0,
|
|
10018
|
+
0,
|
|
10019
|
+
0,
|
|
10020
|
+
0,
|
|
10021
|
+
0,
|
|
10022
|
+
0,
|
|
10023
|
+
0,
|
|
10024
|
+
0,
|
|
10025
|
+
0,
|
|
10026
|
+
0,
|
|
10027
|
+
0,
|
|
10028
|
+
0,
|
|
10029
|
+
0,
|
|
10030
|
+
0,
|
|
10031
|
+
0,
|
|
10032
|
+
0,
|
|
10033
|
+
24,
|
|
10034
|
+
17,
|
|
10035
|
+
17
|
|
10036
|
+
]), track.av1C, track.colr);
|
|
10037
|
+
}
|
|
9396
10038
|
}, {
|
|
9397
10039
|
key: "avc1hev1",
|
|
9398
10040
|
value: function avc1hev1(track) {
|
|
@@ -10365,7 +11007,7 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
10365
11007
|
}]);
|
|
10366
11008
|
return MP42;
|
|
10367
11009
|
}();
|
|
10368
|
-
_defineProperty(MP4, "types", ["avc1", "avcC", "hvc1", "hvcC", "dinf", "dref", "esds", "ftyp", "hdlr", "mdat", "mdhd", "mdia", "mfhd", "minf", "moof", "moov", "mp4a", "mvex", "mvhd", "pasp", "stbl", "stco", "stsc", "stsd", "stsz", "stts", "tfdt", "tfhd", "traf", "trak", "trex", "tkhd", "vmhd", "smhd", "ctts", "stss", "styp", "pssh", "sidx", "sbgp", "saiz", "saio", "senc", "trun", "encv", "enca", "sinf", "btrt", "frma", "tenc", "schm", "schi", "mehd", "fiel", "sdtp"].reduce(function(p, c) {
|
|
11010
|
+
_defineProperty(MP4, "types", ["av01", "av1C", "avc1", "avcC", "hvc1", "hvcC", "dinf", "dref", "esds", "ftyp", "hdlr", "mdat", "mdhd", "mdia", "mfhd", "minf", "moof", "moov", "mp4a", "mvex", "mvhd", "pasp", "stbl", "stco", "stsc", "stsd", "stsz", "stts", "tfdt", "tfhd", "traf", "trak", "trex", "tkhd", "vmhd", "smhd", "ctts", "stss", "styp", "pssh", "sidx", "sbgp", "saiz", "saio", "senc", "trun", "encv", "enca", "sinf", "btrt", "frma", "tenc", "schm", "schi", "mehd", "fiel", "sdtp"].reduce(function(p, c) {
|
|
10369
11011
|
p[c] = [c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2), c.charCodeAt(3)];
|
|
10370
11012
|
return p;
|
|
10371
11013
|
}, /* @__PURE__ */ Object.create(null)));
|
|
@@ -10700,30 +11342,46 @@ var FMP4Remuxer = /* @__PURE__ */ function() {
|
|
|
10700
11342
|
};
|
|
10701
11343
|
}
|
|
10702
11344
|
var samples = track.samples;
|
|
11345
|
+
var isAV01 = /av01/.test(track.codec);
|
|
10703
11346
|
var mdatSize = 0;
|
|
10704
|
-
|
|
10705
|
-
|
|
10706
|
-
|
|
10707
|
-
}, 0);
|
|
10708
|
-
mdatSize += s.units.length * 4;
|
|
10709
|
-
});
|
|
10710
|
-
var mdata = new Uint8Array(mdatSize);
|
|
10711
|
-
var mdatView = new DataView(mdata.buffer);
|
|
10712
|
-
var _loop = function _loop2(_offset, _sample) {
|
|
10713
|
-
_sample = samples[i];
|
|
10714
|
-
var sampleSize = 0;
|
|
10715
|
-
_sample.units.forEach(function(u) {
|
|
10716
|
-
mdatView.setUint32(_offset, u.byteLength);
|
|
10717
|
-
_offset += 4;
|
|
10718
|
-
mdata.set(u, _offset);
|
|
10719
|
-
_offset += u.byteLength;
|
|
10720
|
-
sampleSize += 4 + u.byteLength;
|
|
11347
|
+
if (isAV01) {
|
|
11348
|
+
samples.forEach(function(s) {
|
|
11349
|
+
mdatSize += s.data.byteLength;
|
|
10721
11350
|
});
|
|
10722
|
-
|
|
10723
|
-
|
|
10724
|
-
|
|
10725
|
-
|
|
10726
|
-
|
|
11351
|
+
} else {
|
|
11352
|
+
samples.forEach(function(s) {
|
|
11353
|
+
mdatSize += s.units.reduce(function(t, c) {
|
|
11354
|
+
return t + c.byteLength;
|
|
11355
|
+
}, 0);
|
|
11356
|
+
mdatSize += s.units.length * 4;
|
|
11357
|
+
});
|
|
11358
|
+
}
|
|
11359
|
+
var mdata = new Uint8Array(mdatSize);
|
|
11360
|
+
if (isAV01) {
|
|
11361
|
+
for (var i = 0, l = samples.length, offset = 0, sample; i < l; i++) {
|
|
11362
|
+
sample = samples[i];
|
|
11363
|
+
mdata.set(sample.data, offset);
|
|
11364
|
+
sample.size = sample.data.byteLength;
|
|
11365
|
+
offset += sample.size;
|
|
11366
|
+
}
|
|
11367
|
+
} else {
|
|
11368
|
+
var mdatView = new DataView(mdata.buffer);
|
|
11369
|
+
var _loop = function _loop2(_offset2, _sample2) {
|
|
11370
|
+
_sample2 = samples[_i];
|
|
11371
|
+
var sampleSize = 0;
|
|
11372
|
+
_sample2.units.forEach(function(u) {
|
|
11373
|
+
mdatView.setUint32(_offset2, u.byteLength);
|
|
11374
|
+
_offset2 += 4;
|
|
11375
|
+
mdata.set(u, _offset2);
|
|
11376
|
+
_offset2 += u.byteLength;
|
|
11377
|
+
sampleSize += 4 + u.byteLength;
|
|
11378
|
+
});
|
|
11379
|
+
_sample2.size = sampleSize;
|
|
11380
|
+
_offset = _offset2, _sample = _sample2;
|
|
11381
|
+
};
|
|
11382
|
+
for (var _i = 0, _l = samples.length, _offset = 0, _sample; _i < _l; _i++) {
|
|
11383
|
+
_loop(_offset, _sample);
|
|
11384
|
+
}
|
|
10727
11385
|
}
|
|
10728
11386
|
var mdat = MP4.mdat(mdata);
|
|
10729
11387
|
var moof = MP4.moof([track]);
|
|
@@ -10882,11 +11540,11 @@ var Event$1 = _objectSpread2$2(_objectSpread2$2({}, EVENT), {}, {
|
|
|
10882
11540
|
});
|
|
10883
11541
|
var logger$3 = new Logger$2("Transmuxer");
|
|
10884
11542
|
var Transmuxer = /* @__PURE__ */ function() {
|
|
10885
|
-
function Transmuxer2(hls, isMP4, needRemux) {
|
|
11543
|
+
function Transmuxer2(hls, isMP4, needRemux, fixerConfig) {
|
|
10886
11544
|
_classCallCheck$3(this, Transmuxer2);
|
|
10887
11545
|
_defineProperty$3(this, "_initSegmentId", "");
|
|
10888
11546
|
this.hls = hls;
|
|
10889
|
-
this._demuxer = isMP4 ? new FMP4Demuxer() : new TsDemuxer();
|
|
11547
|
+
this._demuxer = isMP4 ? new FMP4Demuxer() : new TsDemuxer(null, null, null, fixerConfig);
|
|
10890
11548
|
this._isMP4 = isMP4;
|
|
10891
11549
|
if (needRemux)
|
|
10892
11550
|
this._remuxer = new FMP4Remuxer(this._demuxer.videoTrack, this._demuxer.audioTrack);
|
|
@@ -11153,11 +11811,11 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
11153
11811
|
return;
|
|
11154
11812
|
if (TsDemuxer.probe(chunk)) {
|
|
11155
11813
|
if (!this._transmuxer)
|
|
11156
|
-
this._transmuxer = new Transmuxer(this.hls, false, !this._softVideo);
|
|
11814
|
+
this._transmuxer = new Transmuxer(this.hls, false, !this._softVideo, this.hls.config.fixerConfig);
|
|
11157
11815
|
} else if (MP4Parser.probe(chunk)) {
|
|
11158
11816
|
if (this._softVideo) {
|
|
11159
11817
|
if (!this._transmuxer)
|
|
11160
|
-
this._transmuxer = new Transmuxer(this.hls, true);
|
|
11818
|
+
this._transmuxer = new Transmuxer(this.hls, true, null, this.hls.config.fixerConfig);
|
|
11161
11819
|
} else {
|
|
11162
11820
|
this._directAppend = true;
|
|
11163
11821
|
var mix = false;
|
|
@@ -11600,7 +12258,11 @@ function getConfig(cfg) {
|
|
|
11600
12258
|
minSegmentsStartPlay: 3,
|
|
11601
12259
|
preferMMS: false,
|
|
11602
12260
|
preferMMSStreaming: false,
|
|
11603
|
-
mseLowLatency: true
|
|
12261
|
+
mseLowLatency: true,
|
|
12262
|
+
fixerConfig: {
|
|
12263
|
+
forceFixLargeGap: false,
|
|
12264
|
+
largeGapThreshold: 5
|
|
12265
|
+
}
|
|
11604
12266
|
}, cfg), {}, {
|
|
11605
12267
|
media
|
|
11606
12268
|
});
|
|
@@ -11994,9 +12656,6 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
11994
12656
|
var endOfList = false;
|
|
11995
12657
|
var partSegmentIndex = 0;
|
|
11996
12658
|
while (line = lines[index++]) {
|
|
11997
|
-
if (endOfList) {
|
|
11998
|
-
break;
|
|
11999
|
-
}
|
|
12000
12659
|
if (line[0] !== "#") {
|
|
12001
12660
|
if (media.lowLatency) {
|
|
12002
12661
|
curSN++;
|
|
@@ -12050,11 +12709,6 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12050
12709
|
break;
|
|
12051
12710
|
case "ENDLIST":
|
|
12052
12711
|
{
|
|
12053
|
-
var _lastSegment = media.segments[media.segments.length - 1];
|
|
12054
|
-
if (_lastSegment) {
|
|
12055
|
-
_lastSegment.isLast = true;
|
|
12056
|
-
}
|
|
12057
|
-
media.live = false;
|
|
12058
12712
|
endOfList = true;
|
|
12059
12713
|
}
|
|
12060
12714
|
break;
|
|
@@ -12158,11 +12812,14 @@ function parseMediaPlaylist(lines, parentUrl, useLowLatency) {
|
|
|
12158
12812
|
});
|
|
12159
12813
|
var lastSegment = media.segments[media.segments.length - 1];
|
|
12160
12814
|
if (lastSegment) {
|
|
12161
|
-
|
|
12162
|
-
media.endPartIndex = lastSegment.partIndex;
|
|
12163
|
-
if (endOfList && !lastSegment.isLast) {
|
|
12815
|
+
if (endOfList) {
|
|
12164
12816
|
lastSegment.isLast = true;
|
|
12165
12817
|
}
|
|
12818
|
+
media.endSN = lastSegment.sn;
|
|
12819
|
+
media.endPartIndex = lastSegment.partIndex;
|
|
12820
|
+
}
|
|
12821
|
+
if (endOfList) {
|
|
12822
|
+
media.live = false;
|
|
12166
12823
|
}
|
|
12167
12824
|
media.totalDuration = totalDuration;
|
|
12168
12825
|
media.endCC = curCC;
|
|
@@ -13259,7 +13916,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13259
13916
|
_defineProperty$3(_assertThisInitialized$2(_this), "_switchUrlOpts", null);
|
|
13260
13917
|
_defineProperty$3(_assertThisInitialized$2(_this), "_isProcessQuotaExceeded", false);
|
|
13261
13918
|
_defineProperty$3(_assertThisInitialized$2(_this), "_loadSegment", /* @__PURE__ */ _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee() {
|
|
13262
|
-
var
|
|
13919
|
+
var _this$_playlist, nextSegment, lastSegment, _assertThisInitialize, config, minFrameDuration, maxBufferThroughout, bInfo, bufferThroughout;
|
|
13263
13920
|
return _regeneratorRuntime$1().wrap(function _callee$(_context) {
|
|
13264
13921
|
while (1)
|
|
13265
13922
|
switch (_context.prev = _context.next) {
|
|
@@ -13270,42 +13927,44 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
13270
13927
|
}
|
|
13271
13928
|
return _context.abrupt("return");
|
|
13272
13929
|
case 2:
|
|
13273
|
-
|
|
13930
|
+
_this$_playlist = _this._playlist, nextSegment = _this$_playlist.nextSegment, lastSegment = _this$_playlist.lastSegment;
|
|
13274
13931
|
_assertThisInitialize = _assertThisInitialized$2(_this), config = _assertThisInitialize.config;
|
|
13275
|
-
|
|
13276
|
-
|
|
13932
|
+
minFrameDuration = 0.016;
|
|
13933
|
+
maxBufferThroughout = Math.min(Math.max((lastSegment === null || lastSegment === void 0 ? void 0 : lastSegment.duration) - minFrameDuration / 2 || 0, minFrameDuration), 0.1);
|
|
13934
|
+
if (nextSegment) {
|
|
13935
|
+
_context.next = 8;
|
|
13277
13936
|
break;
|
|
13278
13937
|
}
|
|
13279
13938
|
return _context.abrupt("return");
|
|
13280
|
-
case
|
|
13939
|
+
case 8:
|
|
13281
13940
|
if (_this.isLive) {
|
|
13282
|
-
_context.next =
|
|
13941
|
+
_context.next = 18;
|
|
13283
13942
|
break;
|
|
13284
13943
|
}
|
|
13285
13944
|
bInfo = _this.bufferInfo();
|
|
13286
13945
|
if (_this.media.paused && !_this.media.currentTime) {
|
|
13287
13946
|
bInfo = _this.bufferInfo(bInfo.nextStart || 0.5);
|
|
13288
13947
|
}
|
|
13289
|
-
bufferThroughout = Math.abs(bInfo.end - _this.media.duration) <
|
|
13948
|
+
bufferThroughout = Math.abs(bInfo.end - _this.media.duration) < maxBufferThroughout;
|
|
13290
13949
|
if (!(bInfo.remaining >= config.preloadTime || bufferThroughout)) {
|
|
13291
|
-
_context.next =
|
|
13950
|
+
_context.next = 15;
|
|
13292
13951
|
break;
|
|
13293
13952
|
}
|
|
13294
13953
|
_this._tryEos();
|
|
13295
13954
|
return _context.abrupt("return");
|
|
13296
|
-
case
|
|
13955
|
+
case 15:
|
|
13297
13956
|
if (!(config.preferMMSStreaming && !_this._bufferService.msStreaming)) {
|
|
13298
|
-
_context.next =
|
|
13957
|
+
_context.next = 17;
|
|
13299
13958
|
break;
|
|
13300
13959
|
}
|
|
13301
13960
|
return _context.abrupt("return");
|
|
13302
|
-
case
|
|
13303
|
-
if (!_this._urlSwitching && _this._prevSegSn !==
|
|
13961
|
+
case 17:
|
|
13962
|
+
if (!_this._urlSwitching && _this._prevSegSn !== nextSegment.sn - 1 && bInfo.end && Math.abs(nextSegment.start - bInfo.end) > 1) {
|
|
13304
13963
|
_this._playlist.setNextSegmentByIndex(_this._playlist.findSegmentIndexByTime(bInfo.end + 0.1));
|
|
13305
13964
|
}
|
|
13306
|
-
case
|
|
13965
|
+
case 18:
|
|
13307
13966
|
return _context.abrupt("return", _this._loadSegmentDirect());
|
|
13308
|
-
case
|
|
13967
|
+
case 19:
|
|
13309
13968
|
case "end":
|
|
13310
13969
|
return _context.stop();
|
|
13311
13970
|
}
|
|
@@ -14558,8 +15217,8 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14558
15217
|
value: function _tryEos() {
|
|
14559
15218
|
var _this$_bufferService3, _this$_bufferService4;
|
|
14560
15219
|
var media = this.media;
|
|
14561
|
-
var _this$
|
|
14562
|
-
var eosAllowed = !nextSegment && media.readyState && media.duration > 0 && ((_this$_bufferService3 = this._bufferService) === null || _this$_bufferService3 === void 0 ? void 0 : _this$_bufferService3.msIsOpened) && !((_this$_bufferService4 = this._bufferService) !== null && _this$_bufferService4 !== void 0 && _this$_bufferService4.msHasOpTasks);
|
|
15220
|
+
var _this$_playlist2 = this._playlist, nextSegment = _this$_playlist2.nextSegment, lastSegment = _this$_playlist2.lastSegment;
|
|
15221
|
+
var eosAllowed = (!nextSegment || lastSegment && Buffer$1.isBuffered(media, lastSegment.start + lastSegment.duration / 2)) && media.readyState && media.duration > 0 && ((_this$_bufferService3 = this._bufferService) === null || _this$_bufferService3 === void 0 ? void 0 : _this$_bufferService3.msIsOpened) && !((_this$_bufferService4 = this._bufferService) !== null && _this$_bufferService4 !== void 0 && _this$_bufferService4.msHasOpTasks);
|
|
14563
15222
|
if (!eosAllowed) {
|
|
14564
15223
|
return;
|
|
14565
15224
|
}
|
|
@@ -14595,7 +15254,7 @@ var Hls = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
14595
15254
|
}]);
|
|
14596
15255
|
return Hls2;
|
|
14597
15256
|
}(EventEmitter);
|
|
14598
|
-
_defineProperty$3(Hls, "version", "3.0.
|
|
15257
|
+
_defineProperty$3(Hls, "version", "3.0.20-rc.3");
|
|
14599
15258
|
try {
|
|
14600
15259
|
if (localStorage.getItem("xgd")) {
|
|
14601
15260
|
Hls.enableLogger();
|