homebridge-unifi-protect 6.4.3 → 6.5.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.
- package/dist/protect-camera.js +55 -9
- package/dist/protect-camera.js.map +1 -1
- package/dist/protect-device.d.ts +1 -1
- package/dist/protect-device.js +10 -3
- package/dist/protect-device.js.map +1 -1
- package/dist/protect-doorbell.js +4 -2
- package/dist/protect-doorbell.js.map +1 -1
- package/dist/protect-ffmpeg-record.js +13 -14
- package/dist/protect-ffmpeg-record.js.map +1 -1
- package/dist/protect-liveviews.js.map +1 -1
- package/dist/protect-nvr.js +1 -1
- package/dist/protect-nvr.js.map +1 -1
- package/dist/protect-options.js +2 -2
- package/dist/protect-options.js.map +1 -1
- package/dist/protect-record.js +4 -5
- package/dist/protect-record.js.map +1 -1
- package/dist/protect-securitysystem.js +4 -1
- package/dist/protect-securitysystem.js.map +1 -1
- package/dist/protect-sensor.js +4 -1
- package/dist/protect-sensor.js.map +1 -1
- package/dist/protect-stream.d.ts +4 -2
- package/dist/protect-stream.js +132 -62
- package/dist/protect-stream.js.map +1 -1
- package/dist/settings.d.ts +2 -1
- package/dist/settings.js +4 -2
- package/dist/settings.js.map +1 -1
- package/homebridge-ui/server.js +7 -6
- package/package.json +8 -8
package/dist/protect-stream.js
CHANGED
|
@@ -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";
|
|
@@ -158,18 +158,18 @@ export class ProtectStreamingDelegate {
|
|
|
158
158
|
// Check if audio support is enabled.
|
|
159
159
|
const isAudioEnabled = this.nvr.optionEnabled(this.protectCamera.ufp, "Audio", true, request.targetAddress);
|
|
160
160
|
// We need to check for AAC support because it's going to determine whether we support audio.
|
|
161
|
-
const
|
|
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 = (
|
|
165
|
-
const audioIncomingRtpPort = (
|
|
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 (!
|
|
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 (
|
|
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
|
-
|
|
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: (
|
|
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
|
|
@@ -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
|
-
|
|
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
|
-
// -
|
|
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.
|
|
326
|
-
//
|
|
327
|
-
|
|
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.profile, request.video.level, request.video.width, request.video.height), "-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,23 +348,23 @@ 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
|
|
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
|
|
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
|
|
357
|
-
// -profile:a
|
|
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.
|
|
365
|
+
if (sessionInfo.hasAudioSupport) {
|
|
365
366
|
// Configure our audio parameters.
|
|
366
|
-
ffmpegArgs.push("-map", "0:a:0",
|
|
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
369
|
if (this.nvr.optionEnabled(this.protectCamera.ufp, "Audio.Filter.Noise", false, sessionInfo.address)) {
|
|
369
370
|
const afOptions = [];
|
|
@@ -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.
|
|
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.
|
|
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
|
|
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") + "/
|
|
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
|
|
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
|
|
471
|
+
// -acodec Decode AAC input using the specified decoder.
|
|
469
472
|
// -i pipe:0 Read input from standard input.
|
|
470
|
-
// -acodec
|
|
473
|
+
// -acodec Encode to AAC. This format is set by Protect.
|
|
471
474
|
// -flags +global_header Sets the global header in the bitstream.
|
|
472
|
-
// -
|
|
473
|
-
// -
|
|
474
|
-
// -
|
|
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",
|
|
485
|
+
"-acodec", this.audioDecoderOptions,
|
|
484
486
|
"-i", "pipe:0",
|
|
485
|
-
"-
|
|
487
|
+
"-map", "0:a:0",
|
|
488
|
+
...this.audioEncoderOptions,
|
|
486
489
|
"-flags", "+global_header",
|
|
487
|
-
"-
|
|
488
|
-
"-
|
|
489
|
-
"-
|
|
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,9 +790,9 @@ 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
|
|
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
|
|
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;
|
|
@@ -800,8 +802,9 @@ export class ProtectStreamingDelegate {
|
|
|
800
802
|
switch (this.platform.systemInfo) {
|
|
801
803
|
case "macOS":
|
|
802
804
|
// Verify that we have the hardware encoder available to us.
|
|
803
|
-
|
|
804
|
-
|
|
805
|
+
validateEncoder("h264_videotoolbox");
|
|
806
|
+
if (!this.platform.isEncoderAvailable("aac", "aac_at")) {
|
|
807
|
+
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
808
|
}
|
|
806
809
|
break;
|
|
807
810
|
default:
|
|
@@ -816,8 +819,58 @@ export class ProtectStreamingDelegate {
|
|
|
816
819
|
}
|
|
817
820
|
return this.protectCamera.hasHwAccel;
|
|
818
821
|
}
|
|
819
|
-
//
|
|
820
|
-
|
|
822
|
+
// Return the audio encoder options to use when transcoding.
|
|
823
|
+
get audioEncoderOptions() {
|
|
824
|
+
// If we don't have libfdk_aac available to us, we're essentially dead in the water.
|
|
825
|
+
let encoderOptions = [];
|
|
826
|
+
// Utility function to return a default audio encoder codec.
|
|
827
|
+
const defaultEncoderOptions = () => {
|
|
828
|
+
if (this.platform.isEncoderAvailable("aac", "libfdk_aac")) {
|
|
829
|
+
// Default to libfdk_aac since FFmpeg doesn't natively support AAC-ELD. We use the following options by default:
|
|
830
|
+
//
|
|
831
|
+
// -acodec libfdk_aac Use the libfdk_aac encoder.
|
|
832
|
+
// -afterburner 1 Increases audio quality at the expense of needing a little bit more computational power in libfdk_aac.
|
|
833
|
+
// -eld_sbr 1 Use spectral band replication to further enhance audio.
|
|
834
|
+
// -eld_v2 1 Use the enhanced low delay v2 standard for better audio characteristics.
|
|
835
|
+
return [
|
|
836
|
+
"-acodec", "libfdk_aac",
|
|
837
|
+
"-afterburner", "1",
|
|
838
|
+
"-eld_sbr", "1",
|
|
839
|
+
"-eld_v2", "1"
|
|
840
|
+
];
|
|
841
|
+
}
|
|
842
|
+
else {
|
|
843
|
+
return [];
|
|
844
|
+
}
|
|
845
|
+
};
|
|
846
|
+
switch (this.platform.systemInfo) {
|
|
847
|
+
case "macOS":
|
|
848
|
+
// If we don't have audiotoolbox available, let's default back to libfdk_aac.
|
|
849
|
+
if (!this.platform.isEncoderAvailable("aac", "aac_at")) {
|
|
850
|
+
encoderOptions = defaultEncoderOptions();
|
|
851
|
+
break;
|
|
852
|
+
}
|
|
853
|
+
// aac_at is the macOS audio encoder API. We use the following options:
|
|
854
|
+
//
|
|
855
|
+
// -acodec aac_at Use the aac_at encoder on macOS.
|
|
856
|
+
// -aac_at_mode cvbr Use the constrained variable bitrate setting to allow the encoder to optimize audio, while remaining within the requested bitrates.
|
|
857
|
+
encoderOptions = [
|
|
858
|
+
"-acodec", "aac_at",
|
|
859
|
+
"-aac_at_mode", "cvbr"
|
|
860
|
+
];
|
|
861
|
+
break;
|
|
862
|
+
default:
|
|
863
|
+
encoderOptions = defaultEncoderOptions();
|
|
864
|
+
break;
|
|
865
|
+
}
|
|
866
|
+
return encoderOptions;
|
|
867
|
+
}
|
|
868
|
+
// Return the audio encoder to use when decoding.
|
|
869
|
+
get audioDecoderOptions() {
|
|
870
|
+
return "libfdk_aac";
|
|
871
|
+
}
|
|
872
|
+
// Return the video decoder options to use when decoding video.
|
|
873
|
+
get videoDecoderOptions() {
|
|
821
874
|
// Default to no special decoder options for inbound streams.
|
|
822
875
|
let decoderOptions = [];
|
|
823
876
|
// If we've enabled hardware-accelerated transcoding, let's select decoder options accordingly where supported.
|
|
@@ -826,8 +879,10 @@ export class ProtectStreamingDelegate {
|
|
|
826
879
|
case "macOS":
|
|
827
880
|
// h264_videotoolbox is the macOS hardware encoder API. We use the following options for decoding video:
|
|
828
881
|
//
|
|
829
|
-
// -hwaccel
|
|
830
|
-
decoderOptions = [
|
|
882
|
+
// -hwaccel videotoolbox Select videotoolbox for hardware accelerated H.264 decoding.
|
|
883
|
+
decoderOptions = [
|
|
884
|
+
"-hwaccel", "videotoolbox"
|
|
885
|
+
];
|
|
831
886
|
break;
|
|
832
887
|
default:
|
|
833
888
|
break;
|
|
@@ -835,22 +890,28 @@ export class ProtectStreamingDelegate {
|
|
|
835
890
|
}
|
|
836
891
|
return decoderOptions;
|
|
837
892
|
}
|
|
838
|
-
//
|
|
839
|
-
videoEncoderOptions(profile, level) {
|
|
893
|
+
// Return the video encoder options to use when transcoding.
|
|
894
|
+
videoEncoderOptions(profile, level, width, height) {
|
|
840
895
|
// Default to the tried-and-true libx264. We use the following options by default:
|
|
841
896
|
//
|
|
842
897
|
// -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
898
|
// -preset veryfast Use the veryfast encoding preset in libx264, which provides a good balance of encoding speed and quality.
|
|
845
899
|
// -profile:v Use the H.264 profile that HomeKit is requesting when encoding.
|
|
846
900
|
// -level:v Use the H.264 profile level that HomeKit is requesting when encoding.
|
|
901
|
+
// -noautoscale Don't attempt to scale the video stream automatically.
|
|
902
|
+
// -filter:v Set the pixel format and scale the video to the size we want while respecting aspect ratios and ensuring our final
|
|
903
|
+
// dimensions are a power of two.
|
|
904
|
+
// -crf 20 Use a constant rate factor of 20, to allow libx264 the ability to vary bitrates to achieve the visual quality we
|
|
905
|
+
// want, constrained by our maximum bitrate.
|
|
847
906
|
let encoderOptions = [
|
|
848
907
|
// If the user has specified a video encoder, let's use it.
|
|
849
908
|
"-vcodec", this.config.videoEncoder ?? "libx264",
|
|
850
|
-
"-pix_fmt", "yuvj420p",
|
|
851
909
|
"-preset", "veryfast",
|
|
852
910
|
"-profile:v", this.getH264Profile(profile),
|
|
853
|
-
"-level:v", this.getH264Level(level)
|
|
911
|
+
"-level:v", this.getH264Level(level),
|
|
912
|
+
"-noautoscale",
|
|
913
|
+
"-filter:v", "format=yuvj420p|videotoolbox_vld|nv12,scale=-2:min(ih\\," + height.toString() + ")",
|
|
914
|
+
"-crf", "20"
|
|
854
915
|
];
|
|
855
916
|
// If we've enabled hardware-accelerated transcoding, let's select encoder options accordingly where supported.
|
|
856
917
|
if (this.protectCamera.hints.hardwareTranscoding) {
|
|
@@ -858,20 +919,29 @@ export class ProtectStreamingDelegate {
|
|
|
858
919
|
case "macOS":
|
|
859
920
|
// h264_videotoolbox is the macOS hardware encoder API. We use the following options:
|
|
860
921
|
//
|
|
861
|
-
// -
|
|
862
|
-
// -coder cabac Use the cabac encoder for better video quality with the encoding profiles we use in HBUP.
|
|
922
|
+
// -vcodec Specify the macOS hardware encoder, h264_videotoolbox.
|
|
863
923
|
// -allow_sw 1 Allow the use of the software encoder if the hardware encoder is occupied or unavailable.
|
|
864
924
|
// This allows us to scale when we get multiple streaming requests simultaneously that might consume all the available encode engines.
|
|
925
|
+
// -realtime 1 We prefer speed over quality - if the encoder has to make a choice, sacrifice one for the other.
|
|
926
|
+
// -coder cabac Use the cabac encoder for better video quality with the encoding profiles we use in HBUP.
|
|
865
927
|
// -profile:v Use the H.264 profile that HomeKit is requesting when encoding.
|
|
866
|
-
// -level:v
|
|
867
|
-
// hardware encoder
|
|
928
|
+
// -level:v 0 We override what HomeKit requests for the H.264 profile level on macOS when we're using hardware accelerated transcoding because the
|
|
929
|
+
// hardware encoder is particular about how to use levels. Setting it to 0 allows the encoder to decide for itself.
|
|
930
|
+
// -noautoscale Don't attempt to scale the video stream automatically.
|
|
931
|
+
// -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
|
|
932
|
+
// power of two.
|
|
933
|
+
// -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,
|
|
934
|
+
// constrained by our maximum bitrate.
|
|
868
935
|
encoderOptions = [
|
|
869
936
|
"-vcodec", "h264_videotoolbox",
|
|
870
|
-
"-pix_fmt", "nv12",
|
|
871
|
-
"-coder", "cabac",
|
|
872
937
|
"-allow_sw", "1",
|
|
938
|
+
"-realtime", "1",
|
|
939
|
+
"-coder", "cabac",
|
|
873
940
|
"-profile:v", this.getH264Profile(profile),
|
|
874
|
-
"-level:v", "
|
|
941
|
+
"-level:v", "0",
|
|
942
|
+
"-noautoscale",
|
|
943
|
+
"-filter:v", "format=videotoolbox_vld|nv12,scale=-2:min(ih\\," + height.toString() + ")",
|
|
944
|
+
"-q:v", "90"
|
|
875
945
|
];
|
|
876
946
|
break;
|
|
877
947
|
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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"}
|
package/dist/settings.d.ts
CHANGED
|
@@ -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";
|
package/dist/settings.js
CHANGED
|
@@ -24,14 +24,16 @@ export const PROTECT_FFMPEG_AUDIO_FILTER_HIGHPASS = 200;
|
|
|
24
24
|
export const PROTECT_FFMPEG_AUDIO_FILTER_LOWPASS = 1000;
|
|
25
25
|
// Magic incantantion to further streamline FFmpeg for Protect.
|
|
26
26
|
export const PROTECT_FFMPEG_OPTIONS = [];
|
|
27
|
-
// HomeKit prefers a video streaming I-frame interval of 4 seconds.
|
|
28
|
-
export const PROTECT_HOMEKIT_IDR_INTERVAL = 4;
|
|
29
27
|
// HomeKit Secure Video segment length, in milliseconds. HomeKit only supports this value currently.
|
|
30
28
|
export const PROTECT_HKSV_SEGMENT_LENGTH = 4000;
|
|
31
29
|
// HomeKit Secure Video timeshift buffer default length, in milliseconds. This defines how far back in time we can look when we see a motion event.
|
|
32
30
|
export const PROTECT_HKSV_TIMESHIFT_BUFFER_MAXLENGTH = PROTECT_HKSV_SEGMENT_LENGTH * 2;
|
|
33
31
|
// 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.
|
|
34
32
|
export const PROTECT_HKSV_SEGMENT_RESOLUTION = 100;
|
|
33
|
+
// Additional headroom for bitrates beyond what HomeKit is requesting when streaming to improve quality with a minor additional bandwidth cost.
|
|
34
|
+
export const PROTECT_HOMEKIT_STREAMING_HEADROOM = 64;
|
|
35
|
+
// HomeKit prefers a video streaming I-frame interval of 2 seconds.
|
|
36
|
+
export const PROTECT_HOMEKIT_IDR_INTERVAL = 2;
|
|
35
37
|
// Default duration, in seconds, of motion events. Setting this too low will potentially cause a lot of notification spam.
|
|
36
38
|
export const PROTECT_MOTION_DURATION = 10;
|
|
37
39
|
// How often, in seconds, should we try to reconnect with an MQTT broker, if we have one configured.
|
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,oGAAoG;AACpG,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,4HAA4H;AAC5H,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,yFAAyF;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,yFAAyF;AACzF,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAEvD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,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,
|
|
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,oGAAoG;AACpG,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,4HAA4H;AAC5H,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,yFAAyF;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,yFAAyF;AACzF,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAEvD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAEpD,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,oGAAoG;AACpG,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD,mJAAmJ;AACnJ,MAAM,CAAC,MAAM,uCAAuC,GAAG,2BAA2B,GAAG,CAAC,CAAC;AAEvF,kKAAkK;AAClK,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,+IAA+I;AAC/I,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAErD,mEAAmE;AACnE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,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,gDAAgD;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC,wCAAwC;AACxC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD,8CAA8C;AAC9C,MAAM,CAAC,MAAM,uCAAuC,GAAG,EAAE,CAAC;AAE1D,6JAA6J;AAC7J,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC"}
|
package/homebridge-ui/server.js
CHANGED
|
@@ -131,15 +131,15 @@ class PluginUiServer extends HomebridgePluginUiServer {
|
|
|
131
131
|
this.onRequest("/getCachedAccessories", async () => {
|
|
132
132
|
try {
|
|
133
133
|
|
|
134
|
-
// Define the plugin and create the array to return
|
|
134
|
+
// Define the plugin and create the array to return.
|
|
135
135
|
const plugin = "homebridge-unifi-protect";
|
|
136
136
|
const devicesToReturn = [];
|
|
137
137
|
|
|
138
|
-
// The path and file of the cached accessories
|
|
138
|
+
// The path and file of the cached accessories.
|
|
139
139
|
const accFile = this.homebridgeStoragePath + "/accessories/cachedAccessories";
|
|
140
140
|
|
|
141
|
-
// Check the file exists
|
|
142
|
-
if
|
|
141
|
+
// Check the file exists.
|
|
142
|
+
if(fs.existsSync(accFile)) {
|
|
143
143
|
|
|
144
144
|
// Read the cached accessories file
|
|
145
145
|
let cachedAccessories = await fs.promises.readFile(accFile);
|
|
@@ -153,8 +153,9 @@ class PluginUiServer extends HomebridgePluginUiServer {
|
|
|
153
153
|
|
|
154
154
|
// Return the array
|
|
155
155
|
return devicesToReturn;
|
|
156
|
-
} catch
|
|
157
|
-
|
|
156
|
+
} catch(err) {
|
|
157
|
+
|
|
158
|
+
// Just return an empty accessory list in case of any errors.
|
|
158
159
|
return [];
|
|
159
160
|
}
|
|
160
161
|
});
|