@homebridge-plugins/homebridge-eufy-security 4.6.0-beta.13 → 4.6.0-beta.14
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.
|
@@ -1,13 +1,19 @@
|
|
|
1
|
+
import { PassThrough } from 'stream';
|
|
1
2
|
import { Deferred } from '../utils/utils.js';
|
|
2
3
|
const P2P_TIMEOUT_MS = 15_000;
|
|
3
4
|
const DUPLICATE_STREAM_GUARD_S = 5;
|
|
4
5
|
const MAX_RETRIES = 3;
|
|
5
6
|
const BASE_RETRY_DELAY_MS = 2_000;
|
|
6
7
|
const MAX_RETRY_DELAY_MS = 10_000;
|
|
8
|
+
/** Grace period before actually stopping a P2P stream after the last consumer releases. */
|
|
9
|
+
const STOP_GRACE_MS = 5_000;
|
|
7
10
|
export class LocalLivestreamManager {
|
|
8
11
|
stationStream = null;
|
|
9
12
|
pending = null;
|
|
10
13
|
retryCount = 0;
|
|
14
|
+
stopGraceTimer = null;
|
|
15
|
+
/** Number of consumers currently holding a forked copy of the stream. */
|
|
16
|
+
activeConsumers = 0;
|
|
11
17
|
eufyClient;
|
|
12
18
|
log;
|
|
13
19
|
serialNumber;
|
|
@@ -27,16 +33,50 @@ export class LocalLivestreamManager {
|
|
|
27
33
|
this.stationStream.videostream.unpipe();
|
|
28
34
|
this.stationStream.videostream.destroy();
|
|
29
35
|
this.stationStream = null;
|
|
36
|
+
this.activeConsumers = 0;
|
|
30
37
|
}
|
|
31
38
|
}
|
|
32
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Return a forked copy of the active livestream, or start a new one.
|
|
41
|
+
* Each caller gets its own PassThrough fork so that when one consumer's
|
|
42
|
+
* FFmpeg exits and destroys its input, the underlying P2P stream survives
|
|
43
|
+
* for other consumers. A consumer count tracks active forks so the P2P
|
|
44
|
+
* session is only stopped when the last consumer calls stopLocalLiveStream().
|
|
45
|
+
*/
|
|
33
46
|
async getLocalLiveStream() {
|
|
34
|
-
if (this.
|
|
35
|
-
|
|
36
|
-
this.
|
|
37
|
-
|
|
47
|
+
if (this.stopGraceTimer) {
|
|
48
|
+
clearTimeout(this.stopGraceTimer);
|
|
49
|
+
this.stopGraceTimer = null;
|
|
50
|
+
this.log.debug('Cancelled deferred stop — reusing active stream.');
|
|
51
|
+
}
|
|
52
|
+
if (!this.stationStream) {
|
|
53
|
+
await this.startLocalLiveStream();
|
|
54
|
+
}
|
|
55
|
+
if (!this.stationStream) {
|
|
56
|
+
throw new Error('Livestream failed to start.');
|
|
38
57
|
}
|
|
39
|
-
|
|
58
|
+
const runtime = ((Date.now() - this.stationStream.createdAt) / 1000).toFixed(1);
|
|
59
|
+
this.activeConsumers++;
|
|
60
|
+
this.log.debug(`Providing forked stream (consumers: ${this.activeConsumers}, ` +
|
|
61
|
+
`stream age: ${runtime}s).`);
|
|
62
|
+
return this.forkStream(this.stationStream);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create PassThrough forks of the video and audio streams. The forks
|
|
66
|
+
* automatically unpipe when closed so the originals stay healthy.
|
|
67
|
+
*/
|
|
68
|
+
forkStream(source) {
|
|
69
|
+
const videoFork = new PassThrough();
|
|
70
|
+
const audioFork = new PassThrough();
|
|
71
|
+
source.videostream.pipe(videoFork);
|
|
72
|
+
source.audiostream.pipe(audioFork);
|
|
73
|
+
videoFork.on('close', () => source.videostream.unpipe(videoFork));
|
|
74
|
+
audioFork.on('close', () => source.audiostream.unpipe(audioFork));
|
|
75
|
+
return {
|
|
76
|
+
videostream: videoFork,
|
|
77
|
+
audiostream: audioFork,
|
|
78
|
+
metadata: source.metadata,
|
|
79
|
+
};
|
|
40
80
|
}
|
|
41
81
|
/** True when a P2P livestream is currently active. */
|
|
42
82
|
isStreamActive() {
|
|
@@ -103,11 +143,42 @@ export class LocalLivestreamManager {
|
|
|
103
143
|
this.pending = null;
|
|
104
144
|
this.log.error(`Livestream failed after ${MAX_RETRIES + 1} attempts.`);
|
|
105
145
|
p.deferred.reject(payload instanceof Error ? payload : new Error(String(payload)));
|
|
106
|
-
this.
|
|
146
|
+
this.forceStopLocalLiveStream();
|
|
107
147
|
}
|
|
108
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Signal that a consumer is done with its forked stream. When the last
|
|
151
|
+
* consumer releases, the P2P session is stopped after a short grace period
|
|
152
|
+
* to allow a subsequent consumer (e.g. a livestream right after a snapshot)
|
|
153
|
+
* to reuse the session without a stop/start cycle.
|
|
154
|
+
*/
|
|
109
155
|
stopLocalLiveStream() {
|
|
156
|
+
this.activeConsumers = Math.max(0, this.activeConsumers - 1);
|
|
157
|
+
this.log.debug(`Consumer released (remaining: ${this.activeConsumers}).`);
|
|
158
|
+
if (this.activeConsumers > 0) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
// Last consumer — schedule a deferred stop
|
|
162
|
+
if (this.stopGraceTimer)
|
|
163
|
+
return;
|
|
164
|
+
this.log.debug(`Deferring stream stop by ${STOP_GRACE_MS / 1000}s to allow reuse.`);
|
|
165
|
+
this.stopGraceTimer = setTimeout(() => {
|
|
166
|
+
this.stopGraceTimer = null;
|
|
167
|
+
if (this.activeConsumers > 0) {
|
|
168
|
+
this.log.debug('Grace period expired but new consumer(s) present — not stopping.');
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
this.log.debug('Grace period expired — stopping stream now.');
|
|
172
|
+
this.forceStopLocalLiveStream();
|
|
173
|
+
}, STOP_GRACE_MS);
|
|
174
|
+
}
|
|
175
|
+
/** Unconditionally tear down the P2P session and all state. */
|
|
176
|
+
forceStopLocalLiveStream() {
|
|
110
177
|
this.log.debug('Stopping station livestream.');
|
|
178
|
+
if (this.stopGraceTimer) {
|
|
179
|
+
clearTimeout(this.stopGraceTimer);
|
|
180
|
+
this.stopGraceTimer = null;
|
|
181
|
+
}
|
|
111
182
|
this.retryCount = 0;
|
|
112
183
|
if (this.pending) {
|
|
113
184
|
clearTimeout(this.pending.timer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalLivestreamManager.js","sourceRoot":"","sources":["../../src/controller/LocalLivestreamManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LocalLivestreamManager.js","sourceRoot":"","sources":["../../src/controller/LocalLivestreamManager.ts"],"names":[],"mappings":"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"}
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const LIB_VERSION = "4.6.0-beta.
|
|
1
|
+
export const LIB_VERSION = "4.6.0-beta.14";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "Homebridge Eufy Security",
|
|
3
3
|
"name": "@homebridge-plugins/homebridge-eufy-security",
|
|
4
|
-
"version": "4.6.0-beta.
|
|
4
|
+
"version": "4.6.0-beta.14",
|
|
5
5
|
"description": "Control Eufy Security from homebridge.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "Apache-2.0",
|