homebridge-unifi-protect 7.21.0 → 7.22.0

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.
Files changed (55) hide show
  1. package/dist/devices/protect-camera-package.js +3 -3
  2. package/dist/devices/protect-camera-package.js.map +1 -1
  3. package/dist/devices/protect-camera.d.ts +2 -1
  4. package/dist/devices/protect-camera.js +78 -49
  5. package/dist/devices/protect-camera.js.map +1 -1
  6. package/dist/devices/protect-chime.js +3 -2
  7. package/dist/devices/protect-chime.js.map +1 -1
  8. package/dist/devices/protect-device.js +19 -22
  9. package/dist/devices/protect-device.js.map +1 -1
  10. package/dist/devices/protect-doorbell.d.ts +4 -2
  11. package/dist/devices/protect-doorbell.js +37 -22
  12. package/dist/devices/protect-doorbell.js.map +1 -1
  13. package/dist/devices/protect-light.js +6 -6
  14. package/dist/devices/protect-light.js.map +1 -1
  15. package/dist/devices/protect-liveviews.js +8 -26
  16. package/dist/devices/protect-liveviews.js.map +1 -1
  17. package/dist/devices/protect-nvr-systeminfo.d.ts +0 -2
  18. package/dist/devices/protect-nvr-systeminfo.js +13 -47
  19. package/dist/devices/protect-nvr-systeminfo.js.map +1 -1
  20. package/dist/devices/protect-securitysystem.js +17 -36
  21. package/dist/devices/protect-securitysystem.js.map +1 -1
  22. package/dist/devices/protect-sensor.d.ts +2 -2
  23. package/dist/devices/protect-sensor.js +16 -16
  24. package/dist/devices/protect-sensor.js.map +1 -1
  25. package/dist/devices/protect-viewer.js +8 -8
  26. package/dist/devices/protect-viewer.js.map +1 -1
  27. package/dist/protect-events.js +12 -18
  28. package/dist/protect-events.js.map +1 -1
  29. package/dist/protect-livestream.js +9 -3
  30. package/dist/protect-livestream.js.map +1 -1
  31. package/dist/protect-nvr.d.ts +5 -5
  32. package/dist/protect-nvr.js +36 -34
  33. package/dist/protect-nvr.js.map +1 -1
  34. package/dist/protect-options.d.ts +4 -4
  35. package/dist/protect-options.js +2 -2
  36. package/dist/protect-options.js.map +1 -1
  37. package/dist/protect-platform.d.ts +1 -1
  38. package/dist/protect-platform.js +8 -14
  39. package/dist/protect-platform.js.map +1 -1
  40. package/dist/protect-record.d.ts +1 -2
  41. package/dist/protect-record.js +9 -14
  42. package/dist/protect-record.js.map +1 -1
  43. package/dist/protect-stream.js +39 -59
  44. package/dist/protect-stream.js.map +1 -1
  45. package/dist/protect-timeshift.d.ts +0 -2
  46. package/dist/protect-timeshift.js +7 -15
  47. package/dist/protect-timeshift.js.map +1 -1
  48. package/dist/settings.d.ts +4 -4
  49. package/dist/settings.js +5 -5
  50. package/dist/settings.js.map +1 -1
  51. package/homebridge-ui/public/lib/featureoptions.js +7 -8
  52. package/homebridge-ui/public/lib/featureoptions.js.map +1 -1
  53. package/homebridge-ui/public/lib/webUi-featureoptions.mjs +488 -213
  54. package/homebridge-ui/public/ui.mjs +1 -1
  55. package/package.json +9 -9
@@ -23,8 +23,8 @@ export const featureOptions = {
23
23
  { default: true, description: "Audio support.", hasFeature: ["hasMic"], name: "" },
24
24
  { default: false, description: "Audio filter for ambient noise suppression.", hasFeature: ["hasMic"], name: "Filter.Noise" },
25
25
  { default: true, defaultValue: PROTECT_FFMPEG_AUDIO_FILTER_FFTNR, description: "Noise reduction amount, in decibels, for the FFmpeg afftdn filter.", group: "Filter.Noise", name: "Filter.Noise.FftNr" },
26
- { default: false, defaultValue: PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS, description: "Frequency, in Hertz, for the FFmpeg highpass filter.", group: "Filter.Noise", name: "Filter.Noise.HighPass" },
27
- { default: false, defaultValue: PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS, description: "Frequency, in Hertz, for the FFmpeg lowpass filter.", group: "Filter.Noise", name: "Filter.Noise.LowPass" },
26
+ { default: true, defaultValue: PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS, description: "Frequency, in Hertz, for the FFmpeg highpass filter.", group: "Filter.Noise", name: "Filter.Noise.HighPass" },
27
+ { default: true, defaultValue: PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS, description: "Frequency, in Hertz, for the FFmpeg lowpass filter.", group: "Filter.Noise", name: "Filter.Noise.LowPass" },
28
28
  { default: true, description: "Two-way audio support on supported cameras.", hasFeature: ["hasSpeaker"], name: "TwoWay" },
29
29
  { default: false, description: "Send two-way audio directly to supported cameras, bypassing the controller. Useful for working around bugs in some Protect controller firmware versions.", group: "TwoWay", hasFeature: ["hasSpeaker"], name: "TwoWay.Direct" }
30
30
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"protect-options.js","sourceRoot":"","sources":["../src/protect-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protect-options.js","sourceRoot":"","sources":["../src/protect-options.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export declare class ProtectPlatform implements DynamicPlatformPlugin {
11
11
  readonly log: Logging;
12
12
  readonly rtpPorts: RtpPortAllocator;
13
13
  verboseFfmpeg: boolean;
14
- constructor(log: Logging, config: PlatformConfig, api: API);
14
+ constructor(log: Logging, config: PlatformConfig | undefined, api: API);
15
15
  configureAccessory(accessory: PlatformAccessory): void;
16
16
  private launchControllers;
17
17
  debug(message: string, ...parameters: unknown[]): void;
@@ -22,21 +22,17 @@ export class ProtectPlatform {
22
22
  this.log = log;
23
23
  this.rtpPorts = new RtpPortAllocator();
24
24
  this.verboseFfmpeg = false;
25
- // We can't start without being configured.
26
- if (!config) {
27
- return;
28
- }
29
25
  // Plugin options into our config variables.
30
26
  this.config = {
31
- controllers: config.controllers,
32
- debugAll: config.debug === true,
33
- options: config.options,
34
- ringDelay: config.ringDelay ?? 0,
35
- verboseFfmpeg: config.verboseFfmpeg === true,
36
- videoProcessor: config.videoProcessor ?? ffmpegPath ?? "ffmpeg"
27
+ controllers: config?.controllers ?? [],
28
+ debugAll: config?.debug === true,
29
+ options: config?.options ?? [],
30
+ ringDelay: config?.ringDelay ?? 0,
31
+ verboseFfmpeg: config?.verboseFfmpeg === true,
32
+ videoProcessor: config?.videoProcessor ?? ffmpegPath ?? "ffmpeg"
37
33
  };
38
34
  // We need a UniFi Protect controller configured to do anything.
39
- if (!this.config.controllers) {
35
+ if (!this.config.controllers.length) {
40
36
  this.log.info("No UniFi Protect controllers have been configured.");
41
37
  return;
42
38
  }
@@ -60,9 +56,7 @@ export class ProtectPlatform {
60
56
  continue;
61
57
  }
62
58
  // MQTT topic to use.
63
- if (!controllerConfig.mqttTopic) {
64
- controllerConfig.mqttTopic = PROTECT_MQTT_TOPIC;
65
- }
59
+ controllerConfig.mqttTopic ||= PROTECT_MQTT_TOPIC;
66
60
  this.controllers.push(new ProtectNvr(this, controllerConfig));
67
61
  }
68
62
  // Probe our FFmpeg capabilities.
@@ -1 +1 @@
1
- {"version":3,"file":"protect-platform.js","sourceRoot":"","sources":["../src/protect-platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protect-platform.js","sourceRoot":"","sources":["../src/protect-platform.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,6 @@ export declare class ProtectRecordingDelegate implements CameraRecordingDelegate
12
12
  private isInitialized;
13
13
  private isTransmitting;
14
14
  private readonly log;
15
- private nvr;
16
15
  private readonly protectCamera;
17
16
  private recordingConfig?;
18
17
  rtspEntry: Nullable<RtspEntry>;
@@ -25,7 +24,7 @@ export declare class ProtectRecordingDelegate implements CameraRecordingDelegate
25
24
  updateRecordingConfiguration(configuration: CameraRecordingConfiguration | undefined): void;
26
25
  handleRecordingStreamRequest(): AsyncGenerator<RecordingPacket>;
27
26
  acknowledgeStream(): void;
28
- closeRecordingStream(streamId: number, reason?: HDSProtocolSpecificErrorReason): void;
27
+ closeRecordingStream(_streamId: number, reason?: HDSProtocolSpecificErrorReason): void;
29
28
  private configureTimeshifting;
30
29
  private startTransmitting;
31
30
  private stopTransmitting;
@@ -11,7 +11,6 @@ export class ProtectRecordingDelegate {
11
11
  isInitialized;
12
12
  isTransmitting;
13
13
  log;
14
- nvr;
15
14
  protectCamera;
16
15
  recordingConfig;
17
16
  rtspEntry;
@@ -28,7 +27,6 @@ export class ProtectRecordingDelegate {
28
27
  this.isInitialized = false;
29
28
  this.isTransmitting = false;
30
29
  this.log = protectCamera.log;
31
- this.nvr = protectCamera.nvr;
32
30
  this.protectCamera = protectCamera;
33
31
  this.timeshiftedSegments = 0;
34
32
  this.transmittedSegments = 0;
@@ -110,18 +108,16 @@ export class ProtectRecordingDelegate {
110
108
  if (!this.isTransmitting) {
111
109
  break;
112
110
  }
113
- // No segment doesn't mean we're done necessarily, but it does mean we need to wait for FFmpeg to catch up.
114
- if (!segment) {
115
- continue;
116
- }
117
111
  // Keep track of how many segments we're sending to HKSV.
118
112
  this.transmittedSegments++;
119
113
  // Send HKSV the fMP4 segment.
120
114
  yield { data: segment, isLast: false };
121
115
  }
122
116
  // If FFmpeg timed out it's typically due to issues with the video coming from the Protect controller. Restart the timeshift buffer to see if we can improve things.
117
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
123
118
  if (this.ffmpegStream?.isTimedOut || !this.transmittedSegments) {
124
119
  this.timeshift.restart();
120
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
125
121
  if (this.ffmpegStream?.isTimedOut) {
126
122
  // Send HKSV a final segment to cleanly wrap up.
127
123
  yield { data: Buffer.alloc(1, 0), isLast: true };
@@ -134,7 +130,7 @@ export class ProtectRecordingDelegate {
134
130
  this.stopTransmitting();
135
131
  }
136
132
  // Process HomeKit requests to end the transmission of the recording stream.
137
- closeRecordingStream(streamId, reason) {
133
+ closeRecordingStream(_streamId, reason) {
138
134
  this.stopTransmitting(reason);
139
135
  }
140
136
  // Maintain a timeshift buffer and which Protect streams to use for HKSV.
@@ -163,7 +159,7 @@ export class ProtectRecordingDelegate {
163
159
  }
164
160
  // If we haven't changed the camera channel or lens we're using, and we've already started timeshifting, we're done.
165
161
  if (this.timeshift.isStarted && (this.rtspEntry.channel.id === oldRtspEntry?.channel.id) &&
166
- ((this.rtspEntry.lens === undefined) || (this.rtspEntry.lens === oldRtspEntry?.lens))) {
162
+ ((this.rtspEntry.lens === undefined) || (this.rtspEntry.lens === oldRtspEntry.lens))) {
167
163
  return true;
168
164
  }
169
165
  // Fire up the timeshift buffer. If we've got multiple lenses, we use the first channel and explicitly request the lens we want.
@@ -197,6 +193,7 @@ export class ProtectRecordingDelegate {
197
193
  this.transmittedSegments = this.timeshiftedSegments = 0;
198
194
  // Start a new FFmpeg instance to transcode using HomeKit's requirements.
199
195
  this.ffmpegStream = new FfmpegRecordingProcess(this.protectCamera.stream.ffmpegOptions, this.recordingConfig, {
196
+ audioFilters: this.protectCamera.audioFilters,
200
197
  audioStream: 0,
201
198
  codec: this.protectCamera.ufp.videoCodec,
202
199
  enableAudio: this.isAudioActive,
@@ -250,14 +247,12 @@ export class ProtectRecordingDelegate {
250
247
  // Check to make sure something didn't go wrong when we start transmitting the stream. If there is, we're resetting our connectivity to the Protect controller.
251
248
  if (!(await this.timeshift.transmitStart())) {
252
249
  // Stop our FFmpeg process and our timeshift buffer.
253
- this.ffmpegStream?.stop();
250
+ this.ffmpegStream.stop();
254
251
  this.timeshift.stop();
255
- if (this.transmitListener) {
256
- this.timeshift.off("segment", this.transmitListener);
257
- this.transmitListener = undefined;
258
- }
252
+ this.timeshift.off("segment", this.transmitListener);
259
253
  // Ensure we cleanup.
260
254
  this.ffmpegStream = undefined;
255
+ this.transmitListener = undefined;
261
256
  this.isTransmitting = false;
262
257
  return false;
263
258
  }
@@ -276,7 +271,7 @@ export class ProtectRecordingDelegate {
276
271
  this.timeshift.transmitStop();
277
272
  // Kill any FFmpeg sessions.
278
273
  if (this.ffmpegStream) {
279
- this.ffmpegStream.stop(((reason !== undefined) && (reason !== 0 /* HDSProtocolSpecificErrorReason.NORMAL */)) ? false : undefined);
274
+ this.ffmpegStream.stop((((reason !== undefined) && (reason !== 0 /* HDSProtocolSpecificErrorReason.NORMAL */)) || this.timeshift.isRestarting) ? false : undefined);
280
275
  this.ffmpegStream = undefined;
281
276
  }
282
277
  this.isTransmitting = false;
@@ -1 +1 @@
1
- {"version":3,"file":"protect-record.js","sourceRoot":"","sources":["../src/protect-record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protect-record.js","sourceRoot":"","sources":["../src/protect-record.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Agent, WebSocket } from "undici";
2
2
  import { FfmpegOptions, FfmpegStreamingProcess, HKSV_FRAGMENT_LENGTH, HOMEKIT_IDR_INTERVAL, RtpDemuxer, formatBps } from "homebridge-plugin-utils";
3
- import { PROTECT_FFMPEG_AUDIO_FILTER_FFTNR, PROTECT_HKSV_TIMESHIFT_BUFFER_MAXDURATION, PROTECT_LIVESTREAM_API_IDR_INTERVAL } from "./settings.js";
3
+ import { PROTECT_HKSV_TIMESHIFT_BUFFER_MAXDURATION, PROTECT_LIVESTREAM_API_IDR_INTERVAL } from "./settings.js";
4
4
  import { ProtectRecordingDelegate } from "./protect-record.js";
5
5
  import { ProtectReservedNames } from "./protect-types.js";
6
6
  import { ProtectSnapshot } from "./protect-snapshot.js";
@@ -111,7 +111,8 @@ export class ProtectStreamingDelegate {
111
111
  {
112
112
  audioChannels: 1,
113
113
  bitrate: 0,
114
- // Protect doorbells and the Opus audio track over RTSP both use a 48 kHz audio sampling rate. Otherwise, the livestream API uses a 16 kHz sampling rate.
114
+ // Protect doorbells and the Opus audio track over RTSP both use a 48 kHz audio sampling rate, which HomeKit doesn't support. Since both 16 and 24 will
115
+ // divide cleanly into 48, we allow HomeKit to choose it's preference. Otherwise, the livestream API uses a 16 kHz sampling rate.
115
116
  samplerate: (this.protectCamera.ufp.featureFlags.isDoorbell || !this.protectCamera.hints.tsbStreaming) ?
116
117
  [16 /* AudioStreamingSamplerate.KHZ_16 */, 24 /* AudioStreamingSamplerate.KHZ_24 */] : 16 /* AudioStreamingSamplerate.KHZ_16 */,
117
118
  type: "AAC-eld" /* AudioStreamingCodecType.AAC_ELD */
@@ -209,6 +210,7 @@ export class ProtectStreamingDelegate {
209
210
  const videoReturnPort = (await reservePort(request.addressVersion));
210
211
  const videoSSRC = this.hap.CameraController.generateSynchronisationSource();
211
212
  // If we've had failures to retrieve the UDP ports we're looking for, inform the user.
213
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
212
214
  if (reservePortFailed) {
213
215
  this.log.error("Unable to reserve the UDP ports needed to begin streaming.");
214
216
  }
@@ -231,9 +233,8 @@ export class ProtectStreamingDelegate {
231
233
  videoSRTP: Buffer.concat([request.video.srtp_key, request.video.srtp_salt]),
232
234
  videoSSRC: videoSSRC
233
235
  };
234
- // Prepare the response stream. Here's where we figure out if we're doing two-way audio or not. For two-way audio,
235
- // we need to use a demuxer to separate RTP and RTCP packets. For traditional video/audio streaming, we want to keep
236
- // it simple and don't use a demuxer.
236
+ // Prepare the response stream. Here's where we figure out if we're doing two-way audio or not. For two-way audio, we need to use a demuxer to separate RTP and RTCP
237
+ // packets. For traditional video/audio streaming, we want to keep it simple and don't use a demuxer.
237
238
  const response = {
238
239
  audio: {
239
240
  port: (hasAudioSupport && this.protectCamera.hints.twoWayAudio) ? audioIncomingPort : audioIncomingRtcpPort,
@@ -370,12 +371,11 @@ export class ProtectStreamingDelegate {
370
371
  const ffmpegArgs = [
371
372
  "-hide_banner",
372
373
  "-nostats",
373
- "-fflags", "+discardcorrupt+genpts+igndts",
374
+ "-fflags", "+discardcorrupt",
374
375
  "-err_detect", "ignore_err",
375
376
  ...this.ffmpegOptions.videoDecoder(this.protectCamera.ufp.videoCodec),
376
377
  "-max_delay", "500000",
377
378
  "-flags", "low_delay",
378
- "-r", rtspEntry.channel.fps.toString(),
379
379
  "-probesize", this.probesize.toString()
380
380
  ];
381
381
  if (useTsb) {
@@ -396,18 +396,21 @@ export class ProtectStreamingDelegate {
396
396
  ffmpegArgs.push("-map", "0:v:0");
397
397
  // Inform the user.
398
398
  const hinting = [];
399
- // Lightning bolt, using the default emoji presentation.
400
- hinting.push(...(isTranscoding && this.protectCamera.hints.hardwareTranscoding ? ["\u26A1\uFE0F"] : []));
401
- // Gear, using the text presentation modifier.
402
- hinting.push(...(isTranscoding ? ["\u26ED\uFE0E"] : []));
403
- // Hourglass, using the text presentation modifier.
404
- hinting.push(...((request.audio.packet_time === 60) ? ["\u29D6\uFE0E"] : []));
399
+ // Lightning bolt, using the default emoji presentation. We use this to indicate hardware acceleration.
400
+ hinting.push(...(isTranscoding && this.protectCamera.hints.hardwareTranscoding ? ["\u{26A1}\u{FE0F}"] : []));
401
+ // Gear, using the text presentation modifier. We use this to indicate that we're transcoding.
402
+ hinting.push(...(isTranscoding ? ["\u{26ED}\u{FE0E}"] : []));
403
+ // Hourglass, using the text presentation modifier. We use this to indicate high latency connections.
404
+ hinting.push(...((request.audio.packet_time === 60) ? ["\u{29D6}\u{FE0E}"] : []));
405
+ // Speaker, using the text presentation modifier. We use this to indicate that we're applying audio filters for noise reduction.
406
+ hinting.push(...(sessionInfo.hasAudioSupport && (this.protectCamera.hasFeature("Audio.Filter.Noise")) ? ["\u{1F50A}\u{FE0E}"] : []));
405
407
  hinting.push(...(hinting.length ? [""] : []));
406
408
  this.log.info("%sStreaming request: %sx%s@%sfps, %s. Using %s, %s [%s].", hinting.join(" "), request.video.width, request.video.height, request.video.fps, formatBps(targetBitrate * 1000), rtspEntry.name, formatBps(rtspEntry.channel.bitrate), useTsb ? "TSB/" + (this.protectCamera.hasFeature("Debug.Video.HKSV.UseRtsp") ? "RTSP" : "API") : "RTSP");
407
- // When on high-performance hardware like Apple Silicon, using the TSB, and we don't have low-FPS cameras like the package camera, enable the use of the CPU-intensive
408
- // FFmpeg minterpolate filter to enable very smooth video, especially when there's motion involved. Apple Silicon environments are able to reliably use this filter in
409
- // realtime and with great results. I'm hoping to be able to enable this in the future for other platforms.
410
- const useInterpolationFilter = useTsb && !("packageCamera" in this.protectCamera.accessory.context) && (this.platform.codecSupport.hostSystem === "macOS.Apple");
409
+ // When on high-performance hardware like Apple Silicon, using the TSB, and we don't have low-FPS cameras like the package camera, enable the use of the
410
+ // CPU-intensive FFmpeg minterpolate filter to enable very smooth video, especially when there's motion involved. M3+ Apple Silicon environments are able to reliably
411
+ // use this filter in realtime and with great results. I'm hoping to be able to enable this in the future for other platforms.
412
+ const useInterpolationFilter = useTsb && !("packageCamera" in this.protectCamera.accessory.context) &&
413
+ ((this.platform.codecSupport.hostSystem === "macOS.Apple") && (this.platform.codecSupport.cpuGeneration >= 3));
411
414
  // Check to see if we're transcoding. If we are, set the right FFmpeg encoder options. If not, copy the video stream.
412
415
  if (isTranscoding) {
413
416
  // Configure our video parameters for transcoding.
@@ -421,10 +424,11 @@ export class ProtectStreamingDelegate {
421
424
  profile: request.video.profile,
422
425
  width: request.video.width
423
426
  }));
424
- // We augment our video filters to account for the timestamp quirkiness in FFmpeg when it comes to dealing with fMP4 inputs.
425
427
  if (useInterpolationFilter) {
426
428
  // Adjust our presentation timestamps for a smoother streaming experience.
427
- const minterpolate = "minterpolate=fps=" + request.video.fps.toString() + ":mi_mode=mci:mc_mode=aobmc:me=fss:me_mode=bidir:vsbmc=1:scd=none";
429
+ const minterpolate = ((this.protectCamera.hints.hardwareTranscoding && this.platform.codecSupport.ffmpegVersion.startsWith("8.")) ? "hwdownload, format=nv12, " : "") +
430
+ "fps=" + request.video.fps.toString() +
431
+ ", minterpolate=fps=" + request.video.fps.toString() + ":mi_mode=mci:mc_mode=aobmc:me=fss:me_mode=bidir:vsbmc=1:scd=none";
428
432
  const vf = ffmpegArgs.indexOf("-filter:v");
429
433
  if (vf >= 0) {
430
434
  ffmpegArgs[vf + 1] += ", " + minterpolate;
@@ -445,20 +449,19 @@ export class ProtectStreamingDelegate {
445
449
  ffmpegArgs.push("-bsf:v", "h264_mp4toannexb");
446
450
  }
447
451
  }
448
- // -fps_mode passthrough Ensure FFmpeg uses the PTS values we've specified, unaltered.
449
452
  // -metadata Set the metadata to the name of the camera to distinguish between FFmpeg sessions.
450
- ffmpegArgs.push("-fps_mode", "passthrough", "-metadata", "comment=" + this.protectCamera.accessoryName + " Livestream");
453
+ ffmpegArgs.push("-metadata", "comment=" + this.protectCamera.accessoryName + " Livestream");
451
454
  // Configure our video parameters for SRTP streaming:
452
455
  //
453
456
  // -payload_type num Payload type for the RTP stream. This is negotiated by HomeKit and is usually 99 for H.264 video.
454
457
  // -ssrc Synchronization source stream identifier. Random number negotiated by HomeKit to identify this stream.
455
458
  // -f rtp Specify that we're using the RTP protocol.
456
- // -avioflags direct Tell FFmpeg to minimize buffering to reduce latency for more realtime processing.
459
+ // -flush_packets 1 Ensure we flush our write buffer after each muxed packet.
457
460
  // -packetsize 1200 Use a packetsize of 1200 for compatibility across network environments. This should be no more than HomeKit livestreaming MTU
458
461
  // (1378 for IPv4 and 1228 for IPv6).
459
462
  // -srtp_out_suite enc Specify the output encryption encoding suites.
460
463
  // -srtp_out_params params Specify the output encoding parameters. This is negotiated by HomeKit.
461
- 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());
464
+ ffmpegArgs.push("-payload_type", request.video.pt.toString(), "-ssrc", sessionInfo.videoSSRC.toString(), "-f", "rtp", "-flush_packets", "1", "-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());
462
465
  // 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:
463
466
  //
464
467
  // -map 0:a:0? Selects the first available audio track from the stream, if it exists. Protect actually maps audio
@@ -467,59 +470,34 @@ export class ProtectStreamingDelegate {
467
470
  // Protect changes this in the future.
468
471
  // -codec:a Encode using the codecs available to us on given platforms.
469
472
  // -profile:a 38 Specify enhanced, low-delay AAC for HomeKit.
470
- // -flags +global_header Sets the global header in the bitstream.
473
+ // -flags +global_header Sets the global header in the bitstream. Needed for FDK-AAC to correctly initialize. For encoders like aac_at it becomes a no-op.
471
474
  // -ar samplerate Sample rate to use for this audio. This is specified by HomeKit.
472
475
  // -b:a bitrate Bitrate to use for this audio stream. This is specified by HomeKit.
473
476
  // -ac number Set the number of audio channels.
474
- // -frame_size Set the number of samples per frame to match the requested frame size from HomeKit.
475
477
  if (sessionInfo.hasAudioSupport) {
476
478
  // Configure our audio parameters.
477
479
  ffmpegArgs.push(
478
480
  // Take advantage of the higher fidelity potentially available to us from the Opus track in the RTSP stream. The livestream API only provides an AAC track.
479
- "-map", useTsb ? "0:a:0?" : "0:a:1?", ...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", "-ac", request.audio.channel.toString(), "-frame_size", (request.audio.packet_time * request.audio.sample_rate).toString());
481
+ "-map", useTsb ? "0:a:0?" : "0:a:1?", ...this.ffmpegOptions.audioEncoder(), "-flags", "+global_header", "-profile:a", "38", "-ar", request.audio.sample_rate.toString() + "k", "-b:a", request.audio.max_bit_rate.toString() + "k", "-ac", request.audio.channel.toString());
480
482
  // If we are audio filtering, address it here.
481
- if (this.protectCamera.hasFeature("Audio.Filter.Noise")) {
482
- const afOptions = [];
483
- // See what the user has set for the afftdn filter for this camera.
484
- let fftNr = this.protectCamera.getFeatureFloat("Audio.Filter.Noise.FftNr") ?? PROTECT_FFMPEG_AUDIO_FILTER_FFTNR;
485
- // If we have an invalid setting, use the defaults.
486
- if ((fftNr < 0.01) || (fftNr > 97)) {
487
- fftNr = (fftNr > 97) ? 97 : ((fftNr < 0.01) ? 0.01 : fftNr);
488
- }
489
- // The afftdn filter options we use are:
490
- //
491
- // nt=w Focus on eliminating white noise.
492
- // om=o Output the filtered audio.
493
- // tn=1 Enable noise tracking.
494
- // tr=1 Enable residual tracking.
495
- // nr=X Noise reduction value in decibels.
496
- afOptions.push("afftdn=nt=w:om=o:tn=1:tr=1:nr=" + fftNr.toString());
497
- const highpass = this.protectCamera.getFeatureNumber("Audio.Filter.Noise.HighPass");
498
- const lowpass = this.protectCamera.getFeatureNumber("Audio.Filter.Noise.LowPass");
499
- // Only set the highpass and lowpass filters if the user has explicitly enabled them.
500
- if ((highpass !== null) && (highpass !== undefined)) {
501
- afOptions.push("highpass=f=" + highpass.toString());
502
- }
503
- if ((lowpass !== null) && (lowpass !== undefined)) {
504
- afOptions.push("lowpass=f=" + lowpass.toString());
505
- }
506
- // Return the assembled audio filter option.
507
- ffmpegArgs.push("-af", afOptions.join(", "));
483
+ const afOptions = this.protectCamera.audioFilters;
484
+ if (afOptions.length) {
485
+ ffmpegArgs.push("-filter:a", afOptions.join(", "));
508
486
  }
509
487
  // Add the required RTP settings and encryption for the stream:
510
488
  //
511
489
  // -payload_type num Payload type for the RTP stream. This is negotiated by HomeKit and is usually 110 for AAC-ELD audio.
512
490
  // -ssrc synchronization source stream identifier. Random number negotiated by HomeKit to identify this stream.
513
491
  // -f rtp Specify that we're using the RTP protocol.
514
- // -avioflags direct Tell FFmpeg to minimize buffering to reduce latency for more realtime processing.
492
+ // -flush_packets 1 Ensure we flush our write buffer after each muxed packet.
515
493
  // -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.
516
494
  // 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.
517
495
  // -srtp_out_suite enc Specify the output encryption encoding suites.
518
496
  // -srtp_out_params params Specify the output encoding parameters. This is negotiated by HomeKit.
519
- 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());
497
+ ffmpegArgs.push("-payload_type", request.audio.pt.toString(), "-ssrc", sessionInfo.audioSSRC.toString(), "-f", "rtp", "-flush_packets", "1", "-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());
520
498
  }
521
499
  // Additional logging, but only if we're debugging.
522
- if (this.platform.verboseFfmpeg || this.verboseFfmpeg) {
500
+ if (this.platform.verboseFfmpeg || this.verboseFfmpeg || this.protectCamera.hasFeature("Debug.Video.FFmpeg")) {
523
501
  ffmpegArgs.push("-loglevel", "level+verbose");
524
502
  }
525
503
  if (this.platform.config.debugAll) {
@@ -689,7 +667,7 @@ export class ProtectStreamingDelegate {
689
667
  ws = new WebSocket(sessionInfo.talkBack, { dispatcher: new Agent({ connect: { rejectUnauthorized: false } }) });
690
668
  isTalkbackLive = true;
691
669
  // Catch any errors and inform the user, if needed.
692
- ws?.addEventListener("error", (event) => {
670
+ ws.addEventListener("error", (event) => {
693
671
  // Ignore timeout errors, but notify the user about anything else.
694
672
  if (event.error.code !== "ETIMEDOUT") {
695
673
  this.log.error("Error in communicating with the return audio channel: %s - %s", event.error.cause.code, event.error.cause);
@@ -698,7 +676,7 @@ export class ProtectStreamingDelegate {
698
676
  wsCleanup();
699
677
  }, { once: true });
700
678
  // Catch any stray open events after we've closed.
701
- ws?.addEventListener("open", openListener = () => {
679
+ ws.addEventListener("open", openListener = () => {
702
680
  // If we've somehow opened after we've wrapped up talkback, terminate the connection.
703
681
  if (!isTalkbackLive) {
704
682
  // Clean up our talkback websocket.
@@ -706,7 +684,7 @@ export class ProtectStreamingDelegate {
706
684
  }
707
685
  });
708
686
  // Cleanup after ourselves on close.
709
- ws?.addEventListener("close", () => {
687
+ ws.addEventListener("close", () => {
710
688
  ws?.removeEventListener("open", openListener);
711
689
  }, { once: true });
712
690
  }
@@ -765,6 +743,7 @@ export class ProtectStreamingDelegate {
765
743
  stopStream(sessionId) {
766
744
  try {
767
745
  // Stop any FFmpeg instances we have running.
746
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
768
747
  if (this.ongoingSessions[sessionId]) {
769
748
  this.ongoingSessions[sessionId].ffmpeg.map(ffmpegProcess => ffmpegProcess.stop());
770
749
  // Close the demuxer, if we have one.
@@ -777,6 +756,7 @@ export class ProtectStreamingDelegate {
777
756
  this.ongoingSessions[sessionId].rtpPortReservations.map(x => this.platform.rtpPorts.cancel(x));
778
757
  }
779
758
  // On the off chance we were signaled to prepare to start streaming, but never actually started streaming, cleanup after ourselves.
759
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
780
760
  if (this.pendingSessions[sessionId]) {
781
761
  // Release our port reservations.
782
762
  this.pendingSessions[sessionId].rtpPortReservations.map(x => this.platform.rtpPorts.cancel(x));