@homebridge-plugins/homebridge-eufy-security 4.6.0-beta.4 → 4.6.0-beta.41
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/.claude/CLAUDE.md +175 -0
- package/.claude/PRD.md +241 -0
- package/.claude/docs/hksv-recording-fix.md +160 -0
- package/.claude/skills/architect/SKILL.md +76 -0
- package/.claude/skills/developer/SKILL.md +59 -0
- package/.claude/skills/new-device-support/SKILL.md +102 -51
- package/.claude/skills/new-device-support/check-device.mjs +363 -0
- package/.claude/skills/new-device-support/map-properties.mjs +144 -10
- package/.claude/skills/new-device-support/verify-device.mjs +272 -0
- package/.claude/skills/planner/SKILL.md +100 -0
- package/.claude/skills/qa/SKILL.md +79 -0
- package/.claude/skills/support/SKILL.md +175 -0
- package/dist/accessories/CameraAccessory.js +20 -20
- package/dist/accessories/CameraAccessory.js.map +1 -1
- package/dist/controller/LocalLivestreamManager.js +197 -10
- package/dist/controller/LocalLivestreamManager.js.map +1 -1
- package/dist/controller/recordingDelegate.js +25 -9
- package/dist/controller/recordingDelegate.js.map +1 -1
- package/dist/controller/snapshotDelegate.js +5 -1
- package/dist/controller/snapshotDelegate.js.map +1 -1
- package/dist/controller/streamingDelegate.js +13 -7
- package/dist/controller/streamingDelegate.js.map +1 -1
- package/dist/platform.js +0 -23
- package/dist/platform.js.map +1 -1
- package/dist/settings.js +7 -0
- package/dist/settings.js.map +1 -1
- package/dist/utils/Talkback.js +127 -55
- package/dist/utils/Talkback.js.map +1 -1
- package/dist/utils/configTypes.js +1 -0
- package/dist/utils/configTypes.js.map +1 -1
- package/dist/utils/ffmpeg.js +137 -23
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/utils.js +27 -2
- package/dist/utils/utils.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/homebridge-ui/public/assets/devices/batterydoorbell2k_large.png +0 -0
- package/homebridge-ui/public/assets/devices/eufyCamS4_large.png +0 -0
- package/homebridge-ui/public/assets/devices/homebase3_large.png +0 -0
- package/homebridge-ui/public/assets/devices/nvr_s4_max_T8N00_large.png +0 -0
- package/homebridge-ui/public/assets/devices/poe_bullet_ptz_cam_s4_T8E00_large.png +0 -0
- package/homebridge-ui/public/utils/device-images.js +2 -0
- package/homebridge-ui/public/views/device-detail.js +10 -0
- package/homebridge-ui/server.js +23 -31
- package/package.json +12 -12
- package/scripts/decrypt-diagnostics.mjs +6 -7
|
@@ -3,9 +3,10 @@ import { DeviceAccessory } from './Device.js';
|
|
|
3
3
|
import { PropertyName, CommandName } from 'eufy-security-client';
|
|
4
4
|
import { DEFAULT_CAMERACONFIG_VALUES } from '../utils/configTypes.js';
|
|
5
5
|
import { probeHardwareEncoder } from '../utils/ffmpeg.js';
|
|
6
|
-
import { CHAR, SERV } from '../utils/utils.js';
|
|
6
|
+
import { CHAR, SERV, isRtspReady } from '../utils/utils.js';
|
|
7
7
|
import { StreamingDelegate } from '../controller/streamingDelegate.js';
|
|
8
8
|
import { RecordingDelegate } from '../controller/recordingDelegate.js';
|
|
9
|
+
import { PREBUFFER_DURATION_MS } from '../settings.js';
|
|
9
10
|
/**
|
|
10
11
|
* Platform Accessory
|
|
11
12
|
* An instance of this class is created for each accessory your platform registers
|
|
@@ -182,6 +183,17 @@ export class CameraAccessory extends DeviceAccessory {
|
|
|
182
183
|
this.device.on(eventType, (device, state) => {
|
|
183
184
|
this.log.info(`MOTION DETECTED (${eventType})': ${state}`);
|
|
184
185
|
characteristic.updateValue(state);
|
|
186
|
+
// Pre-warm the P2P livestream on motion start so it's ready when
|
|
187
|
+
// HomeKit requests an HKSV recording. RTSP cameras don't need this
|
|
188
|
+
// since their stream URL is immediately available.
|
|
189
|
+
if (state && this.streamingDelegate && this.recordingDelegate
|
|
190
|
+
&& !this.recordingDelegate.isRecording()
|
|
191
|
+
&& !isRtspReady(this.device, this.cameraConfig)) {
|
|
192
|
+
const manager = this.streamingDelegate.getLivestreamManager();
|
|
193
|
+
manager.preWarmStream().catch((err) => {
|
|
194
|
+
this.log.debug('P2P pre-warm failed (non-fatal): ' + err);
|
|
195
|
+
});
|
|
196
|
+
}
|
|
185
197
|
});
|
|
186
198
|
});
|
|
187
199
|
},
|
|
@@ -347,27 +359,11 @@ export class CameraAccessory extends DeviceAccessory {
|
|
|
347
359
|
this.streamingDelegate.setController(controller);
|
|
348
360
|
this.log.debug(`recordingDelegate.setController`);
|
|
349
361
|
this.recordingDelegate.setController(controller);
|
|
350
|
-
this.log.debug(`configureController`);
|
|
351
|
-
// Remove stale controller-managed services from cache before configuring.
|
|
352
|
-
// When HSV is enabled, CameraController creates CameraOperatingMode and
|
|
353
|
-
// DataStreamTransportManagement services automatically. If the cached
|
|
354
|
-
// accessory already has them (e.g. from a previous run), configureController
|
|
355
|
-
// will throw a duplicate UUID error.
|
|
356
|
-
const controllerManagedServiceUUIDs = [
|
|
357
|
-
SERV.CameraOperatingMode.UUID,
|
|
358
|
-
SERV.DataStreamTransportManagement.UUID,
|
|
359
|
-
];
|
|
360
|
-
for (const uuid of controllerManagedServiceUUIDs) {
|
|
361
|
-
const existingService = this.accessory.services.find(s => s.UUID === uuid);
|
|
362
|
-
if (existingService) {
|
|
363
|
-
this.log.debug(`Removing stale cached service ${uuid} before configureController`);
|
|
364
|
-
this.accessory.removeService(existingService);
|
|
365
|
-
}
|
|
366
|
-
}
|
|
362
|
+
this.log.debug(`configureController (${this.accessory.services.length} cached services)`);
|
|
367
363
|
this.accessory.configureController(controller);
|
|
368
364
|
}
|
|
369
365
|
catch (error) {
|
|
370
|
-
this.log.error(`
|
|
366
|
+
this.log.error(`configureController failed: ${error}`);
|
|
371
367
|
}
|
|
372
368
|
return true;
|
|
373
369
|
}
|
|
@@ -391,6 +387,10 @@ export class CameraAccessory extends DeviceAccessory {
|
|
|
391
387
|
type: "AAC-eld" /* AudioStreamingCodecType.AAC_ELD */,
|
|
392
388
|
samplerate: 16 /* AudioStreamingSamplerate.KHZ_16 */,
|
|
393
389
|
},
|
|
390
|
+
{
|
|
391
|
+
type: "OPUS" /* AudioStreamingCodecType.OPUS */,
|
|
392
|
+
samplerate: 16 /* AudioStreamingSamplerate.KHZ_16 */,
|
|
393
|
+
},
|
|
394
394
|
],
|
|
395
395
|
},
|
|
396
396
|
},
|
|
@@ -400,7 +400,7 @@ export class CameraAccessory extends DeviceAccessory {
|
|
|
400
400
|
1 /* EventTriggerOption.MOTION */,
|
|
401
401
|
2 /* EventTriggerOption.DOORBELL */,
|
|
402
402
|
],
|
|
403
|
-
prebufferLength:
|
|
403
|
+
prebufferLength: (isRtspReady(this.device, this.cameraConfig) || this.device.hasBattery()) ? 0 : PREBUFFER_DURATION_MS,
|
|
404
404
|
mediaContainerConfiguration: [
|
|
405
405
|
{
|
|
406
406
|
type: 0 /* MediaContainerType.FRAGMENTED_MP4 */,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraAccessory.js","sourceRoot":"","sources":["../../src/accessories/CameraAccessory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CameraAccessory.js","sourceRoot":"","sources":["../../src/accessories/CameraAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,64 @@
|
|
|
1
|
+
import { PassThrough } from 'stream';
|
|
1
2
|
import { Deferred } from '../utils/utils.js';
|
|
3
|
+
import { PREBUFFER_DURATION_MS, PREBUFFER_ESTIMATED_BYTE_RATE } from '../settings.js';
|
|
2
4
|
const P2P_TIMEOUT_MS = 15_000;
|
|
3
5
|
const DUPLICATE_STREAM_GUARD_S = 5;
|
|
4
6
|
const MAX_RETRIES = 3;
|
|
5
7
|
const BASE_RETRY_DELAY_MS = 2_000;
|
|
6
8
|
const MAX_RETRY_DELAY_MS = 10_000;
|
|
9
|
+
/** Grace period before actually stopping a P2P stream after the last consumer releases. */
|
|
10
|
+
const STOP_GRACE_MS = 5_000;
|
|
11
|
+
/**
|
|
12
|
+
* Fixed-capacity ring buffer that stores raw P2P video chunks (H.264 NALUs).
|
|
13
|
+
*
|
|
14
|
+
* When a P2P stream is pre-warmed on motion detection, data flows but has no
|
|
15
|
+
* consumer. This buffer captures the last {@link PREBUFFER_DURATION_MS} of
|
|
16
|
+
* video so that when HKSV requests a recording, the buffered data can be
|
|
17
|
+
* drained into FFmpeg's input immediately — eliminating the probe/analysis
|
|
18
|
+
* delay that normally occurs while FFmpeg waits for the first bytes.
|
|
19
|
+
*/
|
|
20
|
+
class StreamBuffer {
|
|
21
|
+
chunks = [];
|
|
22
|
+
totalBytes = 0;
|
|
23
|
+
maxBytes;
|
|
24
|
+
constructor(durationMs, byteRate) {
|
|
25
|
+
this.maxBytes = Math.ceil(durationMs * byteRate);
|
|
26
|
+
}
|
|
27
|
+
push(chunk) {
|
|
28
|
+
this.chunks.push(chunk);
|
|
29
|
+
this.totalBytes += chunk.length;
|
|
30
|
+
while (this.totalBytes > this.maxBytes && this.chunks.length > 0) {
|
|
31
|
+
const removed = this.chunks.shift();
|
|
32
|
+
this.totalBytes -= removed.length;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Return all buffered chunks and reset. */
|
|
36
|
+
drain() {
|
|
37
|
+
const buffered = this.chunks;
|
|
38
|
+
this.chunks = [];
|
|
39
|
+
this.totalBytes = 0;
|
|
40
|
+
return buffered;
|
|
41
|
+
}
|
|
42
|
+
get isEmpty() {
|
|
43
|
+
return this.chunks.length === 0;
|
|
44
|
+
}
|
|
45
|
+
get byteLength() {
|
|
46
|
+
return this.totalBytes;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
7
49
|
export class LocalLivestreamManager {
|
|
8
50
|
stationStream = null;
|
|
9
51
|
pending = null;
|
|
10
52
|
retryCount = 0;
|
|
53
|
+
stopGraceTimer = null;
|
|
54
|
+
/** Number of consumers currently holding a forked copy of the stream. */
|
|
55
|
+
activeConsumers = 0;
|
|
56
|
+
/** Ring buffer for raw video data captured during pre-warm (no consumers). */
|
|
57
|
+
videoBuffer = null;
|
|
58
|
+
/** Listener reference for cleaning up the buffer tap on the video stream. */
|
|
59
|
+
bufferListener = null;
|
|
60
|
+
/** The videostream the buffer listener is attached to (for reliable cleanup). */
|
|
61
|
+
bufferedVideoStream = null;
|
|
11
62
|
eufyClient;
|
|
12
63
|
log;
|
|
13
64
|
serialNumber;
|
|
@@ -21,26 +72,127 @@ export class LocalLivestreamManager {
|
|
|
21
72
|
}
|
|
22
73
|
/** Destroy active streams and reset state. */
|
|
23
74
|
destroyStreams() {
|
|
75
|
+
this.stopBuffering();
|
|
24
76
|
if (this.stationStream) {
|
|
25
77
|
this.stationStream.audiostream.unpipe();
|
|
26
78
|
this.stationStream.audiostream.destroy();
|
|
27
79
|
this.stationStream.videostream.unpipe();
|
|
28
80
|
this.stationStream.videostream.destroy();
|
|
29
81
|
this.stationStream = null;
|
|
82
|
+
this.activeConsumers = 0;
|
|
30
83
|
}
|
|
31
84
|
}
|
|
32
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* Start capturing raw video chunks into the ring buffer.
|
|
87
|
+
* Called when a stream is established with no consumers (pre-warm scenario).
|
|
88
|
+
* The buffer is drained into the first consumer fork via {@link forkStream}.
|
|
89
|
+
*/
|
|
90
|
+
startBuffering(videostream) {
|
|
91
|
+
this.stopBuffering();
|
|
92
|
+
this.videoBuffer = new StreamBuffer(PREBUFFER_DURATION_MS, PREBUFFER_ESTIMATED_BYTE_RATE);
|
|
93
|
+
this.bufferListener = (chunk) => this.videoBuffer?.push(chunk);
|
|
94
|
+
this.bufferedVideoStream = videostream;
|
|
95
|
+
videostream.on('data', this.bufferListener);
|
|
96
|
+
this.log.debug(`Prebuffer started (max ${PREBUFFER_DURATION_MS}ms / ${((PREBUFFER_DURATION_MS * PREBUFFER_ESTIMATED_BYTE_RATE) / 1024).toFixed(0)} KB).`);
|
|
97
|
+
}
|
|
98
|
+
/** Stop buffering and detach the listener from the video stream. */
|
|
99
|
+
stopBuffering() {
|
|
100
|
+
if (this.bufferListener && this.bufferedVideoStream) {
|
|
101
|
+
this.bufferedVideoStream.removeListener('data', this.bufferListener);
|
|
102
|
+
}
|
|
103
|
+
this.bufferListener = null;
|
|
104
|
+
this.bufferedVideoStream = null;
|
|
105
|
+
this.videoBuffer = null;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Return a forked copy of the active livestream, or start a new one.
|
|
109
|
+
* Each caller gets its own PassThrough fork so that when one consumer's
|
|
110
|
+
* FFmpeg exits and destroys its input, the underlying P2P stream survives
|
|
111
|
+
* for other consumers. A consumer count tracks active forks so the P2P
|
|
112
|
+
* session is only stopped when the last consumer calls stopLocalLiveStream().
|
|
113
|
+
*/
|
|
33
114
|
async getLocalLiveStream() {
|
|
34
|
-
if (this.
|
|
35
|
-
|
|
36
|
-
this.
|
|
37
|
-
|
|
115
|
+
if (this.stopGraceTimer) {
|
|
116
|
+
clearTimeout(this.stopGraceTimer);
|
|
117
|
+
this.stopGraceTimer = null;
|
|
118
|
+
this.log.debug('Cancelled deferred stop — reusing active stream.');
|
|
38
119
|
}
|
|
39
|
-
|
|
120
|
+
if (!this.stationStream) {
|
|
121
|
+
await this.startLocalLiveStream();
|
|
122
|
+
}
|
|
123
|
+
if (!this.stationStream) {
|
|
124
|
+
throw new Error('Livestream failed to start.');
|
|
125
|
+
}
|
|
126
|
+
const runtime = ((Date.now() - this.stationStream.createdAt) / 1000).toFixed(1);
|
|
127
|
+
this.activeConsumers++;
|
|
128
|
+
this.log.debug(`Providing forked stream (consumers: ${this.activeConsumers}, ` +
|
|
129
|
+
`stream age: ${runtime}s).`);
|
|
130
|
+
return this.forkStream(this.stationStream);
|
|
40
131
|
}
|
|
41
|
-
/**
|
|
132
|
+
/**
|
|
133
|
+
* Create PassThrough forks of the video and audio streams. The forks
|
|
134
|
+
* automatically unpipe when closed so the originals stay healthy.
|
|
135
|
+
*
|
|
136
|
+
* If a prebuffer has accumulated (from a pre-warmed stream with no consumers),
|
|
137
|
+
* the buffered video data is drained into the fork first so that FFmpeg
|
|
138
|
+
* receives data immediately without waiting for new P2P frames.
|
|
139
|
+
*/
|
|
140
|
+
forkStream(source) {
|
|
141
|
+
const videoFork = new PassThrough();
|
|
142
|
+
const audioFork = new PassThrough();
|
|
143
|
+
// Drain any prebuffered video data into the fork before piping live data.
|
|
144
|
+
// This eliminates FFmpeg's probe delay by providing immediate input.
|
|
145
|
+
// Backpressure note: at 4s / ~1 MB the PassThrough internal buffer
|
|
146
|
+
// handles this comfortably. If PREBUFFER_DURATION_MS is increased
|
|
147
|
+
// significantly, consider making this drain async with drain events.
|
|
148
|
+
if (this.videoBuffer && !this.videoBuffer.isEmpty) {
|
|
149
|
+
const buffered = this.videoBuffer.drain();
|
|
150
|
+
const totalBytes = buffered.reduce((sum, c) => sum + c.length, 0);
|
|
151
|
+
this.log.debug(`Draining ${buffered.length} prebuffered chunks (${(totalBytes / 1024).toFixed(1)} KB) into video fork.`);
|
|
152
|
+
for (const chunk of buffered) {
|
|
153
|
+
videoFork.write(chunk);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Stop buffering — live data now flows directly to the consumer.
|
|
157
|
+
this.stopBuffering();
|
|
158
|
+
source.videostream.pipe(videoFork);
|
|
159
|
+
source.audiostream.pipe(audioFork);
|
|
160
|
+
videoFork.on('close', () => source.videostream.unpipe(videoFork));
|
|
161
|
+
audioFork.on('close', () => source.audiostream.unpipe(audioFork));
|
|
162
|
+
return {
|
|
163
|
+
videostream: videoFork,
|
|
164
|
+
audiostream: audioFork,
|
|
165
|
+
metadata: source.metadata,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/** True when a P2P livestream is currently active or starting. */
|
|
42
169
|
isStreamActive() {
|
|
43
|
-
return this.stationStream !== null;
|
|
170
|
+
return this.stationStream !== null || this.pending !== null;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Pre-warm the P2P livestream without creating a consumer fork.
|
|
174
|
+
* The stream will be kept alive by the STOP_GRACE_MS timer once established.
|
|
175
|
+
* If a consumer calls getLocalLiveStream() while the stream is warm,
|
|
176
|
+
* it will reuse the existing connection instantly.
|
|
177
|
+
*/
|
|
178
|
+
async preWarmStream() {
|
|
179
|
+
if (this.isStreamActive()) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
await this.startLocalLiveStream();
|
|
183
|
+
// Stream is now active but has zero consumers.
|
|
184
|
+
// Schedule a grace-period stop so it doesn't run forever if unused.
|
|
185
|
+
if (this.activeConsumers === 0 && !this.stopGraceTimer) {
|
|
186
|
+
this.log.debug(`Pre-warmed stream has no consumers — scheduling ${STOP_GRACE_MS / 1000}s grace stop.`);
|
|
187
|
+
this.stopGraceTimer = setTimeout(() => {
|
|
188
|
+
this.stopGraceTimer = null;
|
|
189
|
+
if (this.activeConsumers > 0) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
this.log.debug('Pre-warm grace period expired — stopping stream.');
|
|
193
|
+
this.forceStopLocalLiveStream();
|
|
194
|
+
}, STOP_GRACE_MS);
|
|
195
|
+
}
|
|
44
196
|
}
|
|
45
197
|
/**
|
|
46
198
|
* Requests a P2P livestream from the eufy station and waits for the
|
|
@@ -103,11 +255,42 @@ export class LocalLivestreamManager {
|
|
|
103
255
|
this.pending = null;
|
|
104
256
|
this.log.error(`Livestream failed after ${MAX_RETRIES + 1} attempts.`);
|
|
105
257
|
p.deferred.reject(payload instanceof Error ? payload : new Error(String(payload)));
|
|
106
|
-
this.
|
|
258
|
+
this.forceStopLocalLiveStream();
|
|
107
259
|
}
|
|
108
260
|
}
|
|
261
|
+
/**
|
|
262
|
+
* Signal that a consumer is done with its forked stream. When the last
|
|
263
|
+
* consumer releases, the P2P session is stopped after a short grace period
|
|
264
|
+
* to allow a subsequent consumer (e.g. a livestream right after a snapshot)
|
|
265
|
+
* to reuse the session without a stop/start cycle.
|
|
266
|
+
*/
|
|
109
267
|
stopLocalLiveStream() {
|
|
268
|
+
this.activeConsumers = Math.max(0, this.activeConsumers - 1);
|
|
269
|
+
this.log.debug(`Consumer released (remaining: ${this.activeConsumers}).`);
|
|
270
|
+
if (this.activeConsumers > 0) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
// Last consumer — schedule a deferred stop
|
|
274
|
+
if (this.stopGraceTimer)
|
|
275
|
+
return;
|
|
276
|
+
this.log.debug(`Deferring stream stop by ${STOP_GRACE_MS / 1000}s to allow reuse.`);
|
|
277
|
+
this.stopGraceTimer = setTimeout(() => {
|
|
278
|
+
this.stopGraceTimer = null;
|
|
279
|
+
if (this.activeConsumers > 0) {
|
|
280
|
+
this.log.debug('Grace period expired but new consumer(s) present — not stopping.');
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
this.log.debug('Grace period expired — stopping stream now.');
|
|
284
|
+
this.forceStopLocalLiveStream();
|
|
285
|
+
}, STOP_GRACE_MS);
|
|
286
|
+
}
|
|
287
|
+
/** Unconditionally tear down the P2P session and all state. */
|
|
288
|
+
forceStopLocalLiveStream() {
|
|
110
289
|
this.log.debug('Stopping station livestream.');
|
|
290
|
+
if (this.stopGraceTimer) {
|
|
291
|
+
clearTimeout(this.stopGraceTimer);
|
|
292
|
+
this.stopGraceTimer = null;
|
|
293
|
+
}
|
|
111
294
|
this.retryCount = 0;
|
|
112
295
|
if (this.pending) {
|
|
113
296
|
clearTimeout(this.pending.timer);
|
|
@@ -143,7 +326,11 @@ export class LocalLivestreamManager {
|
|
|
143
326
|
this.destroyStreams();
|
|
144
327
|
this.log.debug(`${station.getName()} P2P livestream for ${device.getName()} started.`);
|
|
145
328
|
this.log.debug('Stream metadata:', JSON.stringify(metadata));
|
|
146
|
-
this.stationStream = { videostream, audiostream, createdAt: Date.now() };
|
|
329
|
+
this.stationStream = { videostream, audiostream, metadata, createdAt: Date.now() };
|
|
330
|
+
// Start prebuffering video data. If a consumer is already waiting (pending
|
|
331
|
+
// resolve), forkStream will drain the buffer immediately. If this is a
|
|
332
|
+
// pre-warm with no consumers, the buffer accumulates until one arrives.
|
|
333
|
+
this.startBuffering(videostream);
|
|
147
334
|
this.settlePending('resolve', this.stationStream);
|
|
148
335
|
};
|
|
149
336
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalLivestreamManager.js","sourceRoot":"","sources":["../../src/controller/LocalLivestreamManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LocalLivestreamManager.js","sourceRoot":"","sources":["../../src/controller/LocalLivestreamManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { PropertyName } from 'eufy-security-client';
|
|
2
2
|
import { FFmpeg, FFmpegParameters } from '../utils/ffmpeg.js';
|
|
3
|
-
import { CHAR, SERV, isRtspReady, log, ffmpegLoggerFactory } from '../utils/utils.js';
|
|
3
|
+
import { CHAR, SERV, isRtspReady, applyP2PAudioFormat, log, ffmpegLoggerFactory } from '../utils/utils.js';
|
|
4
4
|
const MAX_RECORDING_MINUTES = 1; // should never be used
|
|
5
5
|
/** Max time (ms) to wait for the next fMP4 box before considering the stream stalled. */
|
|
6
6
|
const SEGMENT_HEARTBEAT_TIMEOUT_MS = 10_000;
|
|
7
|
+
/** Minimum moof+mdat fragments before honouring motion-stopped to avoid ultra-short recordings. */
|
|
8
|
+
const MIN_FRAGMENTS_BEFORE_STOP = 2;
|
|
7
9
|
const HKSVQuitReason = [
|
|
8
10
|
'Normal',
|
|
9
11
|
'Not allowed',
|
|
@@ -74,6 +76,7 @@ export class RecordingDelegate {
|
|
|
74
76
|
else {
|
|
75
77
|
const streamData = await this.localLivestreamManager.getLocalLiveStream();
|
|
76
78
|
await videoParams.setInputStream(streamData.videostream);
|
|
79
|
+
applyP2PAudioFormat(audioParams, streamData.metadata.audioCodec);
|
|
77
80
|
await audioParams.setInputStream(streamData.audiostream);
|
|
78
81
|
}
|
|
79
82
|
}
|
|
@@ -87,11 +90,12 @@ export class RecordingDelegate {
|
|
|
87
90
|
yield { data: Buffer.alloc(0), isLast: true };
|
|
88
91
|
return;
|
|
89
92
|
}
|
|
90
|
-
const audioEnabled = this.
|
|
93
|
+
const audioEnabled = this.cameraConfig.audio !== false
|
|
94
|
+
&& this.controller?.recordingManagement?.recordingManagementService.getCharacteristic(CHAR.RecordingAudioActive).value;
|
|
91
95
|
log.debug(this.camera.getName(), `HKSV audio recording: ${audioEnabled ? 'enabled' : 'disabled'}.`);
|
|
92
|
-
const videoParams = await FFmpegParameters.forVideoRecording();
|
|
93
|
-
const audioParams = await FFmpegParameters.forAudioRecording();
|
|
94
96
|
const videoConfig = this.cameraConfig.videoConfig ?? {};
|
|
97
|
+
const videoParams = await FFmpegParameters.forVideoRecording(videoConfig.debug);
|
|
98
|
+
const audioParams = await FFmpegParameters.forAudioRecording(videoConfig.debug);
|
|
95
99
|
videoParams.setupForRecording(videoConfig, this.configuration);
|
|
96
100
|
audioParams.setupForRecording(videoConfig, this.configuration);
|
|
97
101
|
await this.configureInputSource(videoParams, audioParams);
|
|
@@ -102,6 +106,9 @@ export class RecordingDelegate {
|
|
|
102
106
|
});
|
|
103
107
|
}, RecordingDelegate.RECORDING_SNAPSHOT_DELAY_MS);
|
|
104
108
|
const ffmpeg = new FFmpeg(`[${this.camera.getName()}] [HSV Recording Process]`, audioEnabled ? [videoParams, audioParams] : videoParams, ffmpegLoggerFactory.forCamera(this.camera.getSerial()));
|
|
109
|
+
ffmpeg.on('error', (error) => {
|
|
110
|
+
log.debug(this.camera.getName(), 'HKSV recording FFmpeg error: ' + error);
|
|
111
|
+
});
|
|
105
112
|
this.session = await ffmpeg.startFragmentedMP4Session();
|
|
106
113
|
const maxDuration = Math.min(this.cameraConfig.hsvRecordingDuration ?? MAX_RECORDING_MINUTES * 60, this.platform.config.CameraMaxLivestreamDuration);
|
|
107
114
|
if (maxDuration > 0) {
|
|
@@ -148,6 +155,7 @@ export class RecordingDelegate {
|
|
|
148
155
|
let moofBuffer = null;
|
|
149
156
|
let isInit = true;
|
|
150
157
|
let fragmentCount = 0;
|
|
158
|
+
let sentLast = false;
|
|
151
159
|
let heartbeatTimer;
|
|
152
160
|
const resetHeartbeat = () => {
|
|
153
161
|
if (heartbeatTimer)
|
|
@@ -184,14 +192,22 @@ export class RecordingDelegate {
|
|
|
184
192
|
const fragment = Buffer.concat([moofBuffer, header, data]);
|
|
185
193
|
moofBuffer = null;
|
|
186
194
|
fragmentCount++;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
195
|
+
const motionStopped = !this.isMotionDetected() && fragmentCount >= MIN_FRAGMENTS_BEFORE_STOP;
|
|
196
|
+
const isLast = motionStopped || !this.handlingStreamingRequest;
|
|
197
|
+
log.debug(cameraName, `HKSV: Fragment #${fragmentCount}, size: ${fragment.length}${isLast ? ' (final)' : ''}`);
|
|
198
|
+
yield { data: fragment, isLast };
|
|
199
|
+
if (isLast) {
|
|
200
|
+
sentLast = true;
|
|
201
|
+
log.debug(cameraName, motionStopped
|
|
202
|
+
? 'Ending recording session due to motion stopped.'
|
|
203
|
+
: 'Ending recording session due to stream close.');
|
|
191
204
|
break;
|
|
192
205
|
}
|
|
193
206
|
}
|
|
194
207
|
}
|
|
208
|
+
if (!sentLast && !isInit) {
|
|
209
|
+
log.warn(cameraName, `HKSV: Recording ended after ${fragmentCount} fragment(s) without signalling end-of-stream to HomeKit.`);
|
|
210
|
+
}
|
|
195
211
|
}
|
|
196
212
|
finally {
|
|
197
213
|
if (heartbeatTimer)
|
|
@@ -199,7 +215,7 @@ export class RecordingDelegate {
|
|
|
199
215
|
}
|
|
200
216
|
}
|
|
201
217
|
updateRecordingActive(active) {
|
|
202
|
-
log.
|
|
218
|
+
log.info(this.camera.getName(), `HKSV recording ${active ? 'enabled' : 'disabled'} by HomeKit.`);
|
|
203
219
|
}
|
|
204
220
|
updateRecordingConfiguration(configuration) {
|
|
205
221
|
this.configuration = configuration;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordingDelegate.js","sourceRoot":"","sources":["../../src/controller/recordingDelegate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAW5D,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"recordingDelegate.js","sourceRoot":"","sources":["../../src/controller/recordingDelegate.ts"],"names":[],"mappings":"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"}
|
|
@@ -339,7 +339,11 @@ export class snapshotDelegate {
|
|
|
339
339
|
async runFFmpegSnapshot(label, configure, input) {
|
|
340
340
|
const params = await FFmpegParameters.forSnapshot(this.cameraConfig.videoConfig?.debug);
|
|
341
341
|
await configure(params);
|
|
342
|
-
|
|
342
|
+
const ffmpeg = new FFmpeg(label, params, ffmpegLoggerFactory.forSnapshots());
|
|
343
|
+
ffmpeg.on('error', (error) => {
|
|
344
|
+
this.log.debug('Snapshot FFmpeg error: ' + error);
|
|
345
|
+
});
|
|
346
|
+
return ffmpeg.getResult(input);
|
|
343
347
|
}
|
|
344
348
|
}
|
|
345
349
|
//# sourceMappingURL=snapshotDelegate.js.map
|