@camera.ui/camera-ui-homekit 0.0.6 → 0.0.8
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/camera/accessory.d.ts +2 -2
- package/dist/camera/accessory.js +6 -1
- package/dist/camera/accessory.js.map +1 -1
- package/dist/camera/recordingDelegate.js +2 -2
- package/dist/camera/recordingDelegate.js.map +1 -1
- package/dist/camera/sessionWrapper.d.ts +7 -3
- package/dist/camera/sessionWrapper.js +158 -108
- package/dist/camera/sessionWrapper.js.map +1 -1
- package/dist/camera/streamingDelegate.js +3 -2
- package/dist/camera/streamingDelegate.js.map +1 -1
- package/dist/utils/ffmpeg-process.d.ts +23 -0
- package/dist/utils/ffmpeg-process.js +72 -0
- package/dist/utils/ffmpeg-process.js.map +1 -0
- package/dist/utils/ffmpeg.d.ts +2 -11
- package/dist/utils/ffmpeg.js +9 -58
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/mp4.d.ts +10 -0
- package/dist/utils/mp4.js +53 -0
- package/dist/utils/mp4.js.map +1 -0
- package/dist/utils/opus-repacketizer.d.ts +1 -1
- package/dist/utils/opus-repacketizer.js.map +1 -1
- package/dist/utils/ports.d.ts +7 -0
- package/dist/utils/ports.js +43 -0
- package/dist/utils/ports.js.map +1 -0
- package/dist/utils/return-audio-transcoder.d.ts +40 -0
- package/dist/utils/return-audio-transcoder.js +84 -0
- package/dist/utils/return-audio-transcoder.js.map +1 -0
- package/dist/utils/rtp-splitter.d.ts +33 -0
- package/dist/utils/rtp-splitter.js +71 -0
- package/dist/utils/rtp-splitter.js.map +1 -0
- package/dist/utils/rtp.d.ts +3 -0
- package/dist/utils/rtp.js +16 -0
- package/dist/utils/rtp.js.map +1 -0
- package/dist/utils/srtp.d.ts +8 -0
- package/dist/utils/srtp.js +22 -0
- package/dist/utils/srtp.js.map +1 -0
- package/dist/utils/utils.d.ts +2 -1
- package/dist/utils/utils.js +24 -10
- package/dist/utils/utils.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function getPayloadType(message) {
|
|
2
|
+
return message.readUInt8(1) & 0x7f;
|
|
3
|
+
}
|
|
4
|
+
export function isRtpMessagePayloadType(payloadType) {
|
|
5
|
+
return payloadType > 90 || payloadType === 0;
|
|
6
|
+
}
|
|
7
|
+
export function getSsrc(message) {
|
|
8
|
+
try {
|
|
9
|
+
const payloadType = getPayloadType(message), isRtp = isRtpMessagePayloadType(payloadType);
|
|
10
|
+
return message.readUInt32BE(isRtp ? 8 : 4);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=rtp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtp.js","sourceRoot":"","sources":["../../src/utils/rtp.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,OAAO,WAAW,GAAG,EAAE,IAAI,WAAW,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,EACzC,KAAK,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface SrtpOptions {
|
|
2
|
+
srtpKey: Buffer;
|
|
3
|
+
srtpSalt: Buffer;
|
|
4
|
+
}
|
|
5
|
+
export declare function encodeSrtpOptions({ srtpKey, srtpSalt }: SrtpOptions): string;
|
|
6
|
+
export declare function decodeSrtpOptions(encodedOptions: string): SrtpOptions;
|
|
7
|
+
export declare function createCryptoLine(srtpOptions: SrtpOptions): string;
|
|
8
|
+
export declare function generateSrtpOptions(): SrtpOptions;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { randomBytes } from 'crypto';
|
|
2
|
+
export function encodeSrtpOptions({ srtpKey, srtpSalt }) {
|
|
3
|
+
return Buffer.concat([srtpKey, srtpSalt]).toString('base64');
|
|
4
|
+
}
|
|
5
|
+
export function decodeSrtpOptions(encodedOptions) {
|
|
6
|
+
const crypto = Buffer.from(encodedOptions, 'base64');
|
|
7
|
+
return {
|
|
8
|
+
srtpKey: crypto.subarray(0, 16),
|
|
9
|
+
srtpSalt: crypto.subarray(16, 30),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function createCryptoLine(srtpOptions) {
|
|
13
|
+
const encodedOptions = encodeSrtpOptions(srtpOptions);
|
|
14
|
+
return `a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:${encodedOptions}`;
|
|
15
|
+
}
|
|
16
|
+
export function generateSrtpOptions() {
|
|
17
|
+
return {
|
|
18
|
+
srtpKey: randomBytes(16),
|
|
19
|
+
srtpSalt: randomBytes(14),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=srtp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"srtp.js","sourceRoot":"","sources":["../../src/utils/srtp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAOrC,MAAM,UAAU,iBAAiB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAe;IAClE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,cAAsB;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAErD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAwB;IACvD,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAEtD,OAAO,6CAA6C,cAAc,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;QACxB,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;KAC1B,CAAC;AACJ,CAAC"}
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Subscription } from 'rxjs';
|
|
2
|
-
export declare const generateValidAccessoryName: (input?: string) => string;
|
|
3
2
|
export declare class Subscribed {
|
|
4
3
|
private readonly subscriptions;
|
|
5
4
|
addSubscriptions(...subscriptions: Subscription[]): void;
|
|
6
5
|
protected unsubscribe(): void;
|
|
7
6
|
}
|
|
7
|
+
export declare function generateValidAccessoryName(input?: string): string;
|
|
8
|
+
export declare function timeoutPromise<T>(timeout: number, promise: Promise<T>): Promise<T>;
|
package/dist/utils/utils.js
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
export
|
|
1
|
+
export class Subscribed {
|
|
2
|
+
subscriptions = [];
|
|
3
|
+
addSubscriptions(...subscriptions) {
|
|
4
|
+
this.subscriptions.push(...subscriptions);
|
|
5
|
+
}
|
|
6
|
+
unsubscribe() {
|
|
7
|
+
this.subscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export function generateValidAccessoryName(input = '') {
|
|
2
11
|
// Function to remove leading and trailing special characters
|
|
3
12
|
const trimSpecialChars = (str) => {
|
|
4
13
|
return str.replace(/^[^a-zA-Z]+|[^a-zA-Z0-9]+$/g, '');
|
|
@@ -19,14 +28,19 @@ export const generateValidAccessoryName = (input = '') => {
|
|
|
19
28
|
return 'Default Camera';
|
|
20
29
|
}
|
|
21
30
|
return safeName;
|
|
22
|
-
}
|
|
23
|
-
export
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
}
|
|
32
|
+
export function timeoutPromise(timeout, promise) {
|
|
33
|
+
return new Promise((resolve, reject) => {
|
|
34
|
+
const t = setTimeout(() => reject(new Error('Operation timed out')), timeout);
|
|
35
|
+
promise
|
|
36
|
+
.then((v) => {
|
|
37
|
+
clearTimeout(t);
|
|
38
|
+
resolve(v);
|
|
39
|
+
})
|
|
40
|
+
.catch((e) => {
|
|
41
|
+
clearTimeout(t);
|
|
42
|
+
reject(e);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
31
45
|
}
|
|
32
46
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAU;IACJ,aAAa,GAAmB,EAAE,CAAC;IAE7C,gBAAgB,CAAC,GAAG,aAA6B;QACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAC5C,CAAC;IAES,WAAW;QACnB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAgB,EAAE;IAC3D,6DAA6D;IAC7D,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;QAC/C,OAAO,GAAG,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,yCAAyC;IACzC,IAAI,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAE9C,8CAA8C;IAC9C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAEtD,yBAAyB;IACzB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC,0BAA0B;IAC1B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAElC,uDAAuD;IACvD,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEtC,6BAA6B;IAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,4CAA4C,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpG,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAI,OAAe,EAAE,OAAmB;IACpE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAE9E,OAAO;aACJ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,YAAY,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,YAAY,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "HomeKit",
|
|
3
3
|
"name": "@camera.ui/camera-ui-homekit",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.8",
|
|
5
5
|
"description": "camera.ui homekit plugin",
|
|
6
6
|
"author": "seydx (https://github.com/seydx/camera.ui)",
|
|
7
7
|
"main": "./dist/index.js",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"prepublishOnly": "npm i --package-lock-only && npm run lint && npm run format && npm run build"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@homebridge/camera-utils": "^2.2.6",
|
|
19
18
|
"hap-nodejs": "^1.1.0",
|
|
19
|
+
"pick-port": "^2.1.0",
|
|
20
20
|
"rxjs": "^7.8.1",
|
|
21
21
|
"werift": "^0.19.6"
|
|
22
22
|
},
|
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
"chacha": "^2.1.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@camera.ui/types": "^0.0.
|
|
27
|
+
"@camera.ui/types": "^0.0.57",
|
|
28
28
|
"@rushstack/eslint-patch": "^1.10.4",
|
|
29
|
-
"@types/node": "^22.
|
|
29
|
+
"@types/node": "^22.4.1",
|
|
30
30
|
"@types/ws": "^8.5.12",
|
|
31
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
32
|
-
"@typescript-eslint/parser": "^8.
|
|
31
|
+
"@typescript-eslint/eslint-plugin": "^8.2.0",
|
|
32
|
+
"@typescript-eslint/parser": "^8.2.0",
|
|
33
33
|
"concurrently": "^8.2.2",
|
|
34
34
|
"eslint": "8.57.0",
|
|
35
35
|
"eslint-config-prettier": "^9.1.0",
|