@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 CHANGED
@@ -58,7 +58,9 @@ player.sdk.playRecordVideo({
58
58
  });
59
59
 
60
60
  player.sdk.playSpeed(2, 0);
61
- player.sdk.jumpPlayByDateTime('2026-03-01 12:00:00', 0);
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.jumpPlayByDateTime('2026-03-01 12:00:00', 0);
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
- if (destroyed) {
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 adapter.callRaw(method, ...args);
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
- if (destroyed) {
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
- adapter.playRealVideo(opt);
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
- if (destroyed) {
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
- adapter.playRecordVideo(opt);
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
- if (destroyed) {
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
- adapter.setPlayerNum(n);
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
- if (destroyed) {
1311
- const err = new DahuaPlayerError({
1312
- code: "DESTROYED" /* DESTROYED */,
1313
- message: "destroyed",
1314
- userMessage: "\u64AD\u653E\u5668\u5DF2\u9500\u6BC1"
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
- if (!adapter) {
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: "SDK_INIT_FAILED" /* SDK_INIT_FAILED */,
1322
- message: "player not ready",
1323
- userMessage: "\u64AD\u653E\u5668\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7B49\u5F85 ready \u540E\u518D\u8C03\u7528"
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
- throw err;
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
- adapter.jumpPlayByDateTime(datetime, index);
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
- throw err;
1413
+ return Promise.reject(err);
1340
1414
  }
1415
+ return p;
1341
1416
  },
1342
1417
  playSpeed: (speed, index) => {
1343
- if (destroyed) {
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
- adapter.playSpeed(speed, index);
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
- if (destroyed) {
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
- adapter.setFullScreen();
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
- if (destroyed) {
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
- adapter.setExitFullScreen();
1454
+ ad.setExitFullScreen();
1431
1455
  return;
1432
1456
  } catch {
1433
1457
  }