@video-supply/dahua-player 0.1.3 → 0.1.5
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 +54 -4
- package/README.zh-CN.md +54 -2
- package/dist/index.cjs +216 -146
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -1
- package/dist/index.d.ts +17 -1
- package/dist/index.js +216 -146
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -713,6 +713,64 @@ var PlayerAdapter = class {
|
|
|
713
713
|
}
|
|
714
714
|
};
|
|
715
715
|
|
|
716
|
+
// src/sdk/PlaybackTime.ts
|
|
717
|
+
function extractPlaybackTimeMsFromFrameInfo(data) {
|
|
718
|
+
const vf = data && typeof data === "object" ? data.videoFrameInfo : void 0;
|
|
719
|
+
const utcMsRaw = vf && typeof vf === "object" ? vf.utcTimeStamp : void 0;
|
|
720
|
+
const secRaw = data && typeof data === "object" ? data.timeStamp : void 0;
|
|
721
|
+
const utcMs = typeof utcMsRaw === "number" && Number.isFinite(utcMsRaw) ? Math.floor(utcMsRaw) : null;
|
|
722
|
+
const sec = typeof secRaw === "number" && Number.isFinite(secRaw) ? Math.floor(secRaw) : null;
|
|
723
|
+
const baseMs = utcMs != null ? utcMs : sec != null ? sec * 1e3 : null;
|
|
724
|
+
if (baseMs == null) return null;
|
|
725
|
+
const shouldApplySubMs = utcMs == null ? true : utcMs % 1e3 === 0;
|
|
726
|
+
if (!shouldApplySubMs) return baseMs;
|
|
727
|
+
const nTimeStampRaw = vf && typeof vf === "object" ? vf.nTimeStamp : void 0;
|
|
728
|
+
if (typeof nTimeStampRaw !== "number" || !Number.isFinite(nTimeStampRaw)) return baseMs;
|
|
729
|
+
const sub = (Math.floor(nTimeStampRaw) % 1e3 + 1e3) % 1e3;
|
|
730
|
+
return baseMs + sub;
|
|
731
|
+
}
|
|
732
|
+
function buildPlaybackTimePayloadFromFrameInfo(data) {
|
|
733
|
+
var _a;
|
|
734
|
+
const timeMs = extractPlaybackTimeMsFromFrameInfo(data);
|
|
735
|
+
if (timeMs == null) return null;
|
|
736
|
+
const secRaw = data && typeof data === "object" ? data.timeStamp : void 0;
|
|
737
|
+
const timeSec = typeof secRaw === "number" && Number.isFinite(secRaw) ? Math.floor(secRaw) : Math.floor(timeMs / 1e3);
|
|
738
|
+
const idxRaw = data && typeof data === "object" ? data.selectIndex : void 0;
|
|
739
|
+
const windowIndex = typeof idxRaw === "number" && Number.isFinite(idxRaw) ? Math.floor(idxRaw) : void 0;
|
|
740
|
+
const channelCodeRaw = data && typeof data === "object" ? (_a = data.channelData) == null ? void 0 : _a.channelCode : void 0;
|
|
741
|
+
const channelCode = typeof channelCodeRaw === "string" ? channelCodeRaw : void 0;
|
|
742
|
+
return { timeMs, timeSec, windowIndex, channelCode, raw: data };
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
// src/sdk/DateTime.ts
|
|
746
|
+
function parseDateTimeToMs(datetime) {
|
|
747
|
+
if (typeof datetime === "number") {
|
|
748
|
+
if (!Number.isFinite(datetime)) return NaN;
|
|
749
|
+
return Math.floor(datetime > 1e12 ? datetime : datetime * 1e3);
|
|
750
|
+
}
|
|
751
|
+
if (datetime instanceof Date) {
|
|
752
|
+
const ms2 = datetime.getTime();
|
|
753
|
+
return Number.isFinite(ms2) ? Math.floor(ms2) : NaN;
|
|
754
|
+
}
|
|
755
|
+
const raw = (datetime || "").trim();
|
|
756
|
+
if (!raw) return NaN;
|
|
757
|
+
const v = raw.includes("T") ? raw : raw.replace(" ", "T");
|
|
758
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})$/.exec(v);
|
|
759
|
+
if (!m) {
|
|
760
|
+
const ms2 = new Date(v).getTime();
|
|
761
|
+
return Number.isFinite(ms2) ? Math.floor(ms2) : NaN;
|
|
762
|
+
}
|
|
763
|
+
const y = Number(m[1]);
|
|
764
|
+
const mon = Number(m[2]);
|
|
765
|
+
const d = Number(m[3]);
|
|
766
|
+
const hh = Number(m[4]);
|
|
767
|
+
const mm = Number(m[5]);
|
|
768
|
+
const ss = Number(m[6]);
|
|
769
|
+
const dt = new Date(y, mon - 1, d, hh, mm, ss, 0);
|
|
770
|
+
const ms = dt.getTime();
|
|
771
|
+
return Number.isFinite(ms) ? Math.floor(ms) : NaN;
|
|
772
|
+
}
|
|
773
|
+
|
|
716
774
|
// src/DahuaPlayer.ts
|
|
717
775
|
function normalizeStaticPath(path) {
|
|
718
776
|
const raw = (path || "").trim();
|
|
@@ -884,6 +942,10 @@ var DahuaPlayer = class {
|
|
|
884
942
|
};
|
|
885
943
|
let readyReject = () => {
|
|
886
944
|
};
|
|
945
|
+
let lastPlaybackTimeMs = null;
|
|
946
|
+
let lastEmittedPlaybackTimeSec = null;
|
|
947
|
+
const jumpWaiters = [];
|
|
948
|
+
let jumpWaiterId = 0;
|
|
887
949
|
const safeOnError = (e) => {
|
|
888
950
|
var _a2;
|
|
889
951
|
try {
|
|
@@ -892,6 +954,29 @@ var DahuaPlayer = class {
|
|
|
892
954
|
}
|
|
893
955
|
emit(listeners, "error", e);
|
|
894
956
|
};
|
|
957
|
+
const createDestroyedError = () => new DahuaPlayerError({
|
|
958
|
+
code: "DESTROYED" /* DESTROYED */,
|
|
959
|
+
message: "destroyed",
|
|
960
|
+
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
961
|
+
});
|
|
962
|
+
const createNotReadyError = () => new DahuaPlayerError({
|
|
963
|
+
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
964
|
+
message: "player not ready",
|
|
965
|
+
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
966
|
+
});
|
|
967
|
+
const requireAdapter = () => {
|
|
968
|
+
if (destroyed) {
|
|
969
|
+
const err = createDestroyedError();
|
|
970
|
+
safeOnError(err);
|
|
971
|
+
throw err;
|
|
972
|
+
}
|
|
973
|
+
if (!adapter) {
|
|
974
|
+
const err = createNotReadyError();
|
|
975
|
+
safeOnError(err);
|
|
976
|
+
throw err;
|
|
977
|
+
}
|
|
978
|
+
return adapter;
|
|
979
|
+
};
|
|
895
980
|
const tryAutoPlay = () => {
|
|
896
981
|
if (!autoPlay) return;
|
|
897
982
|
if (mode === "real") {
|
|
@@ -965,11 +1050,41 @@ var DahuaPlayer = class {
|
|
|
965
1050
|
playerOptions: opts.playerOptions,
|
|
966
1051
|
debug: opts.debug,
|
|
967
1052
|
onMessage: (type, data) => {
|
|
968
|
-
var _a3;
|
|
1053
|
+
var _a3, _b2, _c2;
|
|
969
1054
|
try {
|
|
970
1055
|
(_a3 = opts.onSdkMessage) == null ? void 0 : _a3.call(opts, type, data);
|
|
971
1056
|
} catch {
|
|
972
1057
|
}
|
|
1058
|
+
if (type === "getVideoFrameInfo") {
|
|
1059
|
+
const payload = buildPlaybackTimePayloadFromFrameInfo(data);
|
|
1060
|
+
if (!payload) return;
|
|
1061
|
+
lastPlaybackTimeMs = payload.timeMs;
|
|
1062
|
+
if (payload.timeSec !== lastEmittedPlaybackTimeSec) {
|
|
1063
|
+
lastEmittedPlaybackTimeSec = payload.timeSec;
|
|
1064
|
+
try {
|
|
1065
|
+
(_b2 = opts.onPlaybackTime) == null ? void 0 : _b2.call(opts, payload);
|
|
1066
|
+
} catch {
|
|
1067
|
+
}
|
|
1068
|
+
emit(listeners, "playbackTime", payload);
|
|
1069
|
+
}
|
|
1070
|
+
if (jumpWaiters.length > 0) {
|
|
1071
|
+
for (let i = jumpWaiters.length - 1; i >= 0; i--) {
|
|
1072
|
+
const w = jumpWaiters[i];
|
|
1073
|
+
if (typeof w.index === "number" && typeof payload.windowIndex === "number" && w.index !== payload.windowIndex) {
|
|
1074
|
+
continue;
|
|
1075
|
+
}
|
|
1076
|
+
if (Math.abs(payload.timeMs - w.targetMs) <= w.toleranceMs) {
|
|
1077
|
+
jumpWaiters.splice(i, 1);
|
|
1078
|
+
clearTimeout(w.timeoutTimer);
|
|
1079
|
+
try {
|
|
1080
|
+
(_c2 = w.onDone) == null ? void 0 : _c2.call(w, payload);
|
|
1081
|
+
} catch {
|
|
1082
|
+
}
|
|
1083
|
+
w.resolve(payload);
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
973
1088
|
},
|
|
974
1089
|
emit: (event, payload) => {
|
|
975
1090
|
var _a3, _b2, _c2;
|
|
@@ -1006,6 +1121,13 @@ var DahuaPlayer = class {
|
|
|
1006
1121
|
}
|
|
1007
1122
|
if (event === "error") {
|
|
1008
1123
|
const msg = formatUserMessage(payload, "\u64AD\u653E\u5931\u8D25");
|
|
1124
|
+
if (jumpWaiters.length > 0) {
|
|
1125
|
+
const waiters = jumpWaiters.splice(0, jumpWaiters.length);
|
|
1126
|
+
for (const w of waiters) {
|
|
1127
|
+
clearTimeout(w.timeoutTimer);
|
|
1128
|
+
w.reject(payload);
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1009
1131
|
if (payload instanceof DahuaPlayerError) {
|
|
1010
1132
|
const initCodes = /* @__PURE__ */ new Set([
|
|
1011
1133
|
"SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
@@ -1037,6 +1159,7 @@ var DahuaPlayer = class {
|
|
|
1037
1159
|
readyReject(err);
|
|
1038
1160
|
}
|
|
1039
1161
|
})();
|
|
1162
|
+
const getPlaybackTimeMs = () => lastPlaybackTimeMs;
|
|
1040
1163
|
const instance = {
|
|
1041
1164
|
id,
|
|
1042
1165
|
ready,
|
|
@@ -1049,6 +1172,7 @@ var DahuaPlayer = class {
|
|
|
1049
1172
|
if (!adapter) return;
|
|
1050
1173
|
adapter.pause();
|
|
1051
1174
|
},
|
|
1175
|
+
getPlaybackTimeMs,
|
|
1052
1176
|
/**
|
|
1053
1177
|
* 销毁播放器实例并释放资源。
|
|
1054
1178
|
*
|
|
@@ -1062,6 +1186,14 @@ var DahuaPlayer = class {
|
|
|
1062
1186
|
if (destroyed) return;
|
|
1063
1187
|
destroyed = true;
|
|
1064
1188
|
clearTimeout(readyTimer);
|
|
1189
|
+
if (jumpWaiters.length > 0) {
|
|
1190
|
+
const waiters = jumpWaiters.splice(0, jumpWaiters.length);
|
|
1191
|
+
const err = createDestroyedError();
|
|
1192
|
+
for (const w of waiters) {
|
|
1193
|
+
clearTimeout(w.timeoutTimer);
|
|
1194
|
+
w.reject(err);
|
|
1195
|
+
}
|
|
1196
|
+
}
|
|
1065
1197
|
if (transientOverlayTimer) {
|
|
1066
1198
|
clearTimeout(transientOverlayTimer);
|
|
1067
1199
|
transientOverlayTimer = null;
|
|
@@ -1102,26 +1234,9 @@ var DahuaPlayer = class {
|
|
|
1102
1234
|
sdk: {
|
|
1103
1235
|
getRaw: () => adapter == null ? void 0 : adapter.getRaw(),
|
|
1104
1236
|
callRaw: (method, ...args) => {
|
|
1105
|
-
|
|
1106
|
-
const err = new DahuaPlayerError({
|
|
1107
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1108
|
-
message: "destroyed",
|
|
1109
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1110
|
-
});
|
|
1111
|
-
safeOnError(err);
|
|
1112
|
-
throw err;
|
|
1113
|
-
}
|
|
1114
|
-
if (!adapter) {
|
|
1115
|
-
const err = new DahuaPlayerError({
|
|
1116
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1117
|
-
message: "player not ready",
|
|
1118
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1119
|
-
});
|
|
1120
|
-
safeOnError(err);
|
|
1121
|
-
throw err;
|
|
1122
|
-
}
|
|
1237
|
+
const ad = requireAdapter();
|
|
1123
1238
|
try {
|
|
1124
|
-
return
|
|
1239
|
+
return ad.callRaw(method, ...args);
|
|
1125
1240
|
} catch (e) {
|
|
1126
1241
|
const err = toDahuaError(e, {
|
|
1127
1242
|
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
@@ -1133,27 +1248,10 @@ var DahuaPlayer = class {
|
|
|
1133
1248
|
}
|
|
1134
1249
|
},
|
|
1135
1250
|
playRealVideo: (opt) => {
|
|
1136
|
-
|
|
1137
|
-
const err = new DahuaPlayerError({
|
|
1138
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1139
|
-
message: "destroyed",
|
|
1140
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1141
|
-
});
|
|
1142
|
-
safeOnError(err);
|
|
1143
|
-
throw err;
|
|
1144
|
-
}
|
|
1145
|
-
if (!adapter) {
|
|
1146
|
-
const err = new DahuaPlayerError({
|
|
1147
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1148
|
-
message: "player not ready",
|
|
1149
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1150
|
-
});
|
|
1151
|
-
safeOnError(err);
|
|
1152
|
-
throw err;
|
|
1153
|
-
}
|
|
1251
|
+
const ad = requireAdapter();
|
|
1154
1252
|
showLoading("\u52A0\u8F7D\u89C6\u9891\u4E2D\u2026");
|
|
1155
1253
|
try {
|
|
1156
|
-
|
|
1254
|
+
ad.playRealVideo(opt);
|
|
1157
1255
|
} catch (e) {
|
|
1158
1256
|
setLoading(false);
|
|
1159
1257
|
const err = toDahuaError(e, {
|
|
@@ -1166,27 +1264,10 @@ var DahuaPlayer = class {
|
|
|
1166
1264
|
}
|
|
1167
1265
|
},
|
|
1168
1266
|
playRecordVideo: (opt) => {
|
|
1169
|
-
|
|
1170
|
-
const err = new DahuaPlayerError({
|
|
1171
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1172
|
-
message: "destroyed",
|
|
1173
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1174
|
-
});
|
|
1175
|
-
safeOnError(err);
|
|
1176
|
-
throw err;
|
|
1177
|
-
}
|
|
1178
|
-
if (!adapter) {
|
|
1179
|
-
const err = new DahuaPlayerError({
|
|
1180
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1181
|
-
message: "player not ready",
|
|
1182
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1183
|
-
});
|
|
1184
|
-
safeOnError(err);
|
|
1185
|
-
throw err;
|
|
1186
|
-
}
|
|
1267
|
+
const ad = requireAdapter();
|
|
1187
1268
|
showLoading("\u52A0\u8F7D\u5F55\u50CF\u4E2D\u2026");
|
|
1188
1269
|
try {
|
|
1189
|
-
|
|
1270
|
+
ad.playRecordVideo(opt);
|
|
1190
1271
|
} catch (e) {
|
|
1191
1272
|
setLoading(false);
|
|
1192
1273
|
const err = toDahuaError(e, {
|
|
@@ -1202,26 +1283,9 @@ var DahuaPlayer = class {
|
|
|
1202
1283
|
play: (windowIndex) => adapter == null ? void 0 : adapter.playWindow(windowIndex),
|
|
1203
1284
|
close: (windowIndex) => adapter == null ? void 0 : adapter.closeWindow(windowIndex),
|
|
1204
1285
|
setPlayerNum: (n) => {
|
|
1205
|
-
|
|
1206
|
-
const err = new DahuaPlayerError({
|
|
1207
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1208
|
-
message: "destroyed",
|
|
1209
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1210
|
-
});
|
|
1211
|
-
safeOnError(err);
|
|
1212
|
-
throw err;
|
|
1213
|
-
}
|
|
1214
|
-
if (!adapter) {
|
|
1215
|
-
const err = new DahuaPlayerError({
|
|
1216
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1217
|
-
message: "player not ready",
|
|
1218
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1219
|
-
});
|
|
1220
|
-
safeOnError(err);
|
|
1221
|
-
throw err;
|
|
1222
|
-
}
|
|
1286
|
+
const ad = requireAdapter();
|
|
1223
1287
|
try {
|
|
1224
|
-
|
|
1288
|
+
ad.setPlayerNum(n);
|
|
1225
1289
|
} catch (e) {
|
|
1226
1290
|
const err = toDahuaError(e, {
|
|
1227
1291
|
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
@@ -1233,28 +1297,84 @@ var DahuaPlayer = class {
|
|
|
1233
1297
|
}
|
|
1234
1298
|
},
|
|
1235
1299
|
jumpPlayByDateTime: (datetime, index) => {
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1300
|
+
const ad = requireAdapter();
|
|
1301
|
+
showLoading("\u8DF3\u8F6C\u4E2D\u2026");
|
|
1302
|
+
try {
|
|
1303
|
+
ad.jumpPlayByDateTime(datetime, index);
|
|
1304
|
+
} catch (e) {
|
|
1305
|
+
setLoading(false);
|
|
1306
|
+
const err = toDahuaError(e, {
|
|
1307
|
+
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
1308
|
+
message: "jumpPlayByDateTime failed",
|
|
1309
|
+
userMessage: "\u5F55\u50CF\u8DF3\u8F6C\u64AD\u653E\u5931\u8D25"
|
|
1241
1310
|
});
|
|
1242
1311
|
safeOnError(err);
|
|
1243
1312
|
throw err;
|
|
1244
1313
|
}
|
|
1245
|
-
|
|
1314
|
+
},
|
|
1315
|
+
jumpPlayByDateTimeAsync: (datetime, index, options2) => {
|
|
1316
|
+
let ad;
|
|
1317
|
+
try {
|
|
1318
|
+
ad = requireAdapter();
|
|
1319
|
+
} catch (e) {
|
|
1320
|
+
return Promise.reject(e);
|
|
1321
|
+
}
|
|
1322
|
+
const onDone = typeof options2 === "function" ? options2 : options2 == null ? void 0 : options2.onDone;
|
|
1323
|
+
const timeoutMs = typeof options2 === "object" && options2 && Number.isFinite(options2.timeoutMs) ? Math.floor(Number(options2.timeoutMs)) : 3e4;
|
|
1324
|
+
const toleranceMs = typeof options2 === "object" && options2 && Number.isFinite(options2.toleranceMs) ? Math.floor(Number(options2.toleranceMs)) : 1500;
|
|
1325
|
+
const targetMs = parseDateTimeToMs(datetime);
|
|
1326
|
+
if (!Number.isFinite(targetMs)) {
|
|
1246
1327
|
const err = new DahuaPlayerError({
|
|
1247
|
-
code: "
|
|
1248
|
-
message: "
|
|
1249
|
-
userMessage: "\
|
|
1328
|
+
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
1329
|
+
message: "invalid datetime",
|
|
1330
|
+
userMessage: "\u8DF3\u8F6C\u65F6\u95F4\u683C\u5F0F\u4E0D\u5408\u6CD5",
|
|
1331
|
+
cause: { datetime }
|
|
1250
1332
|
});
|
|
1251
1333
|
safeOnError(err);
|
|
1252
|
-
|
|
1334
|
+
return Promise.reject(err);
|
|
1253
1335
|
}
|
|
1254
1336
|
showLoading("\u8DF3\u8F6C\u4E2D\u2026");
|
|
1337
|
+
const idx = typeof index === "number" ? Math.floor(index) : void 0;
|
|
1338
|
+
const id2 = ++jumpWaiterId;
|
|
1339
|
+
const p = new Promise((resolve, reject) => {
|
|
1340
|
+
const timeoutTimer = setTimeout(() => {
|
|
1341
|
+
const at = jumpWaiters.findIndex((w) => w.id === id2);
|
|
1342
|
+
if (at >= 0) jumpWaiters.splice(at, 1);
|
|
1343
|
+
setLoading(false);
|
|
1344
|
+
const err = new DahuaPlayerError({
|
|
1345
|
+
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
1346
|
+
message: "jumpPlayByDateTimeAsync timeout",
|
|
1347
|
+
userMessage: "\u5F55\u50CF\u8DF3\u8F6C\u8D85\u65F6",
|
|
1348
|
+
cause: { timeoutMs, datetime, index: idx }
|
|
1349
|
+
});
|
|
1350
|
+
safeOnError(err);
|
|
1351
|
+
reject(err);
|
|
1352
|
+
}, Math.max(0, timeoutMs));
|
|
1353
|
+
jumpWaiters.push({
|
|
1354
|
+
id: id2,
|
|
1355
|
+
targetMs,
|
|
1356
|
+
toleranceMs: Math.max(0, toleranceMs),
|
|
1357
|
+
index: idx,
|
|
1358
|
+
timeoutTimer,
|
|
1359
|
+
onDone,
|
|
1360
|
+
resolve: (payload) => {
|
|
1361
|
+
setLoading(false);
|
|
1362
|
+
resolve(payload);
|
|
1363
|
+
},
|
|
1364
|
+
reject: (e) => {
|
|
1365
|
+
setLoading(false);
|
|
1366
|
+
reject(e);
|
|
1367
|
+
}
|
|
1368
|
+
});
|
|
1369
|
+
});
|
|
1255
1370
|
try {
|
|
1256
|
-
|
|
1371
|
+
ad.jumpPlayByDateTime(datetime, idx);
|
|
1257
1372
|
} catch (e) {
|
|
1373
|
+
const at = jumpWaiters.findIndex((w) => w.id === id2);
|
|
1374
|
+
if (at >= 0) {
|
|
1375
|
+
const w = jumpWaiters.splice(at, 1)[0];
|
|
1376
|
+
clearTimeout(w.timeoutTimer);
|
|
1377
|
+
}
|
|
1258
1378
|
setLoading(false);
|
|
1259
1379
|
const err = toDahuaError(e, {
|
|
1260
1380
|
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
@@ -1262,30 +1382,14 @@ var DahuaPlayer = class {
|
|
|
1262
1382
|
userMessage: "\u5F55\u50CF\u8DF3\u8F6C\u64AD\u653E\u5931\u8D25"
|
|
1263
1383
|
});
|
|
1264
1384
|
safeOnError(err);
|
|
1265
|
-
|
|
1385
|
+
return Promise.reject(err);
|
|
1266
1386
|
}
|
|
1387
|
+
return p;
|
|
1267
1388
|
},
|
|
1268
1389
|
playSpeed: (speed, index) => {
|
|
1269
|
-
|
|
1270
|
-
const err = new DahuaPlayerError({
|
|
1271
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1272
|
-
message: "destroyed",
|
|
1273
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1274
|
-
});
|
|
1275
|
-
safeOnError(err);
|
|
1276
|
-
throw err;
|
|
1277
|
-
}
|
|
1278
|
-
if (!adapter) {
|
|
1279
|
-
const err = new DahuaPlayerError({
|
|
1280
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1281
|
-
message: "player not ready",
|
|
1282
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1283
|
-
});
|
|
1284
|
-
safeOnError(err);
|
|
1285
|
-
throw err;
|
|
1286
|
-
}
|
|
1390
|
+
const ad = requireAdapter();
|
|
1287
1391
|
try {
|
|
1288
|
-
|
|
1392
|
+
ad.playSpeed(speed, index);
|
|
1289
1393
|
} catch (e) {
|
|
1290
1394
|
const err = toDahuaError(e, {
|
|
1291
1395
|
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
@@ -1297,26 +1401,9 @@ var DahuaPlayer = class {
|
|
|
1297
1401
|
}
|
|
1298
1402
|
},
|
|
1299
1403
|
setFullScreen: () => {
|
|
1300
|
-
|
|
1301
|
-
const err = new DahuaPlayerError({
|
|
1302
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1303
|
-
message: "destroyed",
|
|
1304
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1305
|
-
});
|
|
1306
|
-
safeOnError(err);
|
|
1307
|
-
throw err;
|
|
1308
|
-
}
|
|
1309
|
-
if (!adapter) {
|
|
1310
|
-
const err = new DahuaPlayerError({
|
|
1311
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1312
|
-
message: "player not ready",
|
|
1313
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1314
|
-
});
|
|
1315
|
-
safeOnError(err);
|
|
1316
|
-
throw err;
|
|
1317
|
-
}
|
|
1404
|
+
const ad = requireAdapter();
|
|
1318
1405
|
try {
|
|
1319
|
-
|
|
1406
|
+
ad.setFullScreen();
|
|
1320
1407
|
return;
|
|
1321
1408
|
} catch {
|
|
1322
1409
|
}
|
|
@@ -1334,26 +1421,9 @@ var DahuaPlayer = class {
|
|
|
1334
1421
|
void req.call(el);
|
|
1335
1422
|
},
|
|
1336
1423
|
setExitFullScreen: () => {
|
|
1337
|
-
|
|
1338
|
-
const err2 = new DahuaPlayerError({
|
|
1339
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1340
|
-
message: "destroyed",
|
|
1341
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1342
|
-
});
|
|
1343
|
-
safeOnError(err2);
|
|
1344
|
-
throw err2;
|
|
1345
|
-
}
|
|
1346
|
-
if (!adapter) {
|
|
1347
|
-
const err2 = new DahuaPlayerError({
|
|
1348
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1349
|
-
message: "player not ready",
|
|
1350
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1351
|
-
});
|
|
1352
|
-
safeOnError(err2);
|
|
1353
|
-
throw err2;
|
|
1354
|
-
}
|
|
1424
|
+
const ad = requireAdapter();
|
|
1355
1425
|
try {
|
|
1356
|
-
|
|
1426
|
+
ad.setExitFullScreen();
|
|
1357
1427
|
return;
|
|
1358
1428
|
} catch {
|
|
1359
1429
|
}
|