@volcengine/veplayer-plugin 2.5.0-rc.0 → 2.5.1-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.d.ts +0 -1
- package/esm/index.development.css +0 -7
- package/esm/index.development.js +47274 -53342
- package/esm/index.production.css +1 -1
- package/esm/index.production.js +4 -13
- package/esm/veplayer.plugin.abr.development.js +12 -0
- package/esm/veplayer.plugin.abr.production.js +1 -1
- package/esm/veplayer.plugin.drm.development.js +12 -0
- package/esm/veplayer.plugin.drm.production.js +1 -1
- package/esm/veplayer.plugin.flv.development.js +675 -194
- 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 +167 -51
- package/esm/veplayer.plugin.rtm.production.js +1 -1
- package/esm/veplayer.plugin.shaka.development.js +12 -0
- package/esm/veplayer.plugin.shaka.production.js +1 -1
- package/package.json +1 -1
- package/umd/index.d.ts +0 -1
- package/umd/veplayer.plugin.abr.development.js +12 -0
- package/umd/veplayer.plugin.abr.production.js +1 -1
- package/umd/veplayer.plugin.drm.development.js +12 -0
- package/umd/veplayer.plugin.drm.production.js +1 -1
- package/umd/veplayer.plugin.flv.development.js +675 -194
- 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 +167 -51
- package/umd/veplayer.plugin.rtm.production.js +1 -1
- package/umd/veplayer.plugin.shaka.development.js +12 -0
- package/umd/veplayer.plugin.shaka.production.js +1 -1
- package/esm/veplayer.plugin.ad.development.css +0 -7
- package/esm/veplayer.plugin.ad.development.js +0 -9042
- package/esm/veplayer.plugin.ad.production.css +0 -1
- package/esm/veplayer.plugin.ad.production.js +0 -4
- package/umd/veplayer.plugin.ad.development.css +0 -7
- package/umd/veplayer.plugin.ad.development.js +0 -9045
- package/umd/veplayer.plugin.ad.production.css +0 -1
- package/umd/veplayer.plugin.ad.production.js +0 -1
|
@@ -1538,7 +1538,7 @@ util.getCurrentTimeByOffset = function(offsetTime, segments) {
|
|
|
1538
1538
|
}
|
|
1539
1539
|
return offsetTime;
|
|
1540
1540
|
};
|
|
1541
|
-
var version = "3.0.
|
|
1541
|
+
var version = "3.0.21-rc.5";
|
|
1542
1542
|
var ERROR_MAP = {
|
|
1543
1543
|
1: 5101,
|
|
1544
1544
|
2: 5102,
|
|
@@ -2005,6 +2005,18 @@ var BasePlugin = /* @__PURE__ */ function() {
|
|
|
2005
2005
|
}
|
|
2006
2006
|
}
|
|
2007
2007
|
}
|
|
2008
|
+
}, {
|
|
2009
|
+
key: "defineMethod",
|
|
2010
|
+
value: function defineMethod(Obj, map) {
|
|
2011
|
+
for (var key in map) {
|
|
2012
|
+
if (Object.prototype.hasOwnProperty.call(map, key) && typeof map[key] === "function") {
|
|
2013
|
+
Object.defineProperty(Obj, key, {
|
|
2014
|
+
configurable: true,
|
|
2015
|
+
value: map[key]
|
|
2016
|
+
});
|
|
2017
|
+
}
|
|
2018
|
+
}
|
|
2019
|
+
}
|
|
2008
2020
|
}, {
|
|
2009
2021
|
key: "defaultConfig",
|
|
2010
2022
|
get: function get() {
|
|
@@ -2815,6 +2827,21 @@ var Buffer$1 = /* @__PURE__ */ function() {
|
|
|
2815
2827
|
length: Buffer2.totalLength && Buffer2.totalLength(buffers)
|
|
2816
2828
|
};
|
|
2817
2829
|
}
|
|
2830
|
+
}, {
|
|
2831
|
+
key: "isBuffered",
|
|
2832
|
+
value: function isBuffered(media, pos) {
|
|
2833
|
+
if (media) {
|
|
2834
|
+
var buffered = Buffer2.get(media);
|
|
2835
|
+
if (buffered !== null && buffered !== void 0 && buffered.length) {
|
|
2836
|
+
for (var i = 0; i < buffered.length; i++) {
|
|
2837
|
+
if (pos >= buffered.start(i) && pos <= buffered.end(i)) {
|
|
2838
|
+
return true;
|
|
2839
|
+
}
|
|
2840
|
+
}
|
|
2841
|
+
}
|
|
2842
|
+
}
|
|
2843
|
+
return false;
|
|
2844
|
+
}
|
|
2818
2845
|
}]);
|
|
2819
2846
|
return Buffer2;
|
|
2820
2847
|
}();
|
|
@@ -2967,7 +2994,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
2967
2994
|
this.logCache.apply(this, [LogCacheLevel.DEBUG].concat(args));
|
|
2968
2995
|
if (Logger2.disabled)
|
|
2969
2996
|
return;
|
|
2970
|
-
(_console = console).debug.apply(_console, [
|
|
2997
|
+
(_console = console).debug.apply(_console, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
2971
2998
|
}
|
|
2972
2999
|
}, {
|
|
2973
3000
|
key: "log",
|
|
@@ -2979,7 +3006,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
2979
3006
|
this.logCache.apply(this, [LogCacheLevel.LOG].concat(args));
|
|
2980
3007
|
if (Logger2.disabled)
|
|
2981
3008
|
return;
|
|
2982
|
-
(_console2 = console).log.apply(_console2, [
|
|
3009
|
+
(_console2 = console).log.apply(_console2, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
2983
3010
|
}
|
|
2984
3011
|
}, {
|
|
2985
3012
|
key: "warn",
|
|
@@ -2991,7 +3018,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
2991
3018
|
this.logCache.apply(this, [LogCacheLevel.WARN].concat(args));
|
|
2992
3019
|
if (Logger2.disabled)
|
|
2993
3020
|
return;
|
|
2994
|
-
(_console3 = console).warn.apply(_console3, [
|
|
3021
|
+
(_console3 = console).warn.apply(_console3, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
2995
3022
|
}
|
|
2996
3023
|
}, {
|
|
2997
3024
|
key: "error",
|
|
@@ -3003,7 +3030,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
3003
3030
|
this.logCache.apply(this, [LogCacheLevel.ERROR].concat(args));
|
|
3004
3031
|
if (Logger2.disabled)
|
|
3005
3032
|
return;
|
|
3006
|
-
(_console4 = console).error.apply(_console4, [
|
|
3033
|
+
(_console4 = console).error.apply(_console4, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
3007
3034
|
}
|
|
3008
3035
|
}, {
|
|
3009
3036
|
key: "logCache",
|
|
@@ -3018,7 +3045,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
3018
3045
|
var finLogText = logText.map(function(item) {
|
|
3019
3046
|
return logable(item);
|
|
3020
3047
|
});
|
|
3021
|
-
text =
|
|
3048
|
+
text = "[".concat(nowTime$1(), "]") + this._prefix + JSON.stringify(finLogText);
|
|
3022
3049
|
} catch (e) {
|
|
3023
3050
|
return;
|
|
3024
3051
|
}
|
|
@@ -3934,8 +3961,8 @@ function createResponse(data, done, response, contentLength, age, startTime, fir
|
|
|
3934
3961
|
response
|
|
3935
3962
|
};
|
|
3936
3963
|
}
|
|
3937
|
-
function calculateSpeed(byteLen,
|
|
3938
|
-
return Math.round(byteLen * 8 * 1e3 /
|
|
3964
|
+
function calculateSpeed(byteLen, milliSecond) {
|
|
3965
|
+
return Math.round(byteLen * 8 * 1e3 / milliSecond / 1024);
|
|
3939
3966
|
}
|
|
3940
3967
|
var EVENT = {
|
|
3941
3968
|
ERROR: "error",
|
|
@@ -3947,6 +3974,7 @@ var EVENT = {
|
|
|
3947
3974
|
SOURCEBUFFER_CREATED: "core.sourcebuffercreated",
|
|
3948
3975
|
MEDIASOURCE_OPENED: "core.mediasourceopened",
|
|
3949
3976
|
ANALYZE_DURATION_EXCEEDED: "core.analyzedurationexceeded",
|
|
3977
|
+
APPEND_BUFFER: "core.appendbuffer",
|
|
3950
3978
|
REMOVE_BUFFER: "core.removebuffer",
|
|
3951
3979
|
BUFFEREOS: "core.buffereos",
|
|
3952
3980
|
KEYFRAME: "core.keyframe",
|
|
@@ -5579,13 +5607,16 @@ var TrackType = {
|
|
|
5579
5607
|
METADATA: "metadata"
|
|
5580
5608
|
};
|
|
5581
5609
|
var VideoCodecType = {
|
|
5610
|
+
AV1: "av1",
|
|
5582
5611
|
AVC: "avc",
|
|
5583
5612
|
HEVC: "hevc"
|
|
5584
5613
|
};
|
|
5585
5614
|
var AudioCodecType = {
|
|
5586
5615
|
AAC: "aac",
|
|
5587
5616
|
G711PCMA: "g7110a",
|
|
5588
|
-
G711PCMU: "g7110m"
|
|
5617
|
+
G711PCMU: "g7110m",
|
|
5618
|
+
OPUS: "opus",
|
|
5619
|
+
MP3: "mp3"
|
|
5589
5620
|
};
|
|
5590
5621
|
var WarningType = {
|
|
5591
5622
|
LARGE_AV_SHIFT: "LARGE_AV_SHIFT",
|
|
@@ -5625,6 +5656,7 @@ var VideoTrack = /* @__PURE__ */ function() {
|
|
|
5625
5656
|
_defineProperty(this, "isVideoEncryption", false);
|
|
5626
5657
|
_defineProperty(this, "isAudioEncryption", false);
|
|
5627
5658
|
_defineProperty(this, "isVideo", true);
|
|
5659
|
+
_defineProperty(this, "lastKeyFrameDts", 0);
|
|
5628
5660
|
_defineProperty(this, "kid", null);
|
|
5629
5661
|
_defineProperty(this, "pssh", null);
|
|
5630
5662
|
_defineProperty(this, "ext", void 0);
|
|
@@ -5667,6 +5699,9 @@ var VideoTrack = /* @__PURE__ */ function() {
|
|
|
5667
5699
|
}, {
|
|
5668
5700
|
key: "exist",
|
|
5669
5701
|
value: function exist() {
|
|
5702
|
+
if (/av01/.test(this.codec)) {
|
|
5703
|
+
return true;
|
|
5704
|
+
}
|
|
5670
5705
|
return !!(this.pps.length && this.sps.length && this.codec);
|
|
5671
5706
|
}
|
|
5672
5707
|
}, {
|
|
@@ -5690,6 +5725,7 @@ var AudioTrack = /* @__PURE__ */ function() {
|
|
|
5690
5725
|
_defineProperty(this, "codecType", AudioCodecType.AAC);
|
|
5691
5726
|
_defineProperty(this, "pid", -1);
|
|
5692
5727
|
_defineProperty(this, "codec", "");
|
|
5728
|
+
_defineProperty(this, "container", "");
|
|
5693
5729
|
_defineProperty(this, "sequenceNumber", 0);
|
|
5694
5730
|
_defineProperty(this, "sampleDuration", 0);
|
|
5695
5731
|
_defineProperty(this, "timescale", 0);
|
|
@@ -5730,7 +5766,7 @@ var AudioTrack = /* @__PURE__ */ function() {
|
|
|
5730
5766
|
}, {
|
|
5731
5767
|
key: "exist",
|
|
5732
5768
|
value: function exist() {
|
|
5733
|
-
return !!(this.sampleRate && this.channelCount && this.codec && this.codecType === AudioCodecType.AAC);
|
|
5769
|
+
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));
|
|
5734
5770
|
}
|
|
5735
5771
|
}, {
|
|
5736
5772
|
key: "hasSample",
|
|
@@ -5944,7 +5980,7 @@ var AAC = /* @__PURE__ */ function() {
|
|
|
5944
5980
|
continue;
|
|
5945
5981
|
}
|
|
5946
5982
|
frameLength = (data[i + 3] & 3) << 11 | data[i + 4] << 3 | (data[i + 5] & 224) >> 5;
|
|
5947
|
-
if (len - i < frameLength)
|
|
5983
|
+
if (!frameLength || len - i < frameLength)
|
|
5948
5984
|
break;
|
|
5949
5985
|
protectionSkipBytes = (~data[i + 1] & 1) * 2;
|
|
5950
5986
|
frames.push({
|
|
@@ -6078,14 +6114,57 @@ var AAC = /* @__PURE__ */ function() {
|
|
|
6078
6114
|
return AAC2;
|
|
6079
6115
|
}();
|
|
6080
6116
|
_defineProperty(AAC, "FREQ", [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350]);
|
|
6117
|
+
var OPUS = /* @__PURE__ */ function() {
|
|
6118
|
+
function OPUS2() {
|
|
6119
|
+
_classCallCheck$1(this, OPUS2);
|
|
6120
|
+
}
|
|
6121
|
+
_createClass$1(OPUS2, null, [{
|
|
6122
|
+
key: "getFrameDuration",
|
|
6123
|
+
value: function getFrameDuration(samples) {
|
|
6124
|
+
return 20;
|
|
6125
|
+
}
|
|
6126
|
+
}, {
|
|
6127
|
+
key: "parseHeaderPackets",
|
|
6128
|
+
value: function parseHeaderPackets(data) {
|
|
6129
|
+
if (!data.length)
|
|
6130
|
+
return;
|
|
6131
|
+
var dv = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
6132
|
+
var magicSignature = "";
|
|
6133
|
+
for (var i = 0; i < 8; i++) {
|
|
6134
|
+
magicSignature += String.fromCodePoint(data[i]);
|
|
6135
|
+
}
|
|
6136
|
+
if (magicSignature !== "OpusHead") {
|
|
6137
|
+
throw new Error("Invalid Opus MagicSignature");
|
|
6138
|
+
}
|
|
6139
|
+
var channelCount = data[9];
|
|
6140
|
+
console.log("Pre-skip", data[10], data[11]);
|
|
6141
|
+
var sampleRate = dv.getUint32(12, true);
|
|
6142
|
+
var outputGain = dv.getInt16(16, true);
|
|
6143
|
+
if (!sampleRate)
|
|
6144
|
+
return;
|
|
6145
|
+
var codec = "opus";
|
|
6146
|
+
var originCodec = "opus";
|
|
6147
|
+
var config = new Uint8Array(data.buffer, data.byteOffset + 8, data.byteLength - 8);
|
|
6148
|
+
return {
|
|
6149
|
+
outputGain,
|
|
6150
|
+
sampleRate,
|
|
6151
|
+
channelCount,
|
|
6152
|
+
config,
|
|
6153
|
+
codec,
|
|
6154
|
+
originCodec
|
|
6155
|
+
};
|
|
6156
|
+
}
|
|
6157
|
+
}]);
|
|
6158
|
+
return OPUS2;
|
|
6159
|
+
}();
|
|
6081
6160
|
var LARGE_AV_FIRST_FRAME_GAP = 500;
|
|
6082
6161
|
var AUDIO_GAP_OVERLAP_THRESHOLD_COUNT = 3;
|
|
6083
6162
|
var MAX_SILENT_FRAME_DURATION = 1e3;
|
|
6084
|
-
var
|
|
6163
|
+
var AUDIO_EXCEPTION_LOG_EMIT_DURATION = 5e3;
|
|
6085
6164
|
var MAX_VIDEO_FRAME_DURATION = 1e3;
|
|
6086
6165
|
var MAX_DTS_DELTA_WITH_NEXT_CHUNK = 200;
|
|
6087
|
-
var
|
|
6088
|
-
var
|
|
6166
|
+
var VIDEO_EXCEPTION_LOG_EMIT_DURATION = 5e3;
|
|
6167
|
+
var TRACK_BROKEN_CHECK_TIME = 5;
|
|
6089
6168
|
var FlvFixer = /* @__PURE__ */ function() {
|
|
6090
6169
|
function FlvFixer2(videoTrack, audioTrack, metadataTrack) {
|
|
6091
6170
|
_classCallCheck$1(this, FlvFixer2);
|
|
@@ -6201,7 +6280,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6201
6280
|
var firstSample = samples[0];
|
|
6202
6281
|
var vDelta = this._videoNextDts - firstSample.dts;
|
|
6203
6282
|
if (Math.abs(vDelta) > MAX_DTS_DELTA_WITH_NEXT_CHUNK) {
|
|
6204
|
-
if (Math.abs(firstSample.dts - this._lastVideoExceptionChunkFirstDtsDot) >
|
|
6283
|
+
if (Math.abs(firstSample.dts - this._lastVideoExceptionChunkFirstDtsDot) > VIDEO_EXCEPTION_LOG_EMIT_DURATION) {
|
|
6205
6284
|
var _samples$;
|
|
6206
6285
|
this._lastVideoExceptionChunkFirstDtsDot = firstSample.dts;
|
|
6207
6286
|
videoTrack.warnings.push({
|
|
@@ -6212,7 +6291,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6212
6291
|
sampleDuration: vDelta
|
|
6213
6292
|
});
|
|
6214
6293
|
}
|
|
6215
|
-
if (this._videoTimestampBreak >=
|
|
6294
|
+
if (this._videoTimestampBreak >= TRACK_BROKEN_CHECK_TIME) {
|
|
6216
6295
|
this._videoNextDts = firstSample.dts;
|
|
6217
6296
|
this._videoTimestampBreak = 0;
|
|
6218
6297
|
} else {
|
|
@@ -6235,7 +6314,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6235
6314
|
}
|
|
6236
6315
|
if (sampleDuration > MAX_VIDEO_FRAME_DURATION || sampleDuration < 0) {
|
|
6237
6316
|
this._videoTimestampBreak++;
|
|
6238
|
-
if (Math.abs(dts - this._lastVideoExceptionLargeGapDot) >
|
|
6317
|
+
if (Math.abs(dts - this._lastVideoExceptionLargeGapDot) > VIDEO_EXCEPTION_LOG_EMIT_DURATION) {
|
|
6239
6318
|
this._lastVideoExceptionLargeGapDot = dts;
|
|
6240
6319
|
videoTrack.warnings.push({
|
|
6241
6320
|
type: WarningType.LARGE_VIDEO_GAP,
|
|
@@ -6316,10 +6395,27 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6316
6395
|
key: "_doFixAudioInternal",
|
|
6317
6396
|
value: function _doFixAudioInternal(audioTrack, samples, timescale) {
|
|
6318
6397
|
if (!audioTrack.sampleDuration) {
|
|
6319
|
-
|
|
6398
|
+
switch (audioTrack.codecType) {
|
|
6399
|
+
case AudioCodecType.AAC: {
|
|
6400
|
+
audioTrack.sampleDuration = AAC.getFrameDuration(audioTrack.timescale, timescale);
|
|
6401
|
+
break;
|
|
6402
|
+
}
|
|
6403
|
+
case AudioCodecType.OPUS: {
|
|
6404
|
+
audioTrack.sampleDuration = OPUS.getFrameDuration(audioTrack.samples, timescale);
|
|
6405
|
+
break;
|
|
6406
|
+
}
|
|
6407
|
+
case AudioCodecType.G711PCMA:
|
|
6408
|
+
case AudioCodecType.G711PCMU: {
|
|
6409
|
+
audioTrack.sampleDuration = this._getG711Duration(audioTrack);
|
|
6410
|
+
break;
|
|
6411
|
+
}
|
|
6412
|
+
default:
|
|
6413
|
+
console.error("can't fix audio codecType:", audioTrack.codecType);
|
|
6414
|
+
break;
|
|
6415
|
+
}
|
|
6320
6416
|
}
|
|
6321
6417
|
var refSampleDuration = audioTrack.sampleDuration;
|
|
6322
|
-
var sampleDurationInSampleRate = audioTrack.codecType === AudioCodecType.AAC ? 1024 : refSampleDuration * audioTrack.timescale / 1e3;
|
|
6418
|
+
var sampleDurationInSampleRate = audioTrack.codecType === AudioCodecType.OPUS ? 20 : audioTrack.codecType === AudioCodecType.AAC ? 1024 : refSampleDuration * audioTrack.timescale / 1e3;
|
|
6323
6419
|
if (this._audioNextPts === void 0) {
|
|
6324
6420
|
var samp0 = samples[0];
|
|
6325
6421
|
this._audioNextPts = samp0.pts;
|
|
@@ -6328,7 +6424,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6328
6424
|
var nextPts = this._audioNextPts;
|
|
6329
6425
|
var sample = samples[i];
|
|
6330
6426
|
var delta = sample.pts - nextPts;
|
|
6331
|
-
if (i === 0 && this._audioTimestampBreak >=
|
|
6427
|
+
if (i === 0 && this._audioTimestampBreak >= TRACK_BROKEN_CHECK_TIME && this._keyFrameInNextChunk) {
|
|
6332
6428
|
nextPts = this._audioNextPts = sample.dts;
|
|
6333
6429
|
delta = 0;
|
|
6334
6430
|
this._audioTimestampBreak = 0;
|
|
@@ -6336,7 +6432,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6336
6432
|
if (!this._audioTimestampBreak && delta >= AUDIO_GAP_OVERLAP_THRESHOLD_COUNT * refSampleDuration && delta <= MAX_SILENT_FRAME_DURATION && !isSafari) {
|
|
6337
6433
|
var silentFrame = this._getSilentFrame(audioTrack) || samples[0].data.subarray();
|
|
6338
6434
|
var count = Math.floor(delta / refSampleDuration);
|
|
6339
|
-
if (Math.abs(sample.pts - this._lastAudioExceptionGapDot) >
|
|
6435
|
+
if (Math.abs(sample.pts - this._lastAudioExceptionGapDot) > AUDIO_EXCEPTION_LOG_EMIT_DURATION) {
|
|
6340
6436
|
this._lastAudioExceptionGapDot = sample.pts;
|
|
6341
6437
|
audioTrack.warnings.push({
|
|
6342
6438
|
type: WarningType.AUDIO_FILLED,
|
|
@@ -6356,7 +6452,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6356
6452
|
}
|
|
6357
6453
|
i--;
|
|
6358
6454
|
} else if (delta <= -AUDIO_GAP_OVERLAP_THRESHOLD_COUNT * refSampleDuration && delta >= -1 * MAX_SILENT_FRAME_DURATION) {
|
|
6359
|
-
if (Math.abs(sample.pts - this._lastAudioExceptionOverlapDot) >
|
|
6455
|
+
if (Math.abs(sample.pts - this._lastAudioExceptionOverlapDot) > AUDIO_EXCEPTION_LOG_EMIT_DURATION) {
|
|
6360
6456
|
this._lastAudioExceptionOverlapDot = sample.pts;
|
|
6361
6457
|
audioTrack.warnings.push({
|
|
6362
6458
|
type: WarningType.AUDIO_DROPPED,
|
|
@@ -6371,7 +6467,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6371
6467
|
} else {
|
|
6372
6468
|
if (Math.abs(delta) > MAX_SILENT_FRAME_DURATION) {
|
|
6373
6469
|
this._audioTimestampBreak++;
|
|
6374
|
-
if (Math.abs(sample.pts - this._lastAudioExceptionLargeGapDot) >
|
|
6470
|
+
if (Math.abs(sample.pts - this._lastAudioExceptionLargeGapDot) > AUDIO_EXCEPTION_LOG_EMIT_DURATION) {
|
|
6375
6471
|
this._lastAudioExceptionLargeGapDot = sample.pts;
|
|
6376
6472
|
audioTrack.warnings.push({
|
|
6377
6473
|
type: WarningType.LARGE_AUDIO_GAP,
|
|
@@ -6384,8 +6480,15 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6384
6480
|
});
|
|
6385
6481
|
}
|
|
6386
6482
|
}
|
|
6387
|
-
|
|
6388
|
-
|
|
6483
|
+
if (audioTrack.codecType === AudioCodecType.OPUS) {
|
|
6484
|
+
var lastSample = samples[samples.length - 1];
|
|
6485
|
+
if (lastSample) {
|
|
6486
|
+
lastSample.duration = sample.pts - lastSample.pts;
|
|
6487
|
+
}
|
|
6488
|
+
} else {
|
|
6489
|
+
sample.dts = sample.pts = nextPts;
|
|
6490
|
+
sample.duration = sampleDurationInSampleRate;
|
|
6491
|
+
}
|
|
6389
6492
|
this._audioNextPts += refSampleDuration;
|
|
6390
6493
|
}
|
|
6391
6494
|
}
|
|
@@ -7344,6 +7447,13 @@ var AMF = /* @__PURE__ */ function() {
|
|
|
7344
7447
|
}]);
|
|
7345
7448
|
return AMF2;
|
|
7346
7449
|
}();
|
|
7450
|
+
var FlvSoundFormat = {
|
|
7451
|
+
MP3: 2,
|
|
7452
|
+
G711A: 7,
|
|
7453
|
+
G711M: 8,
|
|
7454
|
+
AAC: 10,
|
|
7455
|
+
OPUS: 13
|
|
7456
|
+
};
|
|
7347
7457
|
var logger$2 = new Logger$1("FlvDemuxer");
|
|
7348
7458
|
var FlvDemuxer = /* @__PURE__ */ function() {
|
|
7349
7459
|
function FlvDemuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
@@ -7360,8 +7470,10 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7360
7470
|
_createClass$1(FlvDemuxer2, [{
|
|
7361
7471
|
key: "demux",
|
|
7362
7472
|
value: function demux(data) {
|
|
7473
|
+
var _scriptDataObject$dat;
|
|
7363
7474
|
var discontinuity = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
|
7364
7475
|
var contiguous = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
|
|
7476
|
+
var seamlessLoadingSwitching = arguments.length > 3 ? arguments[3] : void 0;
|
|
7365
7477
|
var audioTrack = this.audioTrack, videoTrack = this.videoTrack, metadataTrack = this.metadataTrack;
|
|
7366
7478
|
if (discontinuity || !contiguous) {
|
|
7367
7479
|
this._remainingData = null;
|
|
@@ -7419,6 +7531,8 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7419
7531
|
if (tagType === 8) {
|
|
7420
7532
|
this._parseAudio(bodyData, timestamp);
|
|
7421
7533
|
} else if (tagType === 9) {
|
|
7534
|
+
if (seamlessLoadingSwitching)
|
|
7535
|
+
this.seamlessLoadingSwitching = true;
|
|
7422
7536
|
this._parseVideo(bodyData, timestamp);
|
|
7423
7537
|
} else if (tagType === 18) {
|
|
7424
7538
|
this._parseScript(bodyData, timestamp);
|
|
@@ -7436,13 +7550,31 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7436
7550
|
this._remainingData = data.subarray(offset);
|
|
7437
7551
|
}
|
|
7438
7552
|
audioTrack.formatTimescale = videoTrack.formatTimescale = videoTrack.timescale = metadataTrack.timescale = 1e3;
|
|
7439
|
-
audioTrack.timescale = audioTrack.sampleRate || 0;
|
|
7553
|
+
audioTrack.timescale = audioTrack.codecType === AudioCodecType.OPUS ? 1e3 : audioTrack.sampleRate || 0;
|
|
7440
7554
|
if (!audioTrack.exist() && audioTrack.hasSample()) {
|
|
7441
7555
|
audioTrack.reset();
|
|
7442
7556
|
}
|
|
7443
7557
|
if (!videoTrack.exist() && videoTrack.hasSample()) {
|
|
7444
7558
|
videoTrack.reset();
|
|
7445
7559
|
}
|
|
7560
|
+
var scriptDataObject = metadataTrack.flvScriptSamples[metadataTrack.flvScriptSamples.length - 1];
|
|
7561
|
+
var metaData = scriptDataObject === null || scriptDataObject === void 0 ? void 0 : (_scriptDataObject$dat = scriptDataObject.data) === null || _scriptDataObject$dat === void 0 ? void 0 : _scriptDataObject$dat.onMetaData;
|
|
7562
|
+
if (metaData) {
|
|
7563
|
+
if (videoTrack !== null && videoTrack !== void 0 && videoTrack.exist()) {
|
|
7564
|
+
if (metaData.hasOwnProperty("duration")) {
|
|
7565
|
+
videoTrack.duration = metaData.duration * 1e3;
|
|
7566
|
+
}
|
|
7567
|
+
if (metaData.hasOwnProperty("width") && metaData.hasOwnProperty("height")) {
|
|
7568
|
+
videoTrack.width = metaData.width;
|
|
7569
|
+
videoTrack.height = metaData.height;
|
|
7570
|
+
}
|
|
7571
|
+
}
|
|
7572
|
+
if (audioTrack !== null && audioTrack !== void 0 && audioTrack.exist()) {
|
|
7573
|
+
if (metaData.hasOwnProperty("duration")) {
|
|
7574
|
+
audioTrack.duration = metaData.duration * 1e3;
|
|
7575
|
+
}
|
|
7576
|
+
}
|
|
7577
|
+
}
|
|
7446
7578
|
return {
|
|
7447
7579
|
videoTrack,
|
|
7448
7580
|
audioTrack,
|
|
@@ -7461,8 +7593,8 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7461
7593
|
}
|
|
7462
7594
|
}, {
|
|
7463
7595
|
key: "demuxAndFix",
|
|
7464
|
-
value: function demuxAndFix(data, discontinuity, contiguous, startTime) {
|
|
7465
|
-
this.demux(data, discontinuity, contiguous);
|
|
7596
|
+
value: function demuxAndFix(data, discontinuity, contiguous, startTime, seamlessLoadingSwitching) {
|
|
7597
|
+
this.demux(data, discontinuity, contiguous, seamlessLoadingSwitching);
|
|
7466
7598
|
return this.fix(startTime, discontinuity, contiguous);
|
|
7467
7599
|
}
|
|
7468
7600
|
}, {
|
|
@@ -7472,12 +7604,12 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7472
7604
|
return;
|
|
7473
7605
|
var format = (data[0] & 240) >>> 4;
|
|
7474
7606
|
var track = this.audioTrack;
|
|
7475
|
-
if (format !==
|
|
7607
|
+
if (format !== FlvSoundFormat.AAC && format !== FlvSoundFormat.G711A && format !== FlvSoundFormat.G711M && format !== FlvSoundFormat.OPUS) {
|
|
7476
7608
|
logger$2.warn("Unsupported sound format: ".concat(format));
|
|
7477
7609
|
track.reset();
|
|
7478
7610
|
return;
|
|
7479
7611
|
}
|
|
7480
|
-
if (format !==
|
|
7612
|
+
if (format !== FlvSoundFormat.AAC && format !== FlvSoundFormat.OPUS) {
|
|
7481
7613
|
var soundRate = (data[0] & 12) >> 2;
|
|
7482
7614
|
var soundSize = (data[0] & 2) >> 1;
|
|
7483
7615
|
var soundType = data[0] & 1;
|
|
@@ -7485,20 +7617,63 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7485
7617
|
track.sampleSize = soundSize ? 16 : 8;
|
|
7486
7618
|
track.channelCount = soundType + 1;
|
|
7487
7619
|
}
|
|
7488
|
-
|
|
7489
|
-
|
|
7490
|
-
|
|
7491
|
-
|
|
7620
|
+
switch (format) {
|
|
7621
|
+
case FlvSoundFormat.G711A:
|
|
7622
|
+
case FlvSoundFormat.G711M:
|
|
7623
|
+
this._parseG711(data, pts, format);
|
|
7624
|
+
break;
|
|
7625
|
+
case FlvSoundFormat.AAC:
|
|
7626
|
+
this._parseAac(data, pts);
|
|
7627
|
+
break;
|
|
7628
|
+
case FlvSoundFormat.OPUS:
|
|
7629
|
+
this._parseOpus(data, pts);
|
|
7630
|
+
break;
|
|
7631
|
+
}
|
|
7632
|
+
}
|
|
7633
|
+
}, {
|
|
7634
|
+
key: "_parseOpus",
|
|
7635
|
+
value: function _parseOpus(data, pts) {
|
|
7636
|
+
var track = this.audioTrack;
|
|
7637
|
+
var packetType = data[1];
|
|
7638
|
+
track.codecType = AudioCodecType.OPUS;
|
|
7639
|
+
switch (packetType) {
|
|
7640
|
+
case 0: {
|
|
7641
|
+
var ret = OPUS.parseHeaderPackets(data.subarray(2));
|
|
7642
|
+
if (ret) {
|
|
7643
|
+
track.codec = ret.codec;
|
|
7644
|
+
track.channelCount = ret.channelCount;
|
|
7645
|
+
track.sampleRate = ret.sampleRate;
|
|
7646
|
+
track.config = ret.config;
|
|
7647
|
+
track.sampleDuration = OPUS.getFrameDuration([], track.timescale);
|
|
7648
|
+
} else {
|
|
7649
|
+
track.reset();
|
|
7650
|
+
logger$2.warn("Cannot parse AudioSpecificConfig", data);
|
|
7651
|
+
}
|
|
7652
|
+
break;
|
|
7653
|
+
}
|
|
7654
|
+
case 1: {
|
|
7655
|
+
if (pts === void 0 || pts === null)
|
|
7656
|
+
return;
|
|
7657
|
+
var newSample = new AudioSample(pts, data.subarray(2), track.sampleDuration);
|
|
7658
|
+
track.samples.push(newSample);
|
|
7659
|
+
break;
|
|
7660
|
+
}
|
|
7661
|
+
default:
|
|
7662
|
+
logger$2.warn("Unknown OpusPacketType: ".concat(packetType));
|
|
7492
7663
|
}
|
|
7493
7664
|
}
|
|
7494
7665
|
}, {
|
|
7495
7666
|
key: "_parseG711",
|
|
7496
7667
|
value: function _parseG711(data, pts, format) {
|
|
7497
7668
|
var track = this.audioTrack;
|
|
7669
|
+
var audioData = data.subarray(1);
|
|
7670
|
+
if (audioData.byteLength < 1)
|
|
7671
|
+
return;
|
|
7672
|
+
var sample = new AudioSample(pts, audioData);
|
|
7498
7673
|
track.codecType = format === 7 ? AudioCodecType.G711PCMA : AudioCodecType.G711PCMU;
|
|
7499
7674
|
track.sampleRate = 8e3;
|
|
7500
7675
|
track.codec = track.codecType;
|
|
7501
|
-
track.samples.push(
|
|
7676
|
+
track.samples.push(sample);
|
|
7502
7677
|
}
|
|
7503
7678
|
}, {
|
|
7504
7679
|
key: "_parseAac",
|
|
@@ -7576,8 +7751,13 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7576
7751
|
units = this._checkAddMetaNalToUnits(isHevc, units, track);
|
|
7577
7752
|
if (units && units.length) {
|
|
7578
7753
|
var sample = new VideoSample(dts + cts, dts, units);
|
|
7754
|
+
if (this.seamlessLoadingSwitching && dts < track.lastKeyFrameDts) {
|
|
7755
|
+
return;
|
|
7756
|
+
}
|
|
7757
|
+
this.seamlessLoadingSwitching = false;
|
|
7579
7758
|
if (frameType === 1) {
|
|
7580
7759
|
sample.setToKeyframe();
|
|
7760
|
+
track.lastKeyFrameDts = dts;
|
|
7581
7761
|
}
|
|
7582
7762
|
track.samples.push(sample);
|
|
7583
7763
|
units.forEach(function(unit) {
|
|
@@ -8051,10 +8231,16 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
8051
8231
|
if (track.useEME && track.enca) {
|
|
8052
8232
|
content = MP42.enca(track);
|
|
8053
8233
|
} else {
|
|
8054
|
-
|
|
8234
|
+
if (track.codecType === AudioCodecType.OPUS) {
|
|
8235
|
+
content = MP42.opus(track);
|
|
8236
|
+
} else {
|
|
8237
|
+
content = MP42.mp4a(track);
|
|
8238
|
+
}
|
|
8055
8239
|
}
|
|
8056
8240
|
} else if (track.useEME && track.encv) {
|
|
8057
8241
|
content = MP42.encv(track);
|
|
8242
|
+
} else if (track.av1C) {
|
|
8243
|
+
content = MP42.av01(track);
|
|
8058
8244
|
} else {
|
|
8059
8245
|
content = MP42.avc1hev1(track);
|
|
8060
8246
|
}
|
|
@@ -8267,6 +8453,90 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
8267
8453
|
var schi = MP42.schi(data);
|
|
8268
8454
|
return MP42.box(MP42.types.sinf, content, MP42.box(MP42.types.frma, frma), MP42.box(MP42.types.schm, schm), schi);
|
|
8269
8455
|
}
|
|
8456
|
+
}, {
|
|
8457
|
+
key: "av01",
|
|
8458
|
+
value: function av01(track) {
|
|
8459
|
+
return MP42.box(MP42.types.av01, new Uint8Array([
|
|
8460
|
+
0,
|
|
8461
|
+
0,
|
|
8462
|
+
0,
|
|
8463
|
+
0,
|
|
8464
|
+
0,
|
|
8465
|
+
0,
|
|
8466
|
+
0,
|
|
8467
|
+
1,
|
|
8468
|
+
0,
|
|
8469
|
+
0,
|
|
8470
|
+
0,
|
|
8471
|
+
0,
|
|
8472
|
+
0,
|
|
8473
|
+
0,
|
|
8474
|
+
0,
|
|
8475
|
+
0,
|
|
8476
|
+
0,
|
|
8477
|
+
0,
|
|
8478
|
+
0,
|
|
8479
|
+
0,
|
|
8480
|
+
0,
|
|
8481
|
+
0,
|
|
8482
|
+
0,
|
|
8483
|
+
0,
|
|
8484
|
+
track.width >> 8 & 255,
|
|
8485
|
+
track.width & 255,
|
|
8486
|
+
track.height >> 8 & 255,
|
|
8487
|
+
track.height & 255,
|
|
8488
|
+
0,
|
|
8489
|
+
72,
|
|
8490
|
+
0,
|
|
8491
|
+
0,
|
|
8492
|
+
0,
|
|
8493
|
+
72,
|
|
8494
|
+
0,
|
|
8495
|
+
0,
|
|
8496
|
+
0,
|
|
8497
|
+
0,
|
|
8498
|
+
0,
|
|
8499
|
+
0,
|
|
8500
|
+
0,
|
|
8501
|
+
1,
|
|
8502
|
+
0,
|
|
8503
|
+
0,
|
|
8504
|
+
0,
|
|
8505
|
+
0,
|
|
8506
|
+
0,
|
|
8507
|
+
0,
|
|
8508
|
+
0,
|
|
8509
|
+
0,
|
|
8510
|
+
0,
|
|
8511
|
+
0,
|
|
8512
|
+
0,
|
|
8513
|
+
0,
|
|
8514
|
+
0,
|
|
8515
|
+
0,
|
|
8516
|
+
0,
|
|
8517
|
+
0,
|
|
8518
|
+
0,
|
|
8519
|
+
0,
|
|
8520
|
+
0,
|
|
8521
|
+
0,
|
|
8522
|
+
0,
|
|
8523
|
+
0,
|
|
8524
|
+
0,
|
|
8525
|
+
0,
|
|
8526
|
+
0,
|
|
8527
|
+
0,
|
|
8528
|
+
0,
|
|
8529
|
+
0,
|
|
8530
|
+
0,
|
|
8531
|
+
0,
|
|
8532
|
+
0,
|
|
8533
|
+
0,
|
|
8534
|
+
0,
|
|
8535
|
+
24,
|
|
8536
|
+
17,
|
|
8537
|
+
17
|
|
8538
|
+
]), track.av1C, track.colr);
|
|
8539
|
+
}
|
|
8270
8540
|
}, {
|
|
8271
8541
|
key: "avc1hev1",
|
|
8272
8542
|
value: function avc1hev1(track) {
|
|
@@ -8637,6 +8907,53 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
8637
8907
|
)));
|
|
8638
8908
|
return esds2;
|
|
8639
8909
|
}
|
|
8910
|
+
}, {
|
|
8911
|
+
key: "opus",
|
|
8912
|
+
value: function opus(track) {
|
|
8913
|
+
var opusAudioDescription = new Uint8Array([
|
|
8914
|
+
0,
|
|
8915
|
+
0,
|
|
8916
|
+
0,
|
|
8917
|
+
0,
|
|
8918
|
+
0,
|
|
8919
|
+
0,
|
|
8920
|
+
0,
|
|
8921
|
+
1,
|
|
8922
|
+
0,
|
|
8923
|
+
0,
|
|
8924
|
+
0,
|
|
8925
|
+
0,
|
|
8926
|
+
0,
|
|
8927
|
+
0,
|
|
8928
|
+
0,
|
|
8929
|
+
0,
|
|
8930
|
+
0,
|
|
8931
|
+
track.channelCount,
|
|
8932
|
+
0,
|
|
8933
|
+
16,
|
|
8934
|
+
0,
|
|
8935
|
+
0,
|
|
8936
|
+
0,
|
|
8937
|
+
0,
|
|
8938
|
+
track.sampleRate >> 8 & 255,
|
|
8939
|
+
track.sampleRate & 255,
|
|
8940
|
+
0,
|
|
8941
|
+
0
|
|
8942
|
+
]);
|
|
8943
|
+
var opusSpecificConfig = track.config.length ? MP42.dOps(track) : [];
|
|
8944
|
+
return MP42.box(MP42.types.Opus, opusAudioDescription, opusSpecificConfig);
|
|
8945
|
+
}
|
|
8946
|
+
}, {
|
|
8947
|
+
key: "dOps",
|
|
8948
|
+
value: function dOps(track) {
|
|
8949
|
+
if (track.config) {
|
|
8950
|
+
track.config[4] = track.sampleRate >>> 24 & 255;
|
|
8951
|
+
track.config[5] = track.sampleRate >>> 16 & 255;
|
|
8952
|
+
track.config[6] = track.sampleRate >>> 8 & 255;
|
|
8953
|
+
track.config[7] = track.sampleRate & 255;
|
|
8954
|
+
return MP42.box(MP42.types.dOps, track.config);
|
|
8955
|
+
}
|
|
8956
|
+
}
|
|
8640
8957
|
}, {
|
|
8641
8958
|
key: "mvex",
|
|
8642
8959
|
value: function mvex(tracks) {
|
|
@@ -9239,7 +9556,7 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9239
9556
|
}]);
|
|
9240
9557
|
return MP42;
|
|
9241
9558
|
}();
|
|
9242
|
-
_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) {
|
|
9559
|
+
_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) {
|
|
9243
9560
|
p[c] = [c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2), c.charCodeAt(3)];
|
|
9244
9561
|
return p;
|
|
9245
9562
|
}, /* @__PURE__ */ Object.create(null)));
|
|
@@ -9574,30 +9891,46 @@ var FMP4Remuxer = /* @__PURE__ */ function() {
|
|
|
9574
9891
|
};
|
|
9575
9892
|
}
|
|
9576
9893
|
var samples = track.samples;
|
|
9894
|
+
var isAV01 = /av01/.test(track.codec);
|
|
9577
9895
|
var mdatSize = 0;
|
|
9578
|
-
|
|
9579
|
-
|
|
9580
|
-
|
|
9581
|
-
}
|
|
9582
|
-
|
|
9583
|
-
|
|
9584
|
-
|
|
9585
|
-
|
|
9586
|
-
|
|
9587
|
-
|
|
9588
|
-
var sampleSize = 0;
|
|
9589
|
-
_sample.units.forEach(function(u) {
|
|
9590
|
-
mdatView.setUint32(_offset, u.byteLength);
|
|
9591
|
-
_offset += 4;
|
|
9592
|
-
mdata.set(u, _offset);
|
|
9593
|
-
_offset += u.byteLength;
|
|
9594
|
-
sampleSize += 4 + u.byteLength;
|
|
9896
|
+
if (isAV01) {
|
|
9897
|
+
samples.forEach(function(s) {
|
|
9898
|
+
mdatSize += s.data.byteLength;
|
|
9899
|
+
});
|
|
9900
|
+
} else {
|
|
9901
|
+
samples.forEach(function(s) {
|
|
9902
|
+
mdatSize += s.units.reduce(function(t, c) {
|
|
9903
|
+
return t + c.byteLength;
|
|
9904
|
+
}, 0);
|
|
9905
|
+
mdatSize += s.units.length * 4;
|
|
9595
9906
|
});
|
|
9596
|
-
|
|
9597
|
-
|
|
9598
|
-
|
|
9599
|
-
|
|
9600
|
-
|
|
9907
|
+
}
|
|
9908
|
+
var mdata = new Uint8Array(mdatSize);
|
|
9909
|
+
if (isAV01) {
|
|
9910
|
+
for (var i = 0, l = samples.length, offset = 0, sample; i < l; i++) {
|
|
9911
|
+
sample = samples[i];
|
|
9912
|
+
mdata.set(sample.data, offset);
|
|
9913
|
+
sample.size = sample.data.byteLength;
|
|
9914
|
+
offset += sample.size;
|
|
9915
|
+
}
|
|
9916
|
+
} else {
|
|
9917
|
+
var mdatView = new DataView(mdata.buffer);
|
|
9918
|
+
var _loop = function _loop2(_offset2, _sample2) {
|
|
9919
|
+
_sample2 = samples[_i];
|
|
9920
|
+
var sampleSize = 0;
|
|
9921
|
+
_sample2.units.forEach(function(u) {
|
|
9922
|
+
mdatView.setUint32(_offset2, u.byteLength);
|
|
9923
|
+
_offset2 += 4;
|
|
9924
|
+
mdata.set(u, _offset2);
|
|
9925
|
+
_offset2 += u.byteLength;
|
|
9926
|
+
sampleSize += 4 + u.byteLength;
|
|
9927
|
+
});
|
|
9928
|
+
_sample2.size = sampleSize;
|
|
9929
|
+
_offset = _offset2, _sample = _sample2;
|
|
9930
|
+
};
|
|
9931
|
+
for (var _i = 0, _l = samples.length, _offset = 0, _sample; _i < _l; _i++) {
|
|
9932
|
+
_loop(_offset, _sample);
|
|
9933
|
+
}
|
|
9601
9934
|
}
|
|
9602
9935
|
var mdat = MP4.mdat(mdata);
|
|
9603
9936
|
var moof = MP4.moof([track]);
|
|
@@ -9627,6 +9960,55 @@ var FMP4Remuxer = /* @__PURE__ */ function() {
|
|
|
9627
9960
|
}]);
|
|
9628
9961
|
return FMP4Remuxer2;
|
|
9629
9962
|
}();
|
|
9963
|
+
var TransferCost = /* @__PURE__ */ function() {
|
|
9964
|
+
function TransferCost2() {
|
|
9965
|
+
_classCallCheck$4(this, TransferCost2);
|
|
9966
|
+
_defineProperty$3(this, "_ttfb", 0);
|
|
9967
|
+
_defineProperty$3(this, "_demuxStart", 0);
|
|
9968
|
+
_defineProperty$3(this, "_demuxEnd", 0);
|
|
9969
|
+
_defineProperty$3(this, "_demuxCost", 0);
|
|
9970
|
+
_defineProperty$3(this, "_remuxStart", 0);
|
|
9971
|
+
_defineProperty$3(this, "_remuxEnd", 0);
|
|
9972
|
+
_defineProperty$3(this, "_remuxCost", 0);
|
|
9973
|
+
_defineProperty$3(this, "_appendStart", 0);
|
|
9974
|
+
_defineProperty$3(this, "_appendEnd", 0);
|
|
9975
|
+
_defineProperty$3(this, "_appendCost", 0);
|
|
9976
|
+
}
|
|
9977
|
+
_createClass$4(TransferCost2, [{
|
|
9978
|
+
key: "set",
|
|
9979
|
+
value: function set(event, value) {
|
|
9980
|
+
this["_".concat(event)] = value;
|
|
9981
|
+
}
|
|
9982
|
+
}, {
|
|
9983
|
+
key: "start",
|
|
9984
|
+
value: function start(event) {
|
|
9985
|
+
this["_".concat(event, "Start")] = Date.now();
|
|
9986
|
+
}
|
|
9987
|
+
}, {
|
|
9988
|
+
key: "end",
|
|
9989
|
+
value: function end(event) {
|
|
9990
|
+
this["_".concat(event, "End")] = Date.now();
|
|
9991
|
+
this["_".concat(event, "Cost")] = this["_".concat(event, "Cost")] + (this["_".concat(event, "End")] - this["_".concat(event, "Start")]);
|
|
9992
|
+
}
|
|
9993
|
+
}, {
|
|
9994
|
+
key: "transferCost",
|
|
9995
|
+
get: function get() {
|
|
9996
|
+
return {
|
|
9997
|
+
ttfbCost: this._ttfb,
|
|
9998
|
+
demuxCost: this._demuxCost,
|
|
9999
|
+
remuxCost: this._remuxCost,
|
|
10000
|
+
appendCost: this._appendCost
|
|
10001
|
+
};
|
|
10002
|
+
}
|
|
10003
|
+
}]);
|
|
10004
|
+
return TransferCost2;
|
|
10005
|
+
}();
|
|
10006
|
+
var TRANSFER_EVENT = {
|
|
10007
|
+
TTFB: "ttfb",
|
|
10008
|
+
DEMUX: "demux",
|
|
10009
|
+
REMUX: "remux",
|
|
10010
|
+
APPEND: "append"
|
|
10011
|
+
};
|
|
9630
10012
|
var logger$1 = new Logger$2("BufferService");
|
|
9631
10013
|
var BufferService = /* @__PURE__ */ function() {
|
|
9632
10014
|
function BufferService2(flv, softVideo) {
|
|
@@ -9714,7 +10096,8 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9714
10096
|
this._contiguous = false;
|
|
9715
10097
|
this._sourceCreated = false;
|
|
9716
10098
|
this._initSegmentId = "";
|
|
9717
|
-
|
|
10099
|
+
this.resetSeamlessSwitchStats();
|
|
10100
|
+
case 12:
|
|
9718
10101
|
case "end":
|
|
9719
10102
|
return _context.stop();
|
|
9720
10103
|
}
|
|
@@ -9725,6 +10108,15 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9725
10108
|
}
|
|
9726
10109
|
return reset;
|
|
9727
10110
|
}()
|
|
10111
|
+
}, {
|
|
10112
|
+
key: "resetSeamlessSwitchStats",
|
|
10113
|
+
value: function resetSeamlessSwitchStats() {
|
|
10114
|
+
this.seamlessLoadingSwitch = null;
|
|
10115
|
+
this.seamlessLoadingSwitching = false;
|
|
10116
|
+
if (this._demuxer) {
|
|
10117
|
+
this._demuxer.seamlessLoadingSwitching = false;
|
|
10118
|
+
}
|
|
10119
|
+
}
|
|
9728
10120
|
}, {
|
|
9729
10121
|
key: "endOfStream",
|
|
9730
10122
|
value: function() {
|
|
@@ -9830,32 +10222,56 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9830
10222
|
key: "appendBuffer",
|
|
9831
10223
|
value: function() {
|
|
9832
10224
|
var _appendBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee5(chunk) {
|
|
9833
|
-
var
|
|
10225
|
+
var _this = this;
|
|
10226
|
+
var switchingNoReset, demuxer, videoTrack, audioTrack, metadataTrack, idx, videoExist, audioExist, duration, track, videoType, audioType, mse, afterAppend, newId, remuxResult, p;
|
|
9834
10227
|
return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
|
|
9835
10228
|
while (1)
|
|
9836
10229
|
switch (_context5.prev = _context5.next) {
|
|
9837
10230
|
case 0:
|
|
10231
|
+
switchingNoReset = false;
|
|
9838
10232
|
if (this._cachedBuffer) {
|
|
9839
10233
|
chunk = concatUint8Array$1(this._cachedBuffer, chunk);
|
|
9840
10234
|
this._cachedBuffer = null;
|
|
9841
10235
|
}
|
|
9842
10236
|
demuxer = this._demuxer;
|
|
9843
10237
|
if (!(!chunk || !chunk.length || !demuxer)) {
|
|
9844
|
-
_context5.next =
|
|
10238
|
+
_context5.next = 5;
|
|
9845
10239
|
break;
|
|
9846
10240
|
}
|
|
9847
10241
|
return _context5.abrupt("return");
|
|
9848
|
-
case
|
|
9849
|
-
_context5.prev =
|
|
9850
|
-
|
|
9851
|
-
|
|
10242
|
+
case 5:
|
|
10243
|
+
_context5.prev = 5;
|
|
10244
|
+
this.flv._transferCost.start(TRANSFER_EVENT.DEMUX);
|
|
10245
|
+
demuxer.demuxAndFix(chunk, this.seamlessLoadingSwitching || this._discontinuity, this._contiguous, this._demuxStartTime, this.seamlessLoadingSwitching);
|
|
10246
|
+
this.seamlessLoadingSwitching = false;
|
|
10247
|
+
this.flv._transferCost.end(TRANSFER_EVENT.DEMUX);
|
|
10248
|
+
_context5.next = 15;
|
|
9852
10249
|
break;
|
|
9853
|
-
case
|
|
9854
|
-
_context5.prev =
|
|
9855
|
-
_context5.t0 = _context5["catch"](
|
|
10250
|
+
case 12:
|
|
10251
|
+
_context5.prev = 12;
|
|
10252
|
+
_context5.t0 = _context5["catch"](5);
|
|
9856
10253
|
throw new StreamingError(ERR.DEMUX, ERR.SUB_TYPES.FLV, _context5.t0);
|
|
9857
|
-
case
|
|
10254
|
+
case 15:
|
|
9858
10255
|
videoTrack = demuxer.videoTrack, audioTrack = demuxer.audioTrack, metadataTrack = demuxer.metadataTrack;
|
|
10256
|
+
if (!this.seamlessLoadingSwitch) {
|
|
10257
|
+
_context5.next = 25;
|
|
10258
|
+
break;
|
|
10259
|
+
}
|
|
10260
|
+
idx = videoTrack.samples.findIndex(function(sample) {
|
|
10261
|
+
return sample.originDts === videoTrack.lastKeyFrameDts;
|
|
10262
|
+
});
|
|
10263
|
+
if (!(idx >= 0)) {
|
|
10264
|
+
_context5.next = 25;
|
|
10265
|
+
break;
|
|
10266
|
+
}
|
|
10267
|
+
videoTrack.samples.splice(idx);
|
|
10268
|
+
_context5.next = 22;
|
|
10269
|
+
return this.seamlessLoadingSwitch();
|
|
10270
|
+
case 22:
|
|
10271
|
+
this.seamlessLoadingSwitch = null;
|
|
10272
|
+
chunk = null;
|
|
10273
|
+
switchingNoReset = true;
|
|
10274
|
+
case 25:
|
|
9859
10275
|
videoExist = videoTrack.exist();
|
|
9860
10276
|
audioExist = audioTrack.exist();
|
|
9861
10277
|
if (this._opts.onlyAudio) {
|
|
@@ -9867,7 +10283,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9867
10283
|
audioTrack.present = false;
|
|
9868
10284
|
}
|
|
9869
10285
|
if (!(!videoExist && videoTrack.present || !audioExist && audioTrack.present)) {
|
|
9870
|
-
_context5.next =
|
|
10286
|
+
_context5.next = 42;
|
|
9871
10287
|
break;
|
|
9872
10288
|
}
|
|
9873
10289
|
duration = 0;
|
|
@@ -9876,7 +10292,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9876
10292
|
duration = (track.samples[track.samples.length - 1].originPts - track.samples[0].originPts) / track.timescale * 1e3;
|
|
9877
10293
|
}
|
|
9878
10294
|
if (!(duration > this._opts.analyzeDuration)) {
|
|
9879
|
-
_context5.next =
|
|
10295
|
+
_context5.next = 40;
|
|
9880
10296
|
break;
|
|
9881
10297
|
}
|
|
9882
10298
|
logger$1.warn("analyze duration exceeded, ".concat(duration, "ms"), track);
|
|
@@ -9885,19 +10301,28 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9885
10301
|
this.flv.emit(EVENT.ANALYZE_DURATION_EXCEEDED, {
|
|
9886
10302
|
duration
|
|
9887
10303
|
});
|
|
9888
|
-
_context5.next =
|
|
10304
|
+
_context5.next = 42;
|
|
9889
10305
|
break;
|
|
9890
|
-
case
|
|
10306
|
+
case 40:
|
|
9891
10307
|
this._cachedBuffer = chunk;
|
|
9892
10308
|
return _context5.abrupt("return");
|
|
9893
|
-
case
|
|
10309
|
+
case 42:
|
|
9894
10310
|
videoType = videoTrack.type;
|
|
9895
10311
|
audioType = audioTrack.type;
|
|
9896
10312
|
this._fireEvents(videoTrack, audioTrack, metadataTrack);
|
|
9897
|
-
|
|
9898
|
-
|
|
9899
|
-
|
|
10313
|
+
if (!switchingNoReset) {
|
|
10314
|
+
this._discontinuity = false;
|
|
10315
|
+
this._contiguous = true;
|
|
10316
|
+
this._demuxStartTime = 0;
|
|
10317
|
+
}
|
|
9900
10318
|
mse = this._mse;
|
|
10319
|
+
afterAppend = function afterAppend2() {
|
|
10320
|
+
var _this$flv;
|
|
10321
|
+
if ((_this$flv = _this.flv) !== null && _this$flv !== void 0 && _this$flv.emit) {
|
|
10322
|
+
var _this$flv2;
|
|
10323
|
+
(_this$flv2 = _this.flv) === null || _this$flv2 === void 0 ? void 0 : _this$flv2.emit(EVENT.APPEND_BUFFER, {});
|
|
10324
|
+
}
|
|
10325
|
+
};
|
|
9901
10326
|
this.flv.emit(EVENT.DEMUXED_TRACK, {
|
|
9902
10327
|
videoTrack
|
|
9903
10328
|
});
|
|
@@ -9908,16 +10333,16 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9908
10333
|
this._emitMetaParsedEvent(videoTrack, audioTrack);
|
|
9909
10334
|
}
|
|
9910
10335
|
if (!mse) {
|
|
9911
|
-
_context5.next =
|
|
10336
|
+
_context5.next = 81;
|
|
9912
10337
|
break;
|
|
9913
10338
|
}
|
|
9914
10339
|
if (this._sourceCreated) {
|
|
9915
|
-
_context5.next =
|
|
10340
|
+
_context5.next = 59;
|
|
9916
10341
|
break;
|
|
9917
10342
|
}
|
|
9918
|
-
_context5.next =
|
|
10343
|
+
_context5.next = 55;
|
|
9919
10344
|
return mse.open();
|
|
9920
|
-
case
|
|
10345
|
+
case 55:
|
|
9921
10346
|
if (videoExist) {
|
|
9922
10347
|
logger$1.log("codec: video/mp4;codecs=".concat(videoTrack.codec));
|
|
9923
10348
|
mse.createSource(videoType, "video/mp4;codecs=".concat(videoTrack.codec));
|
|
@@ -9928,26 +10353,28 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9928
10353
|
}
|
|
9929
10354
|
this._sourceCreated = true;
|
|
9930
10355
|
this.flv.emit(EVENT.SOURCEBUFFER_CREATED);
|
|
9931
|
-
case
|
|
9932
|
-
_context5.prev =
|
|
10356
|
+
case 59:
|
|
10357
|
+
_context5.prev = 59;
|
|
9933
10358
|
if (this._needInitSegment && !this._opts.mseLowLatency) {
|
|
9934
10359
|
videoTrack.duration = this._opts.durationForMSELowLatencyOff * videoTrack.timescale;
|
|
9935
10360
|
audioTrack.duration = this._opts.durationForMSELowLatencyOff * audioExist.timescale;
|
|
9936
10361
|
}
|
|
10362
|
+
this.flv._transferCost.start(TRANSFER_EVENT.REMUX);
|
|
9937
10363
|
remuxResult = this._remuxer.remux(this._needInitSegment);
|
|
9938
|
-
|
|
10364
|
+
this.flv._transferCost.end(TRANSFER_EVENT.REMUX);
|
|
10365
|
+
_context5.next = 69;
|
|
9939
10366
|
break;
|
|
9940
|
-
case
|
|
9941
|
-
_context5.prev =
|
|
9942
|
-
_context5.t1 = _context5["catch"](
|
|
10367
|
+
case 66:
|
|
10368
|
+
_context5.prev = 66;
|
|
10369
|
+
_context5.t1 = _context5["catch"](59);
|
|
9943
10370
|
throw new StreamingError(ERR.REMUX, ERR.SUB_TYPES.FMP4, _context5.t1);
|
|
9944
|
-
case
|
|
10371
|
+
case 69:
|
|
9945
10372
|
if (!(this._needInitSegment && !remuxResult.videoInitSegment && !remuxResult.audioInitSegment)) {
|
|
9946
|
-
_context5.next =
|
|
10373
|
+
_context5.next = 71;
|
|
9947
10374
|
break;
|
|
9948
10375
|
}
|
|
9949
10376
|
return _context5.abrupt("return");
|
|
9950
|
-
case
|
|
10377
|
+
case 71:
|
|
9951
10378
|
this._needInitSegment = false;
|
|
9952
10379
|
p = [];
|
|
9953
10380
|
if (remuxResult.videoInitSegment)
|
|
@@ -9958,16 +10385,21 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9958
10385
|
p.push(mse.append(videoType, remuxResult.videoSegment));
|
|
9959
10386
|
if (remuxResult.audioSegment)
|
|
9960
10387
|
p.push(mse.append(audioType, remuxResult.audioSegment));
|
|
9961
|
-
|
|
9962
|
-
|
|
10388
|
+
this.flv._transferCost.start(TRANSFER_EVENT.APPEND);
|
|
10389
|
+
return _context5.abrupt("return", Promise.all(p).then(afterAppend).then(function() {
|
|
10390
|
+
_this.flv._transferCost.end(TRANSFER_EVENT.APPEND);
|
|
10391
|
+
afterAppend();
|
|
10392
|
+
}));
|
|
10393
|
+
case 81:
|
|
9963
10394
|
if (this._softVideo) {
|
|
9964
10395
|
this._softVideo.appendBuffer(videoTrack, audioTrack);
|
|
10396
|
+
afterAppend();
|
|
9965
10397
|
}
|
|
9966
|
-
case
|
|
10398
|
+
case 82:
|
|
9967
10399
|
case "end":
|
|
9968
10400
|
return _context5.stop();
|
|
9969
10401
|
}
|
|
9970
|
-
}, _callee5, this, [[
|
|
10402
|
+
}, _callee5, this, [[5, 12], [59, 66]]);
|
|
9971
10403
|
}));
|
|
9972
10404
|
function appendBuffer(_x2) {
|
|
9973
10405
|
return _appendBuffer.apply(this, arguments);
|
|
@@ -9978,7 +10410,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9978
10410
|
key: "evictBuffer",
|
|
9979
10411
|
value: function() {
|
|
9980
10412
|
var _evictBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee6(bufferBehind) {
|
|
9981
|
-
var
|
|
10413
|
+
var _this2 = this;
|
|
9982
10414
|
var media, currentTime, removeEnd, start;
|
|
9983
10415
|
return _regeneratorRuntime$1().wrap(function _callee6$(_context6) {
|
|
9984
10416
|
while (1)
|
|
@@ -10007,7 +10439,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
10007
10439
|
return _context6.abrupt("return");
|
|
10008
10440
|
case 10:
|
|
10009
10441
|
return _context6.abrupt("return", this._mse.clearBuffer(0, removeEnd).then(function() {
|
|
10010
|
-
return
|
|
10442
|
+
return _this2.flv.emit(EVENT.REMOVE_BUFFER, {
|
|
10011
10443
|
removeEnd
|
|
10012
10444
|
});
|
|
10013
10445
|
}));
|
|
@@ -10057,16 +10489,16 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
10057
10489
|
}, {
|
|
10058
10490
|
key: "_fireEvents",
|
|
10059
10491
|
value: function _fireEvents(videoTrack, audioTrack, metadataTrack) {
|
|
10060
|
-
var
|
|
10061
|
-
logger$1.debug(videoTrack.samples, audioTrack.samples);
|
|
10492
|
+
var _this3 = this;
|
|
10493
|
+
logger$1.debug("videoTrack samples count: ".concat(videoTrack.samples.length, ", audioTrack samples count: ").concat(audioTrack.samples.length));
|
|
10062
10494
|
metadataTrack.flvScriptSamples.forEach(function(sample) {
|
|
10063
|
-
|
|
10495
|
+
_this3.flv.emit(EVENT.FLV_SCRIPT_DATA, sample);
|
|
10064
10496
|
logger$1.debug("flvScriptData", sample);
|
|
10065
10497
|
});
|
|
10066
10498
|
videoTrack.samples.forEach(function(sample) {
|
|
10067
10499
|
if (sample.keyframe) {
|
|
10068
|
-
|
|
10069
|
-
pts: sample.
|
|
10500
|
+
_this3.flv.emit(EVENT.KEYFRAME, {
|
|
10501
|
+
pts: sample.originPts
|
|
10070
10502
|
});
|
|
10071
10503
|
}
|
|
10072
10504
|
});
|
|
@@ -10084,7 +10516,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
10084
10516
|
break;
|
|
10085
10517
|
}
|
|
10086
10518
|
if (type)
|
|
10087
|
-
|
|
10519
|
+
_this3.flv.emit(EVENT.STREAM_EXCEPTION, _objectSpread2$2(_objectSpread2$2({}, warn), {}, {
|
|
10088
10520
|
type
|
|
10089
10521
|
}));
|
|
10090
10522
|
logger$1.warn("video exception", warn);
|
|
@@ -10103,13 +10535,13 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
10103
10535
|
break;
|
|
10104
10536
|
}
|
|
10105
10537
|
if (type)
|
|
10106
|
-
|
|
10538
|
+
_this3.flv.emit(EVENT.STREAM_EXCEPTION, _objectSpread2$2(_objectSpread2$2({}, warn), {}, {
|
|
10107
10539
|
type
|
|
10108
10540
|
}));
|
|
10109
10541
|
logger$1.warn("audio exception", warn);
|
|
10110
10542
|
});
|
|
10111
10543
|
metadataTrack.seiSamples.forEach(function(sei) {
|
|
10112
|
-
|
|
10544
|
+
_this3.flv.emit(EVENT.SEI, _objectSpread2$2(_objectSpread2$2({}, sei), {}, {
|
|
10113
10545
|
sei: {
|
|
10114
10546
|
code: sei.data.type,
|
|
10115
10547
|
content: sei.data.payload,
|
|
@@ -10144,7 +10576,8 @@ function getOption(opts) {
|
|
|
10144
10576
|
durationForMSELowLatencyOff: 6,
|
|
10145
10577
|
chunkCountForSpeed: 50,
|
|
10146
10578
|
skipChunkSize: 1e3,
|
|
10147
|
-
longtimeNoReceived: 3e3
|
|
10579
|
+
longtimeNoReceived: 3e3,
|
|
10580
|
+
enableStartGapJump: true
|
|
10148
10581
|
}, opts);
|
|
10149
10582
|
if (ret.isLive) {
|
|
10150
10583
|
if (ret.preloadTime) {
|
|
@@ -10212,7 +10645,7 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10212
10645
|
_defineProperty$3(_assertThisInitialized$3(_this), "_acceptRanges", true);
|
|
10213
10646
|
_defineProperty$3(_assertThisInitialized$3(_this), "_onProgress", /* @__PURE__ */ function() {
|
|
10214
10647
|
var _ref2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee(chunk, done, _ref, response) {
|
|
10215
|
-
var startTime, endTime, st, firstByteTime, _this$_mediaLoader, headers, _this$_bufferService, remaining, maxReaderInterval;
|
|
10648
|
+
var startTime, endTime, st, firstByteTime, _this$_mediaLoader, headers, elapsed, _this$_bufferService, remaining, maxReaderInterval;
|
|
10216
10649
|
return _regeneratorRuntime$1().wrap(function _callee$(_context) {
|
|
10217
10650
|
while (1)
|
|
10218
10651
|
switch (_context.prev = _context.next) {
|
|
@@ -10220,7 +10653,7 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10220
10653
|
startTime = _ref.startTime, endTime = _ref.endTime, st = _ref.st, firstByteTime = _ref.firstByteTime;
|
|
10221
10654
|
_this._loading = !done;
|
|
10222
10655
|
if (_this._firstProgressEmit) {
|
|
10223
|
-
_context.next =
|
|
10656
|
+
_context.next = 13;
|
|
10224
10657
|
break;
|
|
10225
10658
|
}
|
|
10226
10659
|
if (_this.media) {
|
|
@@ -10231,49 +10664,51 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10231
10664
|
return _context.abrupt("return");
|
|
10232
10665
|
case 6:
|
|
10233
10666
|
headers = response.headers;
|
|
10667
|
+
elapsed = st ? firstByteTime - st : endTime - startTime;
|
|
10234
10668
|
_this.emit(EVENT.TTFB, {
|
|
10235
10669
|
url: _this._opts.url,
|
|
10236
10670
|
responseUrl: response.url,
|
|
10237
|
-
elapsed
|
|
10671
|
+
elapsed
|
|
10238
10672
|
});
|
|
10239
10673
|
_this.emit(EVENT.LOAD_RESPONSE_HEADERS, {
|
|
10240
10674
|
headers
|
|
10241
10675
|
});
|
|
10676
|
+
_this._transferCost.set(TRANSFER_EVENT.TTFB, elapsed);
|
|
10242
10677
|
_this._acceptRanges = !!(headers !== null && headers !== void 0 && headers.get("Accept-Ranges")) || !!(headers !== null && headers !== void 0 && headers.get("Content-Range"));
|
|
10243
10678
|
_this._firstProgressEmit = true;
|
|
10244
|
-
case
|
|
10679
|
+
case 13:
|
|
10245
10680
|
if (_this._bufferService) {
|
|
10246
|
-
_context.next =
|
|
10681
|
+
_context.next = 15;
|
|
10247
10682
|
break;
|
|
10248
10683
|
}
|
|
10249
10684
|
return _context.abrupt("return");
|
|
10250
|
-
case
|
|
10685
|
+
case 15:
|
|
10251
10686
|
clearTimeout(_this._maxChunkWaitTimer);
|
|
10252
10687
|
_this._bandwidthService.addChunkRecord(chunk === null || chunk === void 0 ? void 0 : chunk.byteLength, endTime - startTime);
|
|
10253
|
-
_context.prev =
|
|
10254
|
-
_context.next =
|
|
10688
|
+
_context.prev = 17;
|
|
10689
|
+
_context.next = 20;
|
|
10255
10690
|
return _this._bufferService.appendBuffer(chunk);
|
|
10256
|
-
case
|
|
10691
|
+
case 20:
|
|
10257
10692
|
(_this$_bufferService = _this._bufferService) === null || _this$_bufferService === void 0 ? void 0 : _this$_bufferService.evictBuffer(_this._opts.bufferBehind);
|
|
10258
|
-
_context.next =
|
|
10693
|
+
_context.next = 33;
|
|
10259
10694
|
break;
|
|
10260
|
-
case
|
|
10261
|
-
_context.prev =
|
|
10262
|
-
_context.t0 = _context["catch"](
|
|
10695
|
+
case 23:
|
|
10696
|
+
_context.prev = 23;
|
|
10697
|
+
_context.t0 = _context["catch"](17);
|
|
10263
10698
|
if (!(!_this.isLive && _this._bufferService.isFull())) {
|
|
10264
|
-
_context.next =
|
|
10699
|
+
_context.next = 32;
|
|
10265
10700
|
break;
|
|
10266
10701
|
}
|
|
10267
|
-
_context.next =
|
|
10702
|
+
_context.next = 28;
|
|
10268
10703
|
return _this._mediaLoader.cancel();
|
|
10269
|
-
case
|
|
10704
|
+
case 28:
|
|
10270
10705
|
_this._loading = false;
|
|
10271
10706
|
remaining = _this.bufferInfo().remaining;
|
|
10272
10707
|
_this._opts.preloadTime = parseInt(remaining) / 2;
|
|
10273
10708
|
return _context.abrupt("return");
|
|
10274
|
-
case
|
|
10709
|
+
case 32:
|
|
10275
10710
|
return _context.abrupt("return", _this._emitError(StreamingError.create(_context.t0)));
|
|
10276
|
-
case
|
|
10711
|
+
case 33:
|
|
10277
10712
|
if (_this._urlSwitching) {
|
|
10278
10713
|
_this._urlSwitching = false;
|
|
10279
10714
|
_this.emit(EVENT.SWITCH_URL_SUCCESS, {
|
|
@@ -10285,7 +10720,7 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10285
10720
|
_this._tick();
|
|
10286
10721
|
}
|
|
10287
10722
|
if (!(done && !_this.media.seeking)) {
|
|
10288
|
-
_context.next =
|
|
10723
|
+
_context.next = 40;
|
|
10289
10724
|
break;
|
|
10290
10725
|
}
|
|
10291
10726
|
_this.emit(EVENT.LOAD_COMPLETE);
|
|
@@ -10294,13 +10729,13 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10294
10729
|
_this._end();
|
|
10295
10730
|
}
|
|
10296
10731
|
return _context.abrupt("return");
|
|
10297
|
-
case
|
|
10732
|
+
case 40:
|
|
10298
10733
|
if (_this.isLive) {
|
|
10299
|
-
_context.next =
|
|
10734
|
+
_context.next = 42;
|
|
10300
10735
|
break;
|
|
10301
10736
|
}
|
|
10302
10737
|
return _context.abrupt("return");
|
|
10303
|
-
case
|
|
10738
|
+
case 42:
|
|
10304
10739
|
maxReaderInterval = _this._opts.maxReaderInterval;
|
|
10305
10740
|
if (maxReaderInterval && _this._firstProgressEmit) {
|
|
10306
10741
|
clearTimeout(_this._maxChunkWaitTimer);
|
|
@@ -10314,11 +10749,11 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10314
10749
|
_this._end();
|
|
10315
10750
|
}, maxReaderInterval);
|
|
10316
10751
|
}
|
|
10317
|
-
case
|
|
10752
|
+
case 44:
|
|
10318
10753
|
case "end":
|
|
10319
10754
|
return _context.stop();
|
|
10320
10755
|
}
|
|
10321
|
-
}, _callee, null, [[
|
|
10756
|
+
}, _callee, null, [[17, 23]]);
|
|
10322
10757
|
}));
|
|
10323
10758
|
return function(_x, _x2, _x3, _x4) {
|
|
10324
10759
|
return _ref2.apply(this, arguments);
|
|
@@ -10351,19 +10786,19 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10351
10786
|
if (bufferEnd < MAX_HOLE || !media.readyState)
|
|
10352
10787
|
return;
|
|
10353
10788
|
var opts = _this._opts;
|
|
10354
|
-
if (isMediaPlaying(media)) {
|
|
10789
|
+
if (isMediaPlaying(media) && media.currentTime) {
|
|
10355
10790
|
if (_this._gapService) {
|
|
10356
10791
|
_this._gapService.do(media, opts.maxJumpDistance, _this.isLive, 3);
|
|
10357
10792
|
}
|
|
10358
10793
|
} else {
|
|
10359
|
-
if (!media.currentTime && _this._gapService) {
|
|
10794
|
+
if (!media.currentTime && _this._gapService && opts.enableStartGapJump) {
|
|
10360
10795
|
var gapJump = _this._opts.mseLowLatency || _this._opts.mseLowLatency === false && _this.bufferInfo(MAX_START_GAP).nextStart;
|
|
10361
10796
|
if (gapJump) {
|
|
10362
10797
|
_this._gapService.do(media, opts.maxJumpDistance, _this.isLive, 3);
|
|
10363
10798
|
}
|
|
10364
10799
|
return;
|
|
10365
10800
|
}
|
|
10366
|
-
if (opts.isLive && media.readyState === 4 && bufferEnd > opts.disconnectTime) {
|
|
10801
|
+
if (opts.isLive && media.readyState === 4 && bufferEnd - media.currentTime > opts.disconnectTime) {
|
|
10367
10802
|
_this.disconnect();
|
|
10368
10803
|
}
|
|
10369
10804
|
}
|
|
@@ -10512,6 +10947,7 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10512
10947
|
responseType: "arraybuffer"
|
|
10513
10948
|
}));
|
|
10514
10949
|
_this._disconnectRetryCount = _this._opts.disconnectRetryCount;
|
|
10950
|
+
_this._transferCost = new TransferCost();
|
|
10515
10951
|
_this._bufferService = new BufferService(_assertThisInitialized$3(_this), _this._opts.softDecode ? _this.media : void 0, _this._opts);
|
|
10516
10952
|
_this._seiService = new SeiService(_assertThisInitialized$3(_this));
|
|
10517
10953
|
_this._bandwidthService = new BandwidthService({
|
|
@@ -10535,7 +10971,7 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10535
10971
|
_createClass$4(Flv2, [{
|
|
10536
10972
|
key: "version",
|
|
10537
10973
|
get: function get() {
|
|
10538
|
-
return "3.0.
|
|
10974
|
+
return "3.0.21-rc.5";
|
|
10539
10975
|
}
|
|
10540
10976
|
}, {
|
|
10541
10977
|
key: "isLive",
|
|
@@ -10651,9 +11087,9 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10651
11087
|
return this._clear();
|
|
10652
11088
|
case 8:
|
|
10653
11089
|
setTimeout(function() {
|
|
11090
|
+
_this2._seamlessSwitching = true;
|
|
10654
11091
|
_this2._loadData(_this2._opts.url);
|
|
10655
11092
|
_this2._bufferService.seamlessSwitch();
|
|
10656
|
-
_this2._seamlessSwitching = true;
|
|
10657
11093
|
});
|
|
10658
11094
|
_context5.next = 13;
|
|
10659
11095
|
break;
|
|
@@ -10677,50 +11113,82 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10677
11113
|
}, {
|
|
10678
11114
|
key: "disconnect",
|
|
10679
11115
|
value: function disconnect() {
|
|
11116
|
+
var _this$_bufferService4;
|
|
10680
11117
|
logger.debug("disconnect!");
|
|
11118
|
+
(_this$_bufferService4 = this._bufferService) === null || _this$_bufferService4 === void 0 ? void 0 : _this$_bufferService4.resetSeamlessSwitchStats();
|
|
10681
11119
|
return this._clear();
|
|
10682
11120
|
}
|
|
10683
11121
|
}, {
|
|
10684
11122
|
key: "switchURL",
|
|
10685
11123
|
value: function() {
|
|
10686
|
-
var _switchURL = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
11124
|
+
var _switchURL = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee7(url, seamless) {
|
|
10687
11125
|
var _this3 = this;
|
|
10688
|
-
return _regeneratorRuntime$1().wrap(function
|
|
11126
|
+
return _regeneratorRuntime$1().wrap(function _callee7$(_context7) {
|
|
10689
11127
|
while (1)
|
|
10690
|
-
switch (
|
|
11128
|
+
switch (_context7.prev = _context7.next) {
|
|
10691
11129
|
case 0:
|
|
10692
11130
|
if (this._bufferService) {
|
|
10693
|
-
|
|
11131
|
+
_context7.next = 2;
|
|
10694
11132
|
break;
|
|
10695
11133
|
}
|
|
10696
|
-
return
|
|
11134
|
+
return _context7.abrupt("return");
|
|
10697
11135
|
case 2:
|
|
10698
11136
|
this._resetDisconnectCount();
|
|
11137
|
+
if (!(this._loading && seamless)) {
|
|
11138
|
+
_context7.next = 6;
|
|
11139
|
+
break;
|
|
11140
|
+
}
|
|
11141
|
+
this._bufferService.seamlessLoadingSwitch = /* @__PURE__ */ function() {
|
|
11142
|
+
var _ref5 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee6(pts) {
|
|
11143
|
+
return _regeneratorRuntime$1().wrap(function _callee6$(_context6) {
|
|
11144
|
+
while (1)
|
|
11145
|
+
switch (_context6.prev = _context6.next) {
|
|
11146
|
+
case 0:
|
|
11147
|
+
_context6.next = 2;
|
|
11148
|
+
return _this3._clear();
|
|
11149
|
+
case 2:
|
|
11150
|
+
_this3._bufferService.seamlessLoadingSwitching = true;
|
|
11151
|
+
_this3._urlSwitching = true;
|
|
11152
|
+
_this3._seamlessSwitching = true;
|
|
11153
|
+
_this3._bufferService.seamlessSwitch();
|
|
11154
|
+
_this3._loadData(url);
|
|
11155
|
+
case 7:
|
|
11156
|
+
case "end":
|
|
11157
|
+
return _context6.stop();
|
|
11158
|
+
}
|
|
11159
|
+
}, _callee6);
|
|
11160
|
+
}));
|
|
11161
|
+
return function(_x8) {
|
|
11162
|
+
return _ref5.apply(this, arguments);
|
|
11163
|
+
};
|
|
11164
|
+
}();
|
|
11165
|
+
return _context7.abrupt("return");
|
|
11166
|
+
case 6:
|
|
10699
11167
|
if (!(!seamless || !this._opts.isLive)) {
|
|
10700
|
-
|
|
11168
|
+
_context7.next = 11;
|
|
10701
11169
|
break;
|
|
10702
11170
|
}
|
|
10703
|
-
|
|
11171
|
+
_context7.next = 9;
|
|
10704
11172
|
return this.load(url);
|
|
10705
|
-
case
|
|
11173
|
+
case 9:
|
|
10706
11174
|
this._urlSwitching = true;
|
|
10707
|
-
return
|
|
11175
|
+
return _context7.abrupt("return", this.media.play(true).catch(function() {
|
|
10708
11176
|
}));
|
|
10709
|
-
case
|
|
10710
|
-
|
|
11177
|
+
case 11:
|
|
11178
|
+
_context7.next = 13;
|
|
10711
11179
|
return this._clear();
|
|
10712
|
-
case
|
|
11180
|
+
case 13:
|
|
10713
11181
|
setTimeout(function() {
|
|
10714
11182
|
_this3._urlSwitching = true;
|
|
10715
11183
|
_this3._seamlessSwitching = true;
|
|
10716
11184
|
_this3._loadData(url);
|
|
10717
11185
|
_this3._bufferService.seamlessSwitch();
|
|
10718
11186
|
});
|
|
10719
|
-
case
|
|
11187
|
+
case 14:
|
|
10720
11188
|
case "end":
|
|
10721
|
-
return
|
|
11189
|
+
return _context7.stop();
|
|
10722
11190
|
}
|
|
10723
|
-
},
|
|
11191
|
+
}, _callee7, this);
|
|
10724
11192
|
}));
|
|
10725
11193
|
function switchURL(_x6, _x7) {
|
|
10726
11194
|
return _switchURL.apply(this, arguments);
|
|
@@ -10730,16 +11198,16 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10730
11198
|
}, {
|
|
10731
11199
|
key: "destroy",
|
|
10732
11200
|
value: function() {
|
|
10733
|
-
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
10734
|
-
return _regeneratorRuntime$1().wrap(function
|
|
11201
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee8() {
|
|
11202
|
+
return _regeneratorRuntime$1().wrap(function _callee8$(_context8) {
|
|
10735
11203
|
while (1)
|
|
10736
|
-
switch (
|
|
11204
|
+
switch (_context8.prev = _context8.next) {
|
|
10737
11205
|
case 0:
|
|
10738
11206
|
if (this.media) {
|
|
10739
|
-
|
|
11207
|
+
_context8.next = 2;
|
|
10740
11208
|
break;
|
|
10741
11209
|
}
|
|
10742
|
-
return
|
|
11210
|
+
return _context8.abrupt("return");
|
|
10743
11211
|
case 2:
|
|
10744
11212
|
this.removeAllListeners();
|
|
10745
11213
|
this._seiService.reset();
|
|
@@ -10749,16 +11217,16 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10749
11217
|
this.media.removeEventListener("timeupdate", this._onTimeupdate);
|
|
10750
11218
|
this.media.removeEventListener("waiting", this._onWaiting);
|
|
10751
11219
|
this.media.removeEventListener("progress", this._onBufferUpdate);
|
|
10752
|
-
|
|
11220
|
+
_context8.next = 12;
|
|
10753
11221
|
return Promise.all([this._clear(), this._bufferService.destroy()]);
|
|
10754
11222
|
case 12:
|
|
10755
11223
|
this.media = null;
|
|
10756
11224
|
this._bufferService = null;
|
|
10757
11225
|
case 14:
|
|
10758
11226
|
case "end":
|
|
10759
|
-
return
|
|
11227
|
+
return _context8.stop();
|
|
10760
11228
|
}
|
|
10761
|
-
},
|
|
11229
|
+
}, _callee8, this);
|
|
10762
11230
|
}));
|
|
10763
11231
|
function destroy() {
|
|
10764
11232
|
return _destroy.apply(this, arguments);
|
|
@@ -10787,26 +11255,26 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10787
11255
|
}, {
|
|
10788
11256
|
key: "_reset",
|
|
10789
11257
|
value: function() {
|
|
10790
|
-
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
10791
|
-
var reuseMse,
|
|
10792
|
-
return _regeneratorRuntime$1().wrap(function
|
|
11258
|
+
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee9() {
|
|
11259
|
+
var reuseMse, _args9 = arguments;
|
|
11260
|
+
return _regeneratorRuntime$1().wrap(function _callee9$(_context9) {
|
|
10793
11261
|
while (1)
|
|
10794
|
-
switch (
|
|
11262
|
+
switch (_context9.prev = _context9.next) {
|
|
10795
11263
|
case 0:
|
|
10796
|
-
reuseMse =
|
|
11264
|
+
reuseMse = _args9.length > 0 && _args9[0] !== void 0 ? _args9[0] : false;
|
|
10797
11265
|
this._seiService.reset();
|
|
10798
11266
|
this._bandwidthService.reset();
|
|
10799
11267
|
this._stats.reset();
|
|
10800
|
-
|
|
11268
|
+
_context9.next = 6;
|
|
10801
11269
|
return this._clear();
|
|
10802
11270
|
case 6:
|
|
10803
|
-
|
|
11271
|
+
_context9.next = 8;
|
|
10804
11272
|
return this._bufferService.reset(reuseMse);
|
|
10805
11273
|
case 8:
|
|
10806
11274
|
case "end":
|
|
10807
|
-
return
|
|
11275
|
+
return _context9.stop();
|
|
10808
11276
|
}
|
|
10809
|
-
},
|
|
11277
|
+
}, _callee9, this);
|
|
10810
11278
|
}));
|
|
10811
11279
|
function _reset() {
|
|
10812
11280
|
return _reset2.apply(this, arguments);
|
|
@@ -10816,17 +11284,17 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10816
11284
|
}, {
|
|
10817
11285
|
key: "_loadData",
|
|
10818
11286
|
value: function() {
|
|
10819
|
-
var _loadData2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
11287
|
+
var _loadData2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee10(url, range) {
|
|
10820
11288
|
var finnalUrl;
|
|
10821
|
-
return _regeneratorRuntime$1().wrap(function
|
|
11289
|
+
return _regeneratorRuntime$1().wrap(function _callee10$(_context10) {
|
|
10822
11290
|
while (1)
|
|
10823
|
-
switch (
|
|
11291
|
+
switch (_context10.prev = _context10.next) {
|
|
10824
11292
|
case 0:
|
|
10825
11293
|
if (url)
|
|
10826
11294
|
this._opts.url = url;
|
|
10827
11295
|
finnalUrl = url = this._opts.url;
|
|
10828
11296
|
if (url) {
|
|
10829
|
-
|
|
11297
|
+
_context10.next = 4;
|
|
10830
11298
|
break;
|
|
10831
11299
|
}
|
|
10832
11300
|
throw new Error("Source url is missing");
|
|
@@ -10841,34 +11309,34 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10841
11309
|
});
|
|
10842
11310
|
logger.debug("load data, loading:", this._loading, finnalUrl);
|
|
10843
11311
|
if (!this._loading) {
|
|
10844
|
-
|
|
11312
|
+
_context10.next = 11;
|
|
10845
11313
|
break;
|
|
10846
11314
|
}
|
|
10847
|
-
|
|
11315
|
+
_context10.next = 11;
|
|
10848
11316
|
return this._mediaLoader.cancel();
|
|
10849
11317
|
case 11:
|
|
10850
11318
|
this._loading = true;
|
|
10851
|
-
|
|
10852
|
-
|
|
11319
|
+
_context10.prev = 12;
|
|
11320
|
+
_context10.next = 15;
|
|
10853
11321
|
return this._mediaLoader.load({
|
|
10854
11322
|
url: finnalUrl,
|
|
10855
11323
|
range
|
|
10856
11324
|
});
|
|
10857
11325
|
case 15:
|
|
10858
|
-
|
|
11326
|
+
_context10.next = 21;
|
|
10859
11327
|
break;
|
|
10860
11328
|
case 17:
|
|
10861
|
-
|
|
10862
|
-
|
|
11329
|
+
_context10.prev = 17;
|
|
11330
|
+
_context10.t0 = _context10["catch"](12);
|
|
10863
11331
|
this._loading = false;
|
|
10864
|
-
return
|
|
11332
|
+
return _context10.abrupt("return", this._emitError(StreamingError.network(_context10.t0), false));
|
|
10865
11333
|
case 21:
|
|
10866
11334
|
case "end":
|
|
10867
|
-
return
|
|
11335
|
+
return _context10.stop();
|
|
10868
11336
|
}
|
|
10869
|
-
},
|
|
11337
|
+
}, _callee10, this, [[12, 17]]);
|
|
10870
11338
|
}));
|
|
10871
|
-
function _loadData(
|
|
11339
|
+
function _loadData(_x9, _x10) {
|
|
10872
11340
|
return _loadData2.apply(this, arguments);
|
|
10873
11341
|
}
|
|
10874
11342
|
return _loadData;
|
|
@@ -10876,16 +11344,16 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10876
11344
|
}, {
|
|
10877
11345
|
key: "_clear",
|
|
10878
11346
|
value: function() {
|
|
10879
|
-
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
10880
|
-
return _regeneratorRuntime$1().wrap(function
|
|
11347
|
+
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee11() {
|
|
11348
|
+
return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
|
|
10881
11349
|
while (1)
|
|
10882
|
-
switch (
|
|
11350
|
+
switch (_context11.prev = _context11.next) {
|
|
10883
11351
|
case 0:
|
|
10884
11352
|
if (!this._mediaLoader) {
|
|
10885
|
-
|
|
11353
|
+
_context11.next = 3;
|
|
10886
11354
|
break;
|
|
10887
11355
|
}
|
|
10888
|
-
|
|
11356
|
+
_context11.next = 3;
|
|
10889
11357
|
return this._mediaLoader.cancel();
|
|
10890
11358
|
case 3:
|
|
10891
11359
|
clearTimeout(this._maxChunkWaitTimer);
|
|
@@ -10894,9 +11362,9 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10894
11362
|
this._firstProgressEmit = false;
|
|
10895
11363
|
case 7:
|
|
10896
11364
|
case "end":
|
|
10897
|
-
return
|
|
11365
|
+
return _context11.stop();
|
|
10898
11366
|
}
|
|
10899
|
-
},
|
|
11367
|
+
}, _callee11, this);
|
|
10900
11368
|
}));
|
|
10901
11369
|
function _clear() {
|
|
10902
11370
|
return _clear2.apply(this, arguments);
|
|
@@ -10983,9 +11451,13 @@ var PluginExtension = /* @__PURE__ */ function() {
|
|
|
10983
11451
|
_createClass$4(PluginExtension2, [{
|
|
10984
11452
|
key: "_init",
|
|
10985
11453
|
value: function _init() {
|
|
10986
|
-
var _this$_opts2 = this._opts, media = _this$_opts2.media, preloadTime = _this$_opts2.preloadTime, innerDegrade = _this$_opts2.innerDegrade, decodeMode = _this$_opts2.decodeMode;
|
|
11454
|
+
var _this$_opts2 = this._opts, media = _this$_opts2.media, isLive = _this$_opts2.isLive, preloadTime = _this$_opts2.preloadTime, innerDegrade = _this$_opts2.innerDegrade, decodeMode = _this$_opts2.decodeMode;
|
|
10987
11455
|
if (!media)
|
|
10988
11456
|
return;
|
|
11457
|
+
if (!isLive && media.setPlayMode) {
|
|
11458
|
+
media.setPlayMode("VOD");
|
|
11459
|
+
return;
|
|
11460
|
+
}
|
|
10989
11461
|
if (innerDegrade) {
|
|
10990
11462
|
media.setAttribute("innerdegrade", innerDegrade);
|
|
10991
11463
|
}
|
|
@@ -11023,6 +11495,7 @@ var FlvPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
11023
11495
|
args[_key] = arguments[_key];
|
|
11024
11496
|
}
|
|
11025
11497
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
11498
|
+
_defineProperty$3(_assertThisInitialized$3(_this), "logger", logger);
|
|
11026
11499
|
_defineProperty$3(_assertThisInitialized$3(_this), "flv", null);
|
|
11027
11500
|
_defineProperty$3(_assertThisInitialized$3(_this), "pluginExtension", null);
|
|
11028
11501
|
_defineProperty$3(_assertThisInitialized$3(_this), "getStats", function() {
|
|
@@ -11090,11 +11563,17 @@ var FlvPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
11090
11563
|
var _this$flv3;
|
|
11091
11564
|
return (_this$flv3 = this.flv) === null || _this$flv3 === void 0 ? void 0 : _this$flv3.loader;
|
|
11092
11565
|
}
|
|
11566
|
+
}, {
|
|
11567
|
+
key: "transferCost",
|
|
11568
|
+
get: function get() {
|
|
11569
|
+
return this.flv._transferCost.transferCost;
|
|
11570
|
+
}
|
|
11093
11571
|
}, {
|
|
11094
11572
|
key: "beforePlayerInit",
|
|
11095
11573
|
value: function beforePlayerInit() {
|
|
11096
11574
|
var _this2 = this;
|
|
11097
11575
|
var config = this.player.config;
|
|
11576
|
+
var mediaElem = this.player.media || this.player.video;
|
|
11098
11577
|
if (!config.url)
|
|
11099
11578
|
return;
|
|
11100
11579
|
if (this.flv)
|
|
@@ -11107,10 +11586,10 @@ var FlvPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
11107
11586
|
this.flv = new Flv(_objectSpread2$2({
|
|
11108
11587
|
softDecode: this.softDecode,
|
|
11109
11588
|
isLive: config.isLive,
|
|
11110
|
-
media:
|
|
11589
|
+
media: mediaElem,
|
|
11111
11590
|
preProcessUrl: function preProcessUrl(url, ext) {
|
|
11112
|
-
var _this2$player
|
|
11113
|
-
return ((_this2$player
|
|
11591
|
+
var _this2$player, _this2$player$preProc;
|
|
11592
|
+
return ((_this2$player = _this2.player) === null || _this2$player === void 0 ? void 0 : (_this2$player$preProc = _this2$player.preProcessUrl) === null || _this2$player$preProc === void 0 ? void 0 : _this2$player$preProc.call(_this2$player, url, ext)) || {
|
|
11114
11593
|
url,
|
|
11115
11594
|
ext
|
|
11116
11595
|
};
|
|
@@ -11129,7 +11608,8 @@ var FlvPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
11129
11608
|
}
|
|
11130
11609
|
if (this.softDecode) {
|
|
11131
11610
|
this.pluginExtension = new PluginExtension(_objectSpread2$2({
|
|
11132
|
-
media: this.player.video
|
|
11611
|
+
media: this.player.video,
|
|
11612
|
+
isLive: config.isLive
|
|
11133
11613
|
}, config.flv), this);
|
|
11134
11614
|
this.player.forceDegradeToVideo = function() {
|
|
11135
11615
|
var _this2$pluginExtensio;
|
|
@@ -11156,6 +11636,7 @@ var FlvPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
11156
11636
|
this._transCoreEvent(EVENT.LOAD_RETRY);
|
|
11157
11637
|
this._transCoreEvent(EVENT.SOURCEBUFFER_CREATED);
|
|
11158
11638
|
this._transCoreEvent(EVENT.ANALYZE_DURATION_EXCEEDED);
|
|
11639
|
+
this._transCoreEvent(EVENT.APPEND_BUFFER);
|
|
11159
11640
|
this._transCoreEvent(EVENT.REMOVE_BUFFER);
|
|
11160
11641
|
this._transCoreEvent(EVENT.BUFFEREOS);
|
|
11161
11642
|
this._transCoreEvent(EVENT.KEYFRAME);
|