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.
- package/dist/devices/protect-camera-package.js +3 -3
- package/dist/devices/protect-camera-package.js.map +1 -1
- package/dist/devices/protect-camera.d.ts +2 -1
- package/dist/devices/protect-camera.js +78 -49
- package/dist/devices/protect-camera.js.map +1 -1
- package/dist/devices/protect-chime.js +3 -2
- package/dist/devices/protect-chime.js.map +1 -1
- package/dist/devices/protect-device.js +19 -22
- package/dist/devices/protect-device.js.map +1 -1
- package/dist/devices/protect-doorbell.d.ts +4 -2
- package/dist/devices/protect-doorbell.js +37 -22
- package/dist/devices/protect-doorbell.js.map +1 -1
- package/dist/devices/protect-light.js +6 -6
- package/dist/devices/protect-light.js.map +1 -1
- package/dist/devices/protect-liveviews.js +8 -26
- package/dist/devices/protect-liveviews.js.map +1 -1
- package/dist/devices/protect-nvr-systeminfo.d.ts +0 -2
- package/dist/devices/protect-nvr-systeminfo.js +13 -47
- package/dist/devices/protect-nvr-systeminfo.js.map +1 -1
- package/dist/devices/protect-securitysystem.js +17 -36
- package/dist/devices/protect-securitysystem.js.map +1 -1
- package/dist/devices/protect-sensor.d.ts +2 -2
- package/dist/devices/protect-sensor.js +16 -16
- package/dist/devices/protect-sensor.js.map +1 -1
- package/dist/devices/protect-viewer.js +8 -8
- package/dist/devices/protect-viewer.js.map +1 -1
- package/dist/protect-events.js +12 -18
- package/dist/protect-events.js.map +1 -1
- package/dist/protect-livestream.js +9 -3
- package/dist/protect-livestream.js.map +1 -1
- package/dist/protect-nvr.d.ts +5 -5
- package/dist/protect-nvr.js +36 -34
- package/dist/protect-nvr.js.map +1 -1
- package/dist/protect-options.d.ts +4 -4
- package/dist/protect-options.js +2 -2
- package/dist/protect-options.js.map +1 -1
- package/dist/protect-platform.d.ts +1 -1
- package/dist/protect-platform.js +8 -14
- package/dist/protect-platform.js.map +1 -1
- package/dist/protect-record.d.ts +1 -2
- package/dist/protect-record.js +9 -14
- package/dist/protect-record.js.map +1 -1
- package/dist/protect-stream.js +39 -59
- package/dist/protect-stream.js.map +1 -1
- package/dist/protect-timeshift.d.ts +0 -2
- package/dist/protect-timeshift.js +7 -15
- package/dist/protect-timeshift.js.map +1 -1
- package/dist/settings.d.ts +4 -4
- package/dist/settings.js +5 -5
- package/dist/settings.js.map +1 -1
- package/homebridge-ui/public/lib/featureoptions.js +7 -8
- package/homebridge-ui/public/lib/featureoptions.js.map +1 -1
- package/homebridge-ui/public/lib/webUi-featureoptions.mjs +488 -213
- package/homebridge-ui/public/ui.mjs +1 -1
- package/package.json +9 -9
package/dist/protect-options.js
CHANGED
|
@@ -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:
|
|
27
|
-
{ default:
|
|
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":"AAAA;;;GAGG;AACH,OAAO,EAAE,qCAAqC,EAAE,uCAAuC,EAAE,iCAAiC,EAAE,oCAAoC,EAC9J,mCAAmC,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,yBAAyB,EAC9I,sCAAsC,EAAE,MAAM,eAAe,CAAC;AAuDhE,uCAAuC;AAEvC,6BAA6B;AAC7B,MAAM,CAAC,MAAM,uBAAuB,GAAG;IAErC,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7D,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5D,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;IACnE,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAClF,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAE,sBAAsB,EAAE,oBAAoB,CAAE,EAAE,QAAQ,EAAE,CAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACrJ,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAE,QAAQ,EAAE,KAAK,CAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAClE,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC7E,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE;IAC3E,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7D,EAAE,WAAW,EAAE,sBAAsB,EAAE,aAAa,EAAE,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;CACzH,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAgD;IAEzE,iBAAiB;IACjB,OAAO,EAAE;QAEP,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAClF,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,6CAA6C,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE;QAC5H,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,iCAAiC,EAAE,WAAW,EAAE,oEAAoE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE;QACxM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,oCAAoC,EAAE,WAAW,EAAE,sDAAsD,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,uBAAuB,EAAE;QACjM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,mCAAmC,EAAE,WAAW,EAAE,qDAAqD,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,sBAAsB,EAAE;QAC9L,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,6CAA6C,EAAE,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzH,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,0JAA0J,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE;KAChQ;IAED,kBAAkB;IAClB,QAAQ,EAAE;QAER,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,wCAAwC,EAAE,IAAI,EAAE,EAAE,EAAE;QAClF,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,+DAA+D,EAAE,UAAU,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;QACtK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,0EAA0E,EAAE,gBAAgB,EAAE,CAAC,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC,qBAAqB,CAAC,EAAE,iBAAiB,EAAE,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;QACnS,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,qEAAqE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE;QAC1K,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,sEAAsE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE;QACnL,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,sGAAsG,EAAE,IAAI,EAAE,YAAY,EAAE;QAC3J,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,yJAAyJ,EAAE,IAAI,EAAE,UAAU,EAAE;KAC7M;IAED,oBAAoB;IACpB,UAAU,EAAE;QAEV,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,sHAAsH,EAAE,UAAU,EAAE,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;QACjN,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,4FAA4F,EAAE,IAAI,EAAE,MAAM,EAAE;QAC3I,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uCAAuC,EAAE,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;QACtH,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,4DAA4D,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE;QAC1K,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,wEAAwE,EAAE,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE;QAC5J,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uFAAuF,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE;QACzK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,uCAAuC,EAAE,WAAW,EAAE,8FAA8F,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,gCAAgC,EAAE;QAC/Q,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,uFAAuF,EAAE,UAAU,EAAE,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE;QAC3L,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,yFAAyF,EAAE,IAAI,EAAE,SAAS,EAAE;KAC5I;IAED,mBAAmB;IACnB,KAAK,EAAE;QAEL,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,yCAAyC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;QACjH,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,0DAA0D,EAAE,aAAa,EAAE,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;QACtK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kCAAkC,EAAE,WAAW,EAAE,CAAE,kBAAkB,EAAE,qBAAqB,CAAE,EAAE,aAAa,EAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;KACvL;IAED,kBAAkB;IAClB,QAAQ,EAAE;QAER,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,uBAAuB,EAAE,WAAW,EAAE,4EAA4E,EAAE,IAAI,EAAE,UAAU,EAAE;QACrK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kNAAkN,EAAE,WAAW,EAAE,CAAE,kBAAkB,EAAE,qBAAqB,CAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;QACxU,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,0BAA0B,EAAE,WAAW,EAAE,mHAAmH,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,0BAA0B,EAAE;QACzP,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,sIAAsI,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE;QACjQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,oIAAoI,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;QAC5P,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,6IAA6I,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE;QAC9Q,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uIAAuI,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE;QACnQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,sIAAsI,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE;QAChQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uIAAuI,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE;QACnQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,iJAAiJ,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE;QACjR,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,0IAA0I,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE;QACvQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,+IAA+I,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE;QAC/Q,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,8IAA8I,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE;QAC9Q,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,8IAA8I,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE;QAC5Q,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,iJAAiJ,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,gCAAgC,EAAE;QACpR,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,2IAA2I,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE;QACzQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,iJAAiJ,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE;QAC/Q,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,8IAA8I,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE;QAC5Q,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,wJAAwJ,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE;QACxR,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,yFAAyF,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE;QAC/K,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uFAAuF,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE;QACjN,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,+NAA+N,EAAE,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE,EAAG,IAAI,EAAE,wCAAwC,EAAE;QAC9Y,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,+EAA+E,EAAE,WAAW,EAAE,CAAE,kBAAkB,EAAE,qBAAqB,CAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5L,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,iFAAiF,EAAE,WAAW,EAAE,CAAE,kBAAkB,EAAE,qBAAqB,CAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAChM;IAED,eAAe;IACf,KAAK,EAAE;QAEL,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,WAAW,EAAE,0MAA0M,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE;QACjU,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,qCAAqC,EAAE,WAAW,EAAE,qLAAqL,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE;QACzT,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kFAAkF,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE;QACjK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,+FAA+F,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE;QAChL,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,+GAA+G,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;KACxL;IAED,2BAA2B;IAC3B,gBAAgB,EAAE;QAEhB,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,0GAA0G,EAAE,IAAI,EAAE,OAAO,EAAE;KAC3J;IAED,gCAAgC;IAChC,cAAc,EAAE;QAEd,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,4IAA4I,EAAE,gBAAgB,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;KAChO;IAED,iBAAiB;IACjB,OAAO,EAAE;QAEP,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,wHAAwH,EAAE,IAAI,EAAE,oBAAoB,EAAE;QACpL,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,4DAA4D,EAAE,aAAa,EAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE;QAC1J,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,2GAA2G,EAAE,IAAI,EAAE,WAAW,EAAE;QAC9J,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,yBAAyB,EAAE,WAAW,EAAE,gOAAgO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE;QACxV,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,wHAAwH,EAAE,IAAI,EAAE,uBAAuB,EAAE;QACvL,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,sCAAsC,EAAE,WAAW,EAAE,kOAAkO,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,+BAA+B,EAAE;QAC/X,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uGAAuG,EAAE,IAAI,EAAE,kBAAkB,EAAE;QAClK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,yGAAyG,EAAE,IAAI,EAAE,oBAAoB,EAAE;QACtK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,sGAAsG,EAAE,IAAI,EAAE,iBAAiB,EAAE;QAChK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,gGAAgG,EAAE,IAAI,EAAE,MAAM,EAAE;QAC/I,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,8EAA8E,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9J,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,8EAA8E,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9J,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,oEAAoE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;QAC1J,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,sEAAsE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;QAC7J,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,kCAAkC,EAAE,IAAI,EAAE,kBAAkB,EAAE;KAC7F;IAED,gCAAgC;IAChC,YAAY,EAAE;QAEZ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,qFAAqF,EAAE,IAAI,EAAE,oBAAoB,EAAE;QAClJ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,mEAAmE,EAAE,IAAI,EAAE,kBAAkB,EAAE;QAC9H,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,yHAAyH,EAAE,IAAI,EAAE,kBAAkB,EAAE;QACpL,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,2HAA2H,EAAE,IAAI,EAAE,oBAAoB,EAAE;QACxL,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,wHAAwH,EAAE,IAAI,EAAE,iBAAiB,EAAE;KACnL;CACF,CAAC;AACF,sCAAsC"}
|
|
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;
|
package/dist/protect-platform.js
CHANGED
|
@@ -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
|
|
32
|
-
debugAll: config
|
|
33
|
-
options: config
|
|
34
|
-
ringDelay: config
|
|
35
|
-
verboseFfmpeg: config
|
|
36
|
-
videoProcessor: config
|
|
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
|
-
|
|
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":"AAKA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,
|
|
1
|
+
{"version":3,"file":"protect-platform.js","sourceRoot":"","sources":["../src/protect-platform.ts"],"names":[],"mappings":"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"}
|
package/dist/protect-record.d.ts
CHANGED
|
@@ -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(
|
|
27
|
+
closeRecordingStream(_streamId: number, reason?: HDSProtocolSpecificErrorReason): void;
|
|
29
28
|
private configureTimeshifting;
|
|
30
29
|
private startTransmitting;
|
|
31
30
|
private stopTransmitting;
|
package/dist/protect-record.js
CHANGED
|
@@ -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(
|
|
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
|
|
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
|
|
250
|
+
this.ffmpegStream.stop();
|
|
254
251
|
this.timeshift.stop();
|
|
255
|
-
|
|
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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"}
|
package/dist/protect-stream.js
CHANGED
|
@@ -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 {
|
|
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
|
|
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
|
-
//
|
|
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
|
|
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 ? ["\
|
|
401
|
-
// Gear, using the text presentation modifier.
|
|
402
|
-
hinting.push(...(isTranscoding ? ["\
|
|
403
|
-
// Hourglass, using the text presentation modifier.
|
|
404
|
-
hinting.push(...((request.audio.packet_time === 60) ? ["\
|
|
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
|
|
408
|
-
// FFmpeg minterpolate filter to enable very smooth video, especially when there's motion involved. Apple Silicon environments are able to reliably
|
|
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) &&
|
|
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 =
|
|
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("-
|
|
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
|
-
// -
|
|
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", "-
|
|
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(), "-
|
|
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
|
-
|
|
482
|
-
|
|
483
|
-
|
|
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
|
-
// -
|
|
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", "-
|
|
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
|
|
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
|
|
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
|
|
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));
|