@volcengine/veplayer 2.0.0-rc.1 → 2.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -1
- package/esm/index.d.ts +2055 -285
- package/esm/veplayer.biz.live.development.js +206 -46
- package/esm/veplayer.biz.live.production.js +1 -1
- package/esm/veplayer.d.ts +4468 -791
- package/esm/veplayer.development.css +1 -1
- package/esm/veplayer.development.js +884 -288
- package/esm/veplayer.live.d.ts +4534 -858
- package/esm/veplayer.live.development.css +1 -1
- package/esm/veplayer.live.development.js +884 -288
- package/esm/veplayer.live.production.css +1 -1
- package/esm/veplayer.live.production.js +4 -4
- package/esm/veplayer.production.css +1 -1
- package/esm/veplayer.production.js +4 -4
- package/esm/veplayer.vod.d.ts +2055 -285
- package/esm/veplayer.vod.development.css +1 -1
- package/esm/veplayer.vod.development.js +653 -213
- package/esm/veplayer.vod.production.css +1 -1
- package/esm/veplayer.vod.production.js +4 -4
- package/package.json +2 -1
- package/umd/index.d.ts +2055 -285
- package/umd/veplayer.biz.live.development.js +206 -46
- package/umd/veplayer.biz.live.production.js +1 -1
- package/umd/veplayer.d.ts +4468 -791
- package/umd/veplayer.development.css +1 -1
- package/umd/veplayer.development.js +884 -288
- package/umd/veplayer.live.d.ts +4534 -858
- package/umd/veplayer.live.development.css +1 -1
- package/umd/veplayer.live.development.js +882 -286
- package/umd/veplayer.live.production.css +1 -1
- package/umd/veplayer.live.production.js +1 -1
- package/umd/veplayer.production.css +1 -1
- package/umd/veplayer.production.js +1 -1
- package/umd/veplayer.vod.d.ts +2055 -285
- package/umd/veplayer.vod.development.css +1 -1
- package/umd/veplayer.vod.development.js +653 -213
- package/umd/veplayer.vod.production.css +1 -1
- package/umd/veplayer.vod.production.js +1 -1
|
@@ -8,6 +8,21 @@ var __publicField = (obj, key, value) => {
|
|
|
8
8
|
return value;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
+
var Codec = /* @__PURE__ */ ((Codec2) => {
|
|
12
|
+
Codec2["H265"] = "h265";
|
|
13
|
+
Codec2["H264"] = "h264";
|
|
14
|
+
return Codec2;
|
|
15
|
+
})(Codec || {});
|
|
16
|
+
var Degradation = /* @__PURE__ */ ((Degradation2) => {
|
|
17
|
+
Degradation2["SoftFirst"] = "soft-first";
|
|
18
|
+
Degradation2["H264First"] = "h264-first";
|
|
19
|
+
return Degradation2;
|
|
20
|
+
})(Degradation || {});
|
|
21
|
+
var DecodeType = /* @__PURE__ */ ((DecodeType2) => {
|
|
22
|
+
DecodeType2["Software"] = "software";
|
|
23
|
+
DecodeType2["Hardware"] = "hardware";
|
|
24
|
+
return DecodeType2;
|
|
25
|
+
})(DecodeType || {});
|
|
11
26
|
function ownKeys$1(object, enumerableOnly) {
|
|
12
27
|
var keys = Object.keys(object);
|
|
13
28
|
if (Object.getOwnPropertySymbols) {
|
|
@@ -1004,6 +1019,9 @@ var __publicField = (obj, key, value) => {
|
|
|
1004
1019
|
}
|
|
1005
1020
|
return /^blob/.test(video.currentSrc) || /^blob/.test(video.src);
|
|
1006
1021
|
};
|
|
1022
|
+
util$1.isBlob = function(url) {
|
|
1023
|
+
return /^blob/.test(url);
|
|
1024
|
+
};
|
|
1007
1025
|
util$1.generateSessionId = function() {
|
|
1008
1026
|
var did = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
|
|
1009
1027
|
var d2 = (/* @__PURE__ */ new Date()).getTime();
|
|
@@ -1064,6 +1082,69 @@ var __publicField = (obj, key, value) => {
|
|
|
1064
1082
|
}
|
|
1065
1083
|
return val % 360;
|
|
1066
1084
|
};
|
|
1085
|
+
util$1.getIndexByTime = function(time, segments) {
|
|
1086
|
+
var _len = segments.length;
|
|
1087
|
+
var _index = -1;
|
|
1088
|
+
if (_len < 1) {
|
|
1089
|
+
return _index;
|
|
1090
|
+
}
|
|
1091
|
+
if (time <= segments[0].end || _len < 2) {
|
|
1092
|
+
_index = 0;
|
|
1093
|
+
} else if (time > segments[_len - 1].end) {
|
|
1094
|
+
_index = _len - 1;
|
|
1095
|
+
} else {
|
|
1096
|
+
for (var i2 = 1; i2 < _len; i2++) {
|
|
1097
|
+
if (time > segments[i2 - 1].end && time <= segments[i2].end) {
|
|
1098
|
+
_index = i2;
|
|
1099
|
+
break;
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
return _index;
|
|
1104
|
+
};
|
|
1105
|
+
util$1.getOffsetCurrentTime = function(currentTime, segments) {
|
|
1106
|
+
var index = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : -1;
|
|
1107
|
+
var _index = -1;
|
|
1108
|
+
if (index >= 0 && index < segments.length) {
|
|
1109
|
+
_index = index;
|
|
1110
|
+
} else {
|
|
1111
|
+
_index = util$1.getIndexByTime(currentTime, segments);
|
|
1112
|
+
}
|
|
1113
|
+
if (_index < 0) {
|
|
1114
|
+
return -1;
|
|
1115
|
+
}
|
|
1116
|
+
var _len = segments.length;
|
|
1117
|
+
var _segments$_index = segments[_index], start = _segments$_index.start, end = _segments$_index.end, cTime = _segments$_index.cTime, offset = _segments$_index.offset;
|
|
1118
|
+
if (currentTime < start) {
|
|
1119
|
+
return cTime;
|
|
1120
|
+
} else if (currentTime >= start && currentTime <= end) {
|
|
1121
|
+
return currentTime - offset;
|
|
1122
|
+
} else if (currentTime > end && _index >= _len - 1) {
|
|
1123
|
+
return end;
|
|
1124
|
+
}
|
|
1125
|
+
return -1;
|
|
1126
|
+
};
|
|
1127
|
+
util$1.getCurrentTimeByOffset = function(offsetTime, segments) {
|
|
1128
|
+
var _index = -1;
|
|
1129
|
+
if (!segments || segments.length < 0) {
|
|
1130
|
+
return offsetTime;
|
|
1131
|
+
}
|
|
1132
|
+
for (var i2 = 0; i2 < segments.length; i2++) {
|
|
1133
|
+
if (offsetTime <= segments[i2].duration) {
|
|
1134
|
+
_index = i2;
|
|
1135
|
+
break;
|
|
1136
|
+
}
|
|
1137
|
+
}
|
|
1138
|
+
if (_index !== -1) {
|
|
1139
|
+
var start = segments[_index].start;
|
|
1140
|
+
if (_index - 1 < 0) {
|
|
1141
|
+
return start + offsetTime;
|
|
1142
|
+
} else {
|
|
1143
|
+
return start + (offsetTime - segments[_index - 1].duration);
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
return offsetTime;
|
|
1147
|
+
};
|
|
1067
1148
|
function isObject$1(value) {
|
|
1068
1149
|
var type = _typeof(value);
|
|
1069
1150
|
return value !== null && (type === "object" || type === "function");
|
|
@@ -1153,7 +1234,7 @@ var __publicField = (obj, key, value) => {
|
|
|
1153
1234
|
function debounced() {
|
|
1154
1235
|
var time = Date.now();
|
|
1155
1236
|
var isInvoking = shouldInvoke(time);
|
|
1156
|
-
for (var
|
|
1237
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key = 0; _key < _len2; _key++) {
|
|
1157
1238
|
args[_key] = arguments[_key];
|
|
1158
1239
|
}
|
|
1159
1240
|
lastArgs = args;
|
|
@@ -1360,7 +1441,7 @@ var __publicField = (obj, key, value) => {
|
|
|
1360
1441
|
}
|
|
1361
1442
|
}
|
|
1362
1443
|
};
|
|
1363
|
-
var version = "3.0.
|
|
1444
|
+
var version = "3.0.10-alpha.4";
|
|
1364
1445
|
var ERROR_TYPE_MAP = {
|
|
1365
1446
|
1: "media",
|
|
1366
1447
|
2: "media",
|
|
@@ -1446,6 +1527,7 @@ var __publicField = (obj, key, value) => {
|
|
|
1446
1527
|
var DURATION_CHANGE = "durationchange";
|
|
1447
1528
|
var VOLUME_CHANGE = "volumechange";
|
|
1448
1529
|
var LOADED_DATA = "loadeddata";
|
|
1530
|
+
var LOADED_METADATA = "loadedmetadata";
|
|
1449
1531
|
var RATE_CHANGE = "ratechange";
|
|
1450
1532
|
var PROGRESS = "progress";
|
|
1451
1533
|
var LOAD_START = "loadstart";
|
|
@@ -1485,7 +1567,7 @@ var __publicField = (obj, key, value) => {
|
|
|
1485
1567
|
var SOURCE_ERROR = "source_error";
|
|
1486
1568
|
var SOURCE_SUCCESS = "source_success";
|
|
1487
1569
|
var SWITCH_SUBTITLE = "switch_subtitle";
|
|
1488
|
-
var VIDEO_EVENTS = ["play", "playing", "ended", "pause", "error", "seeking", "seeked", "timeupdate", "waiting", "canplay", "canplaythrough", "durationchange", "volumechange", "loadeddata", "ratechange", "progress", "loadstart", "emptied", "stalled", "suspend", "abort", "lowdecode"];
|
|
1570
|
+
var VIDEO_EVENTS = ["play", "playing", "ended", "pause", "error", "seeking", "seeked", "timeupdate", "waiting", "canplay", "canplaythrough", "durationchange", "volumechange", "loadeddata", "loadedmetadata", "ratechange", "progress", "loadstart", "emptied", "stalled", "suspend", "abort", "lowdecode"];
|
|
1489
1571
|
var STATS_EVENTS = {
|
|
1490
1572
|
STATS_INFO: "stats_info",
|
|
1491
1573
|
STATS_DOWNLOAD: "stats_download",
|
|
@@ -1514,6 +1596,7 @@ var __publicField = (obj, key, value) => {
|
|
|
1514
1596
|
FPS_STUCK,
|
|
1515
1597
|
FULLSCREEN_CHANGE,
|
|
1516
1598
|
LOADED_DATA,
|
|
1599
|
+
LOADED_METADATA,
|
|
1517
1600
|
LOAD_START,
|
|
1518
1601
|
MINI_STATE_CHANGE,
|
|
1519
1602
|
PAUSE,
|
|
@@ -1651,6 +1734,9 @@ var __publicField = (obj, key, value) => {
|
|
|
1651
1734
|
if (options.loop) {
|
|
1652
1735
|
_this.mediaConfig.loop = "loop";
|
|
1653
1736
|
}
|
|
1737
|
+
if (options.autoplayMuted && !Object.prototype.hasOwnProperty.call(_this.mediaConfig, "muted")) {
|
|
1738
|
+
_this.mediaConfig.muted = true;
|
|
1739
|
+
}
|
|
1654
1740
|
_this.media = util$1.createDom(_this.mediaConfig.mediaType, "", _this.mediaConfig, "");
|
|
1655
1741
|
if (options.defaultPlaybackRate) {
|
|
1656
1742
|
_this.media.defaultPlaybackRate = _this.media.playbackRate = options.defaultPlaybackRate;
|
|
@@ -1729,10 +1815,11 @@ var __publicField = (obj, key, value) => {
|
|
|
1729
1815
|
var _this6 = this;
|
|
1730
1816
|
video.removeAttribute("src");
|
|
1731
1817
|
video.load();
|
|
1732
|
-
urls.forEach(function(item) {
|
|
1818
|
+
urls.forEach(function(item, index) {
|
|
1733
1819
|
_this6.media.appendChild(util$1.createDom("source", "", {
|
|
1734
1820
|
src: "".concat(item.src),
|
|
1735
|
-
type: "".concat(item.type || "")
|
|
1821
|
+
type: "".concat(item.type || ""),
|
|
1822
|
+
"data-index": index + 1
|
|
1736
1823
|
}));
|
|
1737
1824
|
});
|
|
1738
1825
|
var _c = video.children;
|
|
@@ -1740,6 +1827,7 @@ var __publicField = (obj, key, value) => {
|
|
|
1740
1827
|
return;
|
|
1741
1828
|
}
|
|
1742
1829
|
this._videoSourceCount = _c.length;
|
|
1830
|
+
this._videoSourceIndex = _c.length;
|
|
1743
1831
|
this._vLoadeddata = function(e2) {
|
|
1744
1832
|
_this6.emit(SOURCE_SUCCESS, {
|
|
1745
1833
|
src: e2.target.currentSrc,
|
|
@@ -1754,8 +1842,9 @@ var __publicField = (obj, key, value) => {
|
|
|
1754
1842
|
}
|
|
1755
1843
|
}
|
|
1756
1844
|
!this._sourceError && (this._sourceError = function(e2) {
|
|
1757
|
-
|
|
1758
|
-
|
|
1845
|
+
var _dIndex = parseInt(e2.target.getAttribute("data-index"), 10);
|
|
1846
|
+
_this6._videoSourceIndex--;
|
|
1847
|
+
if (_this6._videoSourceIndex === 0 || _dIndex >= _this6._videoSourceCount) {
|
|
1759
1848
|
var _err = {
|
|
1760
1849
|
code: 4,
|
|
1761
1850
|
message: "sources_load_error"
|
|
@@ -2082,7 +2171,7 @@ var __publicField = (obj, key, value) => {
|
|
|
2082
2171
|
this.emit(WAITING);
|
|
2083
2172
|
this._currentTime = 0;
|
|
2084
2173
|
this._duration = 0;
|
|
2085
|
-
if (
|
|
2174
|
+
if (util$1.isMSE(this.media)) {
|
|
2086
2175
|
this.onWaiting();
|
|
2087
2176
|
return;
|
|
2088
2177
|
}
|
|
@@ -3790,6 +3879,7 @@ var __publicField = (obj, key, value) => {
|
|
|
3790
3879
|
},
|
|
3791
3880
|
enableSwipeHandler: function enableSwipeHandler() {
|
|
3792
3881
|
},
|
|
3882
|
+
preProcessUrl: null,
|
|
3793
3883
|
ignores: [],
|
|
3794
3884
|
whitelist: [],
|
|
3795
3885
|
inactive: 3e3,
|
|
@@ -3871,7 +3961,7 @@ var __publicField = (obj, key, value) => {
|
|
|
3871
3961
|
autoHide: false
|
|
3872
3962
|
});
|
|
3873
3963
|
});
|
|
3874
|
-
_defineProperty$1(_assertThisInitialized(_this), "onMouseLeave", function() {
|
|
3964
|
+
_defineProperty$1(_assertThisInitialized(_this), "onMouseLeave", function(e2) {
|
|
3875
3965
|
var _assertThisInitialize2 = _assertThisInitialized(_this), player = _assertThisInitialize2.player;
|
|
3876
3966
|
player.focus();
|
|
3877
3967
|
});
|
|
@@ -3949,12 +4039,13 @@ var __publicField = (obj, key, value) => {
|
|
|
3949
4039
|
}, {
|
|
3950
4040
|
key: "show",
|
|
3951
4041
|
value: function show() {
|
|
3952
|
-
|
|
4042
|
+
this.root.style.display = "";
|
|
4043
|
+
this.player.focus();
|
|
3953
4044
|
}
|
|
3954
4045
|
}, {
|
|
3955
4046
|
key: "hide",
|
|
3956
4047
|
value: function hide() {
|
|
3957
|
-
|
|
4048
|
+
this.root.style.display = "none";
|
|
3958
4049
|
}
|
|
3959
4050
|
}, {
|
|
3960
4051
|
key: "mode",
|
|
@@ -4356,6 +4447,7 @@ var __publicField = (obj, key, value) => {
|
|
|
4356
4447
|
_this.cssfullscreen = false;
|
|
4357
4448
|
_this.isRotateFullscreen = false;
|
|
4358
4449
|
_this._fullscreenEl = null;
|
|
4450
|
+
_this.timeSegments = [];
|
|
4359
4451
|
_this._cssfullscreenEl = null;
|
|
4360
4452
|
_this.curDefinition = null;
|
|
4361
4453
|
_this._orgCss = "";
|
|
@@ -4365,7 +4457,7 @@ var __publicField = (obj, key, value) => {
|
|
|
4365
4457
|
_this.videoPos = {
|
|
4366
4458
|
pi: 1,
|
|
4367
4459
|
scale: 0,
|
|
4368
|
-
rotate:
|
|
4460
|
+
rotate: -1,
|
|
4369
4461
|
x: 0,
|
|
4370
4462
|
y: 0,
|
|
4371
4463
|
h: -1,
|
|
@@ -4373,11 +4465,21 @@ var __publicField = (obj, key, value) => {
|
|
|
4373
4465
|
vy: 0,
|
|
4374
4466
|
vx: 0
|
|
4375
4467
|
};
|
|
4468
|
+
_this.sizeInfo = {
|
|
4469
|
+
width: 0,
|
|
4470
|
+
height: 0,
|
|
4471
|
+
left: 0,
|
|
4472
|
+
top: 0
|
|
4473
|
+
};
|
|
4376
4474
|
_this._accPlayed = {
|
|
4377
4475
|
t: 0,
|
|
4378
4476
|
acc: 0,
|
|
4379
4477
|
loopAcc: 0
|
|
4380
4478
|
};
|
|
4479
|
+
_this._offsetInfo = {
|
|
4480
|
+
currentTime: -1,
|
|
4481
|
+
duration: 0
|
|
4482
|
+
};
|
|
4381
4483
|
_this.innerContainer = null;
|
|
4382
4484
|
_this.controls = null;
|
|
4383
4485
|
_this.topBar = null;
|
|
@@ -4390,6 +4492,9 @@ var __publicField = (obj, key, value) => {
|
|
|
4390
4492
|
_this.isUserActive = false;
|
|
4391
4493
|
_this._onceSeekCanplay = null;
|
|
4392
4494
|
_this._isPauseBeforeSeek = 0;
|
|
4495
|
+
_this.innerStates = {
|
|
4496
|
+
isActiveLocked: false
|
|
4497
|
+
};
|
|
4393
4498
|
var rootInit = _this._initDOM();
|
|
4394
4499
|
if (!rootInit) {
|
|
4395
4500
|
console.error(new Error("can't find the dom which id is ".concat(_this.config.id, " or this.config.el does not exist")));
|
|
@@ -4475,16 +4580,16 @@ var __publicField = (obj, key, value) => {
|
|
|
4475
4580
|
this.addClass(STATE_CLASS.NO_START);
|
|
4476
4581
|
}
|
|
4477
4582
|
if (this.config.fluid) {
|
|
4478
|
-
var _this$config3 = this.config,
|
|
4479
|
-
if (typeof
|
|
4480
|
-
|
|
4481
|
-
|
|
4583
|
+
var _this$config3 = this.config, _width = _this$config3.width, _height = _this$config3.height;
|
|
4584
|
+
if (typeof _width !== "number" || typeof _height !== "number") {
|
|
4585
|
+
_width = 600;
|
|
4586
|
+
_height = 337.5;
|
|
4482
4587
|
}
|
|
4483
4588
|
var style = {
|
|
4484
4589
|
width: "100%",
|
|
4485
4590
|
height: "0",
|
|
4486
4591
|
"max-width": "100%",
|
|
4487
|
-
"padding-top": "".concat(
|
|
4592
|
+
"padding-top": "".concat(_height * 100 / _width, "%")
|
|
4488
4593
|
};
|
|
4489
4594
|
Object.keys(style).forEach(function(key) {
|
|
4490
4595
|
_this2.root.style[key] = style[key];
|
|
@@ -4500,6 +4605,11 @@ var __publicField = (obj, key, value) => {
|
|
|
4500
4605
|
}
|
|
4501
4606
|
});
|
|
4502
4607
|
}
|
|
4608
|
+
var _this$root$getBoundin = this.root.getBoundingClientRect(), width = _this$root$getBoundin.width, height = _this$root$getBoundin.height, left = _this$root$getBoundin.left, top = _this$root$getBoundin.top;
|
|
4609
|
+
this.sizeInfo.width = width;
|
|
4610
|
+
this.sizeInfo.height = height;
|
|
4611
|
+
this.sizeInfo.left = left;
|
|
4612
|
+
this.sizeInfo.top = top;
|
|
4503
4613
|
return true;
|
|
4504
4614
|
}
|
|
4505
4615
|
}, {
|
|
@@ -4583,7 +4693,7 @@ var __publicField = (obj, key, value) => {
|
|
|
4583
4693
|
var readyState = this.media.readyState;
|
|
4584
4694
|
XG_DEBUG.logInfo("_startInit readyState", readyState);
|
|
4585
4695
|
if (this.config.autoplay) {
|
|
4586
|
-
!
|
|
4696
|
+
!util$1.isMSE(this.media) && this.load();
|
|
4587
4697
|
(sniffer$1.os.isIpad || sniffer$1.os.isPhone) && this.mediaPlay();
|
|
4588
4698
|
}
|
|
4589
4699
|
if (readyState >= 2) {
|
|
@@ -4811,7 +4921,8 @@ var __publicField = (obj, key, value) => {
|
|
|
4811
4921
|
if (!url) {
|
|
4812
4922
|
url = _this8.url || _this8.config.url;
|
|
4813
4923
|
}
|
|
4814
|
-
var
|
|
4924
|
+
var _furl = _this8.preProcessUrl(url);
|
|
4925
|
+
var ret = _this8._startInit(_furl.url);
|
|
4815
4926
|
return ret;
|
|
4816
4927
|
}).catch(function(e2) {
|
|
4817
4928
|
e2.fileName = "player";
|
|
@@ -4828,6 +4939,7 @@ var __publicField = (obj, key, value) => {
|
|
|
4828
4939
|
if (util$1.typeOf(url) === "Object") {
|
|
4829
4940
|
_src = url.url;
|
|
4830
4941
|
}
|
|
4942
|
+
_src = this.preProcessUrl(_src).url;
|
|
4831
4943
|
var curTime = this.currentTime;
|
|
4832
4944
|
var isPaused = this.paused && !this.isError;
|
|
4833
4945
|
this.src = _src;
|
|
@@ -5166,7 +5278,11 @@ var __publicField = (obj, key, value) => {
|
|
|
5166
5278
|
this.addClass(STATE_CLASS.LOADING);
|
|
5167
5279
|
runHooks(this, "retry", function() {
|
|
5168
5280
|
var cur = _this20.currentTime;
|
|
5169
|
-
|
|
5281
|
+
var url = _this20.config.url;
|
|
5282
|
+
var _srcRet = !util$1.isMSE(_this20.media) ? _this20.preProcessUrl(url) : {
|
|
5283
|
+
url
|
|
5284
|
+
};
|
|
5285
|
+
_this20.src = _srcRet.url;
|
|
5170
5286
|
!_this20.config.isLive && (_this20.currentTime = cur);
|
|
5171
5287
|
_this20.once(CANPLAY, function() {
|
|
5172
5288
|
_this20.mediaPlay();
|
|
@@ -5227,7 +5343,7 @@ var __publicField = (obj, key, value) => {
|
|
|
5227
5343
|
var fullEl = util$1.getFullScreenEl();
|
|
5228
5344
|
if (fullEl === this._fullscreenEl) {
|
|
5229
5345
|
this.onFullscreenChange();
|
|
5230
|
-
return;
|
|
5346
|
+
return Promise.resolve();
|
|
5231
5347
|
}
|
|
5232
5348
|
try {
|
|
5233
5349
|
for (var i2 = 0; i2 < GET_FULLSCREEN_API.length; i2++) {
|
|
@@ -5400,30 +5516,38 @@ var __publicField = (obj, key, value) => {
|
|
|
5400
5516
|
key: "onFocus",
|
|
5401
5517
|
value: function onFocus() {
|
|
5402
5518
|
var _this21 = this;
|
|
5403
|
-
var
|
|
5519
|
+
var data = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {
|
|
5520
|
+
autoHide: true,
|
|
5521
|
+
delay: 3e3
|
|
5522
|
+
};
|
|
5523
|
+
var innerStates = this.innerStates;
|
|
5404
5524
|
this.isActive = true;
|
|
5405
5525
|
this.removeClass(STATE_CLASS.INACTIVE);
|
|
5406
5526
|
if (this.userTimer) {
|
|
5407
5527
|
util$1.clearTimeout(this, this.userTimer);
|
|
5408
5528
|
this.userTimer = null;
|
|
5409
5529
|
}
|
|
5410
|
-
if (
|
|
5530
|
+
if (data.isLock !== void 0) {
|
|
5531
|
+
innerStates.isActiveLocked = data.isLock;
|
|
5532
|
+
}
|
|
5533
|
+
if (data.autoHide === false || data.isLock === true || innerStates.isActiveLocked) {
|
|
5411
5534
|
if (this.userTimer) {
|
|
5412
5535
|
util$1.clearTimeout(this, this.userTimer);
|
|
5413
5536
|
this.userTimer = null;
|
|
5414
5537
|
}
|
|
5415
5538
|
return;
|
|
5416
5539
|
}
|
|
5540
|
+
var time = data && data.delay ? data.delay : this.config.inactive;
|
|
5417
5541
|
this.userTimer = util$1.setTimeout(this, function() {
|
|
5418
5542
|
_this21.userTimer = null;
|
|
5419
5543
|
_this21.blur();
|
|
5420
|
-
},
|
|
5544
|
+
}, time);
|
|
5421
5545
|
}
|
|
5422
5546
|
}, {
|
|
5423
5547
|
key: "onBlur",
|
|
5424
5548
|
value: function onBlur() {
|
|
5425
|
-
var
|
|
5426
|
-
if (!this.isActive) {
|
|
5549
|
+
var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref$ignorePaused = _ref.ignorePaused, ignorePaused = _ref$ignorePaused === void 0 ? false : _ref$ignorePaused;
|
|
5550
|
+
if (!this.isActive || this.innerStates.isActiveLocked) {
|
|
5427
5551
|
return;
|
|
5428
5552
|
}
|
|
5429
5553
|
var closePauseVideoFocus = this.config.closePauseVideoFocus;
|
|
@@ -5546,7 +5670,7 @@ var __publicField = (obj, key, value) => {
|
|
|
5546
5670
|
}, {
|
|
5547
5671
|
key: "onTimeupdate",
|
|
5548
5672
|
value: function onTimeupdate() {
|
|
5549
|
-
!this._videoHeight && this.resize();
|
|
5673
|
+
!this._videoHeight && this.media.videoHeight && this.resize();
|
|
5550
5674
|
if ((this.waitTimer || this.hasClass(STATE_CLASS.LOADING)) && this.media.readyState > 2) {
|
|
5551
5675
|
this.removeClass(STATE_CLASS.LOADING);
|
|
5552
5676
|
util$1.clearTimeout(this, this.waitTimer);
|
|
@@ -5621,8 +5745,11 @@ var __publicField = (obj, key, value) => {
|
|
|
5621
5745
|
key: "resizePosition",
|
|
5622
5746
|
value: function resizePosition() {
|
|
5623
5747
|
var _this$videoPos = this.videoPos, rotate = _this$videoPos.rotate, vy = _this$videoPos.vy, vx = _this$videoPos.vx, h2 = _this$videoPos.h, w2 = _this$videoPos.w;
|
|
5748
|
+
if (rotate < 0 && !vy && !vx) {
|
|
5749
|
+
return;
|
|
5750
|
+
}
|
|
5624
5751
|
var _pi = this.videoPos._pi;
|
|
5625
|
-
if (!_pi) {
|
|
5752
|
+
if (!_pi && this.media.videoHeight) {
|
|
5626
5753
|
_pi = this.media.videoWidth / this.media.videoHeight * 100;
|
|
5627
5754
|
}
|
|
5628
5755
|
if (!_pi) {
|
|
@@ -5722,9 +5849,14 @@ var __publicField = (obj, key, value) => {
|
|
|
5722
5849
|
if (!this.media) {
|
|
5723
5850
|
return;
|
|
5724
5851
|
}
|
|
5852
|
+
var containerSize = this.root.getBoundingClientRect();
|
|
5853
|
+
this.sizeInfo.width = containerSize.width;
|
|
5854
|
+
this.sizeInfo.height = containerSize.height;
|
|
5855
|
+
this.sizeInfo.left = containerSize.left;
|
|
5856
|
+
this.sizeInfo.top = containerSize.top;
|
|
5725
5857
|
var _this$media = this.media, videoWidth = _this$media.videoWidth, videoHeight = _this$media.videoHeight;
|
|
5726
5858
|
var _this$config6 = this.config, fitVideoSize = _this$config6.fitVideoSize, videoFillMode = _this$config6.videoFillMode;
|
|
5727
|
-
if (videoFillMode === "fill" || videoFillMode === "cover") {
|
|
5859
|
+
if (videoFillMode === "fill" || videoFillMode === "cover" || videoFillMode === "contain") {
|
|
5728
5860
|
this.setAttribute("data-xgfill", videoFillMode);
|
|
5729
5861
|
}
|
|
5730
5862
|
if (!videoHeight || !videoWidth) {
|
|
@@ -5732,7 +5864,6 @@ var __publicField = (obj, key, value) => {
|
|
|
5732
5864
|
}
|
|
5733
5865
|
this._videoHeight = videoHeight;
|
|
5734
5866
|
this._videoWidth = videoWidth;
|
|
5735
|
-
var containerSize = this.root.getBoundingClientRect();
|
|
5736
5867
|
var controlsHeight = this.controls && this.innerContainer ? this.controls.root.getBoundingClientRect().height : 0;
|
|
5737
5868
|
var width = containerSize.width;
|
|
5738
5869
|
var height = containerSize.height - controlsHeight;
|
|
@@ -5787,6 +5918,14 @@ var __publicField = (obj, key, value) => {
|
|
|
5787
5918
|
XG_DEBUG.logInfo("setState", "state from:".concat(STATE_ARRAY[this.state], " to:").concat(STATE_ARRAY[newState]));
|
|
5788
5919
|
this._state = newState;
|
|
5789
5920
|
}
|
|
5921
|
+
}, {
|
|
5922
|
+
key: "preProcessUrl",
|
|
5923
|
+
value: function preProcessUrl(url, ext) {
|
|
5924
|
+
var preProcessUrl2 = this.config.preProcessUrl;
|
|
5925
|
+
return !util$1.isBlob(url) && preProcessUrl2 && typeof preProcessUrl2 === "function" ? preProcessUrl2(url, ext) : {
|
|
5926
|
+
url
|
|
5927
|
+
};
|
|
5928
|
+
}
|
|
5790
5929
|
}, {
|
|
5791
5930
|
key: "state",
|
|
5792
5931
|
get: function get() {
|
|
@@ -5960,9 +6099,8 @@ var __publicField = (obj, key, value) => {
|
|
|
5960
6099
|
}, {
|
|
5961
6100
|
key: "cumulateTime",
|
|
5962
6101
|
get: function get() {
|
|
5963
|
-
var _accPlayed = this._accPlayed;
|
|
5964
|
-
|
|
5965
|
-
return _accPlayed.acc;
|
|
6102
|
+
var _this$_accPlayed = this._accPlayed, acc = _this$_accPlayed.acc, t2 = _this$_accPlayed.t;
|
|
6103
|
+
return t2 ? (/* @__PURE__ */ new Date()).getTime() - t2 + acc : acc;
|
|
5966
6104
|
}
|
|
5967
6105
|
}, {
|
|
5968
6106
|
key: "zoom",
|
|
@@ -6001,6 +6139,22 @@ var __publicField = (obj, key, value) => {
|
|
|
6001
6139
|
set: function set(val) {
|
|
6002
6140
|
REAL_TIME_SPEED = val;
|
|
6003
6141
|
}
|
|
6142
|
+
}, {
|
|
6143
|
+
key: "offsetCurrentTime",
|
|
6144
|
+
get: function get() {
|
|
6145
|
+
return this._offsetInfo.currentTime || 0;
|
|
6146
|
+
},
|
|
6147
|
+
set: function set(val) {
|
|
6148
|
+
this._offsetInfo.currentTime = val;
|
|
6149
|
+
}
|
|
6150
|
+
}, {
|
|
6151
|
+
key: "offsetDuration",
|
|
6152
|
+
get: function get() {
|
|
6153
|
+
return this._offsetInfo.duration || 0;
|
|
6154
|
+
},
|
|
6155
|
+
set: function set(val) {
|
|
6156
|
+
this._offsetInfo.duration = val || 0;
|
|
6157
|
+
}
|
|
6004
6158
|
}, {
|
|
6005
6159
|
key: "hook",
|
|
6006
6160
|
value: function hook$1(hookName, handler) {
|
|
@@ -6131,7 +6285,7 @@ var __publicField = (obj, key, value) => {
|
|
|
6131
6285
|
ErrorCode2[ErrorCode2["RUNTIME_NO_CANPLAY_ERROR"] = 9001] = "RUNTIME_NO_CANPLAY_ERROR";
|
|
6132
6286
|
ErrorCode2[ErrorCode2["RUNTIME_BUFFERBREAK_ERROR"] = 9002] = "RUNTIME_BUFFERBREAK_ERROR";
|
|
6133
6287
|
ErrorCode2[ErrorCode2["RUNTIME_BWAITING_TIMEOUT_ERROR"] = 9002] = "RUNTIME_BWAITING_TIMEOUT_ERROR";
|
|
6134
|
-
ErrorCode2[ErrorCode2["MODULE_LOAD_ERROR"] =
|
|
6288
|
+
ErrorCode2[ErrorCode2["MODULE_LOAD_ERROR"] = 110] = "MODULE_LOAD_ERROR";
|
|
6135
6289
|
ErrorCode2["UNKNOWN"] = "UNKNOWN";
|
|
6136
6290
|
return ErrorCode2;
|
|
6137
6291
|
})(ErrorCode$1 || {});
|
|
@@ -6228,7 +6382,7 @@ var __publicField = (obj, key, value) => {
|
|
|
6228
6382
|
/* Error */
|
|
6229
6383
|
},
|
|
6230
6384
|
[
|
|
6231
|
-
|
|
6385
|
+
110
|
|
6232
6386
|
/* MODULE_LOAD_ERROR */
|
|
6233
6387
|
]: {
|
|
6234
6388
|
messageTextKey: "MODULE_LOAD_ERROR",
|
|
@@ -6303,6 +6457,11 @@ var __publicField = (obj, key, value) => {
|
|
|
6303
6457
|
}
|
|
6304
6458
|
};
|
|
6305
6459
|
let VeError$1 = class VeError extends Error {
|
|
6460
|
+
/**
|
|
6461
|
+
* @hidden
|
|
6462
|
+
* @param error
|
|
6463
|
+
* @param i18n
|
|
6464
|
+
*/
|
|
6306
6465
|
constructor(error2, i18n) {
|
|
6307
6466
|
var _a;
|
|
6308
6467
|
const errorInfo = typeof error2 === "string" ? {
|
|
@@ -6310,8 +6469,17 @@ var __publicField = (obj, key, value) => {
|
|
|
6310
6469
|
} : error2;
|
|
6311
6470
|
const message = (i18n == null ? void 0 : i18n.getText(errorInfo == null ? void 0 : errorInfo.messageTextKey)) ?? (errorInfo == null ? void 0 : errorInfo.message) ?? ((_a = errorInfo == null ? void 0 : errorInfo.error) == null ? void 0 : _a.message) ?? (i18n == null ? void 0 : i18n.getText("UNKNOWN"));
|
|
6312
6471
|
super(message);
|
|
6472
|
+
/**
|
|
6473
|
+
* @brief 错误码,对应[错误码字典](#错误码)。
|
|
6474
|
+
*/
|
|
6313
6475
|
__publicField(this, "errorCode");
|
|
6476
|
+
/**
|
|
6477
|
+
* @brief 错误等级。
|
|
6478
|
+
*/
|
|
6314
6479
|
__publicField(this, "level");
|
|
6480
|
+
/**
|
|
6481
|
+
* @brief 其他错误信息。
|
|
6482
|
+
*/
|
|
6315
6483
|
__publicField(this, "ext");
|
|
6316
6484
|
this.errorCode = (errorInfo == null ? void 0 : errorInfo.errorCode) ?? "UNKNOWN";
|
|
6317
6485
|
this.level = (errorInfo == null ? void 0 : errorInfo.level) ?? "Error";
|
|
@@ -7659,10 +7827,56 @@ var __publicField = (obj, key, value) => {
|
|
|
7659
7827
|
var Touche = /* @__PURE__ */ function() {
|
|
7660
7828
|
function Touche2(dom) {
|
|
7661
7829
|
var _this = this;
|
|
7662
|
-
var
|
|
7830
|
+
var _config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
|
|
7663
7831
|
eventType: "touch"
|
|
7664
7832
|
};
|
|
7665
7833
|
_classCallCheck(this, Touche2);
|
|
7834
|
+
_defineProperty$1(this, "onTouchStart", function(e2) {
|
|
7835
|
+
var _pos = _this._pos, root2 = _this.root;
|
|
7836
|
+
var touch = getTouch(e2.touches);
|
|
7837
|
+
_pos.x = touch ? parseInt(touch.pageX, 10) : e2.pageX;
|
|
7838
|
+
_pos.y = touch ? parseInt(touch.pageX, 10) : e2.pageX;
|
|
7839
|
+
_pos.start = true;
|
|
7840
|
+
_this.__setPress(e2);
|
|
7841
|
+
root2.addEventListener(_this.events.end, _this.onTouchEnd);
|
|
7842
|
+
root2.addEventListener(_this.events.cancel, _this.onTouchCancel);
|
|
7843
|
+
root2.addEventListener(_this.events.move, _this.onTouchMove);
|
|
7844
|
+
_this.trigger(EVENTS.TOUCH_START, e2);
|
|
7845
|
+
});
|
|
7846
|
+
_defineProperty$1(this, "onTouchCancel", function(e2) {
|
|
7847
|
+
_this.onTouchEnd(e2);
|
|
7848
|
+
});
|
|
7849
|
+
_defineProperty$1(this, "onTouchEnd", function(e2) {
|
|
7850
|
+
var _pos = _this._pos, root2 = _this.root;
|
|
7851
|
+
_this.__clearPress();
|
|
7852
|
+
root2.removeEventListener(_this.events.cancel, _this.onTouchCancel);
|
|
7853
|
+
root2.removeEventListener(_this.events.end, _this.onTouchEnd);
|
|
7854
|
+
root2.removeEventListener(_this.events.move, _this.onTouchMove);
|
|
7855
|
+
e2.moving = _pos.moving;
|
|
7856
|
+
e2.press = _pos.press;
|
|
7857
|
+
_pos.press && _this.trigger(EVENTS.PRESS_END, e2);
|
|
7858
|
+
_this.trigger(EVENTS.TOUCH_END, e2);
|
|
7859
|
+
!_pos.press && !_pos.moving && _this.__setDb(e2);
|
|
7860
|
+
_pos.press = false;
|
|
7861
|
+
_pos.start = false;
|
|
7862
|
+
_pos.moving = false;
|
|
7863
|
+
});
|
|
7864
|
+
_defineProperty$1(this, "onTouchMove", function(e2) {
|
|
7865
|
+
var _pos = _this._pos, config = _this.config;
|
|
7866
|
+
var touch = getTouch(e2.touches);
|
|
7867
|
+
var x2 = touch ? parseInt(touch.pageX, 10) : e2.pageX;
|
|
7868
|
+
var y2 = touch ? parseInt(touch.pageY, 10) : e2.pageX;
|
|
7869
|
+
var diffx = x2 - _pos.x;
|
|
7870
|
+
var diffy = y2 - _pos.y;
|
|
7871
|
+
if (Math.abs(diffy) < config.miniStep && Math.abs(diffx) < config.miniStep) {
|
|
7872
|
+
return;
|
|
7873
|
+
}
|
|
7874
|
+
_this.__clearPress();
|
|
7875
|
+
_pos.press && _this.trigger(EVENTS.PRESS_END, e2);
|
|
7876
|
+
_pos.press = false;
|
|
7877
|
+
_pos.moving = true;
|
|
7878
|
+
_this.trigger(EVENTS.TOUCH_MOVE, e2);
|
|
7879
|
+
});
|
|
7666
7880
|
this._pos = {
|
|
7667
7881
|
moving: false,
|
|
7668
7882
|
start: false,
|
|
@@ -7670,11 +7884,11 @@ var __publicField = (obj, key, value) => {
|
|
|
7670
7884
|
y: 0
|
|
7671
7885
|
};
|
|
7672
7886
|
this.config = getDefaultConfig();
|
|
7673
|
-
Object.keys(
|
|
7674
|
-
_this.config[key] =
|
|
7887
|
+
Object.keys(_config).map(function(key) {
|
|
7888
|
+
_this.config[key] = _config[key];
|
|
7675
7889
|
});
|
|
7676
7890
|
this.root = dom;
|
|
7677
|
-
this.events =
|
|
7891
|
+
this.events = _config.eventType === "mouse" ? MOUSES : TOUCHS;
|
|
7678
7892
|
this.pressIntrvalId = null;
|
|
7679
7893
|
this.dbIntrvalId = null;
|
|
7680
7894
|
this.__handlers = {};
|
|
@@ -7683,10 +7897,6 @@ var __publicField = (obj, key, value) => {
|
|
|
7683
7897
|
_createClass$1(Touche2, [{
|
|
7684
7898
|
key: "_initEvent",
|
|
7685
7899
|
value: function _initEvent() {
|
|
7686
|
-
this.onTouchStart = this.onTouchStart.bind(this);
|
|
7687
|
-
this.onTouchMove = this.onTouchMove.bind(this);
|
|
7688
|
-
this.onTouchEnd = this.onTouchEnd.bind(this);
|
|
7689
|
-
this.onTouchCancel = this.onTouchCancel.bind(this);
|
|
7690
7900
|
this.root.addEventListener(this.events.start, this.onTouchStart);
|
|
7691
7901
|
}
|
|
7692
7902
|
}, {
|
|
@@ -7772,60 +7982,6 @@ var __publicField = (obj, key, value) => {
|
|
|
7772
7982
|
}
|
|
7773
7983
|
});
|
|
7774
7984
|
}
|
|
7775
|
-
}, {
|
|
7776
|
-
key: "onTouchStart",
|
|
7777
|
-
value: function onTouchStart(e2) {
|
|
7778
|
-
var _pos = this._pos, root2 = this.root;
|
|
7779
|
-
var touch = getTouch(e2.touches);
|
|
7780
|
-
_pos.x = touch ? parseInt(touch.pageX, 10) : e2.pageX;
|
|
7781
|
-
_pos.y = touch ? parseInt(touch.pageX, 10) : e2.pageX;
|
|
7782
|
-
_pos.start = true;
|
|
7783
|
-
this.__setPress(e2);
|
|
7784
|
-
root2.addEventListener(this.events.end, this.onTouchEnd);
|
|
7785
|
-
root2.addEventListener(this.events.cancel, this.onTouchCancel);
|
|
7786
|
-
root2.addEventListener(this.events.move, this.onTouchMove);
|
|
7787
|
-
this.trigger(EVENTS.TOUCH_START, e2);
|
|
7788
|
-
}
|
|
7789
|
-
}, {
|
|
7790
|
-
key: "onTouchCancel",
|
|
7791
|
-
value: function onTouchCancel(e2) {
|
|
7792
|
-
this.onTouchEnd(e2);
|
|
7793
|
-
}
|
|
7794
|
-
}, {
|
|
7795
|
-
key: "onTouchEnd",
|
|
7796
|
-
value: function onTouchEnd(e2) {
|
|
7797
|
-
var _pos = this._pos, root2 = this.root;
|
|
7798
|
-
this.__clearPress();
|
|
7799
|
-
root2.removeEventListener(this.events.cancel, this.onTouchCancel);
|
|
7800
|
-
root2.removeEventListener(this.events.end, this.onTouchEnd);
|
|
7801
|
-
root2.removeEventListener(this.events.move, this.onTouchMove);
|
|
7802
|
-
e2.moving = _pos.moving;
|
|
7803
|
-
e2.press = _pos.press;
|
|
7804
|
-
_pos.press && this.trigger(EVENTS.PRESS_END, e2);
|
|
7805
|
-
this.trigger(EVENTS.TOUCH_END, e2);
|
|
7806
|
-
!_pos.press && !_pos.moving && this.__setDb(e2);
|
|
7807
|
-
_pos.press = false;
|
|
7808
|
-
_pos.start = false;
|
|
7809
|
-
_pos.moving = false;
|
|
7810
|
-
}
|
|
7811
|
-
}, {
|
|
7812
|
-
key: "onTouchMove",
|
|
7813
|
-
value: function onTouchMove(e2) {
|
|
7814
|
-
var _pos = this._pos, config = this.config;
|
|
7815
|
-
var touch = getTouch(e2.touches);
|
|
7816
|
-
var x2 = touch ? parseInt(touch.pageX, 10) : e2.pageX;
|
|
7817
|
-
var y2 = touch ? parseInt(touch.pageY, 10) : e2.pageX;
|
|
7818
|
-
var diffx = x2 - _pos.x;
|
|
7819
|
-
var diffy = y2 - _pos.y;
|
|
7820
|
-
if (Math.abs(diffy) < config.miniStep && Math.abs(diffx) < config.miniStep) {
|
|
7821
|
-
return;
|
|
7822
|
-
}
|
|
7823
|
-
this.__clearPress();
|
|
7824
|
-
_pos.press && this.trigger(EVENTS.PRESS_END, e2);
|
|
7825
|
-
_pos.press = false;
|
|
7826
|
-
_pos.moving = true;
|
|
7827
|
-
this.trigger(EVENTS.TOUCH_MOVE, e2);
|
|
7828
|
-
}
|
|
7829
7985
|
}, {
|
|
7830
7986
|
key: "destroy",
|
|
7831
7987
|
value: function destroy() {
|
|
@@ -7835,8 +7991,8 @@ var __publicField = (obj, key, value) => {
|
|
|
7835
7991
|
touchmove: "onTouchMove",
|
|
7836
7992
|
touchstart: "onTouchStart"
|
|
7837
7993
|
};
|
|
7838
|
-
Object.keys(map).
|
|
7839
|
-
_this4.root.removeEventListener(
|
|
7994
|
+
Object.keys(map).forEach(function(key) {
|
|
7995
|
+
_this4.root.removeEventListener(key, _this4[map[key]]);
|
|
7840
7996
|
});
|
|
7841
7997
|
}
|
|
7842
7998
|
}]);
|
|
@@ -8487,38 +8643,61 @@ var __publicField = (obj, key, value) => {
|
|
|
8487
8643
|
}
|
|
8488
8644
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
8489
8645
|
_defineProperty$1(_assertThisInitialized(_this), "onBodyKeyDown", function(event) {
|
|
8490
|
-
|
|
8491
|
-
if (!_this.player || !_this.player.isUserActive && !_this.config.isIgnoreUserActive) {
|
|
8646
|
+
if (!_this.player) {
|
|
8492
8647
|
return;
|
|
8493
8648
|
}
|
|
8494
|
-
|
|
8649
|
+
var e2 = event || window.event;
|
|
8650
|
+
var keyCode = e2.keyCode;
|
|
8651
|
+
var _assertThisInitialize = _assertThisInitialized(_this), _keyState = _assertThisInitialize._keyState, player = _assertThisInitialize.player;
|
|
8652
|
+
var _this$config = _this.config, disable = _this$config.disable, disableBodyTrigger = _this$config.disableBodyTrigger, isIgnoreUserActive = _this$config.isIgnoreUserActive;
|
|
8653
|
+
if (disable || disableBodyTrigger || !player.isUserActive && !isIgnoreUserActive || isDisableTag(e2.target) || !_this.checkIsVisible() || e2.metaKey || e2.altKey || e2.ctrlKey) {
|
|
8654
|
+
_keyState.isBodyKeyDown = false;
|
|
8495
8655
|
return;
|
|
8496
8656
|
}
|
|
8497
|
-
|
|
8498
|
-
|
|
8499
|
-
|
|
8500
|
-
|
|
8501
|
-
|
|
8657
|
+
if (!event.repeat && !_keyState.isKeyDown) {
|
|
8658
|
+
if ((e2.target === document.body || _this.config.isGlobalTrigger && !isDisableTag(e2.target)) && _this.checkCode(keyCode, true)) {
|
|
8659
|
+
_keyState.isBodyKeyDown = true;
|
|
8660
|
+
}
|
|
8661
|
+
document.addEventListener("keyup", _this.onBodyKeyUp);
|
|
8502
8662
|
}
|
|
8503
|
-
|
|
8663
|
+
_keyState.isBodyKeyDown && _this.handleKeyDown(e2);
|
|
8504
8664
|
});
|
|
8505
|
-
_defineProperty$1(_assertThisInitialized(_this), "
|
|
8506
|
-
|
|
8507
|
-
if (_this.config.disable || _this.config.disableRootTrigger || e2.metaKey || e2.altKey || e2.ctrlKey) {
|
|
8665
|
+
_defineProperty$1(_assertThisInitialized(_this), "onBodyKeyUp", function(event) {
|
|
8666
|
+
if (!_this.player) {
|
|
8508
8667
|
return;
|
|
8509
8668
|
}
|
|
8510
|
-
|
|
8669
|
+
document.removeEventListener("keyup", _this.onBodyKeyUp);
|
|
8670
|
+
_this.handleKeyUp(event);
|
|
8671
|
+
});
|
|
8672
|
+
_defineProperty$1(_assertThisInitialized(_this), "onKeydown", function(event) {
|
|
8673
|
+
if (!_this.player) {
|
|
8511
8674
|
return;
|
|
8512
8675
|
}
|
|
8513
|
-
|
|
8676
|
+
var e2 = event || window.event;
|
|
8677
|
+
var _assertThisInitialize2 = _assertThisInitialized(_this), _keyState = _assertThisInitialize2._keyState;
|
|
8678
|
+
if (!e2.repeat) {
|
|
8679
|
+
if (_this.config.disable || _this.config.disableRootTrigger || e2.metaKey || e2.altKey || e2.ctrlKey) {
|
|
8680
|
+
return;
|
|
8681
|
+
}
|
|
8682
|
+
if (!_this.player.isUserActive && !_this.config.isIgnoreUserActive) {
|
|
8683
|
+
return;
|
|
8684
|
+
}
|
|
8685
|
+
if (e2 && (e2.keyCode === 37 || _this.checkCode(e2.keyCode)) && (e2.target === _this.player.root || e2.target === _this.player.video || e2.target === _this.player.controls.el)) {
|
|
8686
|
+
_keyState.isKeyDown = true;
|
|
8687
|
+
}
|
|
8688
|
+
_this.player.root.addEventListener("keyup", _this.onKeyup);
|
|
8689
|
+
}
|
|
8690
|
+
if (!_keyState.isKeyDown) {
|
|
8514
8691
|
return;
|
|
8515
8692
|
}
|
|
8516
|
-
|
|
8517
|
-
|
|
8518
|
-
|
|
8519
|
-
|
|
8693
|
+
_this.handleKeyDown(e2);
|
|
8694
|
+
});
|
|
8695
|
+
_defineProperty$1(_assertThisInitialized(_this), "onKeyup", function(event) {
|
|
8696
|
+
if (!_this.player) {
|
|
8697
|
+
return;
|
|
8520
8698
|
}
|
|
8521
|
-
_this.
|
|
8699
|
+
_this.player.root.removeEventListener("keyup", _this.onKeyup);
|
|
8700
|
+
_this.handleKeyUp(event);
|
|
8522
8701
|
});
|
|
8523
8702
|
return _this;
|
|
8524
8703
|
}
|
|
@@ -8532,7 +8711,7 @@ var __publicField = (obj, key, value) => {
|
|
|
8532
8711
|
if (!_this2.keyCodeMap[key]) {
|
|
8533
8712
|
_this2.keyCodeMap[key] = extendkeyCodeMap[key];
|
|
8534
8713
|
} else {
|
|
8535
|
-
["keyCode", "action", "disable", "isBodyTarget"].map(function(key1) {
|
|
8714
|
+
["keyCode", "action", "disable", "pressAction", "disablePress", "isBodyTarget"].map(function(key1) {
|
|
8536
8715
|
extendkeyCodeMap[key][key1] && (_this2.keyCodeMap[key][key1] = extendkeyCodeMap[key][key1]);
|
|
8537
8716
|
});
|
|
8538
8717
|
}
|
|
@@ -8552,37 +8731,51 @@ var __publicField = (obj, key, value) => {
|
|
|
8552
8731
|
keyCode: 32,
|
|
8553
8732
|
action: "playPause",
|
|
8554
8733
|
disable: false,
|
|
8734
|
+
disablePress: false,
|
|
8555
8735
|
noBodyTarget: false
|
|
8556
8736
|
},
|
|
8557
8737
|
up: {
|
|
8558
8738
|
keyCode: 38,
|
|
8559
8739
|
action: "upVolume",
|
|
8560
8740
|
disable: false,
|
|
8741
|
+
disablePress: false,
|
|
8561
8742
|
noBodyTarget: true
|
|
8562
8743
|
},
|
|
8563
8744
|
down: {
|
|
8564
8745
|
keyCode: 40,
|
|
8565
8746
|
action: "downVolume",
|
|
8566
8747
|
disable: false,
|
|
8748
|
+
disablePress: false,
|
|
8567
8749
|
noBodyTarget: true
|
|
8568
8750
|
},
|
|
8569
8751
|
left: {
|
|
8570
8752
|
keyCode: 37,
|
|
8571
8753
|
action: "seekBack",
|
|
8754
|
+
disablePress: false,
|
|
8572
8755
|
disable: false
|
|
8573
8756
|
},
|
|
8574
8757
|
right: {
|
|
8575
8758
|
keyCode: 39,
|
|
8576
8759
|
action: "seek",
|
|
8760
|
+
pressAction: "changePlaybackRate",
|
|
8761
|
+
disablePress: false,
|
|
8577
8762
|
disable: false
|
|
8578
8763
|
},
|
|
8579
8764
|
esc: {
|
|
8580
8765
|
keyCode: 27,
|
|
8581
8766
|
action: "exitFullscreen",
|
|
8767
|
+
disablePress: true,
|
|
8582
8768
|
disable: false
|
|
8583
8769
|
}
|
|
8584
8770
|
};
|
|
8585
8771
|
this.mergekeyCodeMap();
|
|
8772
|
+
this._keyState = {
|
|
8773
|
+
isKeyDown: false,
|
|
8774
|
+
isBodyKeyDown: false,
|
|
8775
|
+
isPress: false,
|
|
8776
|
+
tt: 0,
|
|
8777
|
+
playbackRate: 0
|
|
8778
|
+
};
|
|
8586
8779
|
this.player.root.addEventListener("keydown", this.onKeydown);
|
|
8587
8780
|
document.addEventListener("keydown", this.onBodyKeyDown);
|
|
8588
8781
|
}
|
|
@@ -8616,6 +8809,9 @@ var __publicField = (obj, key, value) => {
|
|
|
8616
8809
|
key: "downVolume",
|
|
8617
8810
|
value: function downVolume(event) {
|
|
8618
8811
|
var player = this.player;
|
|
8812
|
+
if (player.volume <= 0) {
|
|
8813
|
+
return;
|
|
8814
|
+
}
|
|
8619
8815
|
var val = parseFloat((player.volume - 0.1).toFixed(1));
|
|
8620
8816
|
var props = {
|
|
8621
8817
|
volume: {
|
|
@@ -8636,6 +8832,9 @@ var __publicField = (obj, key, value) => {
|
|
|
8636
8832
|
key: "upVolume",
|
|
8637
8833
|
value: function upVolume(event) {
|
|
8638
8834
|
var player = this.player;
|
|
8835
|
+
if (player.volume >= 1) {
|
|
8836
|
+
return;
|
|
8837
|
+
}
|
|
8639
8838
|
var val = parseFloat((player.volume + 0.1).toFixed(1));
|
|
8640
8839
|
var props = {
|
|
8641
8840
|
volume: {
|
|
@@ -8655,42 +8854,57 @@ var __publicField = (obj, key, value) => {
|
|
|
8655
8854
|
}, {
|
|
8656
8855
|
key: "seek",
|
|
8657
8856
|
value: function seek(event) {
|
|
8658
|
-
var _this$player = this.player, currentTime = _this$player.currentTime, duration = _this$player.duration;
|
|
8659
|
-
var _time = currentTime;
|
|
8660
|
-
|
|
8661
|
-
|
|
8857
|
+
var _this$player = this.player, currentTime = _this$player.currentTime, offsetCurrentTime = _this$player.offsetCurrentTime, duration = _this$player.duration, offsetDuration = _this$player.offsetDuration, timeSegments = _this$player.timeSegments;
|
|
8858
|
+
var _time = offsetCurrentTime > -1 ? offsetCurrentTime : currentTime;
|
|
8859
|
+
var _duration = offsetDuration || duration;
|
|
8860
|
+
var _step = event.repeat && this.seekStep >= 4 ? parseInt(this.seekStep / 2, 10) : this.seekStep;
|
|
8861
|
+
if (_time + _step <= _duration) {
|
|
8862
|
+
_time = _time + _step;
|
|
8662
8863
|
} else {
|
|
8663
|
-
_time =
|
|
8864
|
+
_time = _duration;
|
|
8664
8865
|
}
|
|
8866
|
+
var _seekTime = util$1.getCurrentTimeByOffset(_time, timeSegments);
|
|
8665
8867
|
var props = {
|
|
8666
8868
|
currentTime: {
|
|
8667
8869
|
from: currentTime,
|
|
8668
|
-
to:
|
|
8870
|
+
to: _seekTime
|
|
8669
8871
|
}
|
|
8670
8872
|
};
|
|
8671
8873
|
this.emitUserAction(event, "seek", {
|
|
8672
8874
|
props
|
|
8673
8875
|
});
|
|
8674
|
-
this.player.currentTime =
|
|
8876
|
+
this.player.currentTime = _seekTime;
|
|
8675
8877
|
}
|
|
8676
8878
|
}, {
|
|
8677
8879
|
key: "seekBack",
|
|
8678
8880
|
value: function seekBack(event) {
|
|
8679
|
-
var
|
|
8680
|
-
var
|
|
8681
|
-
|
|
8682
|
-
|
|
8683
|
-
|
|
8881
|
+
var _this$player2 = this.player, currentTime = _this$player2.currentTime, offsetCurrentTime = _this$player2.offsetCurrentTime, timeSegments = _this$player2.timeSegments;
|
|
8882
|
+
var _step = event.repeat ? parseInt(this.seekStep / 2, 10) : this.seekStep;
|
|
8883
|
+
var _time = offsetCurrentTime > -1 ? offsetCurrentTime : currentTime;
|
|
8884
|
+
var _seekTime = _time - _step;
|
|
8885
|
+
if (_seekTime < 0) {
|
|
8886
|
+
_seekTime = 0;
|
|
8887
|
+
}
|
|
8888
|
+
_seekTime = util$1.getCurrentTimeByOffset(_seekTime, timeSegments);
|
|
8684
8889
|
var props = {
|
|
8685
8890
|
currentTime: {
|
|
8686
8891
|
from: currentTime,
|
|
8687
|
-
to:
|
|
8892
|
+
to: _seekTime
|
|
8688
8893
|
}
|
|
8689
8894
|
};
|
|
8690
8895
|
this.emitUserAction(event, "seek", {
|
|
8691
8896
|
props
|
|
8692
8897
|
});
|
|
8693
|
-
this.player.currentTime =
|
|
8898
|
+
this.player.currentTime = _seekTime;
|
|
8899
|
+
}
|
|
8900
|
+
}, {
|
|
8901
|
+
key: "changePlaybackRate",
|
|
8902
|
+
value: function changePlaybackRate(event) {
|
|
8903
|
+
var _keyState = this._keyState, config = this.config, player = this.player;
|
|
8904
|
+
if (_keyState.playbackRate === 0) {
|
|
8905
|
+
_keyState.playbackRate = player.playbackRate;
|
|
8906
|
+
player.playbackRate = config.playbackRate;
|
|
8907
|
+
}
|
|
8694
8908
|
}
|
|
8695
8909
|
}, {
|
|
8696
8910
|
key: "playPause",
|
|
@@ -8728,32 +8942,66 @@ var __publicField = (obj, key, value) => {
|
|
|
8728
8942
|
player.exitCssFullscreen();
|
|
8729
8943
|
}
|
|
8730
8944
|
}
|
|
8945
|
+
}, {
|
|
8946
|
+
key: "handleKeyDown",
|
|
8947
|
+
value: function handleKeyDown(e2) {
|
|
8948
|
+
var _keyState = this._keyState;
|
|
8949
|
+
if (e2.repeat) {
|
|
8950
|
+
_keyState.isPress = true;
|
|
8951
|
+
var _t = Date.now();
|
|
8952
|
+
if (_t - _keyState.tt < 200) {
|
|
8953
|
+
return;
|
|
8954
|
+
}
|
|
8955
|
+
_keyState.tt = _t;
|
|
8956
|
+
}
|
|
8957
|
+
preventDefault(e2);
|
|
8958
|
+
this.handleKeyCode(e2.keyCode, e2, _keyState.isPress);
|
|
8959
|
+
}
|
|
8960
|
+
}, {
|
|
8961
|
+
key: "handleKeyUp",
|
|
8962
|
+
value: function handleKeyUp(e2) {
|
|
8963
|
+
var _keyState = this._keyState;
|
|
8964
|
+
if (_keyState.playbackRate > 0) {
|
|
8965
|
+
this.player.playbackRate = _keyState.playbackRate;
|
|
8966
|
+
_keyState.playbackRate = 0;
|
|
8967
|
+
}
|
|
8968
|
+
_keyState.isKeyDown = false;
|
|
8969
|
+
_keyState.isPress = false;
|
|
8970
|
+
_keyState.tt = 0;
|
|
8971
|
+
}
|
|
8731
8972
|
}, {
|
|
8732
8973
|
key: "handleKeyCode",
|
|
8733
|
-
value: function handleKeyCode(curKeyCode, event) {
|
|
8734
|
-
var
|
|
8735
|
-
|
|
8736
|
-
var
|
|
8737
|
-
if (keyCode === curKeyCode
|
|
8738
|
-
if (
|
|
8739
|
-
action
|
|
8740
|
-
|
|
8741
|
-
|
|
8742
|
-
|
|
8974
|
+
value: function handleKeyCode(curKeyCode, event, isPress) {
|
|
8975
|
+
var arr = Object.keys(this.keyCodeMap);
|
|
8976
|
+
for (var i2 = 0; i2 < arr.length; i2++) {
|
|
8977
|
+
var _this$keyCodeMap$arr$ = this.keyCodeMap[arr[i2]], action = _this$keyCodeMap$arr$.action, keyCode = _this$keyCodeMap$arr$.keyCode, disable = _this$keyCodeMap$arr$.disable, pressAction = _this$keyCodeMap$arr$.pressAction, disablePress = _this$keyCodeMap$arr$.disablePress;
|
|
8978
|
+
if (keyCode === curKeyCode) {
|
|
8979
|
+
if (!disable && !(isPress && disablePress)) {
|
|
8980
|
+
var _action = !isPress ? action : pressAction || action;
|
|
8981
|
+
if (typeof _action === "function") {
|
|
8982
|
+
action(event, this.player, isPress);
|
|
8983
|
+
} else if (typeof _action === "string") {
|
|
8984
|
+
if (typeof this[_action] === "function") {
|
|
8985
|
+
this[_action](event, this.player, isPress);
|
|
8986
|
+
}
|
|
8743
8987
|
}
|
|
8988
|
+
this.emit(SHORTCUT, _objectSpread2$1({
|
|
8989
|
+
key: arr[i2],
|
|
8990
|
+
target: event.target,
|
|
8991
|
+
isPress
|
|
8992
|
+
}, this.keyCodeMap[arr[i2]]));
|
|
8744
8993
|
}
|
|
8745
|
-
|
|
8746
|
-
key,
|
|
8747
|
-
target: event.target
|
|
8748
|
-
}, _this4.keyCodeMap[key]));
|
|
8994
|
+
break;
|
|
8749
8995
|
}
|
|
8750
|
-
}
|
|
8996
|
+
}
|
|
8751
8997
|
}
|
|
8752
8998
|
}, {
|
|
8753
8999
|
key: "destroy",
|
|
8754
9000
|
value: function destroy() {
|
|
8755
9001
|
this.player.root.removeEventListener("keydown", this.onKeydown);
|
|
8756
9002
|
document.removeEventListener("keydown", this.onBodyKeyDown);
|
|
9003
|
+
this.player.root.removeEventListener("keyup", this.onKeyup);
|
|
9004
|
+
document.removeEventListener("keyup", this.onBodyKeyUp);
|
|
8757
9005
|
}
|
|
8758
9006
|
}, {
|
|
8759
9007
|
key: "disable",
|
|
@@ -8775,12 +9023,13 @@ var __publicField = (obj, key, value) => {
|
|
|
8775
9023
|
get: function get() {
|
|
8776
9024
|
return {
|
|
8777
9025
|
seekStep: 10,
|
|
8778
|
-
checkVisible:
|
|
9026
|
+
checkVisible: false,
|
|
8779
9027
|
disableBodyTrigger: false,
|
|
8780
9028
|
disableRootTrigger: false,
|
|
8781
9029
|
isGlobalTrigger: false,
|
|
8782
9030
|
keyCodeMap: {},
|
|
8783
9031
|
disable: false,
|
|
9032
|
+
playbackRate: 2,
|
|
8784
9033
|
isIgnoreUserActive: false
|
|
8785
9034
|
};
|
|
8786
9035
|
}
|
|
@@ -10149,6 +10398,9 @@ var __publicField = (obj, key, value) => {
|
|
|
10149
10398
|
get url() {
|
|
10150
10399
|
return this._currentUrlRef.url;
|
|
10151
10400
|
}
|
|
10401
|
+
set url(url) {
|
|
10402
|
+
this._currentUrlRef.url = url;
|
|
10403
|
+
}
|
|
10152
10404
|
next() {
|
|
10153
10405
|
const next = this._currentUrlRef.next;
|
|
10154
10406
|
/* istanbul ignore next -- @preserve */
|
|
@@ -10226,7 +10478,6 @@ var __publicField = (obj, key, value) => {
|
|
|
10226
10478
|
__publicField(this, "defaultSource");
|
|
10227
10479
|
__publicField(this, "defaultDefinition");
|
|
10228
10480
|
__publicField(this, "maxFallbackRound");
|
|
10229
|
-
__publicField(this, "_prepareList", []);
|
|
10230
10481
|
__publicField(this, "_currentDefinition");
|
|
10231
10482
|
__publicField(this, "_sources");
|
|
10232
10483
|
__publicField(this, "_fallbackCount", 0);
|
|
@@ -10261,6 +10512,11 @@ var __publicField = (obj, key, value) => {
|
|
|
10261
10512
|
var _a;
|
|
10262
10513
|
return (_a = this.definition) == null ? void 0 : _a.url;
|
|
10263
10514
|
}
|
|
10515
|
+
set url(url) {
|
|
10516
|
+
if (this.definition) {
|
|
10517
|
+
this.definition.url = url;
|
|
10518
|
+
}
|
|
10519
|
+
}
|
|
10264
10520
|
/**
|
|
10265
10521
|
* 以给定的参数搜索源和对应清晰度。`source` 和 `definition`
|
|
10266
10522
|
* 都是可选的,当未指定时,使用当前的 {@link SourceManager.source}
|
|
@@ -10330,14 +10586,6 @@ var __publicField = (obj, key, value) => {
|
|
|
10330
10586
|
this.resetFallback();
|
|
10331
10587
|
return this;
|
|
10332
10588
|
}
|
|
10333
|
-
registerPrepare(prepare) {
|
|
10334
|
-
this._prepareList.push(prepare);
|
|
10335
|
-
}
|
|
10336
|
-
async prepare(url) {
|
|
10337
|
-
for (const prepare of this._prepareList) {
|
|
10338
|
-
await prepare(url);
|
|
10339
|
-
}
|
|
10340
|
-
}
|
|
10341
10589
|
resetFallback() {
|
|
10342
10590
|
this._fallbackCount = 0;
|
|
10343
10591
|
}
|
|
@@ -10779,12 +11027,13 @@ var __publicField = (obj, key, value) => {
|
|
|
10779
11027
|
}
|
|
10780
11028
|
}
|
|
10781
11029
|
var optionsIcon = "";
|
|
10782
|
-
|
|
10783
|
-
Middle
|
|
10784
|
-
Bottom
|
|
10785
|
-
Fullscreen
|
|
10786
|
-
Inner
|
|
10787
|
-
|
|
11030
|
+
var ListType = /* @__PURE__ */ ((ListType2) => {
|
|
11031
|
+
ListType2["Middle"] = "middle";
|
|
11032
|
+
ListType2["Bottom"] = "bottom";
|
|
11033
|
+
ListType2["Fullscreen"] = "fullscreen";
|
|
11034
|
+
ListType2["Inner"] = "inner";
|
|
11035
|
+
return ListType2;
|
|
11036
|
+
})(ListType || {});
|
|
10788
11037
|
var RenderType = /* @__PURE__ */ ((RenderType2) => {
|
|
10789
11038
|
RenderType2["Icon"] = "Icon";
|
|
10790
11039
|
RenderType2["Text"] = "Text";
|
|
@@ -10792,20 +11041,26 @@ var __publicField = (obj, key, value) => {
|
|
|
10792
11041
|
})(RenderType || {});
|
|
10793
11042
|
const isMobile$1 = sniffer$1.device === "mobile";
|
|
10794
11043
|
const MOBILE_LIST_TYPES = [
|
|
10795
|
-
|
|
10796
|
-
|
|
10797
|
-
|
|
11044
|
+
"bottom",
|
|
11045
|
+
"fullscreen",
|
|
11046
|
+
"inner"
|
|
11047
|
+
/* Inner */
|
|
11048
|
+
];
|
|
11049
|
+
const PC_LIST_TYPES = [
|
|
11050
|
+
"middle"
|
|
11051
|
+
/* Middle */
|
|
10798
11052
|
];
|
|
10799
|
-
const PC_LIST_TYPES = [ListType.Middle];
|
|
10800
11053
|
const MODAL_TYPES = [
|
|
10801
|
-
|
|
10802
|
-
|
|
10803
|
-
|
|
11054
|
+
"bottom",
|
|
11055
|
+
"inner",
|
|
11056
|
+
"fullscreen"
|
|
11057
|
+
/* Fullscreen */
|
|
10804
11058
|
];
|
|
10805
11059
|
const CUSTOM_TYPES = [
|
|
10806
|
-
|
|
10807
|
-
|
|
10808
|
-
|
|
11060
|
+
"bottom",
|
|
11061
|
+
"inner",
|
|
11062
|
+
"fullscreen"
|
|
11063
|
+
/* Fullscreen */
|
|
10809
11064
|
];
|
|
10810
11065
|
class OptionsIcon extends Plugin {
|
|
10811
11066
|
constructor(args) {
|
|
@@ -10843,7 +11098,7 @@ var __publicField = (obj, key, value) => {
|
|
|
10843
11098
|
// 默认手机端在“右上角”,pc端在控制栏右侧
|
|
10844
11099
|
position: isMobile$1 ? POSITIONS$1.ROOT_TOP_RIGHT : POSITIONS$1.CONTROLS_RIGHT,
|
|
10845
11100
|
// 默认手机端列表展示底部,pc端在控制栏默认
|
|
10846
|
-
listType: isMobile$1 ?
|
|
11101
|
+
listType: isMobile$1 ? "bottom" : "middle",
|
|
10847
11102
|
index: 100,
|
|
10848
11103
|
list: [],
|
|
10849
11104
|
listStyle: {},
|
|
@@ -11025,10 +11280,10 @@ var __publicField = (obj, key, value) => {
|
|
|
11025
11280
|
listType = this.player.config.listType;
|
|
11026
11281
|
}
|
|
11027
11282
|
if (!isMobile$1 && (!listType || !MOBILE_LIST_TYPES.includes(listType))) {
|
|
11028
|
-
listType =
|
|
11283
|
+
listType = "bottom";
|
|
11029
11284
|
}
|
|
11030
11285
|
if (!isMobile$1 && (!listType || !PC_LIST_TYPES.includes(listType))) {
|
|
11031
|
-
listType =
|
|
11286
|
+
listType = "middle";
|
|
11032
11287
|
}
|
|
11033
11288
|
return listType;
|
|
11034
11289
|
}
|
|
@@ -11921,9 +12176,7 @@ var __publicField = (obj, key, value) => {
|
|
|
11921
12176
|
toastPlugin.remove(this._toastId);
|
|
11922
12177
|
}
|
|
11923
12178
|
this._toastId = toastPlugin.toast(
|
|
11924
|
-
`${i18nManager.getText("DEFINITION_SWITCHING")} ${
|
|
11925
|
-
definition.text
|
|
11926
|
-
)) ?? definition.definition} ...`,
|
|
12179
|
+
`${i18nManager.getText("DEFINITION_SWITCHING")} ${definition.showText ?? definition.definition} ...`,
|
|
11927
12180
|
{
|
|
11928
12181
|
duration: 2e3,
|
|
11929
12182
|
closable: true
|
|
@@ -12687,21 +12940,21 @@ var __publicField = (obj, key, value) => {
|
|
|
12687
12940
|
// 自动播放插件
|
|
12688
12941
|
UNMUTE: "Click to unmute",
|
|
12689
12942
|
// 报错
|
|
12690
|
-
MANIFEST: "
|
|
12943
|
+
MANIFEST: "Video parsing error",
|
|
12691
12944
|
NETWORK: "Network error",
|
|
12692
12945
|
NETWORK_TIMEOUT: "Network timeout",
|
|
12693
|
-
NETWORK_FORBIDDEN: "
|
|
12694
|
-
NETWORK_NOTFOUND: "
|
|
12695
|
-
DEMUX: "
|
|
12696
|
-
REMUX: "
|
|
12697
|
-
MEDIA: "
|
|
12698
|
-
MEDIA_ERR_CODEC_NOT_SUPPORTED: "
|
|
12699
|
-
MEDIA_ERR_URL_EMPTY: "
|
|
12700
|
-
DRM: "
|
|
12701
|
-
OTHER: "
|
|
12702
|
-
RUNTIME: "
|
|
12703
|
-
MODULE_LOAD_ERROR: "
|
|
12704
|
-
UNKNOWN: "
|
|
12946
|
+
NETWORK_FORBIDDEN: "Authentication error",
|
|
12947
|
+
NETWORK_NOTFOUND: "Stream does not exist",
|
|
12948
|
+
DEMUX: "Video parsing error",
|
|
12949
|
+
REMUX: "Video parsing error",
|
|
12950
|
+
MEDIA: "An error occurred, Please try again",
|
|
12951
|
+
MEDIA_ERR_CODEC_NOT_SUPPORTED: "Audio/video codec is not supported",
|
|
12952
|
+
MEDIA_ERR_URL_EMPTY: "The stream address is not specified",
|
|
12953
|
+
DRM: "Permission verification failed",
|
|
12954
|
+
OTHER: "Unknown error",
|
|
12955
|
+
RUNTIME: "An error occurred, Please try again",
|
|
12956
|
+
MODULE_LOAD_ERROR: "CDN fetch error",
|
|
12957
|
+
UNKNOWN: "Unknown error"
|
|
12705
12958
|
};
|
|
12706
12959
|
const ZH_CN$1 = {
|
|
12707
12960
|
...ZH.TEXT,
|
|
@@ -12720,12 +12973,12 @@ var __publicField = (obj, key, value) => {
|
|
|
12720
12973
|
NETWORK_NOTFOUND: "播放地址不存在",
|
|
12721
12974
|
DEMUX: "视频解析错误",
|
|
12722
12975
|
REMUX: "视频解析错误",
|
|
12723
|
-
MEDIA: "
|
|
12724
|
-
MEDIA_ERR_CODEC_NOT_SUPPORTED: "
|
|
12976
|
+
MEDIA: "播放异常,请重试",
|
|
12977
|
+
MEDIA_ERR_CODEC_NOT_SUPPORTED: "不支持的音频/视频格式",
|
|
12725
12978
|
MEDIA_ERR_URL_EMPTY: "当前播放地址为空",
|
|
12726
12979
|
DRM: "权限验证失败",
|
|
12727
12980
|
OTHER: "其他报错",
|
|
12728
|
-
RUNTIME: "
|
|
12981
|
+
RUNTIME: "播放异常,请重试",
|
|
12729
12982
|
MODULE_LOAD_ERROR: "插件模块加载异常",
|
|
12730
12983
|
UNKNOWN: "未知报错"
|
|
12731
12984
|
};
|
|
@@ -12782,21 +13035,6 @@ var __publicField = (obj, key, value) => {
|
|
|
12782
13035
|
}
|
|
12783
13036
|
}
|
|
12784
13037
|
var veplayerBase = "";
|
|
12785
|
-
var Codec = /* @__PURE__ */ ((Codec2) => {
|
|
12786
|
-
Codec2["H265"] = "h265";
|
|
12787
|
-
Codec2["H264"] = "h264";
|
|
12788
|
-
return Codec2;
|
|
12789
|
-
})(Codec || {});
|
|
12790
|
-
var Degradation = /* @__PURE__ */ ((Degradation2) => {
|
|
12791
|
-
Degradation2["SoftFirst"] = "soft-first";
|
|
12792
|
-
Degradation2["H264First"] = "h264-first";
|
|
12793
|
-
return Degradation2;
|
|
12794
|
-
})(Degradation || {});
|
|
12795
|
-
var DecodeType = /* @__PURE__ */ ((DecodeType2) => {
|
|
12796
|
-
DecodeType2["Software"] = "software";
|
|
12797
|
-
DecodeType2["Hardware"] = "hardware";
|
|
12798
|
-
return DecodeType2;
|
|
12799
|
-
})(DecodeType || {});
|
|
12800
13038
|
const { POSITIONS: XGPosition } = Plugin;
|
|
12801
13039
|
const POSITIONS$1 = {
|
|
12802
13040
|
...XGPosition,
|
|
@@ -12806,7 +13044,7 @@ var __publicField = (obj, key, value) => {
|
|
|
12806
13044
|
id: "veplayer",
|
|
12807
13045
|
width: "100%",
|
|
12808
13046
|
height: "100%",
|
|
12809
|
-
decodeType:
|
|
13047
|
+
decodeType: DecodeType.Hardware,
|
|
12810
13048
|
fullscreen: {
|
|
12811
13049
|
useCssFullscreen: false
|
|
12812
13050
|
}
|
|
@@ -12834,6 +13072,9 @@ var __publicField = (obj, key, value) => {
|
|
|
12834
13072
|
return xgOptions;
|
|
12835
13073
|
};
|
|
12836
13074
|
class VePlayerBase {
|
|
13075
|
+
/**
|
|
13076
|
+
* @hidden
|
|
13077
|
+
*/
|
|
12837
13078
|
constructor(options = {}) {
|
|
12838
13079
|
__publicField(this, "_player");
|
|
12839
13080
|
__publicField(this, "_sourceManager");
|
|
@@ -12881,85 +13122,172 @@ var __publicField = (obj, key, value) => {
|
|
|
12881
13122
|
veplayer: this
|
|
12882
13123
|
});
|
|
12883
13124
|
this.emit(Events$1.PLAYER_CREATE_FINISH, this._player);
|
|
12884
|
-
this._sourceManager.registerPrepare((url) => this.prepare(url));
|
|
12885
13125
|
this._errorCallback = (err) => this._handleFallback(err);
|
|
12886
13126
|
this._player.on(ERROR, this._errorCallback);
|
|
12887
13127
|
}
|
|
13128
|
+
/**
|
|
13129
|
+
* @brief 获取视频的就绪状态,其状态枚举值、枚举名称和说明如下:
|
|
13130
|
+
* - `0`:HAVE_NOTHING,没有关于媒体资源的可用信息
|
|
13131
|
+
* - `1`:HAVE_METADATA,已检索到足够多的媒体资源来初始化元数据, 快进/快退不会引发异常
|
|
13132
|
+
* - `2`:HAVE_CURRENT_DATA,当前播放位置的数据可用,但不足以播放下一帧
|
|
13133
|
+
* - `3`:HAVE_FUTURE_DATA,当前播放位置以及未来至少一小段时间的数据是可用的(至少有两帧以上的数据)
|
|
13134
|
+
* - `4`:HAVE_ENOUGH_DATA,有足够的数据可用,并且下载速率足够,媒体可以不间断地播放到最后
|
|
13135
|
+
*/
|
|
12888
13136
|
get readyState() {
|
|
12889
13137
|
return this._player.readyState;
|
|
12890
13138
|
}
|
|
13139
|
+
/**
|
|
13140
|
+
* @brief 获取当前已缓冲的时间范围。
|
|
13141
|
+
*/
|
|
12891
13142
|
get buffered() {
|
|
12892
13143
|
return this._player.buffered;
|
|
12893
13144
|
}
|
|
13145
|
+
/**
|
|
13146
|
+
* @brief 获取已经播放的音频/视频的时间范围。
|
|
13147
|
+
*/
|
|
12894
13148
|
get played() {
|
|
12895
13149
|
return this._player.played;
|
|
12896
13150
|
}
|
|
13151
|
+
/**
|
|
13152
|
+
* @brief 设置/获取视频当前的播放时间, 单位为 s。
|
|
13153
|
+
*/
|
|
12897
13154
|
get cumulateTime() {
|
|
12898
13155
|
return this._player.cumulateTime;
|
|
12899
13156
|
}
|
|
13157
|
+
/**
|
|
13158
|
+
* @brief 获取是否处于焦点状态,处于焦点状态会显示控制栏。
|
|
13159
|
+
*/
|
|
12900
13160
|
get isFocused() {
|
|
12901
13161
|
return this._player.isActive;
|
|
12902
13162
|
}
|
|
13163
|
+
/**
|
|
13164
|
+
* @brief 获取播放器是否处于全屏状态。
|
|
13165
|
+
*/
|
|
12903
13166
|
get isFullscreen() {
|
|
12904
13167
|
return this._player.isFullscreen;
|
|
12905
13168
|
}
|
|
13169
|
+
/**
|
|
13170
|
+
* @brief 获取播放器是否处于网页全屏状态。
|
|
13171
|
+
*/
|
|
12906
13172
|
get isCssFullscreen() {
|
|
12907
13173
|
return this._player.isCssfullScreen;
|
|
12908
13174
|
}
|
|
13175
|
+
/**
|
|
13176
|
+
* @brief 获取视频的网络状态,其状态枚举值、枚举名称和说明如下:
|
|
13177
|
+
* - `0`:NETWORK_EMPTY,目前还没有数据,readyState 的值是 HAVE_NOTHING
|
|
13178
|
+
* - `1`:NETWORK_IDLE,HTMLMediaElement 处于活动状态并已选择资源,但未使用网络
|
|
13179
|
+
* - `2`:NETWORK_LOADING,浏览器正在下载 HTMLMediaElement 数据
|
|
13180
|
+
* - `3`:NETWORK_NO_SOURCE,未找到 HTMLMediaElement src。
|
|
13181
|
+
*/
|
|
12909
13182
|
get networkState() {
|
|
12910
13183
|
return this._player.networkState;
|
|
12911
13184
|
}
|
|
13185
|
+
/**
|
|
13186
|
+
* @brief 获取当前视频是否处于暂停状态。
|
|
13187
|
+
*/
|
|
12912
13188
|
get paused() {
|
|
12913
13189
|
return this._player.paused;
|
|
12914
13190
|
}
|
|
13191
|
+
/**
|
|
13192
|
+
* @brief 获取当前视频是否播放结束。
|
|
13193
|
+
*/
|
|
12915
13194
|
get ended() {
|
|
12916
13195
|
return this._player.ended;
|
|
12917
13196
|
}
|
|
13197
|
+
/**
|
|
13198
|
+
* @brief 获取播放器当前所处的状态,其状态枚举值、枚举名称和说明如下:
|
|
13199
|
+
* - `0`:ERROR,播放出现错误
|
|
13200
|
+
* - `1`:INITIAL,初始化
|
|
13201
|
+
* - `2`:READY,配置/事件/插件等均已经初始化/绑定/实例化完成
|
|
13202
|
+
* - `3`:ATTACHING,进入媒体对象挂载阶段
|
|
13203
|
+
* - `4`:ATTACHED,媒体对象已经挂载到了 DOM 中
|
|
13204
|
+
* - `5`:NOTALLOW,播放被阻止
|
|
13205
|
+
* - `6`:RUNNING,已经成功起播进入播放流程
|
|
13206
|
+
* - `7`:ENDED,播放结束
|
|
13207
|
+
* - `8`:DESTROYED,播放器实例处于已被销毁
|
|
13208
|
+
*/
|
|
12918
13209
|
get state() {
|
|
12919
13210
|
return this._player.state;
|
|
12920
13211
|
}
|
|
13212
|
+
/**
|
|
13213
|
+
* 获取当前播放视频的拉流地址。
|
|
13214
|
+
*/
|
|
12921
13215
|
get url() {
|
|
12922
13216
|
return this._player.config.url;
|
|
12923
13217
|
}
|
|
13218
|
+
/**
|
|
13219
|
+
* @brief 获取当播放视频的线路名称唯一标识(name)。
|
|
13220
|
+
*/
|
|
12924
13221
|
get source() {
|
|
12925
13222
|
var _a;
|
|
12926
13223
|
return (_a = this._sourceManager.source) == null ? void 0 : _a.name;
|
|
12927
13224
|
}
|
|
13225
|
+
/**
|
|
13226
|
+
* @brief 获取当前播放视频的清晰度唯一标识(definition)。
|
|
13227
|
+
*/
|
|
12928
13228
|
get definition() {
|
|
12929
13229
|
var _a;
|
|
12930
13230
|
return (_a = this._sourceManager.definition) == null ? void 0 : _a.definition;
|
|
12931
13231
|
}
|
|
13232
|
+
/**
|
|
13233
|
+
* @brief 获取和设置播放器的跨域配置信息,更多信息参考 [crossorigin](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) 属性介绍。
|
|
13234
|
+
*/
|
|
12932
13235
|
get crossOrigin() {
|
|
12933
13236
|
return this._player.crossOrigin;
|
|
12934
13237
|
}
|
|
13238
|
+
/**
|
|
13239
|
+
* @brief 获取和设置播放器的跨域配置信息,更多信息参考 [crossorigin](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) 属性介绍。
|
|
13240
|
+
*/
|
|
12935
13241
|
set crossOrigin(crossOrigin) {
|
|
12936
13242
|
this._player.crossOrigin = crossOrigin;
|
|
12937
13243
|
}
|
|
13244
|
+
/**
|
|
13245
|
+
* @brief 获取和设置视频的音量,取值范围为 [0,1]。
|
|
13246
|
+
*/
|
|
12938
13247
|
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
12939
13248
|
get volume() {
|
|
12940
13249
|
return this._player.volume;
|
|
12941
13250
|
}
|
|
13251
|
+
/**
|
|
13252
|
+
* @brief 获取和设置视频的音量,取值范围为 [0,1]。
|
|
13253
|
+
*/
|
|
12942
13254
|
set volume(volume) {
|
|
12943
13255
|
this._player.volume = volume;
|
|
12944
13256
|
}
|
|
13257
|
+
/**
|
|
13258
|
+
* @brief 获取和设置视频静音状态。
|
|
13259
|
+
* - `true`:静音
|
|
13260
|
+
* - `false`:非静音
|
|
13261
|
+
*/
|
|
12945
13262
|
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
12946
13263
|
get muted() {
|
|
12947
13264
|
return this._player.muted;
|
|
12948
13265
|
}
|
|
13266
|
+
/**
|
|
13267
|
+
* @brief 获取和设置视频静音状态。
|
|
13268
|
+
* - `true`:静音
|
|
13269
|
+
* - `false`:非静音
|
|
13270
|
+
*/
|
|
12949
13271
|
set muted(isMuted) {
|
|
12950
13272
|
this._player.muted = isMuted;
|
|
12951
13273
|
}
|
|
13274
|
+
/**
|
|
13275
|
+
* @brief 获取和设置当前语言。
|
|
13276
|
+
*/
|
|
12952
13277
|
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
12953
13278
|
get lang() {
|
|
12954
13279
|
return this._i18nManager.getLang();
|
|
12955
13280
|
}
|
|
13281
|
+
/**
|
|
13282
|
+
* @brief 获取和设置当前语言。
|
|
13283
|
+
*/
|
|
12956
13284
|
set lang(lang) {
|
|
12957
13285
|
var _a, _b;
|
|
12958
13286
|
if (this._player.lang === lang) {
|
|
12959
13287
|
return;
|
|
12960
13288
|
}
|
|
12961
13289
|
if (!VeI18n.isLangValid(lang)) {
|
|
12962
|
-
const langKeys = VeI18n.langKeys
|
|
13290
|
+
const langKeys = VeI18n.langKeys.join(",");
|
|
12963
13291
|
const message = {
|
|
12964
13292
|
en: `Sorry, we couldn't set the language to ${lang} because it's not currently supported. The list of supported languages includes ${langKeys}.`,
|
|
12965
13293
|
"zh-cn": `不支持当前设置的语言${lang}, 支持的语言有${langKeys}, 请重新设置`
|
|
@@ -12974,8 +13302,11 @@ var __publicField = (obj, key, value) => {
|
|
|
12974
13302
|
get _src() {
|
|
12975
13303
|
return this._player.currentSrc;
|
|
12976
13304
|
}
|
|
13305
|
+
/**
|
|
13306
|
+
* @hidden
|
|
13307
|
+
*/
|
|
12977
13308
|
static async create(options = {}, Constructor) {
|
|
12978
|
-
var _a;
|
|
13309
|
+
var _a, _b, _c;
|
|
12979
13310
|
const sourceManager = new SourceManager({
|
|
12980
13311
|
sources: Source.normalize({
|
|
12981
13312
|
url: options.url,
|
|
@@ -12987,18 +13318,28 @@ var __publicField = (obj, key, value) => {
|
|
|
12987
13318
|
defaultDefinition: options.defaultDefinition,
|
|
12988
13319
|
maxFallbackRound: options.maxFallbackRound
|
|
12989
13320
|
});
|
|
13321
|
+
const prepareResult = await ((_a = options == null ? void 0 : options.preparePlugins) == null ? void 0 : _a.call(
|
|
13322
|
+
options,
|
|
13323
|
+
sourceManager.url ?? ""
|
|
13324
|
+
));
|
|
13325
|
+
if ((_b = prepareResult == null ? void 0 : prepareResult.options) == null ? void 0 : _b.url) {
|
|
13326
|
+
sourceManager.url = (_c = prepareResult == null ? void 0 : prepareResult.options) == null ? void 0 : _c.url;
|
|
13327
|
+
}
|
|
12990
13328
|
options.url = sourceManager.url;
|
|
12991
|
-
const prepareResult = await ((_a = options == null ? void 0 : options.preparePlugins) == null ? void 0 : _a.call(options, options.url ?? ""));
|
|
12992
13329
|
return new (Constructor ?? VePlayerBase)({
|
|
12993
13330
|
...options,
|
|
12994
13331
|
prepareResult,
|
|
12995
13332
|
sourceManager
|
|
12996
13333
|
});
|
|
12997
13334
|
}
|
|
13335
|
+
/**
|
|
13336
|
+
* @brief 调用此方法切换拉流地址、线路、清晰度。
|
|
13337
|
+
* @param target 目标地址,可以是播放地址,也可以是线路和清晰度
|
|
13338
|
+
* @param options 更多配置信息
|
|
13339
|
+
*/
|
|
12998
13340
|
async switch(target, options) {
|
|
12999
13341
|
var _a, _b;
|
|
13000
13342
|
if (typeof target === "string" && this._sourceManager.sources.length === 1 && ((_b = (_a = this._sourceManager.sources) == null ? void 0 : _a[0].definitions) == null ? void 0 : _b.length) === 1) {
|
|
13001
|
-
this._sourceManager.updateSources(target);
|
|
13002
13343
|
await this._switchUrl(target);
|
|
13003
13344
|
return this._sourceManager.definition;
|
|
13004
13345
|
}
|
|
@@ -13011,12 +13352,22 @@ var __publicField = (obj, key, value) => {
|
|
|
13011
13352
|
await this._switch(targetDefinition);
|
|
13012
13353
|
return targetDefinition;
|
|
13013
13354
|
}
|
|
13355
|
+
/**
|
|
13356
|
+
* @brief 调用此方法更新拉流地址列表。
|
|
13357
|
+
* @param playlist 要更新的播放列表。
|
|
13358
|
+
* @param target 更新后默认播放的资源。
|
|
13359
|
+
*/
|
|
13014
13360
|
updatePlaylist(playlist, target) {
|
|
13015
13361
|
const sourceManager = this._sourceManager.updateSources(playlist, target);
|
|
13016
13362
|
return this._switch(sourceManager.definition);
|
|
13017
13363
|
}
|
|
13018
13364
|
// TODO: 等西瓜播放器完善错误码后增加函数重载以提供更好的类型
|
|
13019
|
-
|
|
13365
|
+
/**
|
|
13366
|
+
* @brief 调用此方法监听指定事件,事件处理函数只执行一次。
|
|
13367
|
+
* @param event 表示事件的名称。
|
|
13368
|
+
* @param callback 表示事件的名称。
|
|
13369
|
+
*/
|
|
13370
|
+
once(event, callback) {
|
|
13020
13371
|
var _a;
|
|
13021
13372
|
const { xgCallback, xgEventName } = this._transformEvent(event, callback);
|
|
13022
13373
|
if (xgCallback) {
|
|
@@ -13024,27 +13375,45 @@ var __publicField = (obj, key, value) => {
|
|
|
13024
13375
|
this._events[event] = /* @__PURE__ */ new Map();
|
|
13025
13376
|
}
|
|
13026
13377
|
this._events[event].set(callback, xgCallback);
|
|
13027
|
-
this._player.once(xgEventName, xgCallback
|
|
13378
|
+
this._player.once(xgEventName, xgCallback);
|
|
13028
13379
|
}
|
|
13029
13380
|
}
|
|
13030
|
-
|
|
13381
|
+
/**
|
|
13382
|
+
* @brief 调用此方法解绑或移除指定事件的事件监听。
|
|
13383
|
+
* @param event 表示事件的名称。
|
|
13384
|
+
* @param callback 表示事件的名称。
|
|
13385
|
+
*/
|
|
13386
|
+
off(event, callback) {
|
|
13031
13387
|
var _a;
|
|
13032
13388
|
const xgCallback = (_a = this._events[event]) == null ? void 0 : _a.get(callback);
|
|
13033
13389
|
const { xgEventName } = this._transformEvent(event);
|
|
13034
13390
|
if (xgCallback) {
|
|
13035
|
-
this._player.off(xgEventName, xgCallback
|
|
13391
|
+
this._player.off(xgEventName, xgCallback);
|
|
13036
13392
|
this._events[event].delete(callback);
|
|
13037
13393
|
}
|
|
13038
13394
|
}
|
|
13039
|
-
|
|
13395
|
+
/**
|
|
13396
|
+
* @brief 调用此方法触发指定事件。
|
|
13397
|
+
* @param event 表示事件的名称。
|
|
13398
|
+
* @param data 事件信息。
|
|
13399
|
+
*/
|
|
13400
|
+
emit(event, data) {
|
|
13040
13401
|
const { xgEventName } = this._transformEvent(event);
|
|
13041
|
-
this._player.emit(xgEventName, data
|
|
13402
|
+
this._player.emit(xgEventName, data);
|
|
13042
13403
|
}
|
|
13404
|
+
/**
|
|
13405
|
+
* @brief 调用此方法解绑或移除指定事件的所有事件监听。
|
|
13406
|
+
*/
|
|
13043
13407
|
offAll() {
|
|
13044
13408
|
this._events = {};
|
|
13045
13409
|
this._player.offAll();
|
|
13046
13410
|
}
|
|
13047
|
-
|
|
13411
|
+
/**
|
|
13412
|
+
* @brief 调用此方法监听指定事件。
|
|
13413
|
+
* @param event 事件。
|
|
13414
|
+
* @param callback 事件回调。
|
|
13415
|
+
*/
|
|
13416
|
+
on(event, callback) {
|
|
13048
13417
|
var _a;
|
|
13049
13418
|
const { xgCallback, xgEventName } = this._transformEvent(event, callback);
|
|
13050
13419
|
if (xgCallback) {
|
|
@@ -13052,56 +13421,105 @@ var __publicField = (obj, key, value) => {
|
|
|
13052
13421
|
this._events[event] = /* @__PURE__ */ new Map();
|
|
13053
13422
|
}
|
|
13054
13423
|
this._events[event].set(callback, xgCallback);
|
|
13055
|
-
this._player.on(xgEventName, xgCallback
|
|
13424
|
+
this._player.on(xgEventName, xgCallback);
|
|
13056
13425
|
}
|
|
13057
13426
|
}
|
|
13427
|
+
/**
|
|
13428
|
+
* @brief 调用此方法开始播放 。
|
|
13429
|
+
*/
|
|
13058
13430
|
play() {
|
|
13059
13431
|
/* istanbul ignore next -- @preserve */
|
|
13060
13432
|
return this._player.play();
|
|
13061
13433
|
}
|
|
13434
|
+
/**
|
|
13435
|
+
* @brief 调用此方法暂停播放。
|
|
13436
|
+
*/
|
|
13062
13437
|
pause() {
|
|
13063
13438
|
/* istanbul ignore next -- @preserve */
|
|
13064
13439
|
return this._player.pause();
|
|
13065
13440
|
}
|
|
13441
|
+
/**
|
|
13442
|
+
* @brief 调用此方法打开画中画。
|
|
13443
|
+
*/
|
|
13066
13444
|
requestPIP() {
|
|
13067
13445
|
var _a;
|
|
13068
13446
|
/* istanbul ignore next -- @preserve */
|
|
13069
13447
|
(_a = this._player.plugins.pip) == null ? void 0 : _a.requestPIP();
|
|
13070
13448
|
}
|
|
13449
|
+
/**
|
|
13450
|
+
* @brief 调用此方法关闭画中画。
|
|
13451
|
+
*/
|
|
13071
13452
|
exitPIP() {
|
|
13072
13453
|
var _a;
|
|
13073
13454
|
/* istanbul ignore next -- @preserve */
|
|
13074
13455
|
(_a = this._player.plugins.pip) == null ? void 0 : _a.exitPIP();
|
|
13075
13456
|
}
|
|
13457
|
+
/**
|
|
13458
|
+
* @brief 调用此方法重新拉流。
|
|
13459
|
+
*/
|
|
13076
13460
|
retry() {
|
|
13077
|
-
this._player.emit(Events$1.RETRY);
|
|
13078
13461
|
return this._player.retry();
|
|
13079
13462
|
}
|
|
13463
|
+
/**
|
|
13464
|
+
* @brief 播放器获取焦点,调用该方法 `veplayer.isFocused` 将会变为 `true`,并触发 `PLAYER_FOCUS` 事件。
|
|
13465
|
+
* @param data 播放器获取焦点配置信息。
|
|
13466
|
+
*/
|
|
13080
13467
|
focus(data) {
|
|
13081
13468
|
return this._player.focus(data);
|
|
13082
13469
|
}
|
|
13470
|
+
/**
|
|
13471
|
+
* @brief 播放器失去焦点,调用该方法 `veplayer.isFocused` 将会变为 `false`,并触发 `PLAYER_BLUR` 事件。
|
|
13472
|
+
* @param data 播放器失去焦点配置信息。
|
|
13473
|
+
*/
|
|
13083
13474
|
blur(data) {
|
|
13084
13475
|
return this._player.blur(data);
|
|
13085
13476
|
}
|
|
13086
|
-
|
|
13477
|
+
/**
|
|
13478
|
+
* @brief 调用此方法进入系统全屏状态。如果该方法调用的时候处于网页全屏状态会自动退出网页全屏,下发事件 `Events.FULLSCREEN_CHANGE`。
|
|
13479
|
+
* @param el 全屏作用的 DOM 节点。
|
|
13480
|
+
*/
|
|
13481
|
+
requestFullscreen(el) {
|
|
13087
13482
|
return this._player.getFullscreen(el);
|
|
13088
13483
|
}
|
|
13484
|
+
/**
|
|
13485
|
+
* @brief 调用此方法退出系统全屏状态,调用该方法 `veplayer.isFullscreen` 将会变为 `false`,并触发 `Events.FULLSCREEN_CHANGE` 事件。
|
|
13486
|
+
* @param el 全屏作用的 DOM 节点。
|
|
13487
|
+
*/
|
|
13089
13488
|
exitFullscreen(el) {
|
|
13090
13489
|
return this._player.exitFullscreen(el);
|
|
13091
13490
|
}
|
|
13092
|
-
|
|
13491
|
+
/**
|
|
13492
|
+
* @brief 调用此方法进入网页样式全屏状态,播放器进入网页全屏,利用 CSS 模拟实现全屏效果。如果该接口调用的时候处于全屏状态,会自动退出全屏,下发事件 `Events.CSS_FULLSCREEN_CHANGE`。
|
|
13493
|
+
* @param el 全屏作用的 DOM 节点。
|
|
13494
|
+
*/
|
|
13495
|
+
requestCssFullscreen(el) {
|
|
13093
13496
|
return this._player.getCssFullscreen(el);
|
|
13094
13497
|
}
|
|
13498
|
+
/**
|
|
13499
|
+
* @brief 调用此方法退出网页样式全屏状态。 调用该方法 `veplayer.isFullscreen` 将会变为 `false`,并触发 `Events.CSS_FULLSCREEN_CHANGE` 事件。
|
|
13500
|
+
*/
|
|
13095
13501
|
exitCssFullscreen() {
|
|
13096
13502
|
return this._player.exitCssFullscreen();
|
|
13097
13503
|
}
|
|
13504
|
+
/**
|
|
13505
|
+
* @brief 调用此方法在当前播放器上注册指定插件。
|
|
13506
|
+
* @param plugin 插件构造函数。
|
|
13507
|
+
* @param config 插件的配置列表。
|
|
13508
|
+
*/
|
|
13098
13509
|
registerPlugin(plugin, config) {
|
|
13099
13510
|
return this._player.registerPlugin(plugin, config);
|
|
13100
13511
|
}
|
|
13101
|
-
|
|
13102
|
-
|
|
13512
|
+
/**
|
|
13513
|
+
* @brief 调用此方法在当前播放器上销毁/注销指定插件。
|
|
13514
|
+
* @param plugin 插件实例或者插件名称。
|
|
13515
|
+
*/
|
|
13516
|
+
unRegisterPlugin(plugin) {
|
|
13517
|
+
return this._player.unRegisterPlugin(plugin);
|
|
13103
13518
|
}
|
|
13104
|
-
|
|
13519
|
+
/**
|
|
13520
|
+
* @brief 调用此接口显示指定插件图标。
|
|
13521
|
+
* @param pluginNames 插件名称
|
|
13522
|
+
*/
|
|
13105
13523
|
showIcon(pluginNames) {
|
|
13106
13524
|
const morePlugin = this._player.getPlugin("more");
|
|
13107
13525
|
pluginNames.forEach((pluginName) => {
|
|
@@ -13115,7 +13533,10 @@ var __publicField = (obj, key, value) => {
|
|
|
13115
13533
|
}
|
|
13116
13534
|
});
|
|
13117
13535
|
}
|
|
13118
|
-
|
|
13536
|
+
/**
|
|
13537
|
+
* @brief 调用此接口隐藏指定插件图标。
|
|
13538
|
+
* @param pluginNames 插件名称
|
|
13539
|
+
*/
|
|
13119
13540
|
hideIcon(pluginNames) {
|
|
13120
13541
|
const morePlugin = this._player.getPlugin("more");
|
|
13121
13542
|
pluginNames.forEach((pluginName) => {
|
|
@@ -13129,10 +13550,16 @@ var __publicField = (obj, key, value) => {
|
|
|
13129
13550
|
}
|
|
13130
13551
|
});
|
|
13131
13552
|
}
|
|
13553
|
+
/**
|
|
13554
|
+
* @brief 调用此方法销毁播放器实例。
|
|
13555
|
+
*/
|
|
13132
13556
|
destroy() {
|
|
13133
13557
|
this._player.off(ERROR, this._errorCallback);
|
|
13134
13558
|
this._player.destroy();
|
|
13135
13559
|
}
|
|
13560
|
+
/**
|
|
13561
|
+
* @hidden
|
|
13562
|
+
*/
|
|
13136
13563
|
async prepare(url) {
|
|
13137
13564
|
var _a, _b;
|
|
13138
13565
|
const result = await ((_a = this._preparePlugins) == null ? void 0 : _a.call(this, url));
|
|
@@ -13148,9 +13575,12 @@ var __publicField = (obj, key, value) => {
|
|
|
13148
13575
|
if (result == null ? void 0 : result.options) {
|
|
13149
13576
|
this._player.setConfig(result.options);
|
|
13150
13577
|
}
|
|
13151
|
-
return
|
|
13152
|
-
|
|
13153
|
-
|
|
13578
|
+
return {
|
|
13579
|
+
plugins: addedPlugins.map((plugin) => {
|
|
13580
|
+
return this._player.registerPlugin(plugin);
|
|
13581
|
+
}),
|
|
13582
|
+
options: result == null ? void 0 : result.options
|
|
13583
|
+
};
|
|
13154
13584
|
}
|
|
13155
13585
|
async _handleFallback(err) {
|
|
13156
13586
|
this._player.addClass(STATE_CLASS.ENTER);
|
|
@@ -13185,7 +13615,10 @@ var __publicField = (obj, key, value) => {
|
|
|
13185
13615
|
async _switch(targetDefinition) {
|
|
13186
13616
|
var _a, _b, _c, _d, _e, _f;
|
|
13187
13617
|
const preDefinition = clonedeep(this._sourceManager.definition);
|
|
13188
|
-
const newPlugins = await this.prepare(targetDefinition.url);
|
|
13618
|
+
const { plugins: newPlugins, options } = await this.prepare(targetDefinition.url) || {};
|
|
13619
|
+
if (options == null ? void 0 : options.url) {
|
|
13620
|
+
targetDefinition.url = options == null ? void 0 : options.url;
|
|
13621
|
+
}
|
|
13189
13622
|
this._sourceManager.switch(targetDefinition);
|
|
13190
13623
|
(_b = (_a = this._player) == null ? void 0 : _a.plugins) == null ? void 0 : _b.sources.renderItemList();
|
|
13191
13624
|
(_d = (_c = this._player) == null ? void 0 : _c.plugins) == null ? void 0 : _d.definition.renderItemList();
|
|
@@ -13201,11 +13634,13 @@ var __publicField = (obj, key, value) => {
|
|
|
13201
13634
|
}
|
|
13202
13635
|
}
|
|
13203
13636
|
async _switchUrl(url) {
|
|
13204
|
-
const newPlugins = await this.prepare(url);
|
|
13637
|
+
const { plugins: newPlugins, options } = await this.prepare(url) || {};
|
|
13638
|
+
const newUrl = (options == null ? void 0 : options.url) ?? url;
|
|
13639
|
+
this._sourceManager.updateSources(newUrl);
|
|
13205
13640
|
if (newPlugins == null ? void 0 : newPlugins.length) {
|
|
13206
|
-
this._callBeforePlayerInitForUrl(newPlugins,
|
|
13641
|
+
this._callBeforePlayerInitForUrl(newPlugins, newUrl);
|
|
13207
13642
|
} else {
|
|
13208
|
-
const res = this._player.switchURL(
|
|
13643
|
+
const res = this._player.switchURL(newUrl, false);
|
|
13209
13644
|
const curTime = this._player.currentTime;
|
|
13210
13645
|
if (res && res.then) {
|
|
13211
13646
|
return res;
|
|
@@ -17759,7 +18194,7 @@ var __publicField = (obj, key, value) => {
|
|
|
17759
18194
|
let mseStrategy;
|
|
17760
18195
|
let softStrategy;
|
|
17761
18196
|
const codec = await getCodec(options);
|
|
17762
|
-
const isSoftDecode$1 =
|
|
18197
|
+
const isSoftDecode$1 = await isSoftDecode(options, codec);
|
|
17763
18198
|
if (isSoftDecode$1) {
|
|
17764
18199
|
softStrategy = codec === Codec.H265 ? createSoftDecodeH265Strategy() : createSoftDecodeH264Strategy();
|
|
17765
18200
|
mseStrategy = createFlvMseStrategy(options);
|
|
@@ -17786,7 +18221,7 @@ var __publicField = (obj, key, value) => {
|
|
|
17786
18221
|
let mseStrategy;
|
|
17787
18222
|
let softStrategy;
|
|
17788
18223
|
const codec = await getCodec(options);
|
|
17789
|
-
const isSoftDecode$1 =
|
|
18224
|
+
const isSoftDecode$1 = await isSoftDecode(options, codec);
|
|
17790
18225
|
if (isSoftDecode$1) {
|
|
17791
18226
|
softStrategy = codec === Codec.H265 ? createSoftDecodeH265Strategy() : createSoftDecodeH264Strategy();
|
|
17792
18227
|
mseStrategy = createHlsMseStrategy(options);
|
|
@@ -17892,10 +18327,13 @@ var __publicField = (obj, key, value) => {
|
|
|
17892
18327
|
return "unknown";
|
|
17893
18328
|
}
|
|
17894
18329
|
}
|
|
17895
|
-
async function isSoftDecode(options) {
|
|
18330
|
+
async function isSoftDecode(options, currentCodec) {
|
|
17896
18331
|
if (options.decodeType === DecodeType.Software) {
|
|
17897
18332
|
return true;
|
|
17898
18333
|
}
|
|
18334
|
+
if (currentCodec === "unknown") {
|
|
18335
|
+
return false;
|
|
18336
|
+
}
|
|
17899
18337
|
const codec = await getCodec(options);
|
|
17900
18338
|
if (codec === Codec.H265) {
|
|
17901
18339
|
if (sniffer$1.isHevcSupported()) {
|
|
@@ -17915,7 +18353,7 @@ var __publicField = (obj, key, value) => {
|
|
|
17915
18353
|
}
|
|
17916
18354
|
const { VeError } = error$1;
|
|
17917
18355
|
var LiveErrorCode = /* @__PURE__ */ ((LiveErrorCode2) => {
|
|
17918
|
-
LiveErrorCode2[LiveErrorCode2["INVALID_PARAMETER"] =
|
|
18356
|
+
LiveErrorCode2[LiveErrorCode2["INVALID_PARAMETER"] = 210] = "INVALID_PARAMETER";
|
|
17919
18357
|
return LiveErrorCode2;
|
|
17920
18358
|
})(LiveErrorCode || {});
|
|
17921
18359
|
const ErrorCode = {
|
|
@@ -17925,7 +18363,7 @@ var __publicField = (obj, key, value) => {
|
|
|
17925
18363
|
const ERRORS = {
|
|
17926
18364
|
...ERROR_INFO,
|
|
17927
18365
|
[
|
|
17928
|
-
|
|
18366
|
+
210
|
|
17929
18367
|
/* INVALID_PARAMETER */
|
|
17930
18368
|
]: {
|
|
17931
18369
|
messageTextKey: "INVALID_PARAMETER",
|
|
@@ -17935,15 +18373,34 @@ var __publicField = (obj, key, value) => {
|
|
|
17935
18373
|
function create(errorCode, i18n) {
|
|
17936
18374
|
return new VeError(ERRORS[errorCode], i18n);
|
|
17937
18375
|
}
|
|
18376
|
+
async function isRTMSupported() {
|
|
18377
|
+
const Rtm = await load(DynamicModule.PluginRtm);
|
|
18378
|
+
return Rtm.isSupported();
|
|
18379
|
+
}
|
|
18380
|
+
async function isRTMSupportCodec(codec = RTMCodec.H264) {
|
|
18381
|
+
const Rtm = await load(DynamicModule.PluginRtm);
|
|
18382
|
+
if (codec === RTMCodec.H264)
|
|
18383
|
+
return Rtm.isSupportedH264();
|
|
18384
|
+
return false;
|
|
18385
|
+
}
|
|
17938
18386
|
const rtmStrategy = {
|
|
17939
18387
|
options: {},
|
|
17940
18388
|
module: DynamicModule.PluginRtm
|
|
17941
18389
|
};
|
|
17942
|
-
const
|
|
18390
|
+
const generateFallbackUrl = (url) => {
|
|
18391
|
+
if (sniffer$1.device === "pc") {
|
|
18392
|
+
return url.replace(".sdp", ".flv");
|
|
18393
|
+
} else {
|
|
18394
|
+
return url.replace(".sdp", ".m3u8");
|
|
18395
|
+
}
|
|
18396
|
+
};
|
|
18397
|
+
const getRtmStrategy = async (options, player) => {
|
|
17943
18398
|
var _a;
|
|
17944
18399
|
let backupStrategy;
|
|
17945
|
-
const {
|
|
17946
|
-
const
|
|
18400
|
+
const { url } = options;
|
|
18401
|
+
const { fallbackUrl, enableFallback = true, ...ret } = options.rtm || {};
|
|
18402
|
+
const actualFallbackUrl = !enableFallback ? "" : !fallbackUrl && url ? generateFallbackUrl(url) : fallbackUrl;
|
|
18403
|
+
const backupType = actualFallbackUrl && util.getStreamType(actualFallbackUrl);
|
|
17947
18404
|
if (backupType === "flv" && util.isMseSupported(Codec.H264)) {
|
|
17948
18405
|
backupStrategy = createFlvMseStrategy(options);
|
|
17949
18406
|
} else if (backupType === "hls" && (sniffer$1.device !== "mobile" || ((_a = options == null ? void 0 : options.hls) == null ? void 0 : _a.enableMSE)) && util.isMseSupported(Codec.H264)) {
|
|
@@ -17953,39 +18410,55 @@ var __publicField = (obj, key, value) => {
|
|
|
17953
18410
|
load(rtmStrategy.module).catch(() => void 0),
|
|
17954
18411
|
backupStrategy && load(backupStrategy.module).catch(() => void 0)
|
|
17955
18412
|
]);
|
|
18413
|
+
const [RTMSupported, RTMSupportCodec] = await Promise.all([
|
|
18414
|
+
isRTMSupported(),
|
|
18415
|
+
isRTMSupportCodec()
|
|
18416
|
+
]);
|
|
18417
|
+
if (!RTMSupported || !RTMSupportCodec) {
|
|
18418
|
+
if (player) {
|
|
18419
|
+
player.emit("degrade", {
|
|
18420
|
+
url: actualFallbackUrl,
|
|
18421
|
+
originRtmUrl: url,
|
|
18422
|
+
code: "NOT_SUPPORT",
|
|
18423
|
+
message: "not support rtm or h264",
|
|
18424
|
+
isRTMSupported: RTMSupported,
|
|
18425
|
+
isRTMSupportCodec: RTMSupportCodec
|
|
18426
|
+
});
|
|
18427
|
+
}
|
|
18428
|
+
return {
|
|
18429
|
+
options: {
|
|
18430
|
+
...(backupStrategy == null ? void 0 : backupStrategy.options) || {},
|
|
18431
|
+
url: actualFallbackUrl,
|
|
18432
|
+
_RTMdegrade: {
|
|
18433
|
+
_originRtmUrl: url,
|
|
18434
|
+
_isRTMSupported: RTMSupported,
|
|
18435
|
+
_isRTMSupportCodec: RTMSupportCodec
|
|
18436
|
+
}
|
|
18437
|
+
},
|
|
18438
|
+
plugins: backupCdn ? [backupCdn] : []
|
|
18439
|
+
};
|
|
18440
|
+
}
|
|
17956
18441
|
return {
|
|
17957
18442
|
options: {
|
|
17958
18443
|
...(backupStrategy == null ? void 0 : backupStrategy.options) || {},
|
|
18444
|
+
_RTMdegrade: void 0,
|
|
17959
18445
|
rts: {
|
|
17960
18446
|
retryCount: 0,
|
|
17961
18447
|
...ret,
|
|
17962
|
-
backupURL:
|
|
18448
|
+
backupURL: actualFallbackUrl,
|
|
17963
18449
|
backupConstruct: backupCdn
|
|
17964
18450
|
}
|
|
17965
18451
|
},
|
|
17966
18452
|
plugins: rtmCdn ? [rtmCdn] : []
|
|
17967
18453
|
};
|
|
17968
18454
|
};
|
|
17969
|
-
|
|
17970
|
-
RTMCodec2["H264"] = "h264";
|
|
17971
|
-
return RTMCodec2;
|
|
17972
|
-
})(RTMCodec || {});
|
|
17973
|
-
const isRTMSupported = async () => {
|
|
17974
|
-
const Rtm = await load(DynamicModule.PluginRtm);
|
|
17975
|
-
return Rtm.isSupported();
|
|
17976
|
-
};
|
|
17977
|
-
const isRTMSupportCodec = async (codec = "h264", options) => {
|
|
17978
|
-
const Rtm = await load(DynamicModule.PluginRtm);
|
|
17979
|
-
if (codec === "h264")
|
|
17980
|
-
return Rtm.isSupportedH264(options == null ? void 0 : options.targetProfileLevel);
|
|
17981
|
-
};
|
|
17982
|
-
const getTypeStrategy = async (options) => {
|
|
18455
|
+
const getTypeStrategy = async (options, player) => {
|
|
17983
18456
|
const type = options.url ? util.getStreamType(options.url) : "";
|
|
17984
18457
|
if (!type || type === "unknown") {
|
|
17985
18458
|
return { options: {}, plugins: [] };
|
|
17986
18459
|
}
|
|
17987
18460
|
if (type === "rtm") {
|
|
17988
|
-
return await getRtmStrategy(options);
|
|
18461
|
+
return await getRtmStrategy(options, player);
|
|
17989
18462
|
}
|
|
17990
18463
|
if (type === "flv") {
|
|
17991
18464
|
return await getFlvStrategy(options);
|
|
@@ -18433,9 +18906,9 @@ var __publicField = (obj, key, value) => {
|
|
|
18433
18906
|
function isCodecSupport(codec) {
|
|
18434
18907
|
return typeof MediaSource !== "undefined" ? +MediaSource.isTypeSupported("video/mp4; codecs=" + codec) : 0;
|
|
18435
18908
|
}
|
|
18436
|
-
function getUrlQuery(url, key) {
|
|
18909
|
+
function getUrlQuery(url, key, key2) {
|
|
18437
18910
|
var x2 = new URLSearchParams(url.split("?")[1]);
|
|
18438
|
-
return x2.get(key);
|
|
18911
|
+
return x2.get(key) || x2.get(key2);
|
|
18439
18912
|
}
|
|
18440
18913
|
function getDeviceInfo() {
|
|
18441
18914
|
var res = {
|
|
@@ -18462,19 +18935,11 @@ var __publicField = (obj, key, value) => {
|
|
|
18462
18935
|
return player.plugins.hls;
|
|
18463
18936
|
} else if (player.plugins.rts) {
|
|
18464
18937
|
return player.plugins.rts;
|
|
18465
|
-
} else if (player.plugins.
|
|
18466
|
-
return player.plugins.
|
|
18467
|
-
} else if (player.plugins.hlslive) {
|
|
18468
|
-
return player.plugins.hlslive;
|
|
18469
|
-
} else if (player.plugins.hlsvod) {
|
|
18470
|
-
return player.plugins.hlsvod;
|
|
18471
|
-
} else if (player.plugins.hlslivemobile) {
|
|
18472
|
-
return player.plugins.hlslivemobile;
|
|
18473
|
-
} else if (player.plugins.flvlivemobile) {
|
|
18474
|
-
return player.plugins.flvlivemobile;
|
|
18938
|
+
} else if (player.plugins.rtm) {
|
|
18939
|
+
return player.plugins.rtm;
|
|
18475
18940
|
}
|
|
18476
18941
|
}
|
|
18477
|
-
return
|
|
18942
|
+
return null;
|
|
18478
18943
|
}
|
|
18479
18944
|
function getDefaultOptions(options) {
|
|
18480
18945
|
return {
|
|
@@ -18703,7 +19168,7 @@ var __publicField = (obj, key, value) => {
|
|
|
18703
19168
|
live_sdk_version: getPlayerCore(player) || player.hlsOps ? "2" : "-1",
|
|
18704
19169
|
player_sdk_version: player.version,
|
|
18705
19170
|
// eslint-disable-next-line no-undef
|
|
18706
|
-
logger_version: "1.1.0-alpha.
|
|
19171
|
+
logger_version: "1.1.0-alpha.7",
|
|
18707
19172
|
// 由rollup 在编译时注入
|
|
18708
19173
|
report_version: "5",
|
|
18709
19174
|
product_line: options.product_line,
|
|
@@ -18827,9 +19292,13 @@ var __publicField = (obj, key, value) => {
|
|
|
18827
19292
|
if (this._player.video) {
|
|
18828
19293
|
log.play_current_time = this._player.currentTime;
|
|
18829
19294
|
}
|
|
18830
|
-
|
|
18831
|
-
|
|
18832
|
-
|
|
19295
|
+
if (this.core && this.core.loader && this.core.loader.finnalUrl) {
|
|
19296
|
+
log.cdn_play_url = this.core.loader.finnalUrl;
|
|
19297
|
+
} else {
|
|
19298
|
+
log.cdn_play_url = url && url.startsWith("//") ? window.location.protocol + url : url;
|
|
19299
|
+
}
|
|
19300
|
+
log.live_stream_session_id = getUrlQuery(log.cdn_play_url, "_session_id", "session_id");
|
|
19301
|
+
log.play_format = getPlayFormat(log.cdn_play_url);
|
|
18833
19302
|
log.timestamp = getCurrentTime();
|
|
18834
19303
|
var _getDeviceInfo = getDeviceInfo(), cpu_core_number = _getDeviceInfo.cpu_core_number, memory_usage = _getDeviceInfo.memory_usage, network_downlink = _getDeviceInfo.network_downlink;
|
|
18835
19304
|
log.cpu_core_number = cpu_core_number;
|
|
@@ -19055,6 +19524,11 @@ var __publicField = (obj, key, value) => {
|
|
|
19055
19524
|
};
|
|
19056
19525
|
_proto2.reportStartPlay = function reportStartPlay() {
|
|
19057
19526
|
if (!this.started) {
|
|
19527
|
+
this.core = getPlayerCore(this.player);
|
|
19528
|
+
if (this.core) {
|
|
19529
|
+
this.commonParams.live_sdk_version = "2";
|
|
19530
|
+
this.logmanager.core = this.core;
|
|
19531
|
+
}
|
|
19058
19532
|
this.started = true;
|
|
19059
19533
|
this.log.start_play.start_play_time = this.log.start_play.timestamp = getCurrentTime();
|
|
19060
19534
|
this.logmanager.push(this.log.start_play, true);
|
|
@@ -19319,6 +19793,7 @@ var __publicField = (obj, key, value) => {
|
|
|
19319
19793
|
this.core = getPlayerCore(this.player);
|
|
19320
19794
|
if (this.core) {
|
|
19321
19795
|
this.commonParams.live_sdk_version = "2";
|
|
19796
|
+
this.logmanager.core = this.core;
|
|
19322
19797
|
}
|
|
19323
19798
|
if (this.player.config.autoplay || this.player.config.videoInit) {
|
|
19324
19799
|
this.reportStartPlay();
|
|
@@ -20571,6 +21046,45 @@ var __publicField = (obj, key, value) => {
|
|
|
20571
21046
|
this.event("predefine_pageview", n2);
|
|
20572
21047
|
}, t2;
|
|
20573
21048
|
}(), q = new R("default");
|
|
21049
|
+
let getRandomValues;
|
|
21050
|
+
const rnds8 = new Uint8Array(16);
|
|
21051
|
+
function rng() {
|
|
21052
|
+
if (!getRandomValues) {
|
|
21053
|
+
getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
|
|
21054
|
+
if (!getRandomValues) {
|
|
21055
|
+
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
21056
|
+
}
|
|
21057
|
+
}
|
|
21058
|
+
return getRandomValues(rnds8);
|
|
21059
|
+
}
|
|
21060
|
+
const byteToHex = [];
|
|
21061
|
+
for (let i2 = 0; i2 < 256; ++i2) {
|
|
21062
|
+
byteToHex.push((i2 + 256).toString(16).slice(1));
|
|
21063
|
+
}
|
|
21064
|
+
function unsafeStringify(arr, offset = 0) {
|
|
21065
|
+
return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
|
|
21066
|
+
}
|
|
21067
|
+
const randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
|
|
21068
|
+
var native = {
|
|
21069
|
+
randomUUID
|
|
21070
|
+
};
|
|
21071
|
+
function v4(options, buf, offset) {
|
|
21072
|
+
if (native.randomUUID && !buf && !options) {
|
|
21073
|
+
return native.randomUUID();
|
|
21074
|
+
}
|
|
21075
|
+
options = options || {};
|
|
21076
|
+
const rnds = options.random || (options.rng || rng)();
|
|
21077
|
+
rnds[6] = rnds[6] & 15 | 64;
|
|
21078
|
+
rnds[8] = rnds[8] & 63 | 128;
|
|
21079
|
+
if (buf) {
|
|
21080
|
+
offset = offset || 0;
|
|
21081
|
+
for (let i2 = 0; i2 < 16; ++i2) {
|
|
21082
|
+
buf[offset + i2] = rnds[i2];
|
|
21083
|
+
}
|
|
21084
|
+
return buf;
|
|
21085
|
+
}
|
|
21086
|
+
return unsafeStringify(rnds);
|
|
21087
|
+
}
|
|
20574
21088
|
const DEVICE_ID_KEY = "veplayer_live_device_id";
|
|
20575
21089
|
const USER_ID_Key = "veplayer_live_user_id";
|
|
20576
21090
|
const genRandomID = (length) => {
|
|
@@ -20596,6 +21110,45 @@ var __publicField = (obj, key, value) => {
|
|
|
20596
21110
|
localStorage.setItem(USER_ID_Key, userId);
|
|
20597
21111
|
return userId;
|
|
20598
21112
|
};
|
|
21113
|
+
const generateUrlWithSessionId = (url) => {
|
|
21114
|
+
var _a, _b;
|
|
21115
|
+
if (!url) {
|
|
21116
|
+
return "";
|
|
21117
|
+
}
|
|
21118
|
+
const withoutProtocol = url.startsWith("//");
|
|
21119
|
+
if (withoutProtocol) {
|
|
21120
|
+
url = location.protocol + url;
|
|
21121
|
+
}
|
|
21122
|
+
try {
|
|
21123
|
+
const urlObject = new URL(url);
|
|
21124
|
+
if ((_a = urlObject == null ? void 0 : urlObject.searchParams) == null ? void 0 : _a.get("_session_id")) {
|
|
21125
|
+
return url;
|
|
21126
|
+
}
|
|
21127
|
+
(_b = urlObject == null ? void 0 : urlObject.searchParams) == null ? void 0 : _b.append("_session_id", generateSessionId());
|
|
21128
|
+
return urlObject.toString();
|
|
21129
|
+
} catch (error2) {
|
|
21130
|
+
return url;
|
|
21131
|
+
}
|
|
21132
|
+
};
|
|
21133
|
+
const hashCode = (str) => {
|
|
21134
|
+
str += "";
|
|
21135
|
+
let h2 = 0;
|
|
21136
|
+
let off = 0;
|
|
21137
|
+
const len = str.length;
|
|
21138
|
+
for (let i2 = 0; i2 < len; i2++) {
|
|
21139
|
+
h2 = 31 * h2 + str.charCodeAt(off++);
|
|
21140
|
+
if (h2 > 140737488355327 || h2 < -140737488355328) {
|
|
21141
|
+
h2 &= 281474976710655;
|
|
21142
|
+
}
|
|
21143
|
+
}
|
|
21144
|
+
if (h2 < 0) {
|
|
21145
|
+
h2 += 2251799813685247;
|
|
21146
|
+
}
|
|
21147
|
+
return h2;
|
|
21148
|
+
};
|
|
21149
|
+
const generateSessionId = () => {
|
|
21150
|
+
return v4().replace(/-/g, "") + "." + Date.now() + "." + hashCode(v4().replace(/-/g, ""));
|
|
21151
|
+
};
|
|
20599
21152
|
const CN_APPID = 468759;
|
|
20600
21153
|
const CHANNEL = "cn";
|
|
20601
21154
|
const CHANNEL_DOMAIN = "//mcs.volceapplog.com";
|
|
@@ -20674,10 +21227,10 @@ var __publicField = (obj, key, value) => {
|
|
|
20674
21227
|
user_id: this._userId,
|
|
20675
21228
|
device_id: this._deviceId,
|
|
20676
21229
|
ext: {
|
|
20677
|
-
veplayer_version: "2.
|
|
20678
|
-
flv_version: "3.0.
|
|
20679
|
-
hls_version: "3.0.
|
|
20680
|
-
rts_version: "0.2.0-alpha.
|
|
21230
|
+
veplayer_version: "2.1.0-rc.0",
|
|
21231
|
+
flv_version: "3.0.10-alpha.4",
|
|
21232
|
+
hls_version: "3.0.10-alpha.4",
|
|
21233
|
+
rts_version: "0.2.0-alpha.5"
|
|
20681
21234
|
}
|
|
20682
21235
|
});
|
|
20683
21236
|
}
|
|
@@ -20954,25 +21507,51 @@ var __publicField = (obj, key, value) => {
|
|
|
20954
21507
|
autoplay: { muted: true }
|
|
20955
21508
|
};
|
|
20956
21509
|
const LIVE_DEFAULT_PLUGINS = [...DEFAULT_PLUGINS, Refresh, Logger, InfoPanel];
|
|
21510
|
+
var RTMCodec = /* @__PURE__ */ ((RTMCodec2) => {
|
|
21511
|
+
RTMCodec2["H264"] = "h264";
|
|
21512
|
+
return RTMCodec2;
|
|
21513
|
+
})(RTMCodec || {});
|
|
20957
21514
|
class VePlayerLive extends VePlayerBase {
|
|
21515
|
+
/**
|
|
21516
|
+
* @hidden
|
|
21517
|
+
* @param options
|
|
21518
|
+
*/
|
|
21519
|
+
constructor(options) {
|
|
21520
|
+
super(options);
|
|
21521
|
+
}
|
|
21522
|
+
/** {zh}
|
|
21523
|
+
* @brief 调用此方法开启直播日志上报。
|
|
21524
|
+
*/
|
|
20958
21525
|
openLog() {
|
|
20959
21526
|
var _a;
|
|
20960
21527
|
(_a = this._player.plugins) == null ? void 0 : _a.logger.open();
|
|
20961
21528
|
}
|
|
21529
|
+
/** {zh}
|
|
21530
|
+
* @brief 调用此方法关闭直播日志上报。
|
|
21531
|
+
*/
|
|
20962
21532
|
closeLog() {
|
|
20963
21533
|
var _a;
|
|
20964
21534
|
(_a = this._player.plugins) == null ? void 0 : _a.logger.close();
|
|
20965
21535
|
}
|
|
21536
|
+
/** {zh}
|
|
21537
|
+
* @brief 调用此方法将打开直播信息面板,面板将展示拉流格式、帧率、码率、GOP、视频分辨率、编码方式、Buffer 水位、播放进度等基础信息。如果当前是软解,还会显示软解解码效率和解码消耗。
|
|
21538
|
+
*/
|
|
20966
21539
|
openInfoPanel() {
|
|
20967
21540
|
var _a;
|
|
20968
21541
|
(_a = this._player.plugins) == null ? void 0 : _a.infopanel.open();
|
|
20969
21542
|
}
|
|
21543
|
+
/** {zh}
|
|
21544
|
+
* @brief 调用此方法关闭直播信息面板。
|
|
21545
|
+
*
|
|
21546
|
+
*/
|
|
20970
21547
|
closeInfoPanel() {
|
|
20971
21548
|
var _a;
|
|
20972
21549
|
(_a = this._player.plugins) == null ? void 0 : _a.infopanel.close();
|
|
20973
21550
|
}
|
|
20974
21551
|
}
|
|
20975
21552
|
async function createLivePlayer(options) {
|
|
21553
|
+
var _a, _b;
|
|
21554
|
+
let player = void 0;
|
|
20976
21555
|
if (!options || !options.url && !options.playlist) {
|
|
20977
21556
|
throw create(ErrorCode.INVALID_PARAMETER, new VeI18n());
|
|
20978
21557
|
}
|
|
@@ -20981,18 +21560,35 @@ var __publicField = (obj, key, value) => {
|
|
|
20981
21560
|
...options,
|
|
20982
21561
|
plugins: [...LIVE_DEFAULT_PLUGINS, ...options.plugins ?? []]
|
|
20983
21562
|
};
|
|
20984
|
-
|
|
21563
|
+
player = await VePlayerBase.create(
|
|
20985
21564
|
{
|
|
20986
21565
|
...LIVE_DEFAULT_OPTIONS,
|
|
20987
21566
|
...finalOptions,
|
|
20988
21567
|
isLive: true,
|
|
20989
21568
|
i18nManager: i18n,
|
|
21569
|
+
preProcessUrl: (url) => {
|
|
21570
|
+
return {
|
|
21571
|
+
url: generateUrlWithSessionId(url)
|
|
21572
|
+
};
|
|
21573
|
+
},
|
|
20990
21574
|
async preparePlugins(url) {
|
|
20991
|
-
return getTypeStrategy({ ...finalOptions, url });
|
|
21575
|
+
return getTypeStrategy({ ...finalOptions, url }, player);
|
|
20992
21576
|
}
|
|
20993
21577
|
},
|
|
20994
21578
|
VePlayerLive
|
|
20995
21579
|
);
|
|
21580
|
+
if (player) {
|
|
21581
|
+
const RTMDegrade = (_b = (_a = player == null ? void 0 : player._player) == null ? void 0 : _a.config) == null ? void 0 : _b._RTMdegrade;
|
|
21582
|
+
if (RTMDegrade) {
|
|
21583
|
+
player.emit("degrade", {
|
|
21584
|
+
originRtmUrl: RTMDegrade._originRtmUrl,
|
|
21585
|
+
code: "NOT_SUPPORT",
|
|
21586
|
+
message: "not support rtm or h264",
|
|
21587
|
+
isRTMSupported: RTMDegrade._isRTMSupported,
|
|
21588
|
+
isRTMSupportCodec: RTMDegrade._isRTMSupportCodec
|
|
21589
|
+
});
|
|
21590
|
+
}
|
|
21591
|
+
}
|
|
20996
21592
|
return player;
|
|
20997
21593
|
}
|
|
20998
21594
|
var live = /* @__PURE__ */ Object.freeze({
|