@video-supply/dahua-player 0.1.4 → 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 +15 -1
- package/README.zh-CN.md +15 -1
- package/dist/index.cjs +170 -146
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +170 -146
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -58,7 +58,9 @@ player.sdk.playRecordVideo({
|
|
|
58
58
|
});
|
|
59
59
|
|
|
60
60
|
player.sdk.playSpeed(2, 0);
|
|
61
|
-
player.sdk.
|
|
61
|
+
await player.sdk.jumpPlayByDateTimeAsync('2026-03-01 12:00:00', 0, {
|
|
62
|
+
onDone: ({ timeSec }) => console.log('seek done', timeSec),
|
|
63
|
+
});
|
|
62
64
|
player.sdk.setFullScreen();
|
|
63
65
|
```
|
|
64
66
|
|
|
@@ -169,6 +171,18 @@ console.log('getPlaybackTimeMs:', player.getPlaybackTimeMs());
|
|
|
169
171
|
- Seeks and plays at the given datetime (record mode only).
|
|
170
172
|
- `datetime` supports `YYYY-MM-DD HH:mm:ss` string, `Date`, or epoch seconds/milliseconds.
|
|
171
173
|
- `index` is the window index (defaults to 0).
|
|
174
|
+
- `jumpPlayByDateTimeAsync(datetime: string | Date | number, index?: number, options?): Promise<{ timeMs, timeSec, windowIndex?, channelCode?, raw? }>`
|
|
175
|
+
- Record seek helper (record mode only).
|
|
176
|
+
- Resolves when playback time reaches the target (based on `getVideoFrameInfo`).
|
|
177
|
+
- Default timeout: 30s.
|
|
178
|
+
- Resolves with `{ timeMs, timeSec, windowIndex?, channelCode?, raw? }` (the matched playback-time payload).
|
|
179
|
+
- `options` supports two forms:
|
|
180
|
+
- callback form: `jumpPlayByDateTimeAsync(dt, idx, (payload) => {})` (same as `onDone`)
|
|
181
|
+
- object form:
|
|
182
|
+
- `timeoutMs?: number` (default 30000)
|
|
183
|
+
- `toleranceMs?: number` (default 1500)
|
|
184
|
+
- `onDone?: (payload) => void` (called before resolve)
|
|
185
|
+
- Rejects on timeout / destroyed / underlying SDK error (also reported via `onError` / `error` event).
|
|
172
186
|
- `playSpeed(speed: number, index: number): void`
|
|
173
187
|
- Sets record playback speed (record mode only).
|
|
174
188
|
- Allowed speeds: `0.125/0.25/0.5/1/1.25/1.5/2/4/8`.
|
package/README.zh-CN.md
CHANGED
|
@@ -201,6 +201,18 @@ console.log('主动获取(可能为null):', t);
|
|
|
201
201
|
- `Date`
|
|
202
202
|
- `number`:时间戳(秒或毫秒,内部会自动兼容)
|
|
203
203
|
- `index`:窗口索引(默认窗口 0)
|
|
204
|
+
- `jumpPlayByDateTimeAsync(datetime: string | Date | number, index?: number, options?): Promise<{ timeMs, timeSec, windowIndex?, channelCode?, raw? }>`
|
|
205
|
+
- 录像跳转播放(仅 `mode=record` 可用)
|
|
206
|
+
- 内部基于回放时间(`getVideoFrameInfo`)判断跳转是否完成
|
|
207
|
+
- 默认超时:30 秒
|
|
208
|
+
- 返回:Promise resolve 为 `{ timeMs, timeSec, windowIndex?, channelCode?, raw? }`(命中目标时间点时的回放时间 payload)
|
|
209
|
+
- `options` 支持两种写法:
|
|
210
|
+
- 直接传回调函数:`jumpPlayByDateTimeAsync(dt, idx, (payload) => {})`(等价于 `onDone`)
|
|
211
|
+
- 传配置对象:
|
|
212
|
+
- `timeoutMs?: number`:超时时间(默认 30000)
|
|
213
|
+
- `toleranceMs?: number`:时间命中容差(默认 1500)
|
|
214
|
+
- `onDone?: (payload) => void`:跳转完成回调(在 Promise resolve 前触发)
|
|
215
|
+
- reject 场景:超时 / 播放器销毁 / SDK 抛错(会触发 `onError`/`error` 事件)
|
|
204
216
|
- `playSpeed(speed: number, index: number): void`
|
|
205
217
|
- 设置录像回放倍速(仅 `mode=record` 可用)
|
|
206
218
|
- `speed` 支持:`0.125/0.25/0.5/1/1.25/1.5/2/4/8`
|
|
@@ -236,5 +248,7 @@ player.sdk.playRecordVideo({
|
|
|
236
248
|
});
|
|
237
249
|
|
|
238
250
|
player.sdk.playSpeed(2, 0);
|
|
239
|
-
player.sdk.
|
|
251
|
+
await player.sdk.jumpPlayByDateTimeAsync('2026-03-01 12:00:00', 0, {
|
|
252
|
+
onDone: ({ timeSec }) => console.log('跳转完成', timeSec),
|
|
253
|
+
});
|
|
240
254
|
```
|
package/dist/index.cjs
CHANGED
|
@@ -770,6 +770,35 @@ function buildPlaybackTimePayloadFromFrameInfo(data) {
|
|
|
770
770
|
return { timeMs, timeSec, windowIndex, channelCode, raw: data };
|
|
771
771
|
}
|
|
772
772
|
|
|
773
|
+
// src/sdk/DateTime.ts
|
|
774
|
+
function parseDateTimeToMs(datetime) {
|
|
775
|
+
if (typeof datetime === "number") {
|
|
776
|
+
if (!Number.isFinite(datetime)) return NaN;
|
|
777
|
+
return Math.floor(datetime > 1e12 ? datetime : datetime * 1e3);
|
|
778
|
+
}
|
|
779
|
+
if (datetime instanceof Date) {
|
|
780
|
+
const ms2 = datetime.getTime();
|
|
781
|
+
return Number.isFinite(ms2) ? Math.floor(ms2) : NaN;
|
|
782
|
+
}
|
|
783
|
+
const raw = (datetime || "").trim();
|
|
784
|
+
if (!raw) return NaN;
|
|
785
|
+
const v = raw.includes("T") ? raw : raw.replace(" ", "T");
|
|
786
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})$/.exec(v);
|
|
787
|
+
if (!m) {
|
|
788
|
+
const ms2 = new Date(v).getTime();
|
|
789
|
+
return Number.isFinite(ms2) ? Math.floor(ms2) : NaN;
|
|
790
|
+
}
|
|
791
|
+
const y = Number(m[1]);
|
|
792
|
+
const mon = Number(m[2]);
|
|
793
|
+
const d = Number(m[3]);
|
|
794
|
+
const hh = Number(m[4]);
|
|
795
|
+
const mm = Number(m[5]);
|
|
796
|
+
const ss = Number(m[6]);
|
|
797
|
+
const dt = new Date(y, mon - 1, d, hh, mm, ss, 0);
|
|
798
|
+
const ms = dt.getTime();
|
|
799
|
+
return Number.isFinite(ms) ? Math.floor(ms) : NaN;
|
|
800
|
+
}
|
|
801
|
+
|
|
773
802
|
// src/DahuaPlayer.ts
|
|
774
803
|
function normalizeStaticPath(path) {
|
|
775
804
|
const raw = (path || "").trim();
|
|
@@ -943,6 +972,8 @@ var DahuaPlayer = class {
|
|
|
943
972
|
};
|
|
944
973
|
let lastPlaybackTimeMs = null;
|
|
945
974
|
let lastEmittedPlaybackTimeSec = null;
|
|
975
|
+
const jumpWaiters = [];
|
|
976
|
+
let jumpWaiterId = 0;
|
|
946
977
|
const safeOnError = (e) => {
|
|
947
978
|
var _a2;
|
|
948
979
|
try {
|
|
@@ -951,6 +982,29 @@ var DahuaPlayer = class {
|
|
|
951
982
|
}
|
|
952
983
|
emit(listeners, "error", e);
|
|
953
984
|
};
|
|
985
|
+
const createDestroyedError = () => new DahuaPlayerError({
|
|
986
|
+
code: "DESTROYED" /* DESTROYED */,
|
|
987
|
+
message: "destroyed",
|
|
988
|
+
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
989
|
+
});
|
|
990
|
+
const createNotReadyError = () => new DahuaPlayerError({
|
|
991
|
+
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
992
|
+
message: "player not ready",
|
|
993
|
+
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
994
|
+
});
|
|
995
|
+
const requireAdapter = () => {
|
|
996
|
+
if (destroyed) {
|
|
997
|
+
const err = createDestroyedError();
|
|
998
|
+
safeOnError(err);
|
|
999
|
+
throw err;
|
|
1000
|
+
}
|
|
1001
|
+
if (!adapter) {
|
|
1002
|
+
const err = createNotReadyError();
|
|
1003
|
+
safeOnError(err);
|
|
1004
|
+
throw err;
|
|
1005
|
+
}
|
|
1006
|
+
return adapter;
|
|
1007
|
+
};
|
|
954
1008
|
const tryAutoPlay = () => {
|
|
955
1009
|
if (!autoPlay) return;
|
|
956
1010
|
if (mode === "real") {
|
|
@@ -1024,7 +1078,7 @@ var DahuaPlayer = class {
|
|
|
1024
1078
|
playerOptions: opts.playerOptions,
|
|
1025
1079
|
debug: opts.debug,
|
|
1026
1080
|
onMessage: (type, data) => {
|
|
1027
|
-
var _a3, _b2;
|
|
1081
|
+
var _a3, _b2, _c2;
|
|
1028
1082
|
try {
|
|
1029
1083
|
(_a3 = opts.onSdkMessage) == null ? void 0 : _a3.call(opts, type, data);
|
|
1030
1084
|
} catch {
|
|
@@ -1041,6 +1095,23 @@ var DahuaPlayer = class {
|
|
|
1041
1095
|
}
|
|
1042
1096
|
emit(listeners, "playbackTime", payload);
|
|
1043
1097
|
}
|
|
1098
|
+
if (jumpWaiters.length > 0) {
|
|
1099
|
+
for (let i = jumpWaiters.length - 1; i >= 0; i--) {
|
|
1100
|
+
const w = jumpWaiters[i];
|
|
1101
|
+
if (typeof w.index === "number" && typeof payload.windowIndex === "number" && w.index !== payload.windowIndex) {
|
|
1102
|
+
continue;
|
|
1103
|
+
}
|
|
1104
|
+
if (Math.abs(payload.timeMs - w.targetMs) <= w.toleranceMs) {
|
|
1105
|
+
jumpWaiters.splice(i, 1);
|
|
1106
|
+
clearTimeout(w.timeoutTimer);
|
|
1107
|
+
try {
|
|
1108
|
+
(_c2 = w.onDone) == null ? void 0 : _c2.call(w, payload);
|
|
1109
|
+
} catch {
|
|
1110
|
+
}
|
|
1111
|
+
w.resolve(payload);
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1114
|
+
}
|
|
1044
1115
|
}
|
|
1045
1116
|
},
|
|
1046
1117
|
emit: (event, payload) => {
|
|
@@ -1078,6 +1149,13 @@ var DahuaPlayer = class {
|
|
|
1078
1149
|
}
|
|
1079
1150
|
if (event === "error") {
|
|
1080
1151
|
const msg = formatUserMessage(payload, "\u64AD\u653E\u5931\u8D25");
|
|
1152
|
+
if (jumpWaiters.length > 0) {
|
|
1153
|
+
const waiters = jumpWaiters.splice(0, jumpWaiters.length);
|
|
1154
|
+
for (const w of waiters) {
|
|
1155
|
+
clearTimeout(w.timeoutTimer);
|
|
1156
|
+
w.reject(payload);
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1081
1159
|
if (payload instanceof DahuaPlayerError) {
|
|
1082
1160
|
const initCodes = /* @__PURE__ */ new Set([
|
|
1083
1161
|
"SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
@@ -1136,6 +1214,14 @@ var DahuaPlayer = class {
|
|
|
1136
1214
|
if (destroyed) return;
|
|
1137
1215
|
destroyed = true;
|
|
1138
1216
|
clearTimeout(readyTimer);
|
|
1217
|
+
if (jumpWaiters.length > 0) {
|
|
1218
|
+
const waiters = jumpWaiters.splice(0, jumpWaiters.length);
|
|
1219
|
+
const err = createDestroyedError();
|
|
1220
|
+
for (const w of waiters) {
|
|
1221
|
+
clearTimeout(w.timeoutTimer);
|
|
1222
|
+
w.reject(err);
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1139
1225
|
if (transientOverlayTimer) {
|
|
1140
1226
|
clearTimeout(transientOverlayTimer);
|
|
1141
1227
|
transientOverlayTimer = null;
|
|
@@ -1176,26 +1262,9 @@ var DahuaPlayer = class {
|
|
|
1176
1262
|
sdk: {
|
|
1177
1263
|
getRaw: () => adapter == null ? void 0 : adapter.getRaw(),
|
|
1178
1264
|
callRaw: (method, ...args) => {
|
|
1179
|
-
|
|
1180
|
-
const err = new DahuaPlayerError({
|
|
1181
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1182
|
-
message: "destroyed",
|
|
1183
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1184
|
-
});
|
|
1185
|
-
safeOnError(err);
|
|
1186
|
-
throw err;
|
|
1187
|
-
}
|
|
1188
|
-
if (!adapter) {
|
|
1189
|
-
const err = new DahuaPlayerError({
|
|
1190
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1191
|
-
message: "player not ready",
|
|
1192
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1193
|
-
});
|
|
1194
|
-
safeOnError(err);
|
|
1195
|
-
throw err;
|
|
1196
|
-
}
|
|
1265
|
+
const ad = requireAdapter();
|
|
1197
1266
|
try {
|
|
1198
|
-
return
|
|
1267
|
+
return ad.callRaw(method, ...args);
|
|
1199
1268
|
} catch (e) {
|
|
1200
1269
|
const err = toDahuaError(e, {
|
|
1201
1270
|
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
@@ -1207,27 +1276,10 @@ var DahuaPlayer = class {
|
|
|
1207
1276
|
}
|
|
1208
1277
|
},
|
|
1209
1278
|
playRealVideo: (opt) => {
|
|
1210
|
-
|
|
1211
|
-
const err = new DahuaPlayerError({
|
|
1212
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1213
|
-
message: "destroyed",
|
|
1214
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1215
|
-
});
|
|
1216
|
-
safeOnError(err);
|
|
1217
|
-
throw err;
|
|
1218
|
-
}
|
|
1219
|
-
if (!adapter) {
|
|
1220
|
-
const err = new DahuaPlayerError({
|
|
1221
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1222
|
-
message: "player not ready",
|
|
1223
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1224
|
-
});
|
|
1225
|
-
safeOnError(err);
|
|
1226
|
-
throw err;
|
|
1227
|
-
}
|
|
1279
|
+
const ad = requireAdapter();
|
|
1228
1280
|
showLoading("\u52A0\u8F7D\u89C6\u9891\u4E2D\u2026");
|
|
1229
1281
|
try {
|
|
1230
|
-
|
|
1282
|
+
ad.playRealVideo(opt);
|
|
1231
1283
|
} catch (e) {
|
|
1232
1284
|
setLoading(false);
|
|
1233
1285
|
const err = toDahuaError(e, {
|
|
@@ -1240,27 +1292,10 @@ var DahuaPlayer = class {
|
|
|
1240
1292
|
}
|
|
1241
1293
|
},
|
|
1242
1294
|
playRecordVideo: (opt) => {
|
|
1243
|
-
|
|
1244
|
-
const err = new DahuaPlayerError({
|
|
1245
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1246
|
-
message: "destroyed",
|
|
1247
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1248
|
-
});
|
|
1249
|
-
safeOnError(err);
|
|
1250
|
-
throw err;
|
|
1251
|
-
}
|
|
1252
|
-
if (!adapter) {
|
|
1253
|
-
const err = new DahuaPlayerError({
|
|
1254
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1255
|
-
message: "player not ready",
|
|
1256
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1257
|
-
});
|
|
1258
|
-
safeOnError(err);
|
|
1259
|
-
throw err;
|
|
1260
|
-
}
|
|
1295
|
+
const ad = requireAdapter();
|
|
1261
1296
|
showLoading("\u52A0\u8F7D\u5F55\u50CF\u4E2D\u2026");
|
|
1262
1297
|
try {
|
|
1263
|
-
|
|
1298
|
+
ad.playRecordVideo(opt);
|
|
1264
1299
|
} catch (e) {
|
|
1265
1300
|
setLoading(false);
|
|
1266
1301
|
const err = toDahuaError(e, {
|
|
@@ -1276,26 +1311,9 @@ var DahuaPlayer = class {
|
|
|
1276
1311
|
play: (windowIndex) => adapter == null ? void 0 : adapter.playWindow(windowIndex),
|
|
1277
1312
|
close: (windowIndex) => adapter == null ? void 0 : adapter.closeWindow(windowIndex),
|
|
1278
1313
|
setPlayerNum: (n) => {
|
|
1279
|
-
|
|
1280
|
-
const err = new DahuaPlayerError({
|
|
1281
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1282
|
-
message: "destroyed",
|
|
1283
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1284
|
-
});
|
|
1285
|
-
safeOnError(err);
|
|
1286
|
-
throw err;
|
|
1287
|
-
}
|
|
1288
|
-
if (!adapter) {
|
|
1289
|
-
const err = new DahuaPlayerError({
|
|
1290
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1291
|
-
message: "player not ready",
|
|
1292
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1293
|
-
});
|
|
1294
|
-
safeOnError(err);
|
|
1295
|
-
throw err;
|
|
1296
|
-
}
|
|
1314
|
+
const ad = requireAdapter();
|
|
1297
1315
|
try {
|
|
1298
|
-
|
|
1316
|
+
ad.setPlayerNum(n);
|
|
1299
1317
|
} catch (e) {
|
|
1300
1318
|
const err = toDahuaError(e, {
|
|
1301
1319
|
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
@@ -1307,28 +1325,84 @@ var DahuaPlayer = class {
|
|
|
1307
1325
|
}
|
|
1308
1326
|
},
|
|
1309
1327
|
jumpPlayByDateTime: (datetime, index) => {
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1328
|
+
const ad = requireAdapter();
|
|
1329
|
+
showLoading("\u8DF3\u8F6C\u4E2D\u2026");
|
|
1330
|
+
try {
|
|
1331
|
+
ad.jumpPlayByDateTime(datetime, index);
|
|
1332
|
+
} catch (e) {
|
|
1333
|
+
setLoading(false);
|
|
1334
|
+
const err = toDahuaError(e, {
|
|
1335
|
+
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
1336
|
+
message: "jumpPlayByDateTime failed",
|
|
1337
|
+
userMessage: "\u5F55\u50CF\u8DF3\u8F6C\u64AD\u653E\u5931\u8D25"
|
|
1315
1338
|
});
|
|
1316
1339
|
safeOnError(err);
|
|
1317
1340
|
throw err;
|
|
1318
1341
|
}
|
|
1319
|
-
|
|
1342
|
+
},
|
|
1343
|
+
jumpPlayByDateTimeAsync: (datetime, index, options2) => {
|
|
1344
|
+
let ad;
|
|
1345
|
+
try {
|
|
1346
|
+
ad = requireAdapter();
|
|
1347
|
+
} catch (e) {
|
|
1348
|
+
return Promise.reject(e);
|
|
1349
|
+
}
|
|
1350
|
+
const onDone = typeof options2 === "function" ? options2 : options2 == null ? void 0 : options2.onDone;
|
|
1351
|
+
const timeoutMs = typeof options2 === "object" && options2 && Number.isFinite(options2.timeoutMs) ? Math.floor(Number(options2.timeoutMs)) : 3e4;
|
|
1352
|
+
const toleranceMs = typeof options2 === "object" && options2 && Number.isFinite(options2.toleranceMs) ? Math.floor(Number(options2.toleranceMs)) : 1500;
|
|
1353
|
+
const targetMs = parseDateTimeToMs(datetime);
|
|
1354
|
+
if (!Number.isFinite(targetMs)) {
|
|
1320
1355
|
const err = new DahuaPlayerError({
|
|
1321
|
-
code: "
|
|
1322
|
-
message: "
|
|
1323
|
-
userMessage: "\
|
|
1356
|
+
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
1357
|
+
message: "invalid datetime",
|
|
1358
|
+
userMessage: "\u8DF3\u8F6C\u65F6\u95F4\u683C\u5F0F\u4E0D\u5408\u6CD5",
|
|
1359
|
+
cause: { datetime }
|
|
1324
1360
|
});
|
|
1325
1361
|
safeOnError(err);
|
|
1326
|
-
|
|
1362
|
+
return Promise.reject(err);
|
|
1327
1363
|
}
|
|
1328
1364
|
showLoading("\u8DF3\u8F6C\u4E2D\u2026");
|
|
1365
|
+
const idx = typeof index === "number" ? Math.floor(index) : void 0;
|
|
1366
|
+
const id2 = ++jumpWaiterId;
|
|
1367
|
+
const p = new Promise((resolve, reject) => {
|
|
1368
|
+
const timeoutTimer = setTimeout(() => {
|
|
1369
|
+
const at = jumpWaiters.findIndex((w) => w.id === id2);
|
|
1370
|
+
if (at >= 0) jumpWaiters.splice(at, 1);
|
|
1371
|
+
setLoading(false);
|
|
1372
|
+
const err = new DahuaPlayerError({
|
|
1373
|
+
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
1374
|
+
message: "jumpPlayByDateTimeAsync timeout",
|
|
1375
|
+
userMessage: "\u5F55\u50CF\u8DF3\u8F6C\u8D85\u65F6",
|
|
1376
|
+
cause: { timeoutMs, datetime, index: idx }
|
|
1377
|
+
});
|
|
1378
|
+
safeOnError(err);
|
|
1379
|
+
reject(err);
|
|
1380
|
+
}, Math.max(0, timeoutMs));
|
|
1381
|
+
jumpWaiters.push({
|
|
1382
|
+
id: id2,
|
|
1383
|
+
targetMs,
|
|
1384
|
+
toleranceMs: Math.max(0, toleranceMs),
|
|
1385
|
+
index: idx,
|
|
1386
|
+
timeoutTimer,
|
|
1387
|
+
onDone,
|
|
1388
|
+
resolve: (payload) => {
|
|
1389
|
+
setLoading(false);
|
|
1390
|
+
resolve(payload);
|
|
1391
|
+
},
|
|
1392
|
+
reject: (e) => {
|
|
1393
|
+
setLoading(false);
|
|
1394
|
+
reject(e);
|
|
1395
|
+
}
|
|
1396
|
+
});
|
|
1397
|
+
});
|
|
1329
1398
|
try {
|
|
1330
|
-
|
|
1399
|
+
ad.jumpPlayByDateTime(datetime, idx);
|
|
1331
1400
|
} catch (e) {
|
|
1401
|
+
const at = jumpWaiters.findIndex((w) => w.id === id2);
|
|
1402
|
+
if (at >= 0) {
|
|
1403
|
+
const w = jumpWaiters.splice(at, 1)[0];
|
|
1404
|
+
clearTimeout(w.timeoutTimer);
|
|
1405
|
+
}
|
|
1332
1406
|
setLoading(false);
|
|
1333
1407
|
const err = toDahuaError(e, {
|
|
1334
1408
|
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
@@ -1336,30 +1410,14 @@ var DahuaPlayer = class {
|
|
|
1336
1410
|
userMessage: "\u5F55\u50CF\u8DF3\u8F6C\u64AD\u653E\u5931\u8D25"
|
|
1337
1411
|
});
|
|
1338
1412
|
safeOnError(err);
|
|
1339
|
-
|
|
1413
|
+
return Promise.reject(err);
|
|
1340
1414
|
}
|
|
1415
|
+
return p;
|
|
1341
1416
|
},
|
|
1342
1417
|
playSpeed: (speed, index) => {
|
|
1343
|
-
|
|
1344
|
-
const err = new DahuaPlayerError({
|
|
1345
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1346
|
-
message: "destroyed",
|
|
1347
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1348
|
-
});
|
|
1349
|
-
safeOnError(err);
|
|
1350
|
-
throw err;
|
|
1351
|
-
}
|
|
1352
|
-
if (!adapter) {
|
|
1353
|
-
const err = new DahuaPlayerError({
|
|
1354
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1355
|
-
message: "player not ready",
|
|
1356
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1357
|
-
});
|
|
1358
|
-
safeOnError(err);
|
|
1359
|
-
throw err;
|
|
1360
|
-
}
|
|
1418
|
+
const ad = requireAdapter();
|
|
1361
1419
|
try {
|
|
1362
|
-
|
|
1420
|
+
ad.playSpeed(speed, index);
|
|
1363
1421
|
} catch (e) {
|
|
1364
1422
|
const err = toDahuaError(e, {
|
|
1365
1423
|
code: "PLAY_FAILED" /* PLAY_FAILED */,
|
|
@@ -1371,26 +1429,9 @@ var DahuaPlayer = class {
|
|
|
1371
1429
|
}
|
|
1372
1430
|
},
|
|
1373
1431
|
setFullScreen: () => {
|
|
1374
|
-
|
|
1375
|
-
const err = new DahuaPlayerError({
|
|
1376
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1377
|
-
message: "destroyed",
|
|
1378
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1379
|
-
});
|
|
1380
|
-
safeOnError(err);
|
|
1381
|
-
throw err;
|
|
1382
|
-
}
|
|
1383
|
-
if (!adapter) {
|
|
1384
|
-
const err = new DahuaPlayerError({
|
|
1385
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1386
|
-
message: "player not ready",
|
|
1387
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1388
|
-
});
|
|
1389
|
-
safeOnError(err);
|
|
1390
|
-
throw err;
|
|
1391
|
-
}
|
|
1432
|
+
const ad = requireAdapter();
|
|
1392
1433
|
try {
|
|
1393
|
-
|
|
1434
|
+
ad.setFullScreen();
|
|
1394
1435
|
return;
|
|
1395
1436
|
} catch {
|
|
1396
1437
|
}
|
|
@@ -1408,26 +1449,9 @@ var DahuaPlayer = class {
|
|
|
1408
1449
|
void req.call(el);
|
|
1409
1450
|
},
|
|
1410
1451
|
setExitFullScreen: () => {
|
|
1411
|
-
|
|
1412
|
-
const err2 = new DahuaPlayerError({
|
|
1413
|
-
code: "DESTROYED" /* DESTROYED */,
|
|
1414
|
-
message: "destroyed",
|
|
1415
|
-
userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
|
|
1416
|
-
});
|
|
1417
|
-
safeOnError(err2);
|
|
1418
|
-
throw err2;
|
|
1419
|
-
}
|
|
1420
|
-
if (!adapter) {
|
|
1421
|
-
const err2 = new DahuaPlayerError({
|
|
1422
|
-
code: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
|
|
1423
|
-
message: "player not ready",
|
|
1424
|
-
userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
|
|
1425
|
-
});
|
|
1426
|
-
safeOnError(err2);
|
|
1427
|
-
throw err2;
|
|
1428
|
-
}
|
|
1452
|
+
const ad = requireAdapter();
|
|
1429
1453
|
try {
|
|
1430
|
-
|
|
1454
|
+
ad.setExitFullScreen();
|
|
1431
1455
|
return;
|
|
1432
1456
|
} catch {
|
|
1433
1457
|
}
|