diff --git a/plugins/homekit/package-lock.json b/plugins/homekit/package-lock.json index 2558a6ab3..947b219d6 100644 --- a/plugins/homekit/package-lock.json +++ b/plugins/homekit/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/homekit", - "version": "1.1.7", + "version": "1.1.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/homekit", - "version": "1.1.7", + "version": "1.1.8", "dependencies": { "@koush/qrcode-terminal": "^0.12.0", "@koush/werift-src": "file:../../external/werift", diff --git a/plugins/homekit/package.json b/plugins/homekit/package.json index d0331a2ed..b296e8e55 100644 --- a/plugins/homekit/package.json +++ b/plugins/homekit/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/homekit", - "version": "1.1.7", + "version": "1.1.8", "description": "HomeKit Plugin for Scrypted", "scripts": { "prepublishOnly": "NODE_ENV=production scrypted-webpack", diff --git a/plugins/homekit/src/types/camera/camera-streaming.ts b/plugins/homekit/src/types/camera/camera-streaming.ts index f5a6edebf..9b21ea80a 100644 --- a/plugins/homekit/src/types/camera/camera-streaming.ts +++ b/plugins/homekit/src/types/camera/camera-streaming.ts @@ -40,10 +40,6 @@ export function createCameraStreamingDelegate(device: ScryptedDevice & VideoCame async prepareStream(request: PrepareStreamRequest, callback: PrepareStreamCallback) { // console.log('prepareStream', Object.assign({}, request, { connection: request.connection.remoteAddress })); - const videossrc = CameraController.generateSynchronisationSource(); - const audiossrc = CameraController.generateSynchronisationSource(); - const addressOverride = homekitPlugin.storageSettings.values.addressOverride || undefined; - const { sessionID } = request; let killResolve: any; const streamingSessionStartTime = Date.now(); @@ -62,6 +58,14 @@ export function createCameraStreamingDelegate(device: ScryptedDevice & VideoCame }); const socketType = request.addressVersion === 'ipv6' ? 'udp6' : 'udp4'; + const addressOverride = homekitPlugin.storageSettings.values.addressOverride || undefined; + + if (addressOverride) { + const infos = Object.values(os.networkInterfaces()).flat().map(i => i?.address); + if (!infos.find(address => address === addressOverride)) + homekitPlugin.log.a('The provided Scrypted Server Address was not found in the list of network addresses and may be invalid: ' + addressOverride); + } + const { socket: videoReturn, port: videoPort } = await getPort(socketType, addressOverride); const { socket: audioReturn, port: audioPort } = await getPort(socketType, addressOverride); @@ -70,6 +74,9 @@ export function createCameraStreamingDelegate(device: ScryptedDevice & VideoCame closeQuiet(audioReturn); }); + const videossrc = CameraController.generateSynchronisationSource(); + const audiossrc = CameraController.generateSynchronisationSource(); + const session: CameraStreamingSession = { aconfig: { keys: { @@ -123,10 +130,6 @@ export function createCameraStreamingDelegate(device: ScryptedDevice & VideoCame if (addressOverride) { console.log('using address override', addressOverride); response.addressOverride = addressOverride; - - const infos = Object.values(os.networkInterfaces()).flat().map(i => i.address); - if (!infos.find(address => address === addressOverride)) - homekitPlugin.log.a('The provided Scrypted Server Address was not found in the list of network addresses and may be invalid: ' + addressOverride); } else { // HAP-NodeJS has weird default address determination behavior. Ideally it should use