hap-nodejs 0.10.0-beta.0 → 0.10.0-beta.12
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/@types/bonjour-hap.d.ts +4 -3
- package/@types/simple-plist.d.ts +2 -1
- package/README.md +1 -1
- package/dist/BridgedCore.js +7 -6
- package/dist/BridgedCore.js.map +1 -1
- package/dist/Core.js +14 -12
- package/dist/Core.js.map +1 -1
- package/dist/accessories/AirConditioner_accessory.js +9 -9
- package/dist/accessories/AirConditioner_accessory.js.map +1 -1
- package/dist/accessories/AppleTVRemote_accessory.js +17 -16
- package/dist/accessories/AppleTVRemote_accessory.js.map +1 -1
- package/dist/accessories/Camera_accessory.js +415 -36
- package/dist/accessories/Camera_accessory.js.map +1 -1
- package/dist/accessories/Fan_accessory.js +10 -15
- package/dist/accessories/Fan_accessory.js.map +1 -1
- package/dist/accessories/GarageDoorOpener_accessory.js +7 -8
- package/dist/accessories/GarageDoorOpener_accessory.js.map +1 -1
- package/dist/accessories/Light-AdaptiveLighting_accessory.js +3 -4
- package/dist/accessories/Light-AdaptiveLighting_accessory.js.map +1 -1
- package/dist/accessories/Light_accessory.js +23 -14
- package/dist/accessories/Light_accessory.js.map +1 -1
- package/dist/accessories/Lock_accessory.js +7 -8
- package/dist/accessories/Lock_accessory.js.map +1 -1
- package/dist/accessories/MotionSensor_accessory.js +5 -6
- package/dist/accessories/MotionSensor_accessory.js.map +1 -1
- package/dist/accessories/Outlet_accessory.js +5 -6
- package/dist/accessories/Outlet_accessory.js.map +1 -1
- package/dist/accessories/SmartSpeaker_accessory.js +6 -6
- package/dist/accessories/SmartSpeaker_accessory.js.map +1 -1
- package/dist/accessories/Sprinkler_accessory.js +12 -13
- package/dist/accessories/Sprinkler_accessory.js.map +1 -1
- package/dist/accessories/TV_accessory.js +4 -5
- package/dist/accessories/TV_accessory.js.map +1 -1
- package/dist/accessories/TemperatureSensor_accessory.js +5 -6
- package/dist/accessories/TemperatureSensor_accessory.js.map +1 -1
- package/dist/accessories/Wi-FiRouter_accessory.d.ts +1 -1
- package/dist/accessories/Wi-FiRouter_accessory.d.ts.map +1 -1
- package/dist/accessories/Wi-FiRouter_accessory.js +7 -8
- package/dist/accessories/Wi-FiRouter_accessory.js.map +1 -1
- package/dist/accessories/Wi-FiSatellite_accessory.d.ts +1 -1
- package/dist/accessories/Wi-FiSatellite_accessory.d.ts.map +1 -1
- package/dist/accessories/Wi-FiSatellite_accessory.js +6 -7
- package/dist/accessories/Wi-FiSatellite_accessory.js.map +1 -1
- package/dist/accessories/gstreamer-audioProducer.d.ts.map +1 -1
- package/dist/accessories/gstreamer-audioProducer.js +21 -22
- package/dist/accessories/gstreamer-audioProducer.js.map +1 -1
- package/dist/index.d.ts +27 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -24
- package/dist/index.js.map +1 -1
- package/dist/internal-types.d.ts +2 -0
- package/dist/internal-types.d.ts.map +1 -1
- package/dist/internal-types.js.map +1 -1
- package/dist/lib/Accessory.d.ts +38 -17
- package/dist/lib/Accessory.d.ts.map +1 -1
- package/dist/lib/Accessory.js +345 -273
- package/dist/lib/Accessory.js.map +1 -1
- package/dist/lib/AccessoryLoader.d.ts +10 -10
- package/dist/lib/AccessoryLoader.d.ts.map +1 -1
- package/dist/lib/AccessoryLoader.js +109 -99
- package/dist/lib/AccessoryLoader.js.map +1 -1
- package/dist/lib/Advertiser.d.ts +26 -6
- package/dist/lib/Advertiser.d.ts.map +1 -1
- package/dist/lib/Advertiser.js +242 -29
- package/dist/lib/Advertiser.js.map +1 -1
- package/dist/lib/Bridge.d.ts +1 -1
- package/dist/lib/Bridge.d.ts.map +1 -1
- package/dist/lib/Bridge.js +1 -1
- package/dist/lib/Bridge.js.map +1 -1
- package/dist/lib/Characteristic.d.ts +36 -23
- package/dist/lib/Characteristic.d.ts.map +1 -1
- package/dist/lib/Characteristic.js +148 -145
- package/dist/lib/Characteristic.js.map +1 -1
- package/dist/lib/HAPServer.d.ts +2 -2
- package/dist/lib/HAPServer.d.ts.map +1 -1
- package/dist/lib/HAPServer.js +43 -39
- package/dist/lib/HAPServer.js.map +1 -1
- package/dist/lib/Service.d.ts +8 -4
- package/dist/lib/Service.d.ts.map +1 -1
- package/dist/lib/Service.js +51 -47
- package/dist/lib/Service.js.map +1 -1
- package/dist/lib/camera/Camera.d.ts +2 -2
- package/dist/lib/camera/Camera.d.ts.map +1 -1
- package/dist/lib/camera/Camera.js +3 -3
- package/dist/lib/camera/Camera.js.map +1 -1
- package/dist/lib/camera/RTPProxy.d.ts +19 -19
- package/dist/lib/camera/RTPProxy.d.ts.map +1 -1
- package/dist/lib/camera/RTPProxy.js +230 -208
- package/dist/lib/camera/RTPProxy.js.map +1 -1
- package/dist/lib/camera/RTPStreamManagement.d.ts +46 -10
- package/dist/lib/camera/RTPStreamManagement.d.ts.map +1 -1
- package/dist/lib/camera/RTPStreamManagement.js +124 -49
- package/dist/lib/camera/RTPStreamManagement.js.map +1 -1
- package/dist/lib/camera/RecordingManagement.d.ts +267 -0
- package/dist/lib/camera/RecordingManagement.d.ts.map +1 -0
- package/dist/lib/camera/RecordingManagement.js +750 -0
- package/dist/lib/camera/RecordingManagement.js.map +1 -0
- package/dist/lib/camera/index.d.ts +4 -3
- package/dist/lib/camera/index.d.ts.map +1 -1
- package/dist/lib/camera/index.js +4 -3
- package/dist/lib/camera/index.js.map +1 -1
- package/dist/lib/controller/AdaptiveLightingController.d.ts +9 -9
- package/dist/lib/controller/AdaptiveLightingController.d.ts.map +1 -1
- package/dist/lib/controller/AdaptiveLightingController.js +37 -31
- package/dist/lib/controller/AdaptiveLightingController.js.map +1 -1
- package/dist/lib/controller/CameraController.d.ts +254 -7
- package/dist/lib/controller/CameraController.d.ts.map +1 -1
- package/dist/lib/controller/CameraController.js +382 -35
- package/dist/lib/controller/CameraController.js.map +1 -1
- package/dist/lib/controller/Controller.d.ts +3 -3
- package/dist/lib/controller/Controller.d.ts.map +1 -1
- package/dist/lib/controller/Controller.js.map +1 -1
- package/dist/lib/controller/DoorbellController.d.ts +43 -1
- package/dist/lib/controller/DoorbellController.d.ts.map +1 -1
- package/dist/lib/controller/DoorbellController.js +64 -12
- package/dist/lib/controller/DoorbellController.js.map +1 -1
- package/dist/lib/controller/RemoteController.d.ts +4 -4
- package/dist/lib/controller/RemoteController.d.ts.map +1 -1
- package/dist/lib/controller/RemoteController.js +79 -69
- package/dist/lib/controller/RemoteController.js.map +1 -1
- package/dist/lib/controller/index.d.ts +4 -4
- package/dist/lib/controller/index.js +5 -5
- package/dist/lib/controller/index.js.map +1 -1
- package/dist/lib/datastream/DataStreamManagement.d.ts.map +1 -1
- package/dist/lib/datastream/DataStreamManagement.js +12 -11
- package/dist/lib/datastream/DataStreamManagement.js.map +1 -1
- package/dist/lib/datastream/DataStreamParser.d.ts +24 -24
- package/dist/lib/datastream/DataStreamParser.d.ts.map +1 -1
- package/dist/lib/datastream/DataStreamParser.js +31 -22
- package/dist/lib/datastream/DataStreamParser.js.map +1 -1
- package/dist/lib/datastream/DataStreamServer.d.ts +24 -5
- package/dist/lib/datastream/DataStreamServer.d.ts.map +1 -1
- package/dist/lib/datastream/DataStreamServer.js +109 -68
- package/dist/lib/datastream/DataStreamServer.js.map +1 -1
- package/dist/lib/datastream/index.d.ts +3 -3
- package/dist/lib/datastream/index.js +3 -3
- package/dist/lib/datastream/index.js.map +1 -1
- package/dist/lib/definitions/CharacteristicDefinitions.d.ts +84 -0
- package/dist/lib/definitions/CharacteristicDefinitions.d.ts.map +1 -1
- package/dist/lib/definitions/CharacteristicDefinitions.js +471 -243
- package/dist/lib/definitions/CharacteristicDefinitions.js.map +1 -1
- package/dist/lib/definitions/ServiceDefinitions.d.ts +28 -0
- package/dist/lib/definitions/ServiceDefinitions.d.ts.map +1 -1
- package/dist/lib/definitions/ServiceDefinitions.js +158 -74
- package/dist/lib/definitions/ServiceDefinitions.js.map +1 -1
- package/dist/lib/definitions/generate-definitions.d.ts.map +1 -1
- package/dist/lib/definitions/generate-definitions.js +76 -72
- package/dist/lib/definitions/generate-definitions.js.map +1 -1
- package/dist/lib/definitions/generator-configuration.d.ts.map +1 -1
- package/dist/lib/definitions/generator-configuration.js +34 -16
- package/dist/lib/definitions/generator-configuration.js.map +1 -1
- package/dist/lib/definitions/index.js +2 -2
- package/dist/lib/definitions/index.js.map +1 -1
- package/dist/lib/model/AccessoryInfo.d.ts +6 -6
- package/dist/lib/model/AccessoryInfo.d.ts.map +1 -1
- package/dist/lib/model/AccessoryInfo.js +86 -76
- package/dist/lib/model/AccessoryInfo.js.map +1 -1
- package/dist/lib/model/ControllerStorage.d.ts.map +1 -1
- package/dist/lib/model/ControllerStorage.js +9 -9
- package/dist/lib/model/ControllerStorage.js.map +1 -1
- package/dist/lib/model/HAPStorage.d.ts.map +1 -1
- package/dist/lib/model/HAPStorage.js +2 -1
- package/dist/lib/model/HAPStorage.js.map +1 -1
- package/dist/lib/model/IdentifierCache.d.ts +11 -11
- package/dist/lib/model/IdentifierCache.d.ts.map +1 -1
- package/dist/lib/model/IdentifierCache.js +69 -67
- package/dist/lib/model/IdentifierCache.js.map +1 -1
- package/dist/lib/tv/AccessControlManagement.d.ts +1 -1
- package/dist/lib/tv/AccessControlManagement.d.ts.map +1 -1
- package/dist/lib/tv/AccessControlManagement.js +2 -2
- package/dist/lib/tv/AccessControlManagement.js.map +1 -1
- package/dist/lib/util/clone.js +5 -4
- package/dist/lib/util/clone.js.map +1 -1
- package/dist/lib/util/color-utils.d.ts.map +1 -1
- package/dist/lib/util/color-utils.js +2 -2
- package/dist/lib/util/color-utils.js.map +1 -1
- package/dist/lib/util/eventedhttp.d.ts +4 -4
- package/dist/lib/util/eventedhttp.d.ts.map +1 -1
- package/dist/lib/util/eventedhttp.js +54 -51
- package/dist/lib/util/eventedhttp.js.map +1 -1
- package/dist/lib/util/hapCrypto.d.ts +5 -5
- package/dist/lib/util/hapCrypto.d.ts.map +1 -1
- package/dist/lib/util/hapCrypto.js +66 -82
- package/dist/lib/util/hapCrypto.js.map +1 -1
- package/dist/lib/util/hapStatusError.js +3 -3
- package/dist/lib/util/hapStatusError.js.map +1 -1
- package/dist/lib/util/net-utils.d.ts.map +1 -1
- package/dist/lib/util/net-utils.js +4 -6
- package/dist/lib/util/net-utils.js.map +1 -1
- package/dist/lib/util/once.d.ts +1 -1
- package/dist/lib/util/once.d.ts.map +1 -1
- package/dist/lib/util/once.js +2 -1
- package/dist/lib/util/once.js.map +1 -1
- package/dist/lib/util/promise-utils.d.ts +2 -0
- package/dist/lib/util/promise-utils.d.ts.map +1 -0
- package/dist/lib/util/promise-utils.js +10 -0
- package/dist/lib/util/promise-utils.js.map +1 -0
- package/dist/lib/util/request-util.d.ts.map +1 -1
- package/dist/lib/util/request-util.js +1 -0
- package/dist/lib/util/request-util.js.map +1 -1
- package/dist/lib/util/time.d.ts +1 -1
- package/dist/lib/util/time.d.ts.map +1 -1
- package/dist/lib/util/time.js +8 -8
- package/dist/lib/util/time.js.map +1 -1
- package/dist/lib/util/tlv.d.ts.map +1 -1
- package/dist/lib/util/tlv.js +15 -12
- package/dist/lib/util/tlv.js.map +1 -1
- package/dist/lib/util/uuid.d.ts.map +1 -1
- package/dist/lib/util/uuid.js +26 -20
- package/dist/lib/util/uuid.js.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +22 -19
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var assert_1 = (0, tslib_1.__importDefault)(require("assert"));
|
|
4
5
|
var child_process_1 = require("child_process");
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
|
|
6
|
+
var events_1 = require("events");
|
|
7
|
+
var net_1 = require("net");
|
|
8
|
+
var __1 = require("..");
|
|
9
|
+
var cameraUUID = __1.uuid.generate("hap-nodejs:accessories:ip-camera");
|
|
10
|
+
var camera = exports.accessory = new __1.Accessory("IPCamera", cameraUUID);
|
|
11
|
+
// @ts-expect-error: Core/BridgeCore API
|
|
8
12
|
camera.username = "9F:B2:46:0C:40:DB";
|
|
9
|
-
// @ts-
|
|
13
|
+
// @ts-expect-error: Core/BridgeCore API
|
|
10
14
|
camera.pincode = "948-23-459";
|
|
11
15
|
camera.category = 17 /* IP_CAMERA */;
|
|
12
16
|
var FFMPEGH264ProfileNames = [
|
|
13
17
|
"baseline",
|
|
14
18
|
"main",
|
|
15
|
-
"high"
|
|
19
|
+
"high",
|
|
16
20
|
];
|
|
17
21
|
var FFMPEGH264LevelNames = [
|
|
18
22
|
"3.1",
|
|
19
23
|
"3.2",
|
|
20
|
-
"4.0"
|
|
24
|
+
"4.0",
|
|
21
25
|
];
|
|
22
26
|
var ports = new Set();
|
|
23
27
|
function getPort() {
|
|
@@ -34,25 +38,26 @@ var ExampleCamera = /** @class */ (function () {
|
|
|
34
38
|
// keep track of sessions
|
|
35
39
|
this.pendingSessions = {};
|
|
36
40
|
this.ongoingSessions = {};
|
|
41
|
+
this.handlingStreamingRequest = false;
|
|
37
42
|
}
|
|
38
43
|
ExampleCamera.prototype.handleSnapshotRequest = function (request, callback) {
|
|
39
44
|
var _this = this;
|
|
40
|
-
var ffmpegCommand = "-f lavfi -i testsrc=s="
|
|
41
|
-
var ffmpeg = child_process_1.spawn("ffmpeg", ffmpegCommand.split(" "), { env: process.env });
|
|
45
|
+
var ffmpegCommand = "-f lavfi -i testsrc=s=".concat(request.width, "x").concat(request.height, " -vframes 1 -f mjpeg -");
|
|
46
|
+
var ffmpeg = (0, child_process_1.spawn)("ffmpeg", ffmpegCommand.split(" "), { env: process.env });
|
|
42
47
|
var snapshotBuffers = [];
|
|
43
|
-
ffmpeg.stdout.on(
|
|
44
|
-
ffmpeg.stderr.on(
|
|
48
|
+
ffmpeg.stdout.on("data", function (data) { return snapshotBuffers.push(data); });
|
|
49
|
+
ffmpeg.stderr.on("data", function (data) {
|
|
45
50
|
if (_this.ffmpegDebugOutput) {
|
|
46
51
|
console.log("SNAPSHOT: " + String(data));
|
|
47
52
|
}
|
|
48
53
|
});
|
|
49
|
-
ffmpeg.on(
|
|
54
|
+
ffmpeg.on("exit", function (code, signal) {
|
|
50
55
|
if (signal) {
|
|
51
56
|
console.log("Snapshot process was killed with signal: " + signal);
|
|
52
57
|
callback(new Error("killed with signal " + signal));
|
|
53
58
|
}
|
|
54
59
|
else if (code === 0) {
|
|
55
|
-
console.log("Successfully captured snapshot at "
|
|
60
|
+
console.log("Successfully captured snapshot at ".concat(request.width, "x").concat(request.height));
|
|
56
61
|
callback(undefined, Buffer.concat(snapshotBuffers));
|
|
57
62
|
}
|
|
58
63
|
else {
|
|
@@ -106,6 +111,7 @@ var ExampleCamera = /** @class */ (function () {
|
|
|
106
111
|
var fps = video.fps;
|
|
107
112
|
var payloadType = video.pt;
|
|
108
113
|
var maxBitrate = video.max_bit_rate;
|
|
114
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
109
115
|
var rtcpInterval = video.rtcp_interval; // usually 0.5
|
|
110
116
|
var mtu = video.mtu; // maximum transmission unit
|
|
111
117
|
var address = sessionInfo.address;
|
|
@@ -114,11 +120,11 @@ var ExampleCamera = /** @class */ (function () {
|
|
|
114
120
|
var ssrc = sessionInfo.videoSSRC;
|
|
115
121
|
var cryptoSuite = sessionInfo.videoCryptoSuite;
|
|
116
122
|
var videoSRTP = sessionInfo.videoSRTP.toString("base64");
|
|
117
|
-
console.log("Starting video stream ("
|
|
118
|
-
var videoffmpegCommand = "-re -f lavfi -i testsrc=s="
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
123
|
+
console.log("Starting video stream (".concat(width, "x").concat(height, ", ").concat(fps, " fps, ").concat(maxBitrate, " kbps, ").concat(mtu, " mtu)..."));
|
|
124
|
+
var videoffmpegCommand = "-re -f lavfi -i testsrc=s=".concat(width, "x").concat(height, ":r=").concat(fps, " -map 0:0 ") +
|
|
125
|
+
"-c:v h264 -pix_fmt yuv420p -r ".concat(fps, " -an -sn -dn -b:v ").concat(maxBitrate, "k ") +
|
|
126
|
+
"-profile:v ".concat(profile, " -level:v ").concat(level, " ") +
|
|
127
|
+
"-payload_type ".concat(payloadType, " -ssrc ").concat(ssrc, " -f rtp ");
|
|
122
128
|
if (cryptoSuite !== 2 /* NONE */) {
|
|
123
129
|
var suite = void 0;
|
|
124
130
|
switch (cryptoSuite) {
|
|
@@ -129,15 +135,15 @@ var ExampleCamera = /** @class */ (function () {
|
|
|
129
135
|
suite = "AES_CM_256_HMAC_SHA1_80";
|
|
130
136
|
break;
|
|
131
137
|
}
|
|
132
|
-
videoffmpegCommand += "-srtp_out_suite "
|
|
138
|
+
videoffmpegCommand += "-srtp_out_suite ".concat(suite, " -srtp_out_params ").concat(videoSRTP, " s");
|
|
133
139
|
}
|
|
134
|
-
videoffmpegCommand += "rtp://"
|
|
140
|
+
videoffmpegCommand += "rtp://".concat(address, ":").concat(videoPort, "?rtcpport=").concat(videoPort, "&localrtcpport=").concat(localVideoPort, "&pkt_size=").concat(mtu);
|
|
135
141
|
if (this.ffmpegDebugOutput) {
|
|
136
142
|
console.log("FFMPEG command: ffmpeg " + videoffmpegCommand);
|
|
137
143
|
}
|
|
138
|
-
var ffmpegVideo = child_process_1.spawn(
|
|
144
|
+
var ffmpegVideo = (0, child_process_1.spawn)("ffmpeg", videoffmpegCommand.split(" "), { env: process.env });
|
|
139
145
|
var started_1 = false;
|
|
140
|
-
ffmpegVideo.stderr.on(
|
|
146
|
+
ffmpegVideo.stderr.on("data", function (data) {
|
|
141
147
|
console.log(data.toString("utf8"));
|
|
142
148
|
if (!started_1) {
|
|
143
149
|
started_1 = true;
|
|
@@ -148,11 +154,11 @@ var ExampleCamera = /** @class */ (function () {
|
|
|
148
154
|
console.log("VIDEO: " + String(data));
|
|
149
155
|
}
|
|
150
156
|
});
|
|
151
|
-
ffmpegVideo.on(
|
|
157
|
+
ffmpegVideo.on("error", function (error) {
|
|
152
158
|
console.log("[Video] Failed to start video stream: " + error.message);
|
|
153
159
|
callback(new Error("ffmpeg process creation failed!"));
|
|
154
160
|
});
|
|
155
|
-
ffmpegVideo.on(
|
|
161
|
+
ffmpegVideo.on("exit", function (code, signal) {
|
|
156
162
|
var message = "[Video] ffmpeg exited with code: " + code + " and signal: " + signal;
|
|
157
163
|
if (code == null || code === 255) {
|
|
158
164
|
console.log(message + " (Video stream stopped!)");
|
|
@@ -179,11 +185,15 @@ var ExampleCamera = /** @class */ (function () {
|
|
|
179
185
|
console.log("Received (unsupported) request to reconfigure to: " + JSON.stringify(request.video));
|
|
180
186
|
callback();
|
|
181
187
|
break;
|
|
182
|
-
case "stop" /* STOP */:
|
|
188
|
+
case "stop" /* STOP */: {
|
|
183
189
|
var ongoingSession = this.ongoingSessions[sessionId];
|
|
190
|
+
if (!ongoingSession) {
|
|
191
|
+
callback();
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
184
194
|
ports.delete(ongoingSession.localVideoPort);
|
|
185
195
|
try {
|
|
186
|
-
ongoingSession.process.kill(
|
|
196
|
+
ongoingSession.process.kill("SIGKILL");
|
|
187
197
|
}
|
|
188
198
|
catch (e) {
|
|
189
199
|
console.log("Error occurred terminating the video process!");
|
|
@@ -193,16 +203,336 @@ var ExampleCamera = /** @class */ (function () {
|
|
|
193
203
|
console.log("Stopped streaming session!");
|
|
194
204
|
callback();
|
|
195
205
|
break;
|
|
206
|
+
}
|
|
196
207
|
}
|
|
197
208
|
};
|
|
209
|
+
ExampleCamera.prototype.updateRecordingActive = function (active) {
|
|
210
|
+
// we haven't implemented a prebuffer
|
|
211
|
+
console.log("Recording active set to " + active);
|
|
212
|
+
};
|
|
213
|
+
ExampleCamera.prototype.updateRecordingConfiguration = function (configuration) {
|
|
214
|
+
this.configuration = configuration;
|
|
215
|
+
console.log(configuration);
|
|
216
|
+
};
|
|
217
|
+
/**
|
|
218
|
+
* This is a very minimal, very experimental example on how to implement fmp4 streaming with a
|
|
219
|
+
* CameraController supporting HomeKit Secure Video.
|
|
220
|
+
*
|
|
221
|
+
* An ideal implementation would diverge from this in the following ways:
|
|
222
|
+
* * It would implement a prebuffer and respect the recording `active` characteristic for that.
|
|
223
|
+
* * It would start to immediately record after a trigger event occurred and not just
|
|
224
|
+
* when the HomeKit Controller requests it (see the documentation of `CameraRecordingDelegate`).
|
|
225
|
+
*/
|
|
226
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
227
|
+
ExampleCamera.prototype.handleRecordingStreamRequest = function (streamId) {
|
|
228
|
+
var _a, _b, _c;
|
|
229
|
+
return (0, tslib_1.__asyncGenerator)(this, arguments, function handleRecordingStreamRequest_1() {
|
|
230
|
+
var STOP_AFTER_MOTION_STOP, profile, level, videoArgs, samplerate, audioArgs, pending, _d, _e, box, motionDetected, fragment, isLast, e_1_1, error_1;
|
|
231
|
+
var e_1, _f;
|
|
232
|
+
return (0, tslib_1.__generator)(this, function (_g) {
|
|
233
|
+
switch (_g.label) {
|
|
234
|
+
case 0:
|
|
235
|
+
(0, assert_1.default)(!!this.configuration);
|
|
236
|
+
STOP_AFTER_MOTION_STOP = false;
|
|
237
|
+
this.handlingStreamingRequest = true;
|
|
238
|
+
(0, assert_1.default)(this.configuration.videoCodec.type === 0 /* H264 */);
|
|
239
|
+
profile = this.configuration.videoCodec.parameters.profile === 2 /* HIGH */ ? "high"
|
|
240
|
+
: this.configuration.videoCodec.parameters.profile === 1 /* MAIN */ ? "main" : "baseline";
|
|
241
|
+
level = this.configuration.videoCodec.parameters.level === 2 /* LEVEL4_0 */ ? "4.0"
|
|
242
|
+
: this.configuration.videoCodec.parameters.level === 1 /* LEVEL3_2 */ ? "3.2" : "3.1";
|
|
243
|
+
videoArgs = [
|
|
244
|
+
"-an",
|
|
245
|
+
"-sn",
|
|
246
|
+
"-dn",
|
|
247
|
+
"-codec:v",
|
|
248
|
+
"libx264",
|
|
249
|
+
"-pix_fmt",
|
|
250
|
+
"yuv420p",
|
|
251
|
+
"-profile:v", profile,
|
|
252
|
+
"-level:v", level,
|
|
253
|
+
"-b:v",
|
|
254
|
+
"".concat(this.configuration.videoCodec.parameters.bitRate, "k"),
|
|
255
|
+
"-force_key_frames",
|
|
256
|
+
"expr:eq(t,n_forced*".concat(this.configuration.videoCodec.parameters.iFrameInterval / 1000, ")"),
|
|
257
|
+
"-r", this.configuration.videoCodec.resolution[2].toString(),
|
|
258
|
+
];
|
|
259
|
+
switch (this.configuration.audioCodec.samplerate) {
|
|
260
|
+
case 0 /* KHZ_8 */:
|
|
261
|
+
samplerate = "8";
|
|
262
|
+
break;
|
|
263
|
+
case 1 /* KHZ_16 */:
|
|
264
|
+
samplerate = "16";
|
|
265
|
+
break;
|
|
266
|
+
case 2 /* KHZ_24 */:
|
|
267
|
+
samplerate = "24";
|
|
268
|
+
break;
|
|
269
|
+
case 3 /* KHZ_32 */:
|
|
270
|
+
samplerate = "32";
|
|
271
|
+
break;
|
|
272
|
+
case 4 /* KHZ_44_1 */:
|
|
273
|
+
samplerate = "44.1";
|
|
274
|
+
break;
|
|
275
|
+
case 5 /* KHZ_48 */:
|
|
276
|
+
samplerate = "48";
|
|
277
|
+
break;
|
|
278
|
+
default:
|
|
279
|
+
throw new Error("Unsupported audio samplerate: " + this.configuration.audioCodec.samplerate);
|
|
280
|
+
}
|
|
281
|
+
audioArgs = ((_b = (_a = this.controller) === null || _a === void 0 ? void 0 : _a.recordingManagement) === null || _b === void 0 ? void 0 : _b.recordingManagementService.getCharacteristic(__1.Characteristic.RecordingAudioActive))
|
|
282
|
+
? (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([
|
|
283
|
+
"-acodec", "libfdk_aac"
|
|
284
|
+
], (0, tslib_1.__read)((this.configuration.audioCodec.type === 0 /* AAC_LC */ ?
|
|
285
|
+
["-profile:a", "aac_low"] :
|
|
286
|
+
["-profile:a", "aac_eld"])), false), [
|
|
287
|
+
"-ar",
|
|
288
|
+
"".concat(samplerate, "k"),
|
|
289
|
+
"-b:a",
|
|
290
|
+
"".concat(this.configuration.audioCodec.bitrate, "k"),
|
|
291
|
+
"-ac",
|
|
292
|
+
"".concat(this.configuration.audioCodec.audioChannels),
|
|
293
|
+
], false) : [];
|
|
294
|
+
this.server = new MP4StreamingServer("ffmpeg", "-f lavfi -i testsrc=s=".concat(this.configuration.videoCodec.resolution[0], "x").concat(this.configuration.videoCodec.resolution[1], ":r=").concat(this.configuration.videoCodec.resolution[2])
|
|
295
|
+
.split(/ /g), audioArgs, videoArgs);
|
|
296
|
+
return [4 /*yield*/, (0, tslib_1.__await)(this.server.start())];
|
|
297
|
+
case 1:
|
|
298
|
+
_g.sent();
|
|
299
|
+
if (!(!this.server || this.server.destroyed)) return [3 /*break*/, 3];
|
|
300
|
+
return [4 /*yield*/, (0, tslib_1.__await)(void 0)];
|
|
301
|
+
case 2: return [2 /*return*/, _g.sent()]; // early exit
|
|
302
|
+
case 3:
|
|
303
|
+
pending = [];
|
|
304
|
+
_g.label = 4;
|
|
305
|
+
case 4:
|
|
306
|
+
_g.trys.push([4, 19, , 20]);
|
|
307
|
+
_g.label = 5;
|
|
308
|
+
case 5:
|
|
309
|
+
_g.trys.push([5, 12, 13, 18]);
|
|
310
|
+
_d = (0, tslib_1.__asyncValues)(this.server.generator());
|
|
311
|
+
_g.label = 6;
|
|
312
|
+
case 6: return [4 /*yield*/, (0, tslib_1.__await)(_d.next())];
|
|
313
|
+
case 7:
|
|
314
|
+
if (!(_e = _g.sent(), !_e.done)) return [3 /*break*/, 11];
|
|
315
|
+
box = _e.value;
|
|
316
|
+
pending.push(box.header, box.data);
|
|
317
|
+
motionDetected = (_c = camera.getService(__1.Service.MotionSensor)) === null || _c === void 0 ? void 0 : _c.getCharacteristic(__1.Characteristic.MotionDetected).value;
|
|
318
|
+
console.log("mp4 box type " + box.type + " and length " + box.length);
|
|
319
|
+
if (!(box.type === "moov" || box.type === "mdat")) return [3 /*break*/, 10];
|
|
320
|
+
fragment = Buffer.concat(pending);
|
|
321
|
+
pending.splice(0, pending.length);
|
|
322
|
+
isLast = STOP_AFTER_MOTION_STOP && !motionDetected;
|
|
323
|
+
return [4 /*yield*/, (0, tslib_1.__await)({
|
|
324
|
+
data: fragment,
|
|
325
|
+
isLast: isLast,
|
|
326
|
+
})];
|
|
327
|
+
case 8: return [4 /*yield*/, _g.sent()];
|
|
328
|
+
case 9:
|
|
329
|
+
_g.sent();
|
|
330
|
+
if (isLast) {
|
|
331
|
+
console.log("Ending session due to motion stopped!");
|
|
332
|
+
return [3 /*break*/, 11];
|
|
333
|
+
}
|
|
334
|
+
_g.label = 10;
|
|
335
|
+
case 10: return [3 /*break*/, 6];
|
|
336
|
+
case 11: return [3 /*break*/, 18];
|
|
337
|
+
case 12:
|
|
338
|
+
e_1_1 = _g.sent();
|
|
339
|
+
e_1 = { error: e_1_1 };
|
|
340
|
+
return [3 /*break*/, 18];
|
|
341
|
+
case 13:
|
|
342
|
+
_g.trys.push([13, , 16, 17]);
|
|
343
|
+
if (!(_e && !_e.done && (_f = _d.return))) return [3 /*break*/, 15];
|
|
344
|
+
return [4 /*yield*/, (0, tslib_1.__await)(_f.call(_d))];
|
|
345
|
+
case 14:
|
|
346
|
+
_g.sent();
|
|
347
|
+
_g.label = 15;
|
|
348
|
+
case 15: return [3 /*break*/, 17];
|
|
349
|
+
case 16:
|
|
350
|
+
if (e_1) throw e_1.error;
|
|
351
|
+
return [7 /*endfinally*/];
|
|
352
|
+
case 17: return [7 /*endfinally*/];
|
|
353
|
+
case 18: return [3 /*break*/, 20];
|
|
354
|
+
case 19:
|
|
355
|
+
error_1 = _g.sent();
|
|
356
|
+
if (!error_1.message.startsWith("FFMPEG")) { // cheap way of identifying our own emitted errors
|
|
357
|
+
console.error("Encountered unexpected error on generator " + error_1.stack);
|
|
358
|
+
}
|
|
359
|
+
return [3 /*break*/, 20];
|
|
360
|
+
case 20: return [2 /*return*/];
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
};
|
|
365
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
366
|
+
ExampleCamera.prototype.closeRecordingStream = function (streamId, reason) {
|
|
367
|
+
if (this.server) {
|
|
368
|
+
this.server.destroy();
|
|
369
|
+
this.server = undefined;
|
|
370
|
+
}
|
|
371
|
+
this.handlingStreamingRequest = false;
|
|
372
|
+
};
|
|
373
|
+
ExampleCamera.prototype.acknowledgeStream = function (streamId) {
|
|
374
|
+
this.closeRecordingStream(streamId);
|
|
375
|
+
};
|
|
198
376
|
return ExampleCamera;
|
|
199
377
|
}());
|
|
378
|
+
var MP4StreamingServer = /** @class */ (function () {
|
|
379
|
+
function MP4StreamingServer(ffmpegPath, ffmpegInput, audioOutputArgs, videoOutputArgs) {
|
|
380
|
+
var _a, _b, _c;
|
|
381
|
+
var _this = this;
|
|
382
|
+
/**
|
|
383
|
+
* This can be configured to output ffmpeg debug output!
|
|
384
|
+
*/
|
|
385
|
+
this.debugMode = false;
|
|
386
|
+
this.destroyed = false;
|
|
387
|
+
this.connectPromise = new Promise(function (resolve) { return _this.connectResolve = resolve; });
|
|
388
|
+
this.server = (0, net_1.createServer)(this.handleConnection.bind(this));
|
|
389
|
+
this.ffmpegPath = ffmpegPath;
|
|
390
|
+
this.args = [];
|
|
391
|
+
(_a = this.args).push.apply(_a, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(ffmpegInput), false));
|
|
392
|
+
(_b = this.args).push.apply(_b, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(audioOutputArgs), false));
|
|
393
|
+
this.args.push("-f", "mp4");
|
|
394
|
+
(_c = this.args).push.apply(_c, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(videoOutputArgs), false));
|
|
395
|
+
this.args.push("-fflags", "+genpts", "-reset_timestamps", "1");
|
|
396
|
+
this.args.push("-movflags", "frag_keyframe+empty_moov+default_base_moof");
|
|
397
|
+
}
|
|
398
|
+
MP4StreamingServer.prototype.start = function () {
|
|
399
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
400
|
+
var promise, port;
|
|
401
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
402
|
+
switch (_a.label) {
|
|
403
|
+
case 0:
|
|
404
|
+
promise = (0, events_1.once)(this.server, "listening");
|
|
405
|
+
this.server.listen(); // listen on random port
|
|
406
|
+
return [4 /*yield*/, promise];
|
|
407
|
+
case 1:
|
|
408
|
+
_a.sent();
|
|
409
|
+
if (this.destroyed) {
|
|
410
|
+
return [2 /*return*/];
|
|
411
|
+
}
|
|
412
|
+
port = this.server.address().port;
|
|
413
|
+
this.args.push("tcp://127.0.0.1:" + port);
|
|
414
|
+
console.log(this.ffmpegPath + " " + this.args.join(" "));
|
|
415
|
+
this.childProcess = (0, child_process_1.spawn)(this.ffmpegPath, this.args, { env: process.env, stdio: this.debugMode ? "pipe" : "ignore" });
|
|
416
|
+
if (!this.childProcess) {
|
|
417
|
+
console.error("ChildProcess is undefined directly after the init!");
|
|
418
|
+
}
|
|
419
|
+
if (this.debugMode) {
|
|
420
|
+
this.childProcess.stdout.on("data", function (data) { return console.log(data.toString()); });
|
|
421
|
+
this.childProcess.stderr.on("data", function (data) { return console.log(data.toString()); });
|
|
422
|
+
}
|
|
423
|
+
return [2 /*return*/];
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
});
|
|
427
|
+
};
|
|
428
|
+
MP4StreamingServer.prototype.destroy = function () {
|
|
429
|
+
var _a, _b;
|
|
430
|
+
(_a = this.socket) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
431
|
+
(_b = this.childProcess) === null || _b === void 0 ? void 0 : _b.kill();
|
|
432
|
+
this.socket = undefined;
|
|
433
|
+
this.childProcess = undefined;
|
|
434
|
+
this.destroyed = true;
|
|
435
|
+
};
|
|
436
|
+
MP4StreamingServer.prototype.handleConnection = function (socket) {
|
|
437
|
+
var _a;
|
|
438
|
+
this.server.close(); // don't accept any further clients
|
|
439
|
+
this.socket = socket;
|
|
440
|
+
(_a = this.connectResolve) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
441
|
+
};
|
|
442
|
+
/**
|
|
443
|
+
* Generator for `MP4Atom`s.
|
|
444
|
+
* Throws error to signal EOF when socket is closed.
|
|
445
|
+
*/
|
|
446
|
+
MP4StreamingServer.prototype.generator = function () {
|
|
447
|
+
return (0, tslib_1.__asyncGenerator)(this, arguments, function generator_1() {
|
|
448
|
+
var header, length, type, data;
|
|
449
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
450
|
+
switch (_a.label) {
|
|
451
|
+
case 0: return [4 /*yield*/, (0, tslib_1.__await)(this.connectPromise)];
|
|
452
|
+
case 1:
|
|
453
|
+
_a.sent();
|
|
454
|
+
if (!this.socket || !this.childProcess) {
|
|
455
|
+
console.log("Socket undefined " + !!this.socket + " childProcess undefined " + !!this.childProcess);
|
|
456
|
+
throw new Error("Unexpected state!");
|
|
457
|
+
}
|
|
458
|
+
_a.label = 2;
|
|
459
|
+
case 2:
|
|
460
|
+
if (!true) return [3 /*break*/, 7];
|
|
461
|
+
return [4 /*yield*/, (0, tslib_1.__await)(this.read(8))];
|
|
462
|
+
case 3:
|
|
463
|
+
header = _a.sent();
|
|
464
|
+
length = header.readInt32BE(0) - 8;
|
|
465
|
+
type = header.slice(4).toString();
|
|
466
|
+
return [4 /*yield*/, (0, tslib_1.__await)(this.read(length))];
|
|
467
|
+
case 4:
|
|
468
|
+
data = _a.sent();
|
|
469
|
+
return [4 /*yield*/, (0, tslib_1.__await)({
|
|
470
|
+
header: header,
|
|
471
|
+
length: length,
|
|
472
|
+
type: type,
|
|
473
|
+
data: data,
|
|
474
|
+
})];
|
|
475
|
+
case 5: return [4 /*yield*/, _a.sent()];
|
|
476
|
+
case 6:
|
|
477
|
+
_a.sent();
|
|
478
|
+
return [3 /*break*/, 2];
|
|
479
|
+
case 7: return [2 /*return*/];
|
|
480
|
+
}
|
|
481
|
+
});
|
|
482
|
+
});
|
|
483
|
+
};
|
|
484
|
+
MP4StreamingServer.prototype.read = function (length) {
|
|
485
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
486
|
+
var value;
|
|
487
|
+
var _this = this;
|
|
488
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
489
|
+
if (!this.socket) {
|
|
490
|
+
throw Error("FFMPEG tried reading from closed socket!");
|
|
491
|
+
}
|
|
492
|
+
if (!length) {
|
|
493
|
+
return [2 /*return*/, Buffer.alloc(0)];
|
|
494
|
+
}
|
|
495
|
+
value = this.socket.read(length);
|
|
496
|
+
if (value) {
|
|
497
|
+
return [2 /*return*/, value];
|
|
498
|
+
}
|
|
499
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
500
|
+
var readHandler = function () {
|
|
501
|
+
var value = _this.socket.read(length);
|
|
502
|
+
if (value) {
|
|
503
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
504
|
+
cleanup();
|
|
505
|
+
resolve(value);
|
|
506
|
+
}
|
|
507
|
+
};
|
|
508
|
+
var endHandler = function () {
|
|
509
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
510
|
+
cleanup();
|
|
511
|
+
reject(new Error("FFMPEG socket closed during read for ".concat(length, " bytes!")));
|
|
512
|
+
};
|
|
513
|
+
var cleanup = function () {
|
|
514
|
+
var _a, _b;
|
|
515
|
+
(_a = _this.socket) === null || _a === void 0 ? void 0 : _a.removeListener("readable", readHandler);
|
|
516
|
+
(_b = _this.socket) === null || _b === void 0 ? void 0 : _b.removeListener("close", endHandler);
|
|
517
|
+
};
|
|
518
|
+
if (!_this.socket) {
|
|
519
|
+
throw new Error("FFMPEG socket is closed now!");
|
|
520
|
+
}
|
|
521
|
+
_this.socket.on("readable", readHandler);
|
|
522
|
+
_this.socket.on("close", endHandler);
|
|
523
|
+
})];
|
|
524
|
+
});
|
|
525
|
+
});
|
|
526
|
+
};
|
|
527
|
+
return MP4StreamingServer;
|
|
528
|
+
}());
|
|
200
529
|
var streamDelegate = new ExampleCamera();
|
|
201
530
|
var cameraController = new __1.CameraController({
|
|
202
531
|
cameraStreamCount: 2,
|
|
203
532
|
delegate: streamDelegate,
|
|
204
533
|
streamingOptions: {
|
|
205
534
|
// srtp: true, // legacy option which will just enable AES_CM_128_HMAC_SHA1_80 (can still be used though)
|
|
535
|
+
// NONE is not supported by iOS just there for testing with Wireshark for example
|
|
206
536
|
supportedCryptoSuites: [2 /* NONE */, 0 /* AES_CM_128_HMAC_SHA1_80 */],
|
|
207
537
|
video: {
|
|
208
538
|
codec: {
|
|
@@ -224,19 +554,68 @@ var cameraController = new __1.CameraController({
|
|
|
224
554
|
],
|
|
225
555
|
},
|
|
226
556
|
/* audio option is omitted, as it is not supported in this example; HAP-NodeJS will fake an appropriate audio codec
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
557
|
+
audio: {
|
|
558
|
+
comfort_noise: false, // optional, default false
|
|
559
|
+
codecs: [
|
|
560
|
+
{
|
|
561
|
+
type: AudioStreamingCodecType.OPUS,
|
|
562
|
+
audioChannels: 1, // optional, default 1
|
|
563
|
+
samplerate: [AudioStreamingSamplerate.KHZ_16, AudioStreamingSamplerate.KHZ_24], // 16 and 24 must be present for AAC-ELD or OPUS
|
|
564
|
+
},
|
|
565
|
+
],
|
|
566
|
+
},
|
|
567
|
+
// */
|
|
568
|
+
},
|
|
569
|
+
recording: {
|
|
570
|
+
options: {
|
|
571
|
+
prebufferLength: 4000,
|
|
572
|
+
mediaContainerConfiguration: {
|
|
573
|
+
type: 0 /* FRAGMENTED_MP4 */,
|
|
574
|
+
fragmentLength: 4000,
|
|
575
|
+
},
|
|
576
|
+
video: {
|
|
577
|
+
type: 0 /* H264 */,
|
|
578
|
+
parameters: {
|
|
579
|
+
profiles: [2 /* HIGH */],
|
|
580
|
+
levels: [2 /* LEVEL4_0 */],
|
|
234
581
|
},
|
|
235
|
-
|
|
582
|
+
resolutions: [
|
|
583
|
+
[320, 180, 30],
|
|
584
|
+
[320, 240, 15],
|
|
585
|
+
[320, 240, 30],
|
|
586
|
+
[480, 270, 30],
|
|
587
|
+
[480, 360, 30],
|
|
588
|
+
[640, 360, 30],
|
|
589
|
+
[640, 480, 30],
|
|
590
|
+
[1280, 720, 30],
|
|
591
|
+
[1280, 960, 30],
|
|
592
|
+
[1920, 1080, 30],
|
|
593
|
+
[1600, 1200, 30],
|
|
594
|
+
],
|
|
595
|
+
},
|
|
596
|
+
audio: {
|
|
597
|
+
codecs: {
|
|
598
|
+
type: 1 /* AAC_ELD */,
|
|
599
|
+
audioChannels: 1,
|
|
600
|
+
samplerate: 5 /* KHZ_48 */,
|
|
601
|
+
bitrateMode: 0 /* VARIABLE */,
|
|
602
|
+
},
|
|
603
|
+
},
|
|
236
604
|
},
|
|
237
|
-
|
|
238
|
-
}
|
|
605
|
+
delegate: streamDelegate,
|
|
606
|
+
},
|
|
607
|
+
sensors: {
|
|
608
|
+
motion: true,
|
|
609
|
+
occupancy: true,
|
|
610
|
+
},
|
|
239
611
|
});
|
|
240
612
|
streamDelegate.controller = cameraController;
|
|
241
613
|
camera.configureController(cameraController);
|
|
614
|
+
// a service to trigger the motion sensor!
|
|
615
|
+
camera.addService(__1.Service.Switch, "MOTION TRIGGER")
|
|
616
|
+
.getCharacteristic(__1.Characteristic.On)
|
|
617
|
+
.onSet(function (value) {
|
|
618
|
+
var _a;
|
|
619
|
+
(_a = camera.getService(__1.Service.MotionSensor)) === null || _a === void 0 ? void 0 : _a.updateCharacteristic(__1.Characteristic.MotionDetected, value);
|
|
620
|
+
});
|
|
242
621
|
//# sourceMappingURL=Camera_accessory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Camera_accessory.js","sourceRoot":"","sources":["../../src/accessories/Camera_accessory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Camera_accessory.js","sourceRoot":"","sources":["../../src/accessories/Camera_accessory.ts"],"names":[],"mappings":"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"}
|