@volcengine/veplayer-plugin 2.4.5-rc.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/index.development.js +2267 -578
- package/esm/index.production.js +3 -3
- package/esm/veplayer.plugin.abr.development.js +71 -3
- package/esm/veplayer.plugin.abr.production.js +1 -1
- package/esm/veplayer.plugin.drm.development.js +71 -3
- package/esm/veplayer.plugin.drm.production.js +1 -1
- package/esm/veplayer.plugin.flv.development.js +729 -196
- package/esm/veplayer.plugin.flv.production.js +1 -1
- package/esm/veplayer.plugin.hls.development.js +1505 -378
- package/esm/veplayer.plugin.hls.production.js +1 -1
- package/esm/veplayer.plugin.mp4.development.js +73 -5
- package/esm/veplayer.plugin.mp4.production.js +1 -1
- package/esm/veplayer.plugin.rtm.development.js +213 -48
- package/esm/veplayer.plugin.rtm.production.js +1 -1
- package/esm/veplayer.plugin.shaka.development.js +72 -4
- package/esm/veplayer.plugin.shaka.production.js +1 -1
- package/package.json +1 -1
- package/umd/veplayer.plugin.abr.development.js +71 -3
- package/umd/veplayer.plugin.abr.production.js +1 -1
- package/umd/veplayer.plugin.drm.development.js +71 -3
- package/umd/veplayer.plugin.drm.production.js +1 -1
- package/umd/veplayer.plugin.flv.development.js +729 -196
- package/umd/veplayer.plugin.flv.production.js +1 -1
- package/umd/veplayer.plugin.hls.development.js +1472 -345
- package/umd/veplayer.plugin.hls.production.js +1 -1
- package/umd/veplayer.plugin.mp4.development.js +73 -5
- package/umd/veplayer.plugin.mp4.production.js +1 -1
- package/umd/veplayer.plugin.rtm.development.js +213 -48
- package/umd/veplayer.plugin.rtm.production.js +1 -1
- package/umd/veplayer.plugin.shaka.development.js +72 -4
- package/umd/veplayer.plugin.shaka.production.js +1 -1
|
@@ -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.2";
|
|
1542
1542
|
var ERROR_MAP = {
|
|
1543
1543
|
1: 5101,
|
|
1544
1544
|
2: 5102,
|
|
@@ -1646,8 +1646,7 @@ function hook(hookName, handler) {
|
|
|
1646
1646
|
}
|
|
1647
1647
|
if (this.__hooks && this.__hooks[hookName]) {
|
|
1648
1648
|
try {
|
|
1649
|
-
var
|
|
1650
|
-
var preRet = (_this$__hooks$hookNam = this.__hooks[hookName]).call.apply(_this$__hooks$hookNam, [this, this].concat(Array.prototype.slice.call(arguments)));
|
|
1649
|
+
var preRet = runHooks(this, hookName, handler);
|
|
1651
1650
|
if (preRet) {
|
|
1652
1651
|
if (preRet.then) {
|
|
1653
1652
|
preRet.then(function(isContinue) {
|
|
@@ -1672,6 +1671,19 @@ function hook(hookName, handler) {
|
|
|
1672
1671
|
}
|
|
1673
1672
|
}.bind(this);
|
|
1674
1673
|
}
|
|
1674
|
+
function findHookIndex(hookName, handler) {
|
|
1675
|
+
var __hooks = this.__hooks;
|
|
1676
|
+
if (!__hooks || !Array.isArray(__hooks[hookName])) {
|
|
1677
|
+
return -1;
|
|
1678
|
+
}
|
|
1679
|
+
var hookHandlers = __hooks[hookName];
|
|
1680
|
+
for (var i = 0; i < hookHandlers.length; i++) {
|
|
1681
|
+
if (hookHandlers[i] === handler) {
|
|
1682
|
+
return i;
|
|
1683
|
+
}
|
|
1684
|
+
}
|
|
1685
|
+
return -1;
|
|
1686
|
+
}
|
|
1675
1687
|
function useHooks(hookName, handler) {
|
|
1676
1688
|
var __hooks = this.__hooks;
|
|
1677
1689
|
if (!__hooks) {
|
|
@@ -1681,7 +1693,12 @@ function useHooks(hookName, handler) {
|
|
|
1681
1693
|
console.warn("has no supported hook which name [".concat(hookName, "]"));
|
|
1682
1694
|
return false;
|
|
1683
1695
|
}
|
|
1684
|
-
|
|
1696
|
+
if (!Array.isArray(__hooks[hookName])) {
|
|
1697
|
+
__hooks[hookName] = [];
|
|
1698
|
+
}
|
|
1699
|
+
if (findHookIndex.call(this, hookName, handler) === -1) {
|
|
1700
|
+
__hooks[hookName].push(handler);
|
|
1701
|
+
}
|
|
1685
1702
|
return true;
|
|
1686
1703
|
}
|
|
1687
1704
|
function removeHooks(hookName, handler) {
|
|
@@ -1689,6 +1706,13 @@ function removeHooks(hookName, handler) {
|
|
|
1689
1706
|
if (!__hooks) {
|
|
1690
1707
|
return;
|
|
1691
1708
|
}
|
|
1709
|
+
if (Array.isArray(__hooks[hookName])) {
|
|
1710
|
+
var hooks = __hooks[hookName];
|
|
1711
|
+
var index = findHookIndex.call(this, hookName, handler);
|
|
1712
|
+
if (index !== -1) {
|
|
1713
|
+
hooks.splice(index, 1);
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1692
1716
|
delete __hooks[hookName];
|
|
1693
1717
|
}
|
|
1694
1718
|
function hooksDescriptor(instance) {
|
|
@@ -1710,6 +1734,38 @@ function hooksDescriptor(instance) {
|
|
|
1710
1734
|
function delHooksDescriptor(instance) {
|
|
1711
1735
|
instance.__hooks = null;
|
|
1712
1736
|
}
|
|
1737
|
+
function runHooks(obj, hookName, handler) {
|
|
1738
|
+
for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
|
|
1739
|
+
args[_key5 - 3] = arguments[_key5];
|
|
1740
|
+
}
|
|
1741
|
+
if (obj.__hooks && Array.isArray(obj.__hooks[hookName])) {
|
|
1742
|
+
var hooks = obj.__hooks[hookName];
|
|
1743
|
+
var index = -1;
|
|
1744
|
+
var runHooksRecursive = function runHooksRecursive2(obj2, hookName2, handler2) {
|
|
1745
|
+
for (var _len6 = arguments.length, args2 = new Array(_len6 > 3 ? _len6 - 3 : 0), _key6 = 3; _key6 < _len6; _key6++) {
|
|
1746
|
+
args2[_key6 - 3] = arguments[_key6];
|
|
1747
|
+
}
|
|
1748
|
+
index++;
|
|
1749
|
+
if (hooks.length === 0 || index === hooks.length) {
|
|
1750
|
+
return handler2.call.apply(handler2, [obj2, obj2].concat(args2));
|
|
1751
|
+
}
|
|
1752
|
+
var hook2 = hooks[index];
|
|
1753
|
+
var ret = hook2.call.apply(hook2, [obj2, obj2].concat(args2));
|
|
1754
|
+
if (ret && ret.then) {
|
|
1755
|
+
return ret.then(function(data) {
|
|
1756
|
+
return data === false ? null : runHooksRecursive2.apply(void 0, [obj2, hookName2, handler2].concat(args2));
|
|
1757
|
+
}).catch(function(e) {
|
|
1758
|
+
console.warn("[runHooks]".concat(hookName2, " reject"), e.message);
|
|
1759
|
+
});
|
|
1760
|
+
} else if (ret !== false) {
|
|
1761
|
+
return runHooksRecursive2.apply(void 0, [obj2, hookName2, handler2].concat(args2));
|
|
1762
|
+
}
|
|
1763
|
+
};
|
|
1764
|
+
return runHooksRecursive.apply(void 0, [obj, hookName, handler].concat(args));
|
|
1765
|
+
} else {
|
|
1766
|
+
return handler.call.apply(handler, [obj, obj].concat(args));
|
|
1767
|
+
}
|
|
1768
|
+
}
|
|
1713
1769
|
function showErrorMsg(pluginName, msg) {
|
|
1714
1770
|
XG_DEBUG.logError("[".concat(pluginName, "] event or callback cant be undefined or null when call ").concat(msg));
|
|
1715
1771
|
}
|
|
@@ -1949,6 +2005,18 @@ var BasePlugin = /* @__PURE__ */ function() {
|
|
|
1949
2005
|
}
|
|
1950
2006
|
}
|
|
1951
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
|
+
}
|
|
1952
2020
|
}, {
|
|
1953
2021
|
key: "defaultConfig",
|
|
1954
2022
|
get: function get() {
|
|
@@ -2759,6 +2827,21 @@ var Buffer$1 = /* @__PURE__ */ function() {
|
|
|
2759
2827
|
length: Buffer2.totalLength && Buffer2.totalLength(buffers)
|
|
2760
2828
|
};
|
|
2761
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
|
+
}
|
|
2762
2845
|
}]);
|
|
2763
2846
|
return Buffer2;
|
|
2764
2847
|
}();
|
|
@@ -2911,7 +2994,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
2911
2994
|
this.logCache.apply(this, [LogCacheLevel.DEBUG].concat(args));
|
|
2912
2995
|
if (Logger2.disabled)
|
|
2913
2996
|
return;
|
|
2914
|
-
(_console = console).debug.apply(_console, [
|
|
2997
|
+
(_console = console).debug.apply(_console, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
2915
2998
|
}
|
|
2916
2999
|
}, {
|
|
2917
3000
|
key: "log",
|
|
@@ -2923,7 +3006,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
2923
3006
|
this.logCache.apply(this, [LogCacheLevel.LOG].concat(args));
|
|
2924
3007
|
if (Logger2.disabled)
|
|
2925
3008
|
return;
|
|
2926
|
-
(_console2 = console).log.apply(_console2, [
|
|
3009
|
+
(_console2 = console).log.apply(_console2, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
2927
3010
|
}
|
|
2928
3011
|
}, {
|
|
2929
3012
|
key: "warn",
|
|
@@ -2935,7 +3018,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
2935
3018
|
this.logCache.apply(this, [LogCacheLevel.WARN].concat(args));
|
|
2936
3019
|
if (Logger2.disabled)
|
|
2937
3020
|
return;
|
|
2938
|
-
(_console3 = console).warn.apply(_console3, [
|
|
3021
|
+
(_console3 = console).warn.apply(_console3, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
2939
3022
|
}
|
|
2940
3023
|
}, {
|
|
2941
3024
|
key: "error",
|
|
@@ -2947,7 +3030,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
2947
3030
|
this.logCache.apply(this, [LogCacheLevel.ERROR].concat(args));
|
|
2948
3031
|
if (Logger2.disabled)
|
|
2949
3032
|
return;
|
|
2950
|
-
(_console4 = console).error.apply(_console4, [
|
|
3033
|
+
(_console4 = console).error.apply(_console4, ["[".concat(nowTime$1(), "]"), this._prefix].concat(args));
|
|
2951
3034
|
}
|
|
2952
3035
|
}, {
|
|
2953
3036
|
key: "logCache",
|
|
@@ -2962,7 +3045,7 @@ var Logger$2 = /* @__PURE__ */ function() {
|
|
|
2962
3045
|
var finLogText = logText.map(function(item) {
|
|
2963
3046
|
return logable(item);
|
|
2964
3047
|
});
|
|
2965
|
-
text =
|
|
3048
|
+
text = "[".concat(nowTime$1(), "]") + this._prefix + JSON.stringify(finLogText);
|
|
2966
3049
|
} catch (e) {
|
|
2967
3050
|
return;
|
|
2968
3051
|
}
|
|
@@ -3878,8 +3961,8 @@ function createResponse(data, done, response, contentLength, age, startTime, fir
|
|
|
3878
3961
|
response
|
|
3879
3962
|
};
|
|
3880
3963
|
}
|
|
3881
|
-
function calculateSpeed(byteLen,
|
|
3882
|
-
return Math.round(byteLen * 8 * 1e3 /
|
|
3964
|
+
function calculateSpeed(byteLen, milliSecond) {
|
|
3965
|
+
return Math.round(byteLen * 8 * 1e3 / milliSecond / 1024);
|
|
3883
3966
|
}
|
|
3884
3967
|
var EVENT = {
|
|
3885
3968
|
ERROR: "error",
|
|
@@ -3891,6 +3974,7 @@ var EVENT = {
|
|
|
3891
3974
|
SOURCEBUFFER_CREATED: "core.sourcebuffercreated",
|
|
3892
3975
|
MEDIASOURCE_OPENED: "core.mediasourceopened",
|
|
3893
3976
|
ANALYZE_DURATION_EXCEEDED: "core.analyzedurationexceeded",
|
|
3977
|
+
APPEND_BUFFER: "core.appendbuffer",
|
|
3894
3978
|
REMOVE_BUFFER: "core.removebuffer",
|
|
3895
3979
|
BUFFEREOS: "core.buffereos",
|
|
3896
3980
|
KEYFRAME: "core.keyframe",
|
|
@@ -5523,13 +5607,16 @@ var TrackType = {
|
|
|
5523
5607
|
METADATA: "metadata"
|
|
5524
5608
|
};
|
|
5525
5609
|
var VideoCodecType = {
|
|
5610
|
+
AV1: "av1",
|
|
5526
5611
|
AVC: "avc",
|
|
5527
5612
|
HEVC: "hevc"
|
|
5528
5613
|
};
|
|
5529
5614
|
var AudioCodecType = {
|
|
5530
5615
|
AAC: "aac",
|
|
5531
5616
|
G711PCMA: "g7110a",
|
|
5532
|
-
G711PCMU: "g7110m"
|
|
5617
|
+
G711PCMU: "g7110m",
|
|
5618
|
+
OPUS: "opus",
|
|
5619
|
+
MP3: "mp3"
|
|
5533
5620
|
};
|
|
5534
5621
|
var WarningType = {
|
|
5535
5622
|
LARGE_AV_SHIFT: "LARGE_AV_SHIFT",
|
|
@@ -5569,6 +5656,7 @@ var VideoTrack = /* @__PURE__ */ function() {
|
|
|
5569
5656
|
_defineProperty(this, "isVideoEncryption", false);
|
|
5570
5657
|
_defineProperty(this, "isAudioEncryption", false);
|
|
5571
5658
|
_defineProperty(this, "isVideo", true);
|
|
5659
|
+
_defineProperty(this, "lastKeyFrameDts", 0);
|
|
5572
5660
|
_defineProperty(this, "kid", null);
|
|
5573
5661
|
_defineProperty(this, "pssh", null);
|
|
5574
5662
|
_defineProperty(this, "ext", void 0);
|
|
@@ -5611,6 +5699,9 @@ var VideoTrack = /* @__PURE__ */ function() {
|
|
|
5611
5699
|
}, {
|
|
5612
5700
|
key: "exist",
|
|
5613
5701
|
value: function exist() {
|
|
5702
|
+
if (/av01/.test(this.codec)) {
|
|
5703
|
+
return true;
|
|
5704
|
+
}
|
|
5614
5705
|
return !!(this.pps.length && this.sps.length && this.codec);
|
|
5615
5706
|
}
|
|
5616
5707
|
}, {
|
|
@@ -5634,6 +5725,7 @@ var AudioTrack = /* @__PURE__ */ function() {
|
|
|
5634
5725
|
_defineProperty(this, "codecType", AudioCodecType.AAC);
|
|
5635
5726
|
_defineProperty(this, "pid", -1);
|
|
5636
5727
|
_defineProperty(this, "codec", "");
|
|
5728
|
+
_defineProperty(this, "container", "");
|
|
5637
5729
|
_defineProperty(this, "sequenceNumber", 0);
|
|
5638
5730
|
_defineProperty(this, "sampleDuration", 0);
|
|
5639
5731
|
_defineProperty(this, "timescale", 0);
|
|
@@ -5674,7 +5766,7 @@ var AudioTrack = /* @__PURE__ */ function() {
|
|
|
5674
5766
|
}, {
|
|
5675
5767
|
key: "exist",
|
|
5676
5768
|
value: function exist() {
|
|
5677
|
-
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));
|
|
5678
5770
|
}
|
|
5679
5771
|
}, {
|
|
5680
5772
|
key: "hasSample",
|
|
@@ -5888,7 +5980,7 @@ var AAC = /* @__PURE__ */ function() {
|
|
|
5888
5980
|
continue;
|
|
5889
5981
|
}
|
|
5890
5982
|
frameLength = (data[i + 3] & 3) << 11 | data[i + 4] << 3 | (data[i + 5] & 224) >> 5;
|
|
5891
|
-
if (len - i < frameLength)
|
|
5983
|
+
if (!frameLength || len - i < frameLength)
|
|
5892
5984
|
break;
|
|
5893
5985
|
protectionSkipBytes = (~data[i + 1] & 1) * 2;
|
|
5894
5986
|
frames.push({
|
|
@@ -6022,14 +6114,57 @@ var AAC = /* @__PURE__ */ function() {
|
|
|
6022
6114
|
return AAC2;
|
|
6023
6115
|
}();
|
|
6024
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
|
+
}();
|
|
6025
6160
|
var LARGE_AV_FIRST_FRAME_GAP = 500;
|
|
6026
6161
|
var AUDIO_GAP_OVERLAP_THRESHOLD_COUNT = 3;
|
|
6027
6162
|
var MAX_SILENT_FRAME_DURATION = 1e3;
|
|
6028
|
-
var
|
|
6163
|
+
var AUDIO_EXCEPTION_LOG_EMIT_DURATION = 5e3;
|
|
6029
6164
|
var MAX_VIDEO_FRAME_DURATION = 1e3;
|
|
6030
6165
|
var MAX_DTS_DELTA_WITH_NEXT_CHUNK = 200;
|
|
6031
|
-
var
|
|
6032
|
-
var
|
|
6166
|
+
var VIDEO_EXCEPTION_LOG_EMIT_DURATION = 5e3;
|
|
6167
|
+
var TRACK_BROKEN_CHECK_TIME = 5;
|
|
6033
6168
|
var FlvFixer = /* @__PURE__ */ function() {
|
|
6034
6169
|
function FlvFixer2(videoTrack, audioTrack, metadataTrack) {
|
|
6035
6170
|
_classCallCheck$1(this, FlvFixer2);
|
|
@@ -6145,7 +6280,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6145
6280
|
var firstSample = samples[0];
|
|
6146
6281
|
var vDelta = this._videoNextDts - firstSample.dts;
|
|
6147
6282
|
if (Math.abs(vDelta) > MAX_DTS_DELTA_WITH_NEXT_CHUNK) {
|
|
6148
|
-
if (Math.abs(firstSample.dts - this._lastVideoExceptionChunkFirstDtsDot) >
|
|
6283
|
+
if (Math.abs(firstSample.dts - this._lastVideoExceptionChunkFirstDtsDot) > VIDEO_EXCEPTION_LOG_EMIT_DURATION) {
|
|
6149
6284
|
var _samples$;
|
|
6150
6285
|
this._lastVideoExceptionChunkFirstDtsDot = firstSample.dts;
|
|
6151
6286
|
videoTrack.warnings.push({
|
|
@@ -6156,7 +6291,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6156
6291
|
sampleDuration: vDelta
|
|
6157
6292
|
});
|
|
6158
6293
|
}
|
|
6159
|
-
if (this._videoTimestampBreak >=
|
|
6294
|
+
if (this._videoTimestampBreak >= TRACK_BROKEN_CHECK_TIME) {
|
|
6160
6295
|
this._videoNextDts = firstSample.dts;
|
|
6161
6296
|
this._videoTimestampBreak = 0;
|
|
6162
6297
|
} else {
|
|
@@ -6179,7 +6314,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6179
6314
|
}
|
|
6180
6315
|
if (sampleDuration > MAX_VIDEO_FRAME_DURATION || sampleDuration < 0) {
|
|
6181
6316
|
this._videoTimestampBreak++;
|
|
6182
|
-
if (Math.abs(dts - this._lastVideoExceptionLargeGapDot) >
|
|
6317
|
+
if (Math.abs(dts - this._lastVideoExceptionLargeGapDot) > VIDEO_EXCEPTION_LOG_EMIT_DURATION) {
|
|
6183
6318
|
this._lastVideoExceptionLargeGapDot = dts;
|
|
6184
6319
|
videoTrack.warnings.push({
|
|
6185
6320
|
type: WarningType.LARGE_VIDEO_GAP,
|
|
@@ -6260,10 +6395,27 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6260
6395
|
key: "_doFixAudioInternal",
|
|
6261
6396
|
value: function _doFixAudioInternal(audioTrack, samples, timescale) {
|
|
6262
6397
|
if (!audioTrack.sampleDuration) {
|
|
6263
|
-
|
|
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
|
+
}
|
|
6264
6416
|
}
|
|
6265
6417
|
var refSampleDuration = audioTrack.sampleDuration;
|
|
6266
|
-
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;
|
|
6267
6419
|
if (this._audioNextPts === void 0) {
|
|
6268
6420
|
var samp0 = samples[0];
|
|
6269
6421
|
this._audioNextPts = samp0.pts;
|
|
@@ -6272,7 +6424,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6272
6424
|
var nextPts = this._audioNextPts;
|
|
6273
6425
|
var sample = samples[i];
|
|
6274
6426
|
var delta = sample.pts - nextPts;
|
|
6275
|
-
if (i === 0 && this._audioTimestampBreak >=
|
|
6427
|
+
if (i === 0 && this._audioTimestampBreak >= TRACK_BROKEN_CHECK_TIME && this._keyFrameInNextChunk) {
|
|
6276
6428
|
nextPts = this._audioNextPts = sample.dts;
|
|
6277
6429
|
delta = 0;
|
|
6278
6430
|
this._audioTimestampBreak = 0;
|
|
@@ -6280,7 +6432,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6280
6432
|
if (!this._audioTimestampBreak && delta >= AUDIO_GAP_OVERLAP_THRESHOLD_COUNT * refSampleDuration && delta <= MAX_SILENT_FRAME_DURATION && !isSafari) {
|
|
6281
6433
|
var silentFrame = this._getSilentFrame(audioTrack) || samples[0].data.subarray();
|
|
6282
6434
|
var count = Math.floor(delta / refSampleDuration);
|
|
6283
|
-
if (Math.abs(sample.pts - this._lastAudioExceptionGapDot) >
|
|
6435
|
+
if (Math.abs(sample.pts - this._lastAudioExceptionGapDot) > AUDIO_EXCEPTION_LOG_EMIT_DURATION) {
|
|
6284
6436
|
this._lastAudioExceptionGapDot = sample.pts;
|
|
6285
6437
|
audioTrack.warnings.push({
|
|
6286
6438
|
type: WarningType.AUDIO_FILLED,
|
|
@@ -6300,7 +6452,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6300
6452
|
}
|
|
6301
6453
|
i--;
|
|
6302
6454
|
} else if (delta <= -AUDIO_GAP_OVERLAP_THRESHOLD_COUNT * refSampleDuration && delta >= -1 * MAX_SILENT_FRAME_DURATION) {
|
|
6303
|
-
if (Math.abs(sample.pts - this._lastAudioExceptionOverlapDot) >
|
|
6455
|
+
if (Math.abs(sample.pts - this._lastAudioExceptionOverlapDot) > AUDIO_EXCEPTION_LOG_EMIT_DURATION) {
|
|
6304
6456
|
this._lastAudioExceptionOverlapDot = sample.pts;
|
|
6305
6457
|
audioTrack.warnings.push({
|
|
6306
6458
|
type: WarningType.AUDIO_DROPPED,
|
|
@@ -6315,7 +6467,7 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6315
6467
|
} else {
|
|
6316
6468
|
if (Math.abs(delta) > MAX_SILENT_FRAME_DURATION) {
|
|
6317
6469
|
this._audioTimestampBreak++;
|
|
6318
|
-
if (Math.abs(sample.pts - this._lastAudioExceptionLargeGapDot) >
|
|
6470
|
+
if (Math.abs(sample.pts - this._lastAudioExceptionLargeGapDot) > AUDIO_EXCEPTION_LOG_EMIT_DURATION) {
|
|
6319
6471
|
this._lastAudioExceptionLargeGapDot = sample.pts;
|
|
6320
6472
|
audioTrack.warnings.push({
|
|
6321
6473
|
type: WarningType.LARGE_AUDIO_GAP,
|
|
@@ -6328,8 +6480,15 @@ var FlvFixer = /* @__PURE__ */ function() {
|
|
|
6328
6480
|
});
|
|
6329
6481
|
}
|
|
6330
6482
|
}
|
|
6331
|
-
|
|
6332
|
-
|
|
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
|
+
}
|
|
6333
6492
|
this._audioNextPts += refSampleDuration;
|
|
6334
6493
|
}
|
|
6335
6494
|
}
|
|
@@ -7288,6 +7447,13 @@ var AMF = /* @__PURE__ */ function() {
|
|
|
7288
7447
|
}]);
|
|
7289
7448
|
return AMF2;
|
|
7290
7449
|
}();
|
|
7450
|
+
var FlvSoundFormat = {
|
|
7451
|
+
MP3: 2,
|
|
7452
|
+
G711A: 7,
|
|
7453
|
+
G711M: 8,
|
|
7454
|
+
AAC: 10,
|
|
7455
|
+
OPUS: 13
|
|
7456
|
+
};
|
|
7291
7457
|
var logger$2 = new Logger$1("FlvDemuxer");
|
|
7292
7458
|
var FlvDemuxer = /* @__PURE__ */ function() {
|
|
7293
7459
|
function FlvDemuxer2(videoTrack, audioTrack, metadataTrack) {
|
|
@@ -7304,8 +7470,10 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7304
7470
|
_createClass$1(FlvDemuxer2, [{
|
|
7305
7471
|
key: "demux",
|
|
7306
7472
|
value: function demux(data) {
|
|
7473
|
+
var _scriptDataObject$dat;
|
|
7307
7474
|
var discontinuity = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
|
7308
7475
|
var contiguous = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
|
|
7476
|
+
var seamlessLoadingSwitching = arguments.length > 3 ? arguments[3] : void 0;
|
|
7309
7477
|
var audioTrack = this.audioTrack, videoTrack = this.videoTrack, metadataTrack = this.metadataTrack;
|
|
7310
7478
|
if (discontinuity || !contiguous) {
|
|
7311
7479
|
this._remainingData = null;
|
|
@@ -7363,6 +7531,8 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7363
7531
|
if (tagType === 8) {
|
|
7364
7532
|
this._parseAudio(bodyData, timestamp);
|
|
7365
7533
|
} else if (tagType === 9) {
|
|
7534
|
+
if (seamlessLoadingSwitching)
|
|
7535
|
+
this.seamlessLoadingSwitching = true;
|
|
7366
7536
|
this._parseVideo(bodyData, timestamp);
|
|
7367
7537
|
} else if (tagType === 18) {
|
|
7368
7538
|
this._parseScript(bodyData, timestamp);
|
|
@@ -7380,13 +7550,31 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7380
7550
|
this._remainingData = data.subarray(offset);
|
|
7381
7551
|
}
|
|
7382
7552
|
audioTrack.formatTimescale = videoTrack.formatTimescale = videoTrack.timescale = metadataTrack.timescale = 1e3;
|
|
7383
|
-
audioTrack.timescale = audioTrack.sampleRate || 0;
|
|
7553
|
+
audioTrack.timescale = audioTrack.codecType === AudioCodecType.OPUS ? 1e3 : audioTrack.sampleRate || 0;
|
|
7384
7554
|
if (!audioTrack.exist() && audioTrack.hasSample()) {
|
|
7385
7555
|
audioTrack.reset();
|
|
7386
7556
|
}
|
|
7387
7557
|
if (!videoTrack.exist() && videoTrack.hasSample()) {
|
|
7388
7558
|
videoTrack.reset();
|
|
7389
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
|
+
}
|
|
7390
7578
|
return {
|
|
7391
7579
|
videoTrack,
|
|
7392
7580
|
audioTrack,
|
|
@@ -7405,8 +7593,8 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7405
7593
|
}
|
|
7406
7594
|
}, {
|
|
7407
7595
|
key: "demuxAndFix",
|
|
7408
|
-
value: function demuxAndFix(data, discontinuity, contiguous, startTime) {
|
|
7409
|
-
this.demux(data, discontinuity, contiguous);
|
|
7596
|
+
value: function demuxAndFix(data, discontinuity, contiguous, startTime, seamlessLoadingSwitching) {
|
|
7597
|
+
this.demux(data, discontinuity, contiguous, seamlessLoadingSwitching);
|
|
7410
7598
|
return this.fix(startTime, discontinuity, contiguous);
|
|
7411
7599
|
}
|
|
7412
7600
|
}, {
|
|
@@ -7416,12 +7604,12 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7416
7604
|
return;
|
|
7417
7605
|
var format = (data[0] & 240) >>> 4;
|
|
7418
7606
|
var track = this.audioTrack;
|
|
7419
|
-
if (format !==
|
|
7607
|
+
if (format !== FlvSoundFormat.AAC && format !== FlvSoundFormat.G711A && format !== FlvSoundFormat.G711M && format !== FlvSoundFormat.OPUS) {
|
|
7420
7608
|
logger$2.warn("Unsupported sound format: ".concat(format));
|
|
7421
7609
|
track.reset();
|
|
7422
7610
|
return;
|
|
7423
7611
|
}
|
|
7424
|
-
if (format !==
|
|
7612
|
+
if (format !== FlvSoundFormat.AAC && format !== FlvSoundFormat.OPUS) {
|
|
7425
7613
|
var soundRate = (data[0] & 12) >> 2;
|
|
7426
7614
|
var soundSize = (data[0] & 2) >> 1;
|
|
7427
7615
|
var soundType = data[0] & 1;
|
|
@@ -7429,10 +7617,49 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7429
7617
|
track.sampleSize = soundSize ? 16 : 8;
|
|
7430
7618
|
track.channelCount = soundType + 1;
|
|
7431
7619
|
}
|
|
7432
|
-
|
|
7433
|
-
|
|
7434
|
-
|
|
7435
|
-
|
|
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));
|
|
7436
7663
|
}
|
|
7437
7664
|
}
|
|
7438
7665
|
}, {
|
|
@@ -7520,8 +7747,13 @@ var FlvDemuxer = /* @__PURE__ */ function() {
|
|
|
7520
7747
|
units = this._checkAddMetaNalToUnits(isHevc, units, track);
|
|
7521
7748
|
if (units && units.length) {
|
|
7522
7749
|
var sample = new VideoSample(dts + cts, dts, units);
|
|
7750
|
+
if (this.seamlessLoadingSwitching && dts < track.lastKeyFrameDts) {
|
|
7751
|
+
return;
|
|
7752
|
+
}
|
|
7753
|
+
this.seamlessLoadingSwitching = false;
|
|
7523
7754
|
if (frameType === 1) {
|
|
7524
7755
|
sample.setToKeyframe();
|
|
7756
|
+
track.lastKeyFrameDts = dts;
|
|
7525
7757
|
}
|
|
7526
7758
|
track.samples.push(sample);
|
|
7527
7759
|
units.forEach(function(unit) {
|
|
@@ -7995,10 +8227,16 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
7995
8227
|
if (track.useEME && track.enca) {
|
|
7996
8228
|
content = MP42.enca(track);
|
|
7997
8229
|
} else {
|
|
7998
|
-
|
|
8230
|
+
if (track.codecType === AudioCodecType.OPUS) {
|
|
8231
|
+
content = MP42.opus(track);
|
|
8232
|
+
} else {
|
|
8233
|
+
content = MP42.mp4a(track);
|
|
8234
|
+
}
|
|
7999
8235
|
}
|
|
8000
8236
|
} else if (track.useEME && track.encv) {
|
|
8001
8237
|
content = MP42.encv(track);
|
|
8238
|
+
} else if (track.av1C) {
|
|
8239
|
+
content = MP42.av01(track);
|
|
8002
8240
|
} else {
|
|
8003
8241
|
content = MP42.avc1hev1(track);
|
|
8004
8242
|
}
|
|
@@ -8211,6 +8449,90 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
8211
8449
|
var schi = MP42.schi(data);
|
|
8212
8450
|
return MP42.box(MP42.types.sinf, content, MP42.box(MP42.types.frma, frma), MP42.box(MP42.types.schm, schm), schi);
|
|
8213
8451
|
}
|
|
8452
|
+
}, {
|
|
8453
|
+
key: "av01",
|
|
8454
|
+
value: function av01(track) {
|
|
8455
|
+
return MP42.box(MP42.types.av01, new Uint8Array([
|
|
8456
|
+
0,
|
|
8457
|
+
0,
|
|
8458
|
+
0,
|
|
8459
|
+
0,
|
|
8460
|
+
0,
|
|
8461
|
+
0,
|
|
8462
|
+
0,
|
|
8463
|
+
1,
|
|
8464
|
+
0,
|
|
8465
|
+
0,
|
|
8466
|
+
0,
|
|
8467
|
+
0,
|
|
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
|
+
track.width >> 8 & 255,
|
|
8481
|
+
track.width & 255,
|
|
8482
|
+
track.height >> 8 & 255,
|
|
8483
|
+
track.height & 255,
|
|
8484
|
+
0,
|
|
8485
|
+
72,
|
|
8486
|
+
0,
|
|
8487
|
+
0,
|
|
8488
|
+
0,
|
|
8489
|
+
72,
|
|
8490
|
+
0,
|
|
8491
|
+
0,
|
|
8492
|
+
0,
|
|
8493
|
+
0,
|
|
8494
|
+
0,
|
|
8495
|
+
0,
|
|
8496
|
+
0,
|
|
8497
|
+
1,
|
|
8498
|
+
0,
|
|
8499
|
+
0,
|
|
8500
|
+
0,
|
|
8501
|
+
0,
|
|
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
|
+
24,
|
|
8532
|
+
17,
|
|
8533
|
+
17
|
|
8534
|
+
]), track.av1C, track.colr);
|
|
8535
|
+
}
|
|
8214
8536
|
}, {
|
|
8215
8537
|
key: "avc1hev1",
|
|
8216
8538
|
value: function avc1hev1(track) {
|
|
@@ -8581,6 +8903,53 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
8581
8903
|
)));
|
|
8582
8904
|
return esds2;
|
|
8583
8905
|
}
|
|
8906
|
+
}, {
|
|
8907
|
+
key: "opus",
|
|
8908
|
+
value: function opus(track) {
|
|
8909
|
+
var opusAudioDescription = new Uint8Array([
|
|
8910
|
+
0,
|
|
8911
|
+
0,
|
|
8912
|
+
0,
|
|
8913
|
+
0,
|
|
8914
|
+
0,
|
|
8915
|
+
0,
|
|
8916
|
+
0,
|
|
8917
|
+
1,
|
|
8918
|
+
0,
|
|
8919
|
+
0,
|
|
8920
|
+
0,
|
|
8921
|
+
0,
|
|
8922
|
+
0,
|
|
8923
|
+
0,
|
|
8924
|
+
0,
|
|
8925
|
+
0,
|
|
8926
|
+
0,
|
|
8927
|
+
track.channelCount,
|
|
8928
|
+
0,
|
|
8929
|
+
16,
|
|
8930
|
+
0,
|
|
8931
|
+
0,
|
|
8932
|
+
0,
|
|
8933
|
+
0,
|
|
8934
|
+
track.sampleRate >> 8 & 255,
|
|
8935
|
+
track.sampleRate & 255,
|
|
8936
|
+
0,
|
|
8937
|
+
0
|
|
8938
|
+
]);
|
|
8939
|
+
var opusSpecificConfig = track.config.length ? MP42.dOps(track) : [];
|
|
8940
|
+
return MP42.box(MP42.types.Opus, opusAudioDescription, opusSpecificConfig);
|
|
8941
|
+
}
|
|
8942
|
+
}, {
|
|
8943
|
+
key: "dOps",
|
|
8944
|
+
value: function dOps(track) {
|
|
8945
|
+
if (track.config) {
|
|
8946
|
+
track.config[4] = track.sampleRate >>> 24 & 255;
|
|
8947
|
+
track.config[5] = track.sampleRate >>> 16 & 255;
|
|
8948
|
+
track.config[6] = track.sampleRate >>> 8 & 255;
|
|
8949
|
+
track.config[7] = track.sampleRate & 255;
|
|
8950
|
+
return MP42.box(MP42.types.dOps, track.config);
|
|
8951
|
+
}
|
|
8952
|
+
}
|
|
8584
8953
|
}, {
|
|
8585
8954
|
key: "mvex",
|
|
8586
8955
|
value: function mvex(tracks) {
|
|
@@ -9183,7 +9552,7 @@ var MP4 = /* @__PURE__ */ function() {
|
|
|
9183
9552
|
}]);
|
|
9184
9553
|
return MP42;
|
|
9185
9554
|
}();
|
|
9186
|
-
_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) {
|
|
9555
|
+
_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) {
|
|
9187
9556
|
p[c] = [c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2), c.charCodeAt(3)];
|
|
9188
9557
|
return p;
|
|
9189
9558
|
}, /* @__PURE__ */ Object.create(null)));
|
|
@@ -9518,30 +9887,46 @@ var FMP4Remuxer = /* @__PURE__ */ function() {
|
|
|
9518
9887
|
};
|
|
9519
9888
|
}
|
|
9520
9889
|
var samples = track.samples;
|
|
9890
|
+
var isAV01 = /av01/.test(track.codec);
|
|
9521
9891
|
var mdatSize = 0;
|
|
9522
|
-
|
|
9523
|
-
|
|
9524
|
-
|
|
9525
|
-
}, 0);
|
|
9526
|
-
mdatSize += s.units.length * 4;
|
|
9527
|
-
});
|
|
9528
|
-
var mdata = new Uint8Array(mdatSize);
|
|
9529
|
-
var mdatView = new DataView(mdata.buffer);
|
|
9530
|
-
var _loop = function _loop2(_offset, _sample) {
|
|
9531
|
-
_sample = samples[i];
|
|
9532
|
-
var sampleSize = 0;
|
|
9533
|
-
_sample.units.forEach(function(u) {
|
|
9534
|
-
mdatView.setUint32(_offset, u.byteLength);
|
|
9535
|
-
_offset += 4;
|
|
9536
|
-
mdata.set(u, _offset);
|
|
9537
|
-
_offset += u.byteLength;
|
|
9538
|
-
sampleSize += 4 + u.byteLength;
|
|
9892
|
+
if (isAV01) {
|
|
9893
|
+
samples.forEach(function(s) {
|
|
9894
|
+
mdatSize += s.data.byteLength;
|
|
9539
9895
|
});
|
|
9540
|
-
|
|
9541
|
-
|
|
9542
|
-
|
|
9543
|
-
|
|
9544
|
-
|
|
9896
|
+
} else {
|
|
9897
|
+
samples.forEach(function(s) {
|
|
9898
|
+
mdatSize += s.units.reduce(function(t, c) {
|
|
9899
|
+
return t + c.byteLength;
|
|
9900
|
+
}, 0);
|
|
9901
|
+
mdatSize += s.units.length * 4;
|
|
9902
|
+
});
|
|
9903
|
+
}
|
|
9904
|
+
var mdata = new Uint8Array(mdatSize);
|
|
9905
|
+
if (isAV01) {
|
|
9906
|
+
for (var i = 0, l = samples.length, offset = 0, sample; i < l; i++) {
|
|
9907
|
+
sample = samples[i];
|
|
9908
|
+
mdata.set(sample.data, offset);
|
|
9909
|
+
sample.size = sample.data.byteLength;
|
|
9910
|
+
offset += sample.size;
|
|
9911
|
+
}
|
|
9912
|
+
} else {
|
|
9913
|
+
var mdatView = new DataView(mdata.buffer);
|
|
9914
|
+
var _loop = function _loop2(_offset2, _sample2) {
|
|
9915
|
+
_sample2 = samples[_i];
|
|
9916
|
+
var sampleSize = 0;
|
|
9917
|
+
_sample2.units.forEach(function(u) {
|
|
9918
|
+
mdatView.setUint32(_offset2, u.byteLength);
|
|
9919
|
+
_offset2 += 4;
|
|
9920
|
+
mdata.set(u, _offset2);
|
|
9921
|
+
_offset2 += u.byteLength;
|
|
9922
|
+
sampleSize += 4 + u.byteLength;
|
|
9923
|
+
});
|
|
9924
|
+
_sample2.size = sampleSize;
|
|
9925
|
+
_offset = _offset2, _sample = _sample2;
|
|
9926
|
+
};
|
|
9927
|
+
for (var _i = 0, _l = samples.length, _offset = 0, _sample; _i < _l; _i++) {
|
|
9928
|
+
_loop(_offset, _sample);
|
|
9929
|
+
}
|
|
9545
9930
|
}
|
|
9546
9931
|
var mdat = MP4.mdat(mdata);
|
|
9547
9932
|
var moof = MP4.moof([track]);
|
|
@@ -9571,6 +9956,55 @@ var FMP4Remuxer = /* @__PURE__ */ function() {
|
|
|
9571
9956
|
}]);
|
|
9572
9957
|
return FMP4Remuxer2;
|
|
9573
9958
|
}();
|
|
9959
|
+
var TransferCost = /* @__PURE__ */ function() {
|
|
9960
|
+
function TransferCost2() {
|
|
9961
|
+
_classCallCheck$4(this, TransferCost2);
|
|
9962
|
+
_defineProperty$3(this, "_ttfb", 0);
|
|
9963
|
+
_defineProperty$3(this, "_demuxStart", 0);
|
|
9964
|
+
_defineProperty$3(this, "_demuxEnd", 0);
|
|
9965
|
+
_defineProperty$3(this, "_demuxCost", 0);
|
|
9966
|
+
_defineProperty$3(this, "_remuxStart", 0);
|
|
9967
|
+
_defineProperty$3(this, "_remuxEnd", 0);
|
|
9968
|
+
_defineProperty$3(this, "_remuxCost", 0);
|
|
9969
|
+
_defineProperty$3(this, "_appendStart", 0);
|
|
9970
|
+
_defineProperty$3(this, "_appendEnd", 0);
|
|
9971
|
+
_defineProperty$3(this, "_appendCost", 0);
|
|
9972
|
+
}
|
|
9973
|
+
_createClass$4(TransferCost2, [{
|
|
9974
|
+
key: "set",
|
|
9975
|
+
value: function set(event, value) {
|
|
9976
|
+
this["_".concat(event)] = value;
|
|
9977
|
+
}
|
|
9978
|
+
}, {
|
|
9979
|
+
key: "start",
|
|
9980
|
+
value: function start(event) {
|
|
9981
|
+
this["_".concat(event, "Start")] = Date.now();
|
|
9982
|
+
}
|
|
9983
|
+
}, {
|
|
9984
|
+
key: "end",
|
|
9985
|
+
value: function end(event) {
|
|
9986
|
+
this["_".concat(event, "End")] = Date.now();
|
|
9987
|
+
this["_".concat(event, "Cost")] = this["_".concat(event, "Cost")] + (this["_".concat(event, "End")] - this["_".concat(event, "Start")]);
|
|
9988
|
+
}
|
|
9989
|
+
}, {
|
|
9990
|
+
key: "transferCost",
|
|
9991
|
+
get: function get() {
|
|
9992
|
+
return {
|
|
9993
|
+
ttfbCost: this._ttfb,
|
|
9994
|
+
demuxCost: this._demuxCost,
|
|
9995
|
+
remuxCost: this._remuxCost,
|
|
9996
|
+
appendCost: this._appendCost
|
|
9997
|
+
};
|
|
9998
|
+
}
|
|
9999
|
+
}]);
|
|
10000
|
+
return TransferCost2;
|
|
10001
|
+
}();
|
|
10002
|
+
var TRANSFER_EVENT = {
|
|
10003
|
+
TTFB: "ttfb",
|
|
10004
|
+
DEMUX: "demux",
|
|
10005
|
+
REMUX: "remux",
|
|
10006
|
+
APPEND: "append"
|
|
10007
|
+
};
|
|
9574
10008
|
var logger$1 = new Logger$2("BufferService");
|
|
9575
10009
|
var BufferService = /* @__PURE__ */ function() {
|
|
9576
10010
|
function BufferService2(flv, softVideo) {
|
|
@@ -9658,7 +10092,8 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9658
10092
|
this._contiguous = false;
|
|
9659
10093
|
this._sourceCreated = false;
|
|
9660
10094
|
this._initSegmentId = "";
|
|
9661
|
-
|
|
10095
|
+
this.resetSeamlessSwitchStats();
|
|
10096
|
+
case 12:
|
|
9662
10097
|
case "end":
|
|
9663
10098
|
return _context.stop();
|
|
9664
10099
|
}
|
|
@@ -9669,6 +10104,15 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9669
10104
|
}
|
|
9670
10105
|
return reset;
|
|
9671
10106
|
}()
|
|
10107
|
+
}, {
|
|
10108
|
+
key: "resetSeamlessSwitchStats",
|
|
10109
|
+
value: function resetSeamlessSwitchStats() {
|
|
10110
|
+
this.seamlessLoadingSwitch = null;
|
|
10111
|
+
this.seamlessLoadingSwitching = false;
|
|
10112
|
+
if (this._demuxer) {
|
|
10113
|
+
this._demuxer.seamlessLoadingSwitching = false;
|
|
10114
|
+
}
|
|
10115
|
+
}
|
|
9672
10116
|
}, {
|
|
9673
10117
|
key: "endOfStream",
|
|
9674
10118
|
value: function() {
|
|
@@ -9774,32 +10218,56 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9774
10218
|
key: "appendBuffer",
|
|
9775
10219
|
value: function() {
|
|
9776
10220
|
var _appendBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee5(chunk) {
|
|
9777
|
-
var
|
|
10221
|
+
var _this = this;
|
|
10222
|
+
var switchingNoReset, demuxer, videoTrack, audioTrack, metadataTrack, idx, videoExist, audioExist, duration, track, videoType, audioType, mse, afterAppend, newId, remuxResult, p;
|
|
9778
10223
|
return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
|
|
9779
10224
|
while (1)
|
|
9780
10225
|
switch (_context5.prev = _context5.next) {
|
|
9781
10226
|
case 0:
|
|
10227
|
+
switchingNoReset = false;
|
|
9782
10228
|
if (this._cachedBuffer) {
|
|
9783
10229
|
chunk = concatUint8Array$1(this._cachedBuffer, chunk);
|
|
9784
10230
|
this._cachedBuffer = null;
|
|
9785
10231
|
}
|
|
9786
10232
|
demuxer = this._demuxer;
|
|
9787
10233
|
if (!(!chunk || !chunk.length || !demuxer)) {
|
|
9788
|
-
_context5.next =
|
|
10234
|
+
_context5.next = 5;
|
|
9789
10235
|
break;
|
|
9790
10236
|
}
|
|
9791
10237
|
return _context5.abrupt("return");
|
|
9792
|
-
case
|
|
9793
|
-
_context5.prev =
|
|
9794
|
-
|
|
9795
|
-
|
|
10238
|
+
case 5:
|
|
10239
|
+
_context5.prev = 5;
|
|
10240
|
+
this.flv._transferCost.start(TRANSFER_EVENT.DEMUX);
|
|
10241
|
+
demuxer.demuxAndFix(chunk, this.seamlessLoadingSwitching || this._discontinuity, this._contiguous, this._demuxStartTime, this.seamlessLoadingSwitching);
|
|
10242
|
+
this.seamlessLoadingSwitching = false;
|
|
10243
|
+
this.flv._transferCost.end(TRANSFER_EVENT.DEMUX);
|
|
10244
|
+
_context5.next = 15;
|
|
9796
10245
|
break;
|
|
9797
|
-
case
|
|
9798
|
-
_context5.prev =
|
|
9799
|
-
_context5.t0 = _context5["catch"](
|
|
10246
|
+
case 12:
|
|
10247
|
+
_context5.prev = 12;
|
|
10248
|
+
_context5.t0 = _context5["catch"](5);
|
|
9800
10249
|
throw new StreamingError(ERR.DEMUX, ERR.SUB_TYPES.FLV, _context5.t0);
|
|
9801
|
-
case
|
|
10250
|
+
case 15:
|
|
9802
10251
|
videoTrack = demuxer.videoTrack, audioTrack = demuxer.audioTrack, metadataTrack = demuxer.metadataTrack;
|
|
10252
|
+
if (!this.seamlessLoadingSwitch) {
|
|
10253
|
+
_context5.next = 25;
|
|
10254
|
+
break;
|
|
10255
|
+
}
|
|
10256
|
+
idx = videoTrack.samples.findIndex(function(sample) {
|
|
10257
|
+
return sample.originDts === videoTrack.lastKeyFrameDts;
|
|
10258
|
+
});
|
|
10259
|
+
if (!(idx >= 0)) {
|
|
10260
|
+
_context5.next = 25;
|
|
10261
|
+
break;
|
|
10262
|
+
}
|
|
10263
|
+
videoTrack.samples.splice(idx);
|
|
10264
|
+
_context5.next = 22;
|
|
10265
|
+
return this.seamlessLoadingSwitch();
|
|
10266
|
+
case 22:
|
|
10267
|
+
this.seamlessLoadingSwitch = null;
|
|
10268
|
+
chunk = null;
|
|
10269
|
+
switchingNoReset = true;
|
|
10270
|
+
case 25:
|
|
9803
10271
|
videoExist = videoTrack.exist();
|
|
9804
10272
|
audioExist = audioTrack.exist();
|
|
9805
10273
|
if (this._opts.onlyAudio) {
|
|
@@ -9811,7 +10279,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9811
10279
|
audioTrack.present = false;
|
|
9812
10280
|
}
|
|
9813
10281
|
if (!(!videoExist && videoTrack.present || !audioExist && audioTrack.present)) {
|
|
9814
|
-
_context5.next =
|
|
10282
|
+
_context5.next = 42;
|
|
9815
10283
|
break;
|
|
9816
10284
|
}
|
|
9817
10285
|
duration = 0;
|
|
@@ -9820,7 +10288,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9820
10288
|
duration = (track.samples[track.samples.length - 1].originPts - track.samples[0].originPts) / track.timescale * 1e3;
|
|
9821
10289
|
}
|
|
9822
10290
|
if (!(duration > this._opts.analyzeDuration)) {
|
|
9823
|
-
_context5.next =
|
|
10291
|
+
_context5.next = 40;
|
|
9824
10292
|
break;
|
|
9825
10293
|
}
|
|
9826
10294
|
logger$1.warn("analyze duration exceeded, ".concat(duration, "ms"), track);
|
|
@@ -9829,19 +10297,28 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9829
10297
|
this.flv.emit(EVENT.ANALYZE_DURATION_EXCEEDED, {
|
|
9830
10298
|
duration
|
|
9831
10299
|
});
|
|
9832
|
-
_context5.next =
|
|
10300
|
+
_context5.next = 42;
|
|
9833
10301
|
break;
|
|
9834
|
-
case
|
|
10302
|
+
case 40:
|
|
9835
10303
|
this._cachedBuffer = chunk;
|
|
9836
10304
|
return _context5.abrupt("return");
|
|
9837
|
-
case
|
|
10305
|
+
case 42:
|
|
9838
10306
|
videoType = videoTrack.type;
|
|
9839
10307
|
audioType = audioTrack.type;
|
|
9840
10308
|
this._fireEvents(videoTrack, audioTrack, metadataTrack);
|
|
9841
|
-
|
|
9842
|
-
|
|
9843
|
-
|
|
10309
|
+
if (!switchingNoReset) {
|
|
10310
|
+
this._discontinuity = false;
|
|
10311
|
+
this._contiguous = true;
|
|
10312
|
+
this._demuxStartTime = 0;
|
|
10313
|
+
}
|
|
9844
10314
|
mse = this._mse;
|
|
10315
|
+
afterAppend = function afterAppend2() {
|
|
10316
|
+
var _this$flv;
|
|
10317
|
+
if ((_this$flv = _this.flv) !== null && _this$flv !== void 0 && _this$flv.emit) {
|
|
10318
|
+
var _this$flv2;
|
|
10319
|
+
(_this$flv2 = _this.flv) === null || _this$flv2 === void 0 ? void 0 : _this$flv2.emit(EVENT.APPEND_BUFFER, {});
|
|
10320
|
+
}
|
|
10321
|
+
};
|
|
9845
10322
|
this.flv.emit(EVENT.DEMUXED_TRACK, {
|
|
9846
10323
|
videoTrack
|
|
9847
10324
|
});
|
|
@@ -9852,16 +10329,16 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9852
10329
|
this._emitMetaParsedEvent(videoTrack, audioTrack);
|
|
9853
10330
|
}
|
|
9854
10331
|
if (!mse) {
|
|
9855
|
-
_context5.next =
|
|
10332
|
+
_context5.next = 81;
|
|
9856
10333
|
break;
|
|
9857
10334
|
}
|
|
9858
10335
|
if (this._sourceCreated) {
|
|
9859
|
-
_context5.next =
|
|
10336
|
+
_context5.next = 59;
|
|
9860
10337
|
break;
|
|
9861
10338
|
}
|
|
9862
|
-
_context5.next =
|
|
10339
|
+
_context5.next = 55;
|
|
9863
10340
|
return mse.open();
|
|
9864
|
-
case
|
|
10341
|
+
case 55:
|
|
9865
10342
|
if (videoExist) {
|
|
9866
10343
|
logger$1.log("codec: video/mp4;codecs=".concat(videoTrack.codec));
|
|
9867
10344
|
mse.createSource(videoType, "video/mp4;codecs=".concat(videoTrack.codec));
|
|
@@ -9872,26 +10349,28 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9872
10349
|
}
|
|
9873
10350
|
this._sourceCreated = true;
|
|
9874
10351
|
this.flv.emit(EVENT.SOURCEBUFFER_CREATED);
|
|
9875
|
-
case
|
|
9876
|
-
_context5.prev =
|
|
10352
|
+
case 59:
|
|
10353
|
+
_context5.prev = 59;
|
|
9877
10354
|
if (this._needInitSegment && !this._opts.mseLowLatency) {
|
|
9878
10355
|
videoTrack.duration = this._opts.durationForMSELowLatencyOff * videoTrack.timescale;
|
|
9879
10356
|
audioTrack.duration = this._opts.durationForMSELowLatencyOff * audioExist.timescale;
|
|
9880
10357
|
}
|
|
10358
|
+
this.flv._transferCost.start(TRANSFER_EVENT.REMUX);
|
|
9881
10359
|
remuxResult = this._remuxer.remux(this._needInitSegment);
|
|
9882
|
-
|
|
10360
|
+
this.flv._transferCost.end(TRANSFER_EVENT.REMUX);
|
|
10361
|
+
_context5.next = 69;
|
|
9883
10362
|
break;
|
|
9884
|
-
case
|
|
9885
|
-
_context5.prev =
|
|
9886
|
-
_context5.t1 = _context5["catch"](
|
|
10363
|
+
case 66:
|
|
10364
|
+
_context5.prev = 66;
|
|
10365
|
+
_context5.t1 = _context5["catch"](59);
|
|
9887
10366
|
throw new StreamingError(ERR.REMUX, ERR.SUB_TYPES.FMP4, _context5.t1);
|
|
9888
|
-
case
|
|
10367
|
+
case 69:
|
|
9889
10368
|
if (!(this._needInitSegment && !remuxResult.videoInitSegment && !remuxResult.audioInitSegment)) {
|
|
9890
|
-
_context5.next =
|
|
10369
|
+
_context5.next = 71;
|
|
9891
10370
|
break;
|
|
9892
10371
|
}
|
|
9893
10372
|
return _context5.abrupt("return");
|
|
9894
|
-
case
|
|
10373
|
+
case 71:
|
|
9895
10374
|
this._needInitSegment = false;
|
|
9896
10375
|
p = [];
|
|
9897
10376
|
if (remuxResult.videoInitSegment)
|
|
@@ -9902,16 +10381,21 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9902
10381
|
p.push(mse.append(videoType, remuxResult.videoSegment));
|
|
9903
10382
|
if (remuxResult.audioSegment)
|
|
9904
10383
|
p.push(mse.append(audioType, remuxResult.audioSegment));
|
|
9905
|
-
|
|
9906
|
-
|
|
10384
|
+
this.flv._transferCost.start(TRANSFER_EVENT.APPEND);
|
|
10385
|
+
return _context5.abrupt("return", Promise.all(p).then(afterAppend).then(function() {
|
|
10386
|
+
_this.flv._transferCost.end(TRANSFER_EVENT.APPEND);
|
|
10387
|
+
afterAppend();
|
|
10388
|
+
}));
|
|
10389
|
+
case 81:
|
|
9907
10390
|
if (this._softVideo) {
|
|
9908
10391
|
this._softVideo.appendBuffer(videoTrack, audioTrack);
|
|
10392
|
+
afterAppend();
|
|
9909
10393
|
}
|
|
9910
|
-
case
|
|
10394
|
+
case 82:
|
|
9911
10395
|
case "end":
|
|
9912
10396
|
return _context5.stop();
|
|
9913
10397
|
}
|
|
9914
|
-
}, _callee5, this, [[
|
|
10398
|
+
}, _callee5, this, [[5, 12], [59, 66]]);
|
|
9915
10399
|
}));
|
|
9916
10400
|
function appendBuffer(_x2) {
|
|
9917
10401
|
return _appendBuffer.apply(this, arguments);
|
|
@@ -9922,7 +10406,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9922
10406
|
key: "evictBuffer",
|
|
9923
10407
|
value: function() {
|
|
9924
10408
|
var _evictBuffer = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee6(bufferBehind) {
|
|
9925
|
-
var
|
|
10409
|
+
var _this2 = this;
|
|
9926
10410
|
var media, currentTime, removeEnd, start;
|
|
9927
10411
|
return _regeneratorRuntime$1().wrap(function _callee6$(_context6) {
|
|
9928
10412
|
while (1)
|
|
@@ -9951,7 +10435,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
9951
10435
|
return _context6.abrupt("return");
|
|
9952
10436
|
case 10:
|
|
9953
10437
|
return _context6.abrupt("return", this._mse.clearBuffer(0, removeEnd).then(function() {
|
|
9954
|
-
return
|
|
10438
|
+
return _this2.flv.emit(EVENT.REMOVE_BUFFER, {
|
|
9955
10439
|
removeEnd
|
|
9956
10440
|
});
|
|
9957
10441
|
}));
|
|
@@ -10001,16 +10485,16 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
10001
10485
|
}, {
|
|
10002
10486
|
key: "_fireEvents",
|
|
10003
10487
|
value: function _fireEvents(videoTrack, audioTrack, metadataTrack) {
|
|
10004
|
-
var
|
|
10005
|
-
logger$1.debug(videoTrack.samples, audioTrack.samples);
|
|
10488
|
+
var _this3 = this;
|
|
10489
|
+
logger$1.debug("videoTrack samples count: ".concat(videoTrack.samples.length, ", audioTrack samples count: ").concat(audioTrack.samples.length));
|
|
10006
10490
|
metadataTrack.flvScriptSamples.forEach(function(sample) {
|
|
10007
|
-
|
|
10491
|
+
_this3.flv.emit(EVENT.FLV_SCRIPT_DATA, sample);
|
|
10008
10492
|
logger$1.debug("flvScriptData", sample);
|
|
10009
10493
|
});
|
|
10010
10494
|
videoTrack.samples.forEach(function(sample) {
|
|
10011
10495
|
if (sample.keyframe) {
|
|
10012
|
-
|
|
10013
|
-
pts: sample.
|
|
10496
|
+
_this3.flv.emit(EVENT.KEYFRAME, {
|
|
10497
|
+
pts: sample.originPts
|
|
10014
10498
|
});
|
|
10015
10499
|
}
|
|
10016
10500
|
});
|
|
@@ -10028,7 +10512,7 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
10028
10512
|
break;
|
|
10029
10513
|
}
|
|
10030
10514
|
if (type)
|
|
10031
|
-
|
|
10515
|
+
_this3.flv.emit(EVENT.STREAM_EXCEPTION, _objectSpread2$2(_objectSpread2$2({}, warn), {}, {
|
|
10032
10516
|
type
|
|
10033
10517
|
}));
|
|
10034
10518
|
logger$1.warn("video exception", warn);
|
|
@@ -10047,13 +10531,13 @@ var BufferService = /* @__PURE__ */ function() {
|
|
|
10047
10531
|
break;
|
|
10048
10532
|
}
|
|
10049
10533
|
if (type)
|
|
10050
|
-
|
|
10534
|
+
_this3.flv.emit(EVENT.STREAM_EXCEPTION, _objectSpread2$2(_objectSpread2$2({}, warn), {}, {
|
|
10051
10535
|
type
|
|
10052
10536
|
}));
|
|
10053
10537
|
logger$1.warn("audio exception", warn);
|
|
10054
10538
|
});
|
|
10055
10539
|
metadataTrack.seiSamples.forEach(function(sei) {
|
|
10056
|
-
|
|
10540
|
+
_this3.flv.emit(EVENT.SEI, _objectSpread2$2(_objectSpread2$2({}, sei), {}, {
|
|
10057
10541
|
sei: {
|
|
10058
10542
|
code: sei.data.type,
|
|
10059
10543
|
content: sei.data.payload,
|
|
@@ -10088,7 +10572,8 @@ function getOption(opts) {
|
|
|
10088
10572
|
durationForMSELowLatencyOff: 6,
|
|
10089
10573
|
chunkCountForSpeed: 50,
|
|
10090
10574
|
skipChunkSize: 1e3,
|
|
10091
|
-
longtimeNoReceived: 3e3
|
|
10575
|
+
longtimeNoReceived: 3e3,
|
|
10576
|
+
enableStartGapJump: true
|
|
10092
10577
|
}, opts);
|
|
10093
10578
|
if (ret.isLive) {
|
|
10094
10579
|
if (ret.preloadTime) {
|
|
@@ -10156,7 +10641,7 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10156
10641
|
_defineProperty$3(_assertThisInitialized$3(_this), "_acceptRanges", true);
|
|
10157
10642
|
_defineProperty$3(_assertThisInitialized$3(_this), "_onProgress", /* @__PURE__ */ function() {
|
|
10158
10643
|
var _ref2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee(chunk, done, _ref, response) {
|
|
10159
|
-
var startTime, endTime, st, firstByteTime, _this$_mediaLoader, headers, _this$_bufferService, remaining, maxReaderInterval;
|
|
10644
|
+
var startTime, endTime, st, firstByteTime, _this$_mediaLoader, headers, elapsed, _this$_bufferService, remaining, maxReaderInterval;
|
|
10160
10645
|
return _regeneratorRuntime$1().wrap(function _callee$(_context) {
|
|
10161
10646
|
while (1)
|
|
10162
10647
|
switch (_context.prev = _context.next) {
|
|
@@ -10164,7 +10649,7 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10164
10649
|
startTime = _ref.startTime, endTime = _ref.endTime, st = _ref.st, firstByteTime = _ref.firstByteTime;
|
|
10165
10650
|
_this._loading = !done;
|
|
10166
10651
|
if (_this._firstProgressEmit) {
|
|
10167
|
-
_context.next =
|
|
10652
|
+
_context.next = 13;
|
|
10168
10653
|
break;
|
|
10169
10654
|
}
|
|
10170
10655
|
if (_this.media) {
|
|
@@ -10175,49 +10660,51 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10175
10660
|
return _context.abrupt("return");
|
|
10176
10661
|
case 6:
|
|
10177
10662
|
headers = response.headers;
|
|
10663
|
+
elapsed = st ? firstByteTime - st : endTime - startTime;
|
|
10178
10664
|
_this.emit(EVENT.TTFB, {
|
|
10179
10665
|
url: _this._opts.url,
|
|
10180
10666
|
responseUrl: response.url,
|
|
10181
|
-
elapsed
|
|
10667
|
+
elapsed
|
|
10182
10668
|
});
|
|
10183
10669
|
_this.emit(EVENT.LOAD_RESPONSE_HEADERS, {
|
|
10184
10670
|
headers
|
|
10185
10671
|
});
|
|
10672
|
+
_this._transferCost.set(TRANSFER_EVENT.TTFB, elapsed);
|
|
10186
10673
|
_this._acceptRanges = !!(headers !== null && headers !== void 0 && headers.get("Accept-Ranges")) || !!(headers !== null && headers !== void 0 && headers.get("Content-Range"));
|
|
10187
10674
|
_this._firstProgressEmit = true;
|
|
10188
|
-
case
|
|
10675
|
+
case 13:
|
|
10189
10676
|
if (_this._bufferService) {
|
|
10190
|
-
_context.next =
|
|
10677
|
+
_context.next = 15;
|
|
10191
10678
|
break;
|
|
10192
10679
|
}
|
|
10193
10680
|
return _context.abrupt("return");
|
|
10194
|
-
case
|
|
10681
|
+
case 15:
|
|
10195
10682
|
clearTimeout(_this._maxChunkWaitTimer);
|
|
10196
10683
|
_this._bandwidthService.addChunkRecord(chunk === null || chunk === void 0 ? void 0 : chunk.byteLength, endTime - startTime);
|
|
10197
|
-
_context.prev =
|
|
10198
|
-
_context.next =
|
|
10684
|
+
_context.prev = 17;
|
|
10685
|
+
_context.next = 20;
|
|
10199
10686
|
return _this._bufferService.appendBuffer(chunk);
|
|
10200
|
-
case
|
|
10687
|
+
case 20:
|
|
10201
10688
|
(_this$_bufferService = _this._bufferService) === null || _this$_bufferService === void 0 ? void 0 : _this$_bufferService.evictBuffer(_this._opts.bufferBehind);
|
|
10202
|
-
_context.next =
|
|
10689
|
+
_context.next = 33;
|
|
10203
10690
|
break;
|
|
10204
|
-
case
|
|
10205
|
-
_context.prev =
|
|
10206
|
-
_context.t0 = _context["catch"](
|
|
10691
|
+
case 23:
|
|
10692
|
+
_context.prev = 23;
|
|
10693
|
+
_context.t0 = _context["catch"](17);
|
|
10207
10694
|
if (!(!_this.isLive && _this._bufferService.isFull())) {
|
|
10208
|
-
_context.next =
|
|
10695
|
+
_context.next = 32;
|
|
10209
10696
|
break;
|
|
10210
10697
|
}
|
|
10211
|
-
_context.next =
|
|
10698
|
+
_context.next = 28;
|
|
10212
10699
|
return _this._mediaLoader.cancel();
|
|
10213
|
-
case
|
|
10700
|
+
case 28:
|
|
10214
10701
|
_this._loading = false;
|
|
10215
10702
|
remaining = _this.bufferInfo().remaining;
|
|
10216
10703
|
_this._opts.preloadTime = parseInt(remaining) / 2;
|
|
10217
10704
|
return _context.abrupt("return");
|
|
10218
|
-
case
|
|
10705
|
+
case 32:
|
|
10219
10706
|
return _context.abrupt("return", _this._emitError(StreamingError.create(_context.t0)));
|
|
10220
|
-
case
|
|
10707
|
+
case 33:
|
|
10221
10708
|
if (_this._urlSwitching) {
|
|
10222
10709
|
_this._urlSwitching = false;
|
|
10223
10710
|
_this.emit(EVENT.SWITCH_URL_SUCCESS, {
|
|
@@ -10229,7 +10716,7 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10229
10716
|
_this._tick();
|
|
10230
10717
|
}
|
|
10231
10718
|
if (!(done && !_this.media.seeking)) {
|
|
10232
|
-
_context.next =
|
|
10719
|
+
_context.next = 40;
|
|
10233
10720
|
break;
|
|
10234
10721
|
}
|
|
10235
10722
|
_this.emit(EVENT.LOAD_COMPLETE);
|
|
@@ -10238,13 +10725,13 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10238
10725
|
_this._end();
|
|
10239
10726
|
}
|
|
10240
10727
|
return _context.abrupt("return");
|
|
10241
|
-
case
|
|
10728
|
+
case 40:
|
|
10242
10729
|
if (_this.isLive) {
|
|
10243
|
-
_context.next =
|
|
10730
|
+
_context.next = 42;
|
|
10244
10731
|
break;
|
|
10245
10732
|
}
|
|
10246
10733
|
return _context.abrupt("return");
|
|
10247
|
-
case
|
|
10734
|
+
case 42:
|
|
10248
10735
|
maxReaderInterval = _this._opts.maxReaderInterval;
|
|
10249
10736
|
if (maxReaderInterval && _this._firstProgressEmit) {
|
|
10250
10737
|
clearTimeout(_this._maxChunkWaitTimer);
|
|
@@ -10258,11 +10745,11 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10258
10745
|
_this._end();
|
|
10259
10746
|
}, maxReaderInterval);
|
|
10260
10747
|
}
|
|
10261
|
-
case
|
|
10748
|
+
case 44:
|
|
10262
10749
|
case "end":
|
|
10263
10750
|
return _context.stop();
|
|
10264
10751
|
}
|
|
10265
|
-
}, _callee, null, [[
|
|
10752
|
+
}, _callee, null, [[17, 23]]);
|
|
10266
10753
|
}));
|
|
10267
10754
|
return function(_x, _x2, _x3, _x4) {
|
|
10268
10755
|
return _ref2.apply(this, arguments);
|
|
@@ -10295,19 +10782,19 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10295
10782
|
if (bufferEnd < MAX_HOLE || !media.readyState)
|
|
10296
10783
|
return;
|
|
10297
10784
|
var opts = _this._opts;
|
|
10298
|
-
if (isMediaPlaying(media)) {
|
|
10785
|
+
if (isMediaPlaying(media) && media.currentTime) {
|
|
10299
10786
|
if (_this._gapService) {
|
|
10300
10787
|
_this._gapService.do(media, opts.maxJumpDistance, _this.isLive, 3);
|
|
10301
10788
|
}
|
|
10302
10789
|
} else {
|
|
10303
|
-
if (!media.currentTime && _this._gapService) {
|
|
10790
|
+
if (!media.currentTime && _this._gapService && opts.enableStartGapJump) {
|
|
10304
10791
|
var gapJump = _this._opts.mseLowLatency || _this._opts.mseLowLatency === false && _this.bufferInfo(MAX_START_GAP).nextStart;
|
|
10305
10792
|
if (gapJump) {
|
|
10306
10793
|
_this._gapService.do(media, opts.maxJumpDistance, _this.isLive, 3);
|
|
10307
10794
|
}
|
|
10308
10795
|
return;
|
|
10309
10796
|
}
|
|
10310
|
-
if (opts.isLive && media.readyState === 4 && bufferEnd > opts.disconnectTime) {
|
|
10797
|
+
if (opts.isLive && media.readyState === 4 && bufferEnd - media.currentTime > opts.disconnectTime) {
|
|
10311
10798
|
_this.disconnect();
|
|
10312
10799
|
}
|
|
10313
10800
|
}
|
|
@@ -10456,6 +10943,7 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10456
10943
|
responseType: "arraybuffer"
|
|
10457
10944
|
}));
|
|
10458
10945
|
_this._disconnectRetryCount = _this._opts.disconnectRetryCount;
|
|
10946
|
+
_this._transferCost = new TransferCost();
|
|
10459
10947
|
_this._bufferService = new BufferService(_assertThisInitialized$3(_this), _this._opts.softDecode ? _this.media : void 0, _this._opts);
|
|
10460
10948
|
_this._seiService = new SeiService(_assertThisInitialized$3(_this));
|
|
10461
10949
|
_this._bandwidthService = new BandwidthService({
|
|
@@ -10479,7 +10967,7 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10479
10967
|
_createClass$4(Flv2, [{
|
|
10480
10968
|
key: "version",
|
|
10481
10969
|
get: function get() {
|
|
10482
|
-
return "3.0.
|
|
10970
|
+
return "3.0.21-rc.2";
|
|
10483
10971
|
}
|
|
10484
10972
|
}, {
|
|
10485
10973
|
key: "isLive",
|
|
@@ -10595,9 +11083,9 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10595
11083
|
return this._clear();
|
|
10596
11084
|
case 8:
|
|
10597
11085
|
setTimeout(function() {
|
|
11086
|
+
_this2._seamlessSwitching = true;
|
|
10598
11087
|
_this2._loadData(_this2._opts.url);
|
|
10599
11088
|
_this2._bufferService.seamlessSwitch();
|
|
10600
|
-
_this2._seamlessSwitching = true;
|
|
10601
11089
|
});
|
|
10602
11090
|
_context5.next = 13;
|
|
10603
11091
|
break;
|
|
@@ -10621,50 +11109,82 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10621
11109
|
}, {
|
|
10622
11110
|
key: "disconnect",
|
|
10623
11111
|
value: function disconnect() {
|
|
11112
|
+
var _this$_bufferService4;
|
|
10624
11113
|
logger.debug("disconnect!");
|
|
11114
|
+
(_this$_bufferService4 = this._bufferService) === null || _this$_bufferService4 === void 0 ? void 0 : _this$_bufferService4.resetSeamlessSwitchStats();
|
|
10625
11115
|
return this._clear();
|
|
10626
11116
|
}
|
|
10627
11117
|
}, {
|
|
10628
11118
|
key: "switchURL",
|
|
10629
11119
|
value: function() {
|
|
10630
|
-
var _switchURL = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
11120
|
+
var _switchURL = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee7(url, seamless) {
|
|
10631
11121
|
var _this3 = this;
|
|
10632
|
-
return _regeneratorRuntime$1().wrap(function
|
|
11122
|
+
return _regeneratorRuntime$1().wrap(function _callee7$(_context7) {
|
|
10633
11123
|
while (1)
|
|
10634
|
-
switch (
|
|
11124
|
+
switch (_context7.prev = _context7.next) {
|
|
10635
11125
|
case 0:
|
|
10636
11126
|
if (this._bufferService) {
|
|
10637
|
-
|
|
11127
|
+
_context7.next = 2;
|
|
10638
11128
|
break;
|
|
10639
11129
|
}
|
|
10640
|
-
return
|
|
11130
|
+
return _context7.abrupt("return");
|
|
10641
11131
|
case 2:
|
|
10642
11132
|
this._resetDisconnectCount();
|
|
11133
|
+
if (!(this._loading && seamless)) {
|
|
11134
|
+
_context7.next = 6;
|
|
11135
|
+
break;
|
|
11136
|
+
}
|
|
11137
|
+
this._bufferService.seamlessLoadingSwitch = /* @__PURE__ */ function() {
|
|
11138
|
+
var _ref5 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee6(pts) {
|
|
11139
|
+
return _regeneratorRuntime$1().wrap(function _callee6$(_context6) {
|
|
11140
|
+
while (1)
|
|
11141
|
+
switch (_context6.prev = _context6.next) {
|
|
11142
|
+
case 0:
|
|
11143
|
+
_context6.next = 2;
|
|
11144
|
+
return _this3._clear();
|
|
11145
|
+
case 2:
|
|
11146
|
+
_this3._bufferService.seamlessLoadingSwitching = true;
|
|
11147
|
+
_this3._urlSwitching = true;
|
|
11148
|
+
_this3._seamlessSwitching = true;
|
|
11149
|
+
_this3._bufferService.seamlessSwitch();
|
|
11150
|
+
_this3._loadData(url);
|
|
11151
|
+
case 7:
|
|
11152
|
+
case "end":
|
|
11153
|
+
return _context6.stop();
|
|
11154
|
+
}
|
|
11155
|
+
}, _callee6);
|
|
11156
|
+
}));
|
|
11157
|
+
return function(_x8) {
|
|
11158
|
+
return _ref5.apply(this, arguments);
|
|
11159
|
+
};
|
|
11160
|
+
}();
|
|
11161
|
+
return _context7.abrupt("return");
|
|
11162
|
+
case 6:
|
|
10643
11163
|
if (!(!seamless || !this._opts.isLive)) {
|
|
10644
|
-
|
|
11164
|
+
_context7.next = 11;
|
|
10645
11165
|
break;
|
|
10646
11166
|
}
|
|
10647
|
-
|
|
11167
|
+
_context7.next = 9;
|
|
10648
11168
|
return this.load(url);
|
|
10649
|
-
case
|
|
11169
|
+
case 9:
|
|
10650
11170
|
this._urlSwitching = true;
|
|
10651
|
-
return
|
|
11171
|
+
return _context7.abrupt("return", this.media.play(true).catch(function() {
|
|
10652
11172
|
}));
|
|
10653
|
-
case
|
|
10654
|
-
|
|
11173
|
+
case 11:
|
|
11174
|
+
_context7.next = 13;
|
|
10655
11175
|
return this._clear();
|
|
10656
|
-
case
|
|
11176
|
+
case 13:
|
|
10657
11177
|
setTimeout(function() {
|
|
10658
11178
|
_this3._urlSwitching = true;
|
|
10659
11179
|
_this3._seamlessSwitching = true;
|
|
10660
11180
|
_this3._loadData(url);
|
|
10661
11181
|
_this3._bufferService.seamlessSwitch();
|
|
10662
11182
|
});
|
|
10663
|
-
case
|
|
11183
|
+
case 14:
|
|
10664
11184
|
case "end":
|
|
10665
|
-
return
|
|
11185
|
+
return _context7.stop();
|
|
10666
11186
|
}
|
|
10667
|
-
},
|
|
11187
|
+
}, _callee7, this);
|
|
10668
11188
|
}));
|
|
10669
11189
|
function switchURL(_x6, _x7) {
|
|
10670
11190
|
return _switchURL.apply(this, arguments);
|
|
@@ -10674,16 +11194,16 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10674
11194
|
}, {
|
|
10675
11195
|
key: "destroy",
|
|
10676
11196
|
value: function() {
|
|
10677
|
-
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
10678
|
-
return _regeneratorRuntime$1().wrap(function
|
|
11197
|
+
var _destroy = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee8() {
|
|
11198
|
+
return _regeneratorRuntime$1().wrap(function _callee8$(_context8) {
|
|
10679
11199
|
while (1)
|
|
10680
|
-
switch (
|
|
11200
|
+
switch (_context8.prev = _context8.next) {
|
|
10681
11201
|
case 0:
|
|
10682
11202
|
if (this.media) {
|
|
10683
|
-
|
|
11203
|
+
_context8.next = 2;
|
|
10684
11204
|
break;
|
|
10685
11205
|
}
|
|
10686
|
-
return
|
|
11206
|
+
return _context8.abrupt("return");
|
|
10687
11207
|
case 2:
|
|
10688
11208
|
this.removeAllListeners();
|
|
10689
11209
|
this._seiService.reset();
|
|
@@ -10693,16 +11213,16 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10693
11213
|
this.media.removeEventListener("timeupdate", this._onTimeupdate);
|
|
10694
11214
|
this.media.removeEventListener("waiting", this._onWaiting);
|
|
10695
11215
|
this.media.removeEventListener("progress", this._onBufferUpdate);
|
|
10696
|
-
|
|
11216
|
+
_context8.next = 12;
|
|
10697
11217
|
return Promise.all([this._clear(), this._bufferService.destroy()]);
|
|
10698
11218
|
case 12:
|
|
10699
11219
|
this.media = null;
|
|
10700
11220
|
this._bufferService = null;
|
|
10701
11221
|
case 14:
|
|
10702
11222
|
case "end":
|
|
10703
|
-
return
|
|
11223
|
+
return _context8.stop();
|
|
10704
11224
|
}
|
|
10705
|
-
},
|
|
11225
|
+
}, _callee8, this);
|
|
10706
11226
|
}));
|
|
10707
11227
|
function destroy() {
|
|
10708
11228
|
return _destroy.apply(this, arguments);
|
|
@@ -10731,26 +11251,26 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10731
11251
|
}, {
|
|
10732
11252
|
key: "_reset",
|
|
10733
11253
|
value: function() {
|
|
10734
|
-
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
10735
|
-
var reuseMse,
|
|
10736
|
-
return _regeneratorRuntime$1().wrap(function
|
|
11254
|
+
var _reset2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee9() {
|
|
11255
|
+
var reuseMse, _args9 = arguments;
|
|
11256
|
+
return _regeneratorRuntime$1().wrap(function _callee9$(_context9) {
|
|
10737
11257
|
while (1)
|
|
10738
|
-
switch (
|
|
11258
|
+
switch (_context9.prev = _context9.next) {
|
|
10739
11259
|
case 0:
|
|
10740
|
-
reuseMse =
|
|
11260
|
+
reuseMse = _args9.length > 0 && _args9[0] !== void 0 ? _args9[0] : false;
|
|
10741
11261
|
this._seiService.reset();
|
|
10742
11262
|
this._bandwidthService.reset();
|
|
10743
11263
|
this._stats.reset();
|
|
10744
|
-
|
|
11264
|
+
_context9.next = 6;
|
|
10745
11265
|
return this._clear();
|
|
10746
11266
|
case 6:
|
|
10747
|
-
|
|
11267
|
+
_context9.next = 8;
|
|
10748
11268
|
return this._bufferService.reset(reuseMse);
|
|
10749
11269
|
case 8:
|
|
10750
11270
|
case "end":
|
|
10751
|
-
return
|
|
11271
|
+
return _context9.stop();
|
|
10752
11272
|
}
|
|
10753
|
-
},
|
|
11273
|
+
}, _callee9, this);
|
|
10754
11274
|
}));
|
|
10755
11275
|
function _reset() {
|
|
10756
11276
|
return _reset2.apply(this, arguments);
|
|
@@ -10760,17 +11280,17 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10760
11280
|
}, {
|
|
10761
11281
|
key: "_loadData",
|
|
10762
11282
|
value: function() {
|
|
10763
|
-
var _loadData2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
11283
|
+
var _loadData2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee10(url, range) {
|
|
10764
11284
|
var finnalUrl;
|
|
10765
|
-
return _regeneratorRuntime$1().wrap(function
|
|
11285
|
+
return _regeneratorRuntime$1().wrap(function _callee10$(_context10) {
|
|
10766
11286
|
while (1)
|
|
10767
|
-
switch (
|
|
11287
|
+
switch (_context10.prev = _context10.next) {
|
|
10768
11288
|
case 0:
|
|
10769
11289
|
if (url)
|
|
10770
11290
|
this._opts.url = url;
|
|
10771
11291
|
finnalUrl = url = this._opts.url;
|
|
10772
11292
|
if (url) {
|
|
10773
|
-
|
|
11293
|
+
_context10.next = 4;
|
|
10774
11294
|
break;
|
|
10775
11295
|
}
|
|
10776
11296
|
throw new Error("Source url is missing");
|
|
@@ -10785,34 +11305,34 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10785
11305
|
});
|
|
10786
11306
|
logger.debug("load data, loading:", this._loading, finnalUrl);
|
|
10787
11307
|
if (!this._loading) {
|
|
10788
|
-
|
|
11308
|
+
_context10.next = 11;
|
|
10789
11309
|
break;
|
|
10790
11310
|
}
|
|
10791
|
-
|
|
11311
|
+
_context10.next = 11;
|
|
10792
11312
|
return this._mediaLoader.cancel();
|
|
10793
11313
|
case 11:
|
|
10794
11314
|
this._loading = true;
|
|
10795
|
-
|
|
10796
|
-
|
|
11315
|
+
_context10.prev = 12;
|
|
11316
|
+
_context10.next = 15;
|
|
10797
11317
|
return this._mediaLoader.load({
|
|
10798
11318
|
url: finnalUrl,
|
|
10799
11319
|
range
|
|
10800
11320
|
});
|
|
10801
11321
|
case 15:
|
|
10802
|
-
|
|
11322
|
+
_context10.next = 21;
|
|
10803
11323
|
break;
|
|
10804
11324
|
case 17:
|
|
10805
|
-
|
|
10806
|
-
|
|
11325
|
+
_context10.prev = 17;
|
|
11326
|
+
_context10.t0 = _context10["catch"](12);
|
|
10807
11327
|
this._loading = false;
|
|
10808
|
-
return
|
|
11328
|
+
return _context10.abrupt("return", this._emitError(StreamingError.network(_context10.t0), false));
|
|
10809
11329
|
case 21:
|
|
10810
11330
|
case "end":
|
|
10811
|
-
return
|
|
11331
|
+
return _context10.stop();
|
|
10812
11332
|
}
|
|
10813
|
-
},
|
|
11333
|
+
}, _callee10, this, [[12, 17]]);
|
|
10814
11334
|
}));
|
|
10815
|
-
function _loadData(
|
|
11335
|
+
function _loadData(_x9, _x10) {
|
|
10816
11336
|
return _loadData2.apply(this, arguments);
|
|
10817
11337
|
}
|
|
10818
11338
|
return _loadData;
|
|
@@ -10820,16 +11340,16 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10820
11340
|
}, {
|
|
10821
11341
|
key: "_clear",
|
|
10822
11342
|
value: function() {
|
|
10823
|
-
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
10824
|
-
return _regeneratorRuntime$1().wrap(function
|
|
11343
|
+
var _clear2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee11() {
|
|
11344
|
+
return _regeneratorRuntime$1().wrap(function _callee11$(_context11) {
|
|
10825
11345
|
while (1)
|
|
10826
|
-
switch (
|
|
11346
|
+
switch (_context11.prev = _context11.next) {
|
|
10827
11347
|
case 0:
|
|
10828
11348
|
if (!this._mediaLoader) {
|
|
10829
|
-
|
|
11349
|
+
_context11.next = 3;
|
|
10830
11350
|
break;
|
|
10831
11351
|
}
|
|
10832
|
-
|
|
11352
|
+
_context11.next = 3;
|
|
10833
11353
|
return this._mediaLoader.cancel();
|
|
10834
11354
|
case 3:
|
|
10835
11355
|
clearTimeout(this._maxChunkWaitTimer);
|
|
@@ -10838,9 +11358,9 @@ var Flv = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
10838
11358
|
this._firstProgressEmit = false;
|
|
10839
11359
|
case 7:
|
|
10840
11360
|
case "end":
|
|
10841
|
-
return
|
|
11361
|
+
return _context11.stop();
|
|
10842
11362
|
}
|
|
10843
|
-
},
|
|
11363
|
+
}, _callee11, this);
|
|
10844
11364
|
}));
|
|
10845
11365
|
function _clear() {
|
|
10846
11366
|
return _clear2.apply(this, arguments);
|
|
@@ -10927,9 +11447,13 @@ var PluginExtension = /* @__PURE__ */ function() {
|
|
|
10927
11447
|
_createClass$4(PluginExtension2, [{
|
|
10928
11448
|
key: "_init",
|
|
10929
11449
|
value: function _init() {
|
|
10930
|
-
var _this$_opts2 = this._opts, media = _this$_opts2.media, preloadTime = _this$_opts2.preloadTime, innerDegrade = _this$_opts2.innerDegrade, decodeMode = _this$_opts2.decodeMode;
|
|
11450
|
+
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;
|
|
10931
11451
|
if (!media)
|
|
10932
11452
|
return;
|
|
11453
|
+
if (!isLive && media.setPlayMode) {
|
|
11454
|
+
media.setPlayMode("VOD");
|
|
11455
|
+
return;
|
|
11456
|
+
}
|
|
10933
11457
|
if (innerDegrade) {
|
|
10934
11458
|
media.setAttribute("innerdegrade", innerDegrade);
|
|
10935
11459
|
}
|
|
@@ -10967,6 +11491,7 @@ var FlvPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
10967
11491
|
args[_key] = arguments[_key];
|
|
10968
11492
|
}
|
|
10969
11493
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
11494
|
+
_defineProperty$3(_assertThisInitialized$3(_this), "logger", logger);
|
|
10970
11495
|
_defineProperty$3(_assertThisInitialized$3(_this), "flv", null);
|
|
10971
11496
|
_defineProperty$3(_assertThisInitialized$3(_this), "pluginExtension", null);
|
|
10972
11497
|
_defineProperty$3(_assertThisInitialized$3(_this), "getStats", function() {
|
|
@@ -11034,11 +11559,17 @@ var FlvPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
11034
11559
|
var _this$flv3;
|
|
11035
11560
|
return (_this$flv3 = this.flv) === null || _this$flv3 === void 0 ? void 0 : _this$flv3.loader;
|
|
11036
11561
|
}
|
|
11562
|
+
}, {
|
|
11563
|
+
key: "transferCost",
|
|
11564
|
+
get: function get() {
|
|
11565
|
+
return this.flv._transferCost.transferCost;
|
|
11566
|
+
}
|
|
11037
11567
|
}, {
|
|
11038
11568
|
key: "beforePlayerInit",
|
|
11039
11569
|
value: function beforePlayerInit() {
|
|
11040
11570
|
var _this2 = this;
|
|
11041
11571
|
var config = this.player.config;
|
|
11572
|
+
var mediaElem = this.player.media || this.player.video;
|
|
11042
11573
|
if (!config.url)
|
|
11043
11574
|
return;
|
|
11044
11575
|
if (this.flv)
|
|
@@ -11051,10 +11582,10 @@ var FlvPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
11051
11582
|
this.flv = new Flv(_objectSpread2$2({
|
|
11052
11583
|
softDecode: this.softDecode,
|
|
11053
11584
|
isLive: config.isLive,
|
|
11054
|
-
media:
|
|
11585
|
+
media: mediaElem,
|
|
11055
11586
|
preProcessUrl: function preProcessUrl(url, ext) {
|
|
11056
|
-
var _this2$player
|
|
11057
|
-
return ((_this2$player
|
|
11587
|
+
var _this2$player, _this2$player$preProc;
|
|
11588
|
+
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)) || {
|
|
11058
11589
|
url,
|
|
11059
11590
|
ext
|
|
11060
11591
|
};
|
|
@@ -11073,7 +11604,8 @@ var FlvPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
11073
11604
|
}
|
|
11074
11605
|
if (this.softDecode) {
|
|
11075
11606
|
this.pluginExtension = new PluginExtension(_objectSpread2$2({
|
|
11076
|
-
media: this.player.video
|
|
11607
|
+
media: this.player.video,
|
|
11608
|
+
isLive: config.isLive
|
|
11077
11609
|
}, config.flv), this);
|
|
11078
11610
|
this.player.forceDegradeToVideo = function() {
|
|
11079
11611
|
var _this2$pluginExtensio;
|
|
@@ -11100,6 +11632,7 @@ var FlvPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
11100
11632
|
this._transCoreEvent(EVENT.LOAD_RETRY);
|
|
11101
11633
|
this._transCoreEvent(EVENT.SOURCEBUFFER_CREATED);
|
|
11102
11634
|
this._transCoreEvent(EVENT.ANALYZE_DURATION_EXCEEDED);
|
|
11635
|
+
this._transCoreEvent(EVENT.APPEND_BUFFER);
|
|
11103
11636
|
this._transCoreEvent(EVENT.REMOVE_BUFFER);
|
|
11104
11637
|
this._transCoreEvent(EVENT.BUFFEREOS);
|
|
11105
11638
|
this._transCoreEvent(EVENT.KEYFRAME);
|