homebridge-unifi-protect 7.15.0 → 7.16.1
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/dist/devices/protect-camera-package.d.ts +2 -2
- package/dist/devices/protect-camera-package.js +1 -1
- package/dist/devices/protect-camera-package.js.map +1 -1
- package/dist/devices/protect-camera.d.ts +5 -5
- package/dist/devices/protect-camera.js +36 -15
- package/dist/devices/protect-camera.js.map +1 -1
- package/dist/devices/protect-chime.d.ts +3 -3
- package/dist/devices/protect-device.d.ts +7 -7
- package/dist/devices/protect-device.js.map +1 -1
- package/dist/devices/protect-doorbell.d.ts +3 -3
- package/dist/devices/protect-doorbell.js +2 -2
- package/dist/devices/protect-doorbell.js.map +1 -1
- package/dist/devices/protect-light.d.ts +3 -3
- package/dist/devices/protect-light.js +2 -2
- package/dist/devices/protect-light.js.map +1 -1
- package/dist/devices/protect-liveviews.d.ts +1 -1
- package/dist/devices/protect-liveviews.js.map +1 -1
- package/dist/devices/protect-nvr-systeminfo.d.ts +1 -1
- package/dist/devices/protect-nvr-systeminfo.js.map +1 -1
- package/dist/devices/protect-securitysystem.d.ts +2 -2
- package/dist/devices/protect-sensor.d.ts +3 -3
- package/dist/devices/protect-viewer.d.ts +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/protect-events.d.ts +4 -4
- package/dist/protect-events.js.map +1 -1
- package/dist/protect-livestream.d.ts +5 -4
- package/dist/protect-livestream.js +22 -8
- package/dist/protect-livestream.js.map +1 -1
- package/dist/protect-nvr.d.ts +7 -6
- package/dist/protect-nvr.js +1 -1
- package/dist/protect-nvr.js.map +1 -1
- package/dist/protect-options.d.ts +1 -1
- package/dist/protect-platform.d.ts +3 -7
- package/dist/protect-platform.js +2 -44
- package/dist/protect-platform.js.map +1 -1
- package/dist/protect-record.d.ts +5 -3
- package/dist/protect-record.js +11 -8
- package/dist/protect-record.js.map +1 -1
- package/dist/protect-snapshot.d.ts +4 -4
- package/dist/protect-snapshot.js +8 -9
- package/dist/protect-snapshot.js.map +1 -1
- package/dist/protect-stream.d.ts +6 -6
- package/dist/protect-stream.js +78 -38
- package/dist/protect-stream.js.map +1 -1
- package/dist/protect-timeshift.d.ts +3 -3
- package/dist/protect-timeshift.js +1 -1
- package/dist/protect-timeshift.js.map +1 -1
- package/dist/protect-types.d.ts +2 -2
- package/dist/settings.d.ts +0 -2
- package/dist/settings.js +0 -4
- package/dist/settings.js.map +1 -1
- package/homebridge-ui/public/lib/featureoptions.js +65 -6
- package/homebridge-ui/public/lib/featureoptions.js.map +1 -1
- package/homebridge-ui/public/lib/webUi-featureoptions.mjs +4 -4
- package/package.json +20 -16
- package/dist/ffmpeg/index.d.ts +0 -6
- package/dist/ffmpeg/index.js +0 -11
- package/dist/ffmpeg/index.js.map +0 -1
- package/dist/ffmpeg/protect-ffmpeg-codecs.d.ts +0 -22
- package/dist/ffmpeg/protect-ffmpeg-codecs.js +0 -189
- package/dist/ffmpeg/protect-ffmpeg-codecs.js.map +0 -1
- package/dist/ffmpeg/protect-ffmpeg-exec.d.ts +0 -15
- package/dist/ffmpeg/protect-ffmpeg-exec.js +0 -58
- package/dist/ffmpeg/protect-ffmpeg-exec.js.map +0 -1
- package/dist/ffmpeg/protect-ffmpeg-options.d.ts +0 -33
- package/dist/ffmpeg/protect-ffmpeg-options.js +0 -555
- package/dist/ffmpeg/protect-ffmpeg-options.js.map +0 -1
- package/dist/ffmpeg/protect-ffmpeg-record.d.ts +0 -15
- package/dist/ffmpeg/protect-ffmpeg-record.js +0 -246
- package/dist/ffmpeg/protect-ffmpeg-record.js.map +0 -1
- package/dist/ffmpeg/protect-ffmpeg-stream.d.ts +0 -17
- package/dist/ffmpeg/protect-ffmpeg-stream.js +0 -102
- package/dist/ffmpeg/protect-ffmpeg-stream.js.map +0 -1
- package/dist/ffmpeg/protect-ffmpeg.d.ts +0 -35
- package/dist/ffmpeg/protect-ffmpeg.js +0 -238
- package/dist/ffmpeg/protect-ffmpeg.js.map +0 -1
package/dist/protect-stream.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { FfmpegOptions, FfmpegStreamingProcess } from "
|
|
2
|
-
import {
|
|
3
|
-
import { PROTECT_FFMPEG_AUDIO_FILTER_FFTNR, PROTECT_HKSV_FRAGMENT_LENGTH, PROTECT_HKSV_TIMESHIFT_BUFFER_MAXDURATION, PROTECT_HOMEKIT_IDR_INTERVAL, PROTECT_LIVESTREAM_API_IDR_INTERVAL } from "./settings.js";
|
|
1
|
+
import { FfmpegOptions, FfmpegStreamingProcess, HKSV_FRAGMENT_LENGTH, HOMEKIT_IDR_INTERVAL, RtpDemuxer, formatBps } from "homebridge-plugin-utils";
|
|
2
|
+
import { PROTECT_FFMPEG_AUDIO_FILTER_FFTNR, PROTECT_HKSV_TIMESHIFT_BUFFER_MAXDURATION, PROTECT_LIVESTREAM_API_IDR_INTERVAL } from "./settings.js";
|
|
4
3
|
import { ProtectRecordingDelegate } from "./protect-record.js";
|
|
5
4
|
import { ProtectReservedNames } from "./protect-types.js";
|
|
6
5
|
import { ProtectSnapshot } from "./protect-snapshot.js";
|
|
@@ -24,7 +23,7 @@ export class ProtectStreamingDelegate {
|
|
|
24
23
|
probesizeOverrideTimeout;
|
|
25
24
|
snapshot;
|
|
26
25
|
verboseFfmpeg;
|
|
27
|
-
abTest =
|
|
26
|
+
abTest = false;
|
|
28
27
|
// Create an instance of a HomeKit streaming delegate.
|
|
29
28
|
constructor(protectCamera, resolutions) {
|
|
30
29
|
this.api = protectCamera.api;
|
|
@@ -40,7 +39,21 @@ export class ProtectStreamingDelegate {
|
|
|
40
39
|
this.probesizeOverrideCount = 0;
|
|
41
40
|
this.verboseFfmpeg = false;
|
|
42
41
|
// Configure our hardware acceleration support.
|
|
43
|
-
this.ffmpegOptions = new FfmpegOptions(
|
|
42
|
+
this.ffmpegOptions = new FfmpegOptions({
|
|
43
|
+
codecSupport: this.platform.codecSupport,
|
|
44
|
+
crop: this.protectCamera.hints.cropOptions,
|
|
45
|
+
debug: this.platform.config.debugAll,
|
|
46
|
+
hardwareDecoding: this.protectCamera.hints.hardwareDecoding,
|
|
47
|
+
hardwareTranscoding: this.protectCamera.hints.hardwareTranscoding,
|
|
48
|
+
log: this.log,
|
|
49
|
+
name: () => this.protectCamera.accessoryName
|
|
50
|
+
});
|
|
51
|
+
// Encourage users to enable hardware-accelerated transcoding on macOS.
|
|
52
|
+
if (!this.protectCamera.hints.hardwareTranscoding && !this.protectCamera.accessory.context.packageCamera &&
|
|
53
|
+
this.platform.codecSupport.hostSystem.startsWith("macOS.")) {
|
|
54
|
+
this.log.warn("macOS detected: consider enabling hardware acceleration (located under the video feature options section in the HBUP webUI) for even better " +
|
|
55
|
+
"performance and an improved user experience.");
|
|
56
|
+
}
|
|
44
57
|
// Setup for HKSV, if enabled.
|
|
45
58
|
if (this.protectCamera.isHksvCapable) {
|
|
46
59
|
this.hksv = new ProtectRecordingDelegate(protectCamera);
|
|
@@ -69,7 +82,7 @@ export class ProtectStreamingDelegate {
|
|
|
69
82
|
mediaContainerConfiguration: [
|
|
70
83
|
{
|
|
71
84
|
// The default HKSV segment length is 4000ms. It turns out that any setting less than that will disable HomeKit Secure Video.
|
|
72
|
-
fragmentLength:
|
|
85
|
+
fragmentLength: HKSV_FRAGMENT_LENGTH,
|
|
73
86
|
type: 0 /* MediaContainerType.FRAGMENTED_MP4 */
|
|
74
87
|
}
|
|
75
88
|
],
|
|
@@ -128,7 +141,7 @@ export class ProtectStreamingDelegate {
|
|
|
128
141
|
// No snapshot was returned - we're done here.
|
|
129
142
|
if (!snapshot) {
|
|
130
143
|
if (callback) {
|
|
131
|
-
callback(new Error(this.protectCamera.
|
|
144
|
+
callback(new Error(this.protectCamera.accessoryName + ": Unable to retrieve a snapshot"));
|
|
132
145
|
}
|
|
133
146
|
return;
|
|
134
147
|
}
|
|
@@ -249,7 +262,7 @@ export class ProtectStreamingDelegate {
|
|
|
249
262
|
if (!this.protectCamera.isOnline) {
|
|
250
263
|
const errorMessage = "Unable to start video stream: the camera is offline or unavailable.";
|
|
251
264
|
this.log.error(errorMessage);
|
|
252
|
-
callback(new Error(this.protectCamera.
|
|
265
|
+
callback(new Error(this.protectCamera.accessoryName + ": " + errorMessage));
|
|
253
266
|
return;
|
|
254
267
|
}
|
|
255
268
|
// We transcode based in the following circumstances:
|
|
@@ -270,9 +283,14 @@ export class ProtectStreamingDelegate {
|
|
|
270
283
|
// Set the initial bitrate we should use for this request based on what HomeKit is requesting.
|
|
271
284
|
let targetBitrate = request.video.max_bit_rate;
|
|
272
285
|
// Only use API livestreaming if we have a live timeshift buffer. Otherwise, we'll get better startup performance out of RTSP streaming.
|
|
273
|
-
|
|
286
|
+
let useTsb = this.protectCamera.hints.tsbStreaming && this.hksv?.isRecording;
|
|
287
|
+
// If we're A/B testing, switch our streaming types. This is intended for internal development purposes only.
|
|
288
|
+
if (this.abTest && this.protectCamera.hasFeature("Debug.Video.Stream.ABTest")) {
|
|
289
|
+
useTsb = !useTsb;
|
|
290
|
+
}
|
|
291
|
+
this.abTest = !this.abTest;
|
|
274
292
|
// If we're using the livestream API and we're timeshifting, we override the stream quality we've determined in favor of our timeshift buffer.
|
|
275
|
-
let rtspEntry =
|
|
293
|
+
let rtspEntry = useTsb ? this.hksv?.rtspEntry : null;
|
|
276
294
|
// Find the best RTSP stream based on what we're looking for.
|
|
277
295
|
if (isTranscoding) {
|
|
278
296
|
// If we have hardware transcoding enabled, we treat it uniquely and get the highest quality stream we can. Fixed-function hardware transcoders tend to perform
|
|
@@ -296,7 +314,7 @@ export class ProtectStreamingDelegate {
|
|
|
296
314
|
if (!rtspEntry) {
|
|
297
315
|
const errorMessage = "Unable to start video stream: no valid RTSP stream profile was found.";
|
|
298
316
|
this.log.error("%s %sx%s, %s fps, %s kbps.", errorMessage, request.video.width, request.video.height, request.video.fps, request.video.max_bit_rate.toLocaleString("en-US"));
|
|
299
|
-
callback(new Error(this.protectCamera.
|
|
317
|
+
callback(new Error(this.protectCamera.accessoryName + ": " + errorMessage));
|
|
300
318
|
return;
|
|
301
319
|
}
|
|
302
320
|
let flashlightService;
|
|
@@ -321,35 +339,37 @@ export class ProtectStreamingDelegate {
|
|
|
321
339
|
//
|
|
322
340
|
// - Since we are using an already existing connection to the Protect controller, we don't need to create another connection which incurs an additional delay, as well
|
|
323
341
|
// as a resource hit on the Protect controller.
|
|
324
|
-
const tsBuffer =
|
|
342
|
+
const tsBuffer = useTsb ? (this.hksv?.timeshift.getLast(PROTECT_LIVESTREAM_API_IDR_INTERVAL * 1000) ?? null) : null;
|
|
325
343
|
// -hide_banner Suppress printing the startup banner in FFmpeg.
|
|
326
344
|
// -nostats Suppress printing progress reports while encoding in FFmpeg.
|
|
327
|
-
// -fflags flags Set format flags to discard any corrupt packets
|
|
345
|
+
// -fflags flags Set format flags to discard any corrupt packets and minimize buffering and latency.
|
|
328
346
|
// -err_detect ignore_err Ignore decoding errors and continue rather than exit.
|
|
329
347
|
// -max_delay 500000 Set an upper limit on how much time FFmpeg can take in demuxing packets, in microseconds.
|
|
330
348
|
// -flags low_delay Tell FFmpeg to optimize for low delay / realtime decoding.
|
|
331
|
-
// -r fps
|
|
349
|
+
// -r fps Specify the input frame rate for the video stream.
|
|
350
|
+
// -probesize number How many bytes should be analyzed for stream information.
|
|
332
351
|
const ffmpegArgs = [
|
|
333
352
|
"-hide_banner",
|
|
334
353
|
"-nostats",
|
|
335
|
-
"-fflags", "+discardcorrupt
|
|
354
|
+
"-fflags", "+discardcorrupt" + (useTsb ? "+flush_packets+nobuffer" : ""),
|
|
336
355
|
"-err_detect", "ignore_err",
|
|
337
|
-
...this.ffmpegOptions.videoDecoder,
|
|
356
|
+
...this.ffmpegOptions.videoDecoder(this.protectCamera.ufp.videoCodec),
|
|
338
357
|
"-max_delay", "500000",
|
|
339
358
|
"-flags", "low_delay",
|
|
340
|
-
"-r", rtspEntry.channel.fps.toString()
|
|
359
|
+
"-r", rtspEntry.channel.fps.toString(),
|
|
360
|
+
"-probesize", this.probesize.toString()
|
|
341
361
|
];
|
|
342
|
-
if (
|
|
362
|
+
if (useTsb) {
|
|
343
363
|
// -f mp4 Tell ffmpeg that it should expect an MP4-encoded input stream.
|
|
344
364
|
// -i pipe:0 Use standard input to get video data.
|
|
345
|
-
|
|
365
|
+
// -bsf:v h264_mp4toannexb Convert the livestream container format from MP4 to MPEG-TS.
|
|
366
|
+
ffmpegArgs.push("-bsf:v", (this.protectCamera.ufp.videoCodec === "h264") ? "h264_mp4toannexb" : "hevc_mp4toannexb", "-f", "mp4", "-i", "pipe:0");
|
|
346
367
|
}
|
|
347
368
|
else {
|
|
348
|
-
// -probesize number How many bytes should be analyzed for stream information. Use our configured defaults.
|
|
349
369
|
// -avioflags direct Tell FFmpeg to minimize buffering to reduce latency for more realtime processing.
|
|
350
370
|
// -rtsp_transport tcp Tell the RTSP stream handler that we're looking for a TCP connection.
|
|
351
371
|
// -i rtspEntry.url RTSPS URL to get our input stream from.
|
|
352
|
-
ffmpegArgs.push("-
|
|
372
|
+
ffmpegArgs.push("-avioflags", "direct", "-rtsp_transport", "tcp", "-i", rtspEntry.url);
|
|
353
373
|
}
|
|
354
374
|
// -map 0:v:0 selects the first available video track from the stream. Protect actually maps audio
|
|
355
375
|
// and video tracks in opposite locations from where FFmpeg typically expects them. This
|
|
@@ -357,7 +377,7 @@ export class ProtectStreamingDelegate {
|
|
|
357
377
|
// Protect changes this in the future.
|
|
358
378
|
ffmpegArgs.push("-map", "0:v:0");
|
|
359
379
|
// Inform the user.
|
|
360
|
-
this.log.info("Streaming request from %s%s: %sx%s@%sfps, %s. %s %s, %s [%s].", sessionInfo.address, (request.audio.packet_time === 60) ? " (high latency connection)" : "", request.video.width, request.video.height, request.video.fps, formatBps(targetBitrate * 1000), isTranscoding ? (this.protectCamera.hints.hardwareTranscoding ? "Hardware-accelerated transcoding" : "Transcoding") : "Using", rtspEntry.name, formatBps(rtspEntry.channel.bitrate),
|
|
380
|
+
this.log.info("Streaming request from %s%s: %sx%s@%sfps, %s. %s %s, %s [%s].", sessionInfo.address, (request.audio.packet_time === 60) ? " (high latency connection)" : "", request.video.width, request.video.height, request.video.fps, formatBps(targetBitrate * 1000), isTranscoding ? (this.protectCamera.hints.hardwareTranscoding ? "Hardware-accelerated transcoding" : "Transcoding") : "Using", rtspEntry.name, formatBps(rtspEntry.channel.bitrate), useTsb ? "TSB/" + (this.protectCamera.hasFeature("Debug.Video.HKSV.UseRtsp") ? "RTSP" : "API") : "RTSP");
|
|
361
381
|
// Check to see if we're transcoding. If we are, set the right FFmpeg encoder options. If not, copy the video stream.
|
|
362
382
|
if (isTranscoding) {
|
|
363
383
|
// Configure our video parameters for transcoding.
|
|
@@ -365,7 +385,7 @@ export class ProtectStreamingDelegate {
|
|
|
365
385
|
bitrate: targetBitrate,
|
|
366
386
|
fps: request.video.fps,
|
|
367
387
|
height: request.video.height,
|
|
368
|
-
idrInterval:
|
|
388
|
+
idrInterval: HOMEKIT_IDR_INTERVAL,
|
|
369
389
|
inputFps: rtspEntry.channel.fps,
|
|
370
390
|
level: request.video.level,
|
|
371
391
|
profile: request.video.profile,
|
|
@@ -378,13 +398,14 @@ export class ProtectStreamingDelegate {
|
|
|
378
398
|
// -vcodec copy Copy the stream withour reencoding it.
|
|
379
399
|
ffmpegArgs.push("-vcodec", "copy");
|
|
380
400
|
// The livestream API needs to be transmuxed before we use it directly.
|
|
381
|
-
if (
|
|
382
|
-
// -
|
|
401
|
+
if (useTsb) {
|
|
402
|
+
// -bsf:v h264_mp4toannexb Convert the livestream container format from MP4 to MPEG-TS.
|
|
383
403
|
ffmpegArgs.push("-bsf:v", "h264_mp4toannexb");
|
|
384
404
|
}
|
|
385
405
|
}
|
|
386
406
|
// -reset_timestamps Reset timestamps for this stream instead of accepting what Protect gives us.
|
|
387
|
-
|
|
407
|
+
// -metadata Set the metadata to the name of the camera to distinguish between FFmpeg sessions.
|
|
408
|
+
ffmpegArgs.push("-reset_timestamps", "1", "-metadata", "comment=" + this.protectCamera.accessoryName + " Livestream");
|
|
388
409
|
// Add in any user-specified options for FFmpeg.
|
|
389
410
|
if (this.platform.config.ffmpegOptions) {
|
|
390
411
|
ffmpegArgs.push(...this.platform.config.ffmpegOptions);
|
|
@@ -394,10 +415,12 @@ export class ProtectStreamingDelegate {
|
|
|
394
415
|
// -payload_type num Payload type for the RTP stream. This is negotiated by HomeKit and is usually 99 for H.264 video.
|
|
395
416
|
// -ssrc Synchronization source stream identifier. Random number negotiated by HomeKit to identify this stream.
|
|
396
417
|
// -f rtp Specify that we're using the RTP protocol.
|
|
418
|
+
// -avioflags direct Tell FFmpeg to minimize buffering to reduce latency for more realtime processing.
|
|
419
|
+
// -packetsize 1200 Use a packetsize of 1200 for compatibility across network environments. This should be no more than HomeKit livestreaming MTU
|
|
420
|
+
// (1378 for IPv4 and 1228 for IPv6).
|
|
397
421
|
// -srtp_out_suite enc Specify the output encryption encoding suites.
|
|
398
422
|
// -srtp_out_params params Specify the output encoding parameters. This is negotiated by HomeKit.
|
|
399
|
-
ffmpegArgs.push("-payload_type", request.video.pt.toString(), "-ssrc", sessionInfo.videoSSRC.toString(), "-f", "rtp", "-srtp_out_suite", "AES_CM_128_HMAC_SHA1_80", "-srtp_out_params", sessionInfo.videoSRTP.toString("base64"), "srtp://" + sessionInfo.address + ":" + sessionInfo.videoPort.toString() + "?rtcpport=" + sessionInfo.videoPort.toString()
|
|
400
|
-
"&pkt_size=" + request.video.mtu.toString());
|
|
423
|
+
ffmpegArgs.push("-payload_type", request.video.pt.toString(), "-ssrc", sessionInfo.videoSSRC.toString(), "-f", "rtp", "-avioflags", "direct", "-packetsize", "1200", "-srtp_out_suite", "AES_CM_128_HMAC_SHA1_80", "-srtp_out_params", sessionInfo.videoSRTP.toString("base64"), "srtp://" + sessionInfo.address + ":" + sessionInfo.videoPort.toString() + "?rtcpport=" + sessionInfo.videoPort.toString());
|
|
401
424
|
// Configure the audio portion of the command line, if we have a version of FFmpeg supports the audio codecs we need. Options we use are:
|
|
402
425
|
//
|
|
403
426
|
// -map 0:a:0? Selects the first available audio track from the stream, if it exists. Protect actually maps audio
|
|
@@ -407,7 +430,6 @@ export class ProtectStreamingDelegate {
|
|
|
407
430
|
// -acodec Encode using the codecs available to us on given platforms.
|
|
408
431
|
// -profile:a 38 Specify enhanced, low-delay AAC for HomeKit.
|
|
409
432
|
// -flags +global_header Sets the global header in the bitstream.
|
|
410
|
-
// -f null Null filter to pass the audio unchanged without running through a muxing operation.
|
|
411
433
|
// -ar samplerate Sample rate to use for this audio. This is specified by HomeKit.
|
|
412
434
|
// -b:a bitrate Bitrate to use for this audio stream. This is specified by HomeKit.
|
|
413
435
|
// -bufsize size This is the decoder buffer size, which drives the variability / quality of the output bitrate.
|
|
@@ -415,7 +437,7 @@ export class ProtectStreamingDelegate {
|
|
|
415
437
|
// -frame_size Set the number of samples per frame to match the requested frame size from HomeKit.
|
|
416
438
|
if (sessionInfo.hasAudioSupport) {
|
|
417
439
|
// Configure our audio parameters.
|
|
418
|
-
ffmpegArgs.push("-map", "0:a:0?", ...this.ffmpegOptions.audioEncoder, "-profile:a", "38", "-flags", "+global_header", "-
|
|
440
|
+
ffmpegArgs.push("-map", "0:a:0?", ...this.ffmpegOptions.audioEncoder, "-profile:a", "38", "-flags", "+global_header", "-ar", request.audio.sample_rate.toString() + "k", "-b:a", request.audio.max_bit_rate.toString() + "k", "-bufsize", (2 * request.audio.max_bit_rate).toString() + "k", "-ac", request.audio.channel.toString(), "-frame_size", (request.audio.packet_time * request.audio.sample_rate).toString());
|
|
419
441
|
// If we are audio filtering, address it here.
|
|
420
442
|
if (this.protectCamera.hasFeature("Audio.Filter.Noise")) {
|
|
421
443
|
const afOptions = [];
|
|
@@ -450,12 +472,12 @@ export class ProtectStreamingDelegate {
|
|
|
450
472
|
// -payload_type num Payload type for the RTP stream. This is negotiated by HomeKit and is usually 110 for AAC-ELD audio.
|
|
451
473
|
// -ssrc synchronization source stream identifier. Random number negotiated by HomeKit to identify this stream.
|
|
452
474
|
// -f rtp Specify that we're using the RTP protocol.
|
|
475
|
+
// -avioflags direct Tell FFmpeg to minimize buffering to reduce latency for more realtime processing.
|
|
476
|
+
// -packetsize 384 Use a packetsize as a multiple of the sample rate. HomeKit livestreaming wants a block size of 480 samples when using AAC-ELD.
|
|
477
|
+
// We loosely interpret that to mean less than 480 bytes per packet and use 384 since it's divisible by 16 kHz and 24 kHz.
|
|
453
478
|
// -srtp_out_suite enc Specify the output encryption encoding suites.
|
|
454
479
|
// -srtp_out_params params Specify the output encoding parameters. This is negotiated by HomeKit.
|
|
455
|
-
|
|
456
|
-
// packet payload of 480 samples * 8 bits per byte / sample rate.
|
|
457
|
-
ffmpegArgs.push("-payload_type", request.audio.pt.toString(), "-ssrc", sessionInfo.audioSSRC.toString(), "-f", "rtp", "-srtp_out_suite", "AES_CM_128_HMAC_SHA1_80", "-srtp_out_params", sessionInfo.audioSRTP.toString("base64"), "srtp://" + sessionInfo.address + ":" + sessionInfo.audioPort.toString() + "?rtcpport=" + sessionInfo.audioPort.toString() + "&pkt_size=" +
|
|
458
|
-
(3840 / request.audio.sample_rate).toString());
|
|
480
|
+
ffmpegArgs.push("-payload_type", request.audio.pt.toString(), "-ssrc", sessionInfo.audioSSRC.toString(), "-f", "rtp", "-avioflags", "direct", "-packetsize", "384", "-srtp_out_suite", "AES_CM_128_HMAC_SHA1_80", "-srtp_out_params", sessionInfo.audioSRTP.toString("base64"), "srtp://" + sessionInfo.address + ":" + sessionInfo.audioPort.toString() + "?rtcpport=" + sessionInfo.audioPort.toString());
|
|
459
481
|
}
|
|
460
482
|
// Additional logging, but only if we're debugging.
|
|
461
483
|
if (this.platform.verboseFfmpeg || this.verboseFfmpeg) {
|
|
@@ -465,9 +487,9 @@ export class ProtectStreamingDelegate {
|
|
|
465
487
|
ffmpegArgs.push("-loglevel", "level+debug");
|
|
466
488
|
}
|
|
467
489
|
// Combine everything and start an instance of FFmpeg.
|
|
468
|
-
const ffmpegStream = new FfmpegStreamingProcess(this, request.sessionID, ffmpegArgs, (sessionInfo.hasAudioSupport && this.protectCamera.hints.twoWayAudio) ? undefined :
|
|
490
|
+
const ffmpegStream = new FfmpegStreamingProcess(this, request.sessionID, this.ffmpegOptions, ffmpegArgs, (sessionInfo.hasAudioSupport && this.protectCamera.hints.twoWayAudio) ? undefined :
|
|
469
491
|
{ addressVersion: sessionInfo.addressVersion, port: sessionInfo.videoReturnPort }, callback);
|
|
470
|
-
if (
|
|
492
|
+
if (useTsb) {
|
|
471
493
|
const livestream = this.protectCamera.livestream.acquire(rtspEntry);
|
|
472
494
|
let seenInitSegment = false;
|
|
473
495
|
// We maintain a queue to manage segment writes to FFmpeg. Why? We need to account for backpressure when writing to FFmpeg.
|
|
@@ -564,7 +586,7 @@ export class ProtectStreamingDelegate {
|
|
|
564
586
|
const sdpReturnAudio = [
|
|
565
587
|
"v=0",
|
|
566
588
|
"o=- 0 0 IN " + sdpIpVersion + " 127.0.0.1",
|
|
567
|
-
"s=" + this.protectCamera.
|
|
589
|
+
"s=" + this.protectCamera.accessoryName + " Audio Talkback",
|
|
568
590
|
"c=IN " + sdpIpVersion + " " + sessionInfo.address,
|
|
569
591
|
"t=0 0",
|
|
570
592
|
"m=audio " + sessionInfo.audioIncomingRtpPort.toString() + " RTP/AVP " + request.audio.pt.toString(),
|
|
@@ -667,7 +689,7 @@ export class ProtectStreamingDelegate {
|
|
|
667
689
|
}
|
|
668
690
|
}
|
|
669
691
|
// Fire up FFmpeg and start processing the incoming audio.
|
|
670
|
-
const ffmpegReturnAudio = new FfmpegStreamingProcess(this, request.sessionID, ffmpegReturnAudioCmd);
|
|
692
|
+
const ffmpegReturnAudio = new FfmpegStreamingProcess(this, request.sessionID, this.ffmpegOptions, ffmpegReturnAudioCmd);
|
|
671
693
|
// Setup housekeeping for the twoway FFmpeg session.
|
|
672
694
|
this.ongoingSessions[request.sessionID].ffmpeg.push(ffmpegReturnAudio);
|
|
673
695
|
// Feed the SDP session description to FFmpeg on stdin.
|
|
@@ -748,6 +770,24 @@ export class ProtectStreamingDelegate {
|
|
|
748
770
|
this.stopStream(session);
|
|
749
771
|
}
|
|
750
772
|
}
|
|
773
|
+
// FFmpeg error checking when abnormal exits occur so we don't fill logs up with known occasional issues.
|
|
774
|
+
ffmpegErrorCheck(stderrLog) {
|
|
775
|
+
// We're using API-based livestreaming. Be attentive to the unique errors they may present.
|
|
776
|
+
if (this.protectCamera.hints.tsbStreaming && this.hksv?.isRecording) {
|
|
777
|
+
// Test for known errors due to occasional inconsistencies in the Protect livestream API.
|
|
778
|
+
const timeshiftLivestreamRegex = new RegExp([
|
|
779
|
+
"(Cannot determine format of input stream 0:0 after EOF)",
|
|
780
|
+
"(Finishing stream without any data written to it)",
|
|
781
|
+
"(could not find corresponding trex)",
|
|
782
|
+
"(moov atom not found)"
|
|
783
|
+
].join("|"));
|
|
784
|
+
if (stderrLog.some(logEntry => timeshiftLivestreamRegex.test(logEntry))) {
|
|
785
|
+
return "FFmpeg ended unexpectedly due to issues processing the media stream provided by the UniFi Protect livestream API. " +
|
|
786
|
+
"This error can be safely ignored - it will occur occasionally.";
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
return undefined;
|
|
790
|
+
}
|
|
751
791
|
// Adjust our probe hints.
|
|
752
792
|
adjustProbeSize() {
|
|
753
793
|
if (this.probesizeOverrideTimeout) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-stream.js","sourceRoot":"","sources":["../src/protect-stream.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protect-stream.js","sourceRoot":"","sources":["../src/protect-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Nullable } from "homebridge-plugin-utils";
|
|
1
|
+
import { type Nullable } from "homebridge-plugin-utils";
|
|
2
2
|
import { EventEmitter } from "node:events";
|
|
3
|
-
import { ProtectCamera } from "./devices/index.js";
|
|
4
|
-
import { RtspEntry } from "./devices/protect-camera.js";
|
|
3
|
+
import type { ProtectCamera } from "./devices/index.js";
|
|
4
|
+
import type { RtspEntry } from "./devices/protect-camera.js";
|
|
5
5
|
export declare class ProtectTimeshiftBuffer extends EventEmitter {
|
|
6
6
|
private _buffer;
|
|
7
7
|
private _isStarted;
|
|
@@ -44,7 +44,7 @@ export class ProtectTimeshiftBuffer extends EventEmitter {
|
|
|
44
44
|
if (this.isRestarting) {
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
|
-
this.log.error("
|
|
47
|
+
this.log.error("%s connection closed by the controller. Retrying shortly.", this.protectCamera.hasFeature("Debug.Video.HKSV.UseRtsp") ? "RTSP" : "Livestream API");
|
|
48
48
|
};
|
|
49
49
|
// Listen for any segments sent by the UniFi Protect livestream in order to create our timeshift buffer.
|
|
50
50
|
this.eventHandlers.segment = (segment) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-timeshift.js","sourceRoot":"","sources":["../src/protect-timeshift.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"protect-timeshift.js","sourceRoot":"","sources":["../src/protect-timeshift.ts"],"names":[],"mappings":"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"}
|
package/dist/protect-types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ProtectCamera, ProtectChime, ProtectDoorbell, ProtectLight, ProtectSensor, ProtectViewer } from "./devices/index.js";
|
|
2
|
-
import { ProtectCameraConfig, ProtectChimeConfig, ProtectLightConfig, ProtectSensorConfig, ProtectViewerConfig } from "unifi-protect";
|
|
1
|
+
import type { ProtectCamera, ProtectChime, ProtectDoorbell, ProtectLight, ProtectSensor, ProtectViewer } from "./devices/index.js";
|
|
2
|
+
import type { ProtectCameraConfig, ProtectChimeConfig, ProtectLightConfig, ProtectSensorConfig, ProtectViewerConfig } from "unifi-protect";
|
|
3
3
|
export declare function toCamelCase(input: string): string;
|
|
4
4
|
export type ProtectDeviceTypes = {
|
|
5
5
|
camera: ProtectCamera;
|
package/dist/settings.d.ts
CHANGED
|
@@ -12,8 +12,6 @@ export declare const PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS = 200;
|
|
|
12
12
|
export declare const PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS = 1000;
|
|
13
13
|
export declare const PROTECT_FFMPEG_OPTIONS: never[];
|
|
14
14
|
export declare const PROTECT_LIVESTREAM_API_IDR_INTERVAL = 5;
|
|
15
|
-
export declare const PROTECT_HKSV_IDR_INTERVAL = 1;
|
|
16
|
-
export declare const PROTECT_HKSV_FRAGMENT_LENGTH = 4000;
|
|
17
15
|
export declare const PROTECT_HKSV_SEGMENT_RESOLUTION = 100;
|
|
18
16
|
export declare const PROTECT_HKSV_TIMEOUT = 4500;
|
|
19
17
|
export declare const PROTECT_HKSV_TIMESHIFT_BUFFER_MAXDURATION: number;
|
package/dist/settings.js
CHANGED
|
@@ -30,10 +30,6 @@ export const PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS = 1000;
|
|
|
30
30
|
export const PROTECT_FFMPEG_OPTIONS = [];
|
|
31
31
|
// Protect's native I-frame interval can vary, but the livestream API seems to default to 5 seconds at most, though it depends on camera type and stream quality selected.
|
|
32
32
|
export const PROTECT_LIVESTREAM_API_IDR_INTERVAL = 5;
|
|
33
|
-
// HomeKit prefers a default I-frame interval of 4 seconds for HKSV event recordings.
|
|
34
|
-
export const PROTECT_HKSV_IDR_INTERVAL = 1;
|
|
35
|
-
// HomeKit Secure Video fragment length, in milliseconds. HomeKit only supports this value currently.
|
|
36
|
-
export const PROTECT_HKSV_FRAGMENT_LENGTH = 4000;
|
|
37
33
|
// HomeKit Secure Video segment resolution, in milliseconds. This defines the resolution of our buffer. It should never be less than 100ms or greater than 1500ms.
|
|
38
34
|
export const PROTECT_HKSV_SEGMENT_RESOLUTION = 100;
|
|
39
35
|
// HomeKit Secure Video communication timeout threshold, in milliseconds. HKSV has a strict 5 second threshold for communication, so we set this a little below that.
|
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAEtD,mCAAmC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,yFAAyF;AACzF,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAEvD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,mFAAmF;AACnF,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC;AAExD,qIAAqI;AACrI,MAAM,CAAC,MAAM,oCAAoC,GAAG,IAAI,CAAC;AAEzD,6IAA6I;AAC7I,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,oHAAoH;AACpH,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,sHAAsH;AACtH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD,mIAAmI;AACnI,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AAExD,2GAA2G;AAC3G,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AAExD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,0KAA0K;AAC1K,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAErD,
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAEtD,mCAAmC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,yFAAyF;AACzF,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAEvD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,mFAAmF;AACnF,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC;AAExD,qIAAqI;AACrI,MAAM,CAAC,MAAM,oCAAoC,GAAG,IAAI,CAAC;AAEzD,6IAA6I;AAC7I,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,oHAAoH;AACpH,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAE5D,sHAAsH;AACtH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD,mIAAmI;AACnI,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AAExD,2GAA2G;AAC3G,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AAExD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,0KAA0K;AAC1K,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAErD,kKAAkK;AAClK,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,qKAAqK;AACrK,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC,qJAAqJ;AACrJ,MAAM,CAAC,MAAM,yCAAyC,GAAG,mCAAmC,GAAG,IAAI,GAAG,CAAC,CAAC;AAExG,uEAAuE;AACvE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,+IAA+I;AAC/I,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAErD,wJAAwJ;AACxJ,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C,0HAA0H;AAC1H,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,oGAAoG;AACpG,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAElD,uGAAuG;AACvG,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAElD,qDAAqD;AACrD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,wCAAwC;AACxC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C,oFAAoF;AACpF,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,CAAC"}
|
|
@@ -1,12 +1,71 @@
|
|
|
1
|
+
/* Copyright(C) 2017-2025, HJD (https://github.com/hjdhjd). All rights reserved.
|
|
2
|
+
*
|
|
3
|
+
* featureoptions.ts: Hierarchical feature option capabilities for use in plugins and applications.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* FeatureOptions provides a hierarchical feature option system for plugins and applications.
|
|
7
|
+
*
|
|
8
|
+
* Supports global, controller, and device-level configuration, value-centric feature options, grouping, and category management.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* // Define categories and options.
|
|
14
|
+
* const categories = [
|
|
15
|
+
*
|
|
16
|
+
* { name: "motion", description: "Motion Options" },
|
|
17
|
+
* { name: "audio", description: "Audio Options" }
|
|
18
|
+
* ];
|
|
19
|
+
*
|
|
20
|
+
* const options = {
|
|
21
|
+
*
|
|
22
|
+
* motion: [
|
|
23
|
+
* { name: "detect", default: true, description: "Enable motion detection." }
|
|
24
|
+
* ],
|
|
25
|
+
*
|
|
26
|
+
* audio: [
|
|
27
|
+
* { name: "volume", default: false, defaultValue: 50, description: "Audio volume." }
|
|
28
|
+
* ]
|
|
29
|
+
* };
|
|
30
|
+
*
|
|
31
|
+
* // Instantiate FeatureOptions.
|
|
32
|
+
* const featureOpts = new FeatureOptions(categories, options, ["Enable.motion.detect"]);
|
|
33
|
+
*
|
|
34
|
+
* // Check if a feature is enabled.
|
|
35
|
+
* const motionEnabled = featureOpts.test("motion.detect");
|
|
36
|
+
*
|
|
37
|
+
* // Get a value-centric feature option.
|
|
38
|
+
* const volume = featureOpts.value("audio.volume");
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @see FeatureOptionEntry
|
|
42
|
+
* @see FeatureCategoryEntry
|
|
43
|
+
* @see OptionScope
|
|
44
|
+
*/
|
|
1
45
|
export class FeatureOptions {
|
|
46
|
+
/**
|
|
47
|
+
* Default return value for unknown options (defaults to false).
|
|
48
|
+
*/
|
|
49
|
+
defaultReturnValue;
|
|
2
50
|
_categories;
|
|
3
51
|
_configuredOptions;
|
|
4
52
|
_groups;
|
|
5
53
|
_options;
|
|
6
|
-
defaultReturnValue;
|
|
7
54
|
defaults;
|
|
8
55
|
valueOptions;
|
|
9
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Create a new FeatureOptions instance.
|
|
58
|
+
*
|
|
59
|
+
* @param categories - Array of feature option categories.
|
|
60
|
+
* @param options - Dictionary mapping category names to arrays of feature options.
|
|
61
|
+
* @param configuredOptions - Optional. Array of currently configured option strings.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
*
|
|
65
|
+
* ```ts
|
|
66
|
+
* const featureOpts = new FeatureOptions(categories, options, ["Enable.motion.detect"]);
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
10
69
|
constructor(categories, options, configuredOptions = []) {
|
|
11
70
|
// Initialize our defaults.
|
|
12
71
|
this._categories = [];
|
|
@@ -200,9 +259,9 @@ export class FeatureOptions {
|
|
|
200
259
|
// Check to see if we have a device-level value first.
|
|
201
260
|
if (device) {
|
|
202
261
|
const value = getValue(option, device);
|
|
203
|
-
// The option
|
|
262
|
+
// The option's been explicitly disabled.
|
|
204
263
|
if (value === null) {
|
|
205
|
-
return
|
|
264
|
+
return null;
|
|
206
265
|
}
|
|
207
266
|
if (value) {
|
|
208
267
|
return value;
|
|
@@ -213,7 +272,7 @@ export class FeatureOptions {
|
|
|
213
272
|
const value = getValue(option, controller);
|
|
214
273
|
// The option's been explicitly disabled.
|
|
215
274
|
if (value === null) {
|
|
216
|
-
return
|
|
275
|
+
return null;
|
|
217
276
|
}
|
|
218
277
|
if (value) {
|
|
219
278
|
return value;
|
|
@@ -242,7 +301,7 @@ export class FeatureOptions {
|
|
|
242
301
|
/**
|
|
243
302
|
* Set the list of available feature option categories.
|
|
244
303
|
*
|
|
245
|
-
* @param
|
|
304
|
+
* @param category - Array of available categories.
|
|
246
305
|
*/
|
|
247
306
|
set categories(category) {
|
|
248
307
|
this._categories = category;
|