homebridge-unifi-protect 6.4.4 → 6.5.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.
@@ -1,4 +1,4 @@
1
- import { PROTECT_FFMPEG_AUDIO_FILTER_FFTNR, PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS, PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS, PROTECT_HKSV_SEGMENT_LENGTH, PROTECT_HKSV_TIMESHIFT_BUFFER_MAXLENGTH, PROTECT_SNAPSHOT_CACHE_MAXAGE } from "./settings.js";
1
+ import { PROTECT_FFMPEG_AUDIO_FILTER_FFTNR, PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS, PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS, PROTECT_HKSV_SEGMENT_LENGTH, PROTECT_HKSV_TIMESHIFT_BUFFER_MAXLENGTH, PROTECT_HOMEKIT_IDR_INTERVAL, PROTECT_HOMEKIT_STREAMING_HEADROOM, PROTECT_SNAPSHOT_CACHE_MAXAGE } from "./settings.js";
2
2
  import { FetchError } from "unifi-protect";
3
3
  import { FfmpegStreamingProcess } from "./protect-ffmpeg-stream.js";
4
4
  import { ProtectRecordingDelegate } from "./protect-record.js";
@@ -156,20 +156,20 @@ export class ProtectStreamingDelegate {
156
156
  return assignedPort;
157
157
  };
158
158
  // Check if audio support is enabled.
159
- const isAudioEnabled = this.nvr.optionEnabled(this.protectCamera.ufp, "Audio", true, request.targetAddress);
159
+ const isAudioEnabled = this.protectCamera.hasFeature("Audio", request.targetAddress);
160
160
  // We need to check for AAC support because it's going to determine whether we support audio.
161
- const hasLibFdk = isAudioEnabled && this.platform.isEncoderAvailable("aac", "libfdk_aac");
161
+ const hasAudioSupport = isAudioEnabled && (this.audioEncoderOptions.length > 0);
162
162
  // Setup our audio plumbing.
163
163
  const audioIncomingRtcpPort = (await reservePort(request.addressVersion));
164
- const audioIncomingPort = (hasLibFdk && this.protectCamera.hints.twoWayAudio) ? (await reservePort(request.addressVersion)) : -1;
165
- const audioIncomingRtpPort = (hasLibFdk && this.protectCamera.hints.twoWayAudio) ? (await reservePort(request.addressVersion, 2)) : -1;
164
+ const audioIncomingPort = (hasAudioSupport && this.protectCamera.hints.twoWayAudio) ? (await reservePort(request.addressVersion)) : -1;
165
+ const audioIncomingRtpPort = (hasAudioSupport && this.protectCamera.hints.twoWayAudio) ? (await reservePort(request.addressVersion, 2)) : -1;
166
166
  const audioSSRC = this.hap.CameraController.generateSynchronisationSource();
167
- if (!hasLibFdk) {
167
+ if (!hasAudioSupport) {
168
168
  this.log.info("Audio support disabled.%s", isAudioEnabled ? " A version of FFmpeg that is compiled with fdk_aac support is required to support audio." : "");
169
169
  }
170
170
  let rtpDemuxer = null;
171
171
  let talkBack = null;
172
- if (hasLibFdk && this.protectCamera.hints.twoWayAudio) {
172
+ if (hasAudioSupport && this.protectCamera.hints.twoWayAudio) {
173
173
  // Setup the RTP demuxer for two-way audio scenarios.
174
174
  rtpDemuxer = new RtpDemuxer(this, request.addressVersion, audioIncomingPort, audioIncomingRtcpPort, audioIncomingRtpPort);
175
175
  // Request the talkback websocket from the controller.
@@ -196,7 +196,7 @@ export class ProtectStreamingDelegate {
196
196
  audioPort: request.audio.port,
197
197
  audioSRTP: Buffer.concat([request.audio.srtp_key, request.audio.srtp_salt]),
198
198
  audioSSRC: audioSSRC,
199
- hasLibFdk: hasLibFdk,
199
+ hasAudioSupport: hasAudioSupport,
200
200
  rtpDemuxer: rtpDemuxer,
201
201
  rtpPortReservations: rtpPortReservations,
202
202
  talkBack: talkBack,
@@ -211,7 +211,7 @@ export class ProtectStreamingDelegate {
211
211
  // it simple and don't use a demuxer.
212
212
  const response = {
213
213
  audio: {
214
- port: (hasLibFdk && this.protectCamera.hints.twoWayAudio) ? audioIncomingPort : audioIncomingRtcpPort,
214
+ port: (hasAudioSupport && this.protectCamera.hints.twoWayAudio) ? audioIncomingPort : audioIncomingRtcpPort,
215
215
  // eslint-disable-next-line camelcase
216
216
  srtp_key: request.audio.srtp_key,
217
217
  // eslint-disable-next-line camelcase
@@ -251,7 +251,7 @@ export class ProtectStreamingDelegate {
251
251
  // high latency connection and act accordingly.
252
252
  const isTranscoding = this.protectCamera.hints.transcode || ((request.audio.packet_time >= 60) && this.protectCamera.hints.transcodeHighLatency);
253
253
  // Find the best RTSP stream based on what we're looking for.
254
- this.rtspEntry = this.protectCamera.findRtsp(request.video.width, request.video.height, this.protectCamera.ufp, sessionInfo.address);
254
+ this.rtspEntry = this.protectCamera.findRtsp(request.video.width, request.video.height, sessionInfo.address);
255
255
  if (!this.rtspEntry) {
256
256
  const errorMessage = "Unable to start video stream: no valid RTSP stream profile was found.";
257
257
  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);
@@ -291,9 +291,11 @@ export class ProtectStreamingDelegate {
291
291
  const videomtu = 188 * 3;
292
292
  const audiomtu = 188 * 1;
293
293
  // -hide_banner Suppress printing the startup banner in FFmpeg.
294
+ // -nostats Suppress printing progress reports while encoding in FFmpeg.
294
295
  // -probesize number How many bytes should be analyzed for stream information.
295
296
  // -max_delay 500000 Set an upper limit on how much time FFmpeg can take in demuxing packets, in microseconds.
296
297
  // -r fps Set the input frame rate for the video stream.
298
+ // -fflags flags Set format flags to generate a presentation timestamp if it's missing and discard any corrupt packets rather than exit.
297
299
  // -rtsp_transport tcp Tell the RTSP stream handler that we're looking for a TCP connection.
298
300
  // -i this.rtspEntry.url RTSPS URL to get our input stream from.
299
301
  // -map 0:v:0 selects the first available video track from the stream. Protect actually maps audio
@@ -304,10 +306,12 @@ export class ProtectStreamingDelegate {
304
306
  // Yes, we included these above as well: they need to be included for each I/O stream to maximize effectiveness it seems.
305
307
  const ffmpegArgs = [
306
308
  "-hide_banner",
307
- ...this.videoDecoderOptions(),
309
+ "-nostats",
310
+ ...this.videoDecoderOptions,
308
311
  "-probesize", this.probesize.toString(),
309
312
  "-max_delay", "500000",
310
313
  "-r", this.rtspEntry.channel.fps.toString(),
314
+ "-fflags", "+discardcorrupt+genpts",
311
315
  "-rtsp_transport", "tcp",
312
316
  "-i", this.rtspEntry.url,
313
317
  "-map", "0:v:0"
@@ -319,14 +323,11 @@ export class ProtectStreamingDelegate {
319
323
  // Configure our video parameters for transcoding:
320
324
  //
321
325
  // -bf 0 Disable B-frames when encoding to increase compatibility against occasionally finicky HomeKit clients.
322
- // -force_key_frames Force a keyframe to be generated every two seconds to ensure a solid livestreaming experience balanced with video quality.
323
- // -b:v bitrate The average bitrate to use for this stream. This is specified by HomeKit.
326
+ // -g:v Set the group of pictures to the number of frames per second * the interval in between keyframes to ensure a solid livestreamng exerience.
324
327
  // -bufsize size This is the decoder buffer size, which drives the variability / quality of the output bitrate.
325
- // -maxrate bitrate The maximum bitrate tolerance, used with -bufsize. We set this with max_bit_rate to effectively
326
- // create a constant bitrate.
327
- // -filter:v fps=fps= Use the fps filter to get to the frame rate requested by HomeKit. This has better performance characteristics
328
- // for Protect rather than using "-r".
329
- ffmpegArgs.push(...this.videoEncoderOptions(request.video.profile, request.video.level), "-bf", "0", "-force_key_frames", "expr:gte(t, n_forced * 2)", "-b:v", request.video.max_bit_rate.toString() + "k", "-bufsize", (2 * request.video.max_bit_rate).toString() + "k", "-maxrate", request.video.max_bit_rate.toString() + "k", "-filter:v", "fps=fps=" + request.video.fps.toString());
328
+ // -maxrate bitrate The maximum bitrate tolerance, used with -bufsize. This provides an upper bound on bitrate, with a little bit extra to allow encoders
329
+ // some variation in order to maximize quality while honoring bandwidth constraints.
330
+ ffmpegArgs.push(...this.videoEncoderOptions(request.video.max_bit_rate, request.video.width, request.video.height, request.video.profile, request.video.level), "-bf", "0", "-g:v", (this.rtspEntry.channel.fps * PROTECT_HOMEKIT_IDR_INTERVAL).toString(), "-bufsize", (2 * request.video.max_bit_rate).toString() + "k", "-maxrate", (request.video.max_bit_rate + PROTECT_HOMEKIT_STREAMING_HEADROOM).toString() + "k");
330
331
  }
331
332
  else {
332
333
  // Configure our video parameters for just copying the input stream from Protect - it tends to be quite solid in most cases:
@@ -347,25 +348,25 @@ export class ProtectStreamingDelegate {
347
348
  // -srtp_out_params params Specify the output encoding parameters. This is negotiated by HomeKit.
348
349
  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() +
349
350
  "&pkt_size=" + videomtu.toString());
350
- // Configure the audio portion of the command line, if we have a version of FFmpeg supports libfdk_aac. Options we use are:
351
+ // 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:
351
352
  //
352
- // -map 0:a:0 Selects the first available audio track from the stream. Protect actually maps audio
353
+ // -map 0:a:0? Selects the first available audio track from the stream, if it exists. Protect actually maps audio
353
354
  // and video tracks in opposite locations from where FFmpeg typically expects them. This
354
355
  // setting is a more general solution than naming the track locations directly in case
355
356
  // Protect changes this in the future.
356
- // -acodec libfdk_aac Encode to AAC.
357
- // -profile:a aac_eld Specify enhanced, low-delay AAC for HomeKit.
357
+ // -acodec Encode using the codecs available to us on given platforms.
358
+ // -profile:a 38 Specify enhanced, low-delay AAC for HomeKit.
358
359
  // -flags +global_header Sets the global header in the bitstream.
359
360
  // -f null Null filter to pass the audio unchanged without running through a muxing operation.
360
361
  // -ar samplerate Sample rate to use for this audio. This is specified by HomeKit.
361
- // -b:a bitrate Bitrate to use for this audio. This is specified by HomeKit.
362
+ // -b:a bitrate Bitrate to use for this audio stream. This is specified by HomeKit.
362
363
  // -bufsize size This is the decoder buffer size, which drives the variability / quality of the output bitrate.
363
364
  // -ac 1 Set the number of audio channels to 1.
364
- if (sessionInfo.hasLibFdk) {
365
+ if (sessionInfo.hasAudioSupport) {
365
366
  // Configure our audio parameters.
366
- ffmpegArgs.push("-map", "0:a:0", "-acodec", "libfdk_aac", "-profile:a", "aac_eld", "-flags", "+global_header", "-f", "null", "-ar", request.audio.sample_rate.toString() + "k", "-afterburner", "1", "-eld_sbr", "1", "-eld_v2", "1", "-b:a", request.audio.max_bit_rate.toString() + "k", "-bufsize", (2 * request.audio.max_bit_rate).toString() + "k", "-ac", "1");
367
+ ffmpegArgs.push("-map", "0:a:0?", ...this.audioEncoderOptions, "-profile:a", "38", "-flags", "+global_header", "-f", "null", "-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());
367
368
  // If we are audio filtering, address it here.
368
- if (this.nvr.optionEnabled(this.protectCamera.ufp, "Audio.Filter.Noise", false, sessionInfo.address)) {
369
+ if (this.protectCamera.hasFeature("Audio.Filter.Noise", sessionInfo.address)) {
369
370
  const afOptions = [];
370
371
  // See what the user has set for the afftdn filter for this camera.
371
372
  let fftNr = parseFloat(this.nvr.optionGet(this.protectCamera.ufp, "Audio.Filter.Noise.FftNr", sessionInfo.address) ?? "");
@@ -380,9 +381,9 @@ export class ProtectStreamingDelegate {
380
381
  // nr=X Noise reduction value in decibels.
381
382
  afOptions.push("afftdn=nt=w:om=o:tn=1:tr=1:nr=" + fftNr.toString());
382
383
  let highpass = this.nvr.optionGet(this.protectCamera.ufp, "Audio.Filter.Noise.HighPass", sessionInfo.address) ??
383
- (this.nvr.optionEnabled(this.protectCamera.ufp, "Audio.Filter.Noise.HighPass", false) ? PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS.toString() : undefined);
384
+ (this.protectCamera.hasFeature("Audio.Filter.Noise.HighPass") ? PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS.toString() : undefined);
384
385
  let lowpass = this.nvr.optionGet(this.protectCamera.ufp, "Audio.Filter.Noise.LowPass", sessionInfo.address) ??
385
- (this.nvr.optionEnabled(this.protectCamera.ufp, "Audio.Filter.Noise.LowPass", false) ? PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS.toString() : undefined);
386
+ (this.protectCamera.hasFeature("Audio.Filter.Noise.LowPass") ? PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS.toString() : undefined);
386
387
  // Only set the highpass and lowpass filters if the user has explicitly enabled them.
387
388
  if ((highpass !== undefined) || (lowpass !== undefined)) {
388
389
  // See what the user has set for the highpass filter for this camera.
@@ -420,7 +421,8 @@ export class ProtectStreamingDelegate {
420
421
  ffmpegArgs.push("-loglevel", "level+debug");
421
422
  }
422
423
  // Combine everything and start an instance of FFmpeg.
423
- const ffmpegStream = new FfmpegStreamingProcess(this, request.sessionID, ffmpegArgs, (sessionInfo.hasLibFdk && this.protectCamera.hints.twoWayAudio) ? undefined : { addressVersion: sessionInfo.addressVersion, port: sessionInfo.videoReturnPort }, callback);
424
+ const ffmpegStream = new FfmpegStreamingProcess(this, request.sessionID, ffmpegArgs, (sessionInfo.hasAudioSupport && this.protectCamera.hints.twoWayAudio) ? undefined :
425
+ { addressVersion: sessionInfo.addressVersion, port: sessionInfo.videoReturnPort }, callback);
424
426
  // Some housekeeping for our FFmpeg and demuxer sessions.
425
427
  this.ongoingSessions[request.sessionID] = {
426
428
  ffmpeg: [ffmpegStream],
@@ -429,7 +431,7 @@ export class ProtectStreamingDelegate {
429
431
  };
430
432
  delete this.pendingSessions[request.sessionID];
431
433
  // If we aren't doing two-way audio, we're done here. For two-way audio...we have some more plumbing to do.
432
- if (!sessionInfo.hasLibFdk || !this.protectCamera.hints.twoWayAudio) {
434
+ if (!sessionInfo.hasAudioSupport || !this.protectCamera.hints.twoWayAudio) {
433
435
  return;
434
436
  }
435
437
  // Session description protocol message that FFmpeg will share with HomeKit.
@@ -443,7 +445,7 @@ export class ProtectStreamingDelegate {
443
445
  // c Connection information.
444
446
  // t Timestamps for the start and end of the session.
445
447
  // m Media type - audio, adhering to RTP/AVP, payload type 110.
446
- // b Bandwidth information - application specific, 24k.
448
+ // b Bandwidth information - application specific, 16k or 24k.
447
449
  // a=rtpmap Payload type 110 corresponds to an MP4 stream. Format is MPEG4-GENERIC/<audio clock rate>/<audio channels>
448
450
  // a=fmtp For payload type 110, use these format parameters.
449
451
  // a=crypto Crypto suite to use for this session.
@@ -453,41 +455,41 @@ export class ProtectStreamingDelegate {
453
455
  "s=" + this.protectCamera.name + " Audio Talkback",
454
456
  "c=IN " + sdpIpVersion + " " + sessionInfo.address,
455
457
  "t=0 0",
456
- "m=audio " + sessionInfo.audioIncomingRtpPort.toString() + " RTP/AVP 110",
458
+ "m=audio " + sessionInfo.audioIncomingRtpPort.toString() + " RTP/AVP " + request.audio.pt.toString(),
457
459
  "b=AS:24",
458
- "a=rtpmap:110 MPEG4-GENERIC/" + ((request.audio.sample_rate === 16) ? "16000" : "24000") + "/1",
460
+ "a=rtpmap:110 MPEG4-GENERIC/" + ((request.audio.sample_rate === 16) ? "16000" : "24000") + "/" + request.audio.channel.toString(),
459
461
  "a=fmtp:110 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=" +
460
462
  ((request.audio.sample_rate === 16) ? "F8F0212C00BC00" : "F8EC212C00BC00"),
461
463
  "a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:" + sessionInfo.audioSRTP.toString("base64")
462
464
  ].join("\n");
463
- // Configure the audio portion of the command line, if we have a version of FFmpeg supports libfdk_aac. Options we use are:
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:
464
466
  //
465
467
  // -hide_banner Suppress printing the startup banner in FFmpeg.
468
+ // -nostats Suppress printing progress reports while encoding in FFmpeg.
466
469
  // -protocol_whitelist Set the list of allowed protocols for this FFmpeg session.
467
470
  // -f sdp Specify that our input will be an SDP file.
468
- // -acodec libfdk_aac Decode AAC input.
471
+ // -acodec Decode AAC input using the specified decoder.
469
472
  // -i pipe:0 Read input from standard input.
470
- // -acodec libfdk_aac Encode to AAC. This format is set by Protect.
473
+ // -acodec Encode to AAC. This format is set by Protect.
471
474
  // -flags +global_header Sets the global header in the bitstream.
472
- // -afterburner 1 Increases audio quality at the expense of needing a little bit more computational power in libfdk_aac.
473
- // -eld_sbr 1 Use spectral band replication to further enhance audio.
474
- // -eld_v2 1 Use the enhanced low delay v2 standard for better audio characteristics.
475
- // -af Use the aformat audio filter to set the channel layout to mono and use the Protect-provided sample
476
- // rate to produce the right audio needed for talkback.
475
+ // -ar Sets the audio rate to what Protect is expecting.
476
+ // -b:a Bitrate to use for this audio stream based on what HomeKit is providing us.
477
+ // -ac Sets the channel layout of the audio stream based on what Protect is expecting.
477
478
  // -f adts Transmit an ADTS stream.
478
479
  // pipe:1 Output the ADTS stream to standard output.
479
480
  const ffmpegReturnAudioCmd = [
480
481
  "-hide_banner",
482
+ "-nostats",
481
483
  "-protocol_whitelist", "crypto,file,pipe,rtp,udp",
482
484
  "-f", "sdp",
483
- "-acodec", "libfdk_aac",
485
+ "-acodec", this.audioDecoderOptions,
484
486
  "-i", "pipe:0",
485
- "-acodec", "libfdk_aac",
487
+ "-map", "0:a:0",
488
+ ...this.audioEncoderOptions,
486
489
  "-flags", "+global_header",
487
- "-afterburner", "1",
488
- "-eld_sbr", "1",
489
- "-eld_v2", "1",
490
- "-af", "aformat=channel_layouts=mono:sample_rates=" + this.protectCamera.ufp.talkbackSettings.samplingRate.toString(),
490
+ "-ar", this.protectCamera.ufp.talkbackSettings.samplingRate.toString(),
491
+ "-b:a", request.audio.max_bit_rate.toString() + "k",
492
+ "-ac", this.protectCamera.ufp.talkbackSettings.channels.toString(),
491
493
  "-f", "adts",
492
494
  "pipe:1"
493
495
  ];
@@ -788,20 +790,22 @@ export class ProtectStreamingDelegate {
788
790
  if (this.protectCamera.hints.hardwareTranscoding) {
789
791
  this.protectCamera.hasHwAccel = true;
790
792
  // Utility function to check that we have a specific encoder codec available to us.
791
- const hasEncoder = (codec) => {
793
+ const validateEncoder = (codec) => {
792
794
  if (!this.platform.isEncoderAvailable("h264", codec)) {
793
- this.log.error("Unable to enable hardware accelerated transcoding. " + "Your video processor does not have support for the " + codec + " encoder enabled. " +
795
+ this.log.error("Unable to enable hardware accelerated transcoding. " + "Your video processor does not have support for the " + codec + " encoder. " +
794
796
  "Using software transcoding instead.");
795
797
  this.protectCamera.hasHwAccel = false;
796
798
  return false;
797
799
  }
798
800
  return true;
799
801
  };
800
- switch (this.platform.systemInfo) {
801
- case "macOS":
802
+ switch (this.platform.hostSystem) {
803
+ case "macOS.Apple":
804
+ case "macOS.Intel":
802
805
  // Verify that we have the hardware encoder available to us.
803
- if (!hasEncoder("h264_videotoolbox")) {
804
- break;
806
+ validateEncoder("h264_videotoolbox");
807
+ if (!this.platform.isEncoderAvailable("aac", "aac_at")) {
808
+ this.log.error("Your video processor does not have support for the native macOS AAC encoder, aac_at. Will attempt to use libfdk_aac instead.");
805
809
  }
806
810
  break;
807
811
  default:
@@ -816,18 +820,71 @@ export class ProtectStreamingDelegate {
816
820
  }
817
821
  return this.protectCamera.hasHwAccel;
818
822
  }
819
- // Determine the video decoder options to use when decoding video.
820
- videoDecoderOptions() {
823
+ // Return the audio encoder options to use when transcoding.
824
+ get audioEncoderOptions() {
825
+ // If we don't have libfdk_aac available to us, we're essentially dead in the water.
826
+ let encoderOptions = [];
827
+ // Utility function to return a default audio encoder codec.
828
+ const defaultEncoderOptions = () => {
829
+ if (this.platform.isEncoderAvailable("aac", "libfdk_aac")) {
830
+ // Default to libfdk_aac since FFmpeg doesn't natively support AAC-ELD. We use the following options by default:
831
+ //
832
+ // -acodec libfdk_aac Use the libfdk_aac encoder.
833
+ // -afterburner 1 Increases audio quality at the expense of needing a little bit more computational power in libfdk_aac.
834
+ // -eld_sbr 1 Use spectral band replication to further enhance audio.
835
+ // -eld_v2 1 Use the enhanced low delay v2 standard for better audio characteristics.
836
+ return [
837
+ "-acodec", "libfdk_aac",
838
+ "-afterburner", "1",
839
+ "-eld_sbr", "1",
840
+ "-eld_v2", "1"
841
+ ];
842
+ }
843
+ else {
844
+ return [];
845
+ }
846
+ };
847
+ switch (this.platform.hostSystem) {
848
+ case "macOS.Apple":
849
+ case "macOS.Intel":
850
+ // If we don't have audiotoolbox available, let's default back to libfdk_aac.
851
+ if (!this.platform.isEncoderAvailable("aac", "aac_at")) {
852
+ encoderOptions = defaultEncoderOptions();
853
+ break;
854
+ }
855
+ // aac_at is the macOS audio encoder API. We use the following options:
856
+ //
857
+ // -acodec aac_at Use the aac_at encoder on macOS.
858
+ // -aac_at_mode cvbr Use the constrained variable bitrate setting to allow the encoder to optimize audio, while remaining within the requested bitrates.
859
+ encoderOptions = [
860
+ "-acodec", "aac_at",
861
+ "-aac_at_mode", "cvbr"
862
+ ];
863
+ break;
864
+ default:
865
+ encoderOptions = defaultEncoderOptions();
866
+ break;
867
+ }
868
+ return encoderOptions;
869
+ }
870
+ // Return the audio encoder to use when decoding.
871
+ get audioDecoderOptions() {
872
+ return "libfdk_aac";
873
+ }
874
+ // Return the video decoder options to use when decoding video.
875
+ get videoDecoderOptions() {
821
876
  // Default to no special decoder options for inbound streams.
822
877
  let decoderOptions = [];
823
878
  // If we've enabled hardware-accelerated transcoding, let's select decoder options accordingly where supported.
824
879
  if (this.protectCamera.hints.hardwareDecoding) {
825
- switch (this.platform.systemInfo) {
880
+ switch (this.platform.hostSystem) {
826
881
  case "macOS":
827
882
  // h264_videotoolbox is the macOS hardware encoder API. We use the following options for decoding video:
828
883
  //
829
- // -hwaccel auto Automatically select hardware accelerated video decoding hardware when it's available.
830
- decoderOptions = ["-hwaccel", "auto"];
884
+ // -hwaccel videotoolbox Select videotoolbox for hardware accelerated H.264 decoding.
885
+ decoderOptions = [
886
+ "-hwaccel", "videotoolbox"
887
+ ];
831
888
  break;
832
889
  default:
833
890
  break;
@@ -835,43 +892,84 @@ export class ProtectStreamingDelegate {
835
892
  }
836
893
  return decoderOptions;
837
894
  }
838
- // Determine the video encoder options to use when transcoding.
839
- videoEncoderOptions(profile, level) {
895
+ // Return the video encoder options to use when transcoding.
896
+ videoEncoderOptions(bitrate, width, height, profile, level) {
840
897
  // Default to the tried-and-true libx264. We use the following options by default:
841
898
  //
842
899
  // -vcodec libx264 Use the excellent libx264 H.264 encoder by default, unless the user explicitly overrides it.
843
- // -pix_fmt yuvj420p Use the yuvj420p pixel format, which is what Protect uses.
844
900
  // -preset veryfast Use the veryfast encoding preset in libx264, which provides a good balance of encoding speed and quality.
845
901
  // -profile:v Use the H.264 profile that HomeKit is requesting when encoding.
846
902
  // -level:v Use the H.264 profile level that HomeKit is requesting when encoding.
903
+ // -noautoscale Don't attempt to scale the video stream automatically.
904
+ // -filter:v Set the pixel format and scale the video to the size we want while respecting aspect ratios and ensuring our final
905
+ // dimensions are a power of two.
906
+ // -crf 20 Use a constant rate factor of 20, to allow libx264 the ability to vary bitrates to achieve the visual quality we
907
+ // want, constrained by our maximum bitrate.
847
908
  let encoderOptions = [
848
909
  // If the user has specified a video encoder, let's use it.
849
910
  "-vcodec", this.config.videoEncoder ?? "libx264",
850
- "-pix_fmt", "yuvj420p",
851
911
  "-preset", "veryfast",
852
912
  "-profile:v", this.getH264Profile(profile),
853
- "-level:v", this.getH264Level(level)
913
+ "-level:v", this.getH264Level(level),
914
+ "-noautoscale",
915
+ "-filter:v", "format=yuvj420p|videotoolbox_vld|nv12|yuv420p,scale=-2:min(ih\\," + height.toString() + ")",
916
+ "-crf", "20"
854
917
  ];
855
918
  // If we've enabled hardware-accelerated transcoding, let's select encoder options accordingly where supported.
856
919
  if (this.protectCamera.hints.hardwareTranscoding) {
857
- switch (this.platform.systemInfo) {
858
- case "macOS":
859
- // h264_videotoolbox is the macOS hardware encoder API. We use the following options:
920
+ switch (this.platform.hostSystem) {
921
+ case "macOS.Apple":
922
+ // h264_videotoolbox is the macOS hardware encoder API. We use the following options on Apple Silicon:
860
923
  //
861
- // -pix_fmt nv12 videotoolbox doesn't support the full yuvj420p pixel format, so we use nv12 to get us close.
862
- // -coder cabac Use the cabac encoder for better video quality with the encoding profiles we use in HBUP.
924
+ // -vcodec Specify the macOS hardware encoder, h264_videotoolbox.
863
925
  // -allow_sw 1 Allow the use of the software encoder if the hardware encoder is occupied or unavailable.
864
926
  // This allows us to scale when we get multiple streaming requests simultaneously that might consume all the available encode engines.
927
+ // -realtime 1 We prefer speed over quality - if the encoder has to make a choice, sacrifice one for the other.
928
+ // -coder cabac Use the cabac encoder for better video quality with the encoding profiles we use in HBUP.
865
929
  // -profile:v Use the H.264 profile that HomeKit is requesting when encoding.
866
- // -level:v 5.1 We override what HomeKit requests for the H.264 profile level on macOS when we're using hardware accelerated transcoding because the
867
- // hardware encoder won't transcode to anything below H.264 level 5.1 on higher bitrate streams like the G4 Pro.
930
+ // -level:v 0 We override what HomeKit requests for the H.264 profile level on macOS when we're using hardware accelerated transcoding because
931
+ // the hardware encoder is particular about how to use levels. Setting it to 0 allows the encoder to decide for itself.
932
+ // -noautoscale Don't attempt to scale the video stream automatically.
933
+ // -filter:v Set the pixel format and scale the video to the size we want while respecting aspect ratios and ensuring our final dimensions are a
934
+ // power of two.
935
+ // -q:v 90 Use a fixed quality scale of 90, to allow videotoolbox the ability to vary bitrates to achieve the visual quality we want,
936
+ // constrained by our maximum bitrate. This is only available on Apple Silicon.
868
937
  encoderOptions = [
869
938
  "-vcodec", "h264_videotoolbox",
870
- "-pix_fmt", "nv12",
939
+ "-allow_sw", "1",
940
+ "-realtime", "1",
871
941
  "-coder", "cabac",
942
+ "-profile:v", this.getH264Profile(profile),
943
+ "-level:v", "0",
944
+ "-noautoscale",
945
+ "-filter:v", "format=videotoolbox_vld|nv12, scale=-2:min(ih\\," + height.toString() + ")",
946
+ "-q:v", "90"
947
+ ];
948
+ break;
949
+ case "macOS.Intel":
950
+ // h264_videotoolbox is the macOS hardware encoder API. We use the following options on Intel-based Macs:
951
+ //
952
+ // -vcodec Specify the macOS hardware encoder, h264_videotoolbox.
953
+ // -allow_sw 1 Allow the use of the software encoder if the hardware encoder is occupied or unavailable.
954
+ // This allows us to scale when we get multiple streaming requests simultaneously that might consume all the available encode engines.
955
+ // -realtime 1 We prefer speed over quality - if the encoder has to make a choice, sacrifice one for the other.
956
+ // -coder cabac Use the cabac encoder for better video quality with the encoding profiles we use in HBUP.
957
+ // -profile:v Use the H.264 profile that HomeKit is requesting when encoding.
958
+ // -level:v 0 We override what HomeKit requests for the H.264 profile level on macOS when we're using hardware accelerated transcoding because
959
+ // the hardware encoder is particular about how to use levels. Setting it to 0 allows the encoder to decide for itself.
960
+ // -noautoscale Don't attempt to scale the video stream automatically.
961
+ // -filter:v Set the pixel format and scale the video to the size we want while respecting aspect ratios and ensuring our final dimensions are a
962
+ // power of two.
963
+ encoderOptions = [
964
+ "-vcodec", "h264_videotoolbox",
872
965
  "-allow_sw", "1",
966
+ "-realtime", "1",
967
+ "-coder", "cabac",
873
968
  "-profile:v", this.getH264Profile(profile),
874
- "-level:v", "5.1"
969
+ "-level:v", "0",
970
+ "-noautoscale",
971
+ "-filter:v", "format=videotoolbox_vld|nv12, scale=-2:min(ih\\," + height.toString() + ")",
972
+ "-b:v", bitrate.toString() + "k"
875
973
  ];
876
974
  break;
877
975
  default:
@@ -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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"}
@@ -9,10 +9,11 @@ export declare const PROTECT_FFMPEG_AUDIO_FILTER_FFTNR = 90;
9
9
  export declare const PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS = 200;
10
10
  export declare const PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS = 1000;
11
11
  export declare const PROTECT_FFMPEG_OPTIONS: never[];
12
- export declare const PROTECT_HOMEKIT_IDR_INTERVAL = 4;
13
12
  export declare const PROTECT_HKSV_SEGMENT_LENGTH = 4000;
14
13
  export declare const PROTECT_HKSV_TIMESHIFT_BUFFER_MAXLENGTH: number;
15
14
  export declare const PROTECT_HKSV_SEGMENT_RESOLUTION = 100;
15
+ export declare const PROTECT_HOMEKIT_STREAMING_HEADROOM = 64;
16
+ export declare const PROTECT_HOMEKIT_IDR_INTERVAL = 2;
16
17
  export declare const PROTECT_MOTION_DURATION = 10;
17
18
  export declare const PROTECT_MQTT_RECONNECT_INTERVAL = 60;
18
19
  export declare const PROTECT_MQTT_TOPIC = "unifi/protect";