diff --git a/plugins/homekit/package-lock.json b/plugins/homekit/package-lock.json index c63f0dc14..92c928959 100644 --- a/plugins/homekit/package-lock.json +++ b/plugins/homekit/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/homekit", - "version": "0.0.131", + "version": "0.0.132", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/homekit", - "version": "0.0.131", + "version": "0.0.132", "dependencies": { "hap-nodejs": "file:../../external/HAP-NodeJS", "lodash": "^4.17.21", diff --git a/plugins/homekit/package.json b/plugins/homekit/package.json index 07c1442ae..6e7d24569 100644 --- a/plugins/homekit/package.json +++ b/plugins/homekit/package.json @@ -40,5 +40,5 @@ "@types/qrcode": "^1.4.1", "@types/url-parse": "^1.4.3" }, - "version": "0.0.131" + "version": "0.0.132" } diff --git a/plugins/homekit/src/rtp/rtp-demuxer.ts b/plugins/homekit/src/rtp/rtp-demuxer.ts index 79420b21a..e48b4acbc 100644 --- a/plugins/homekit/src/rtp/rtp-demuxer.ts +++ b/plugins/homekit/src/rtp/rtp-demuxer.ts @@ -20,11 +20,11 @@ import { EventEmitter } from "stream"; */ export class RtpDemuxer extends EventEmitter { // Create an instance of RtpDemuxer. - constructor(public deviceName: string, public console: Console, public socket: Socket) { + constructor(public console: Console, public socket: Socket) { super(); // Catch errors when they happen on our demuxer. this.socket.on("error", (error) => { - this.console.error(this.deviceName, "RtpDemuxer Error:", error); + this.console.error("RtpDemuxer Error:", error); this.socket.close(); }); diff --git a/plugins/homekit/src/types/camera.ts b/plugins/homekit/src/types/camera.ts index 9644276a4..311d4b7c7 100644 --- a/plugins/homekit/src/types/camera.ts +++ b/plugins/homekit/src/types/camera.ts @@ -43,9 +43,7 @@ addSupportedType({ return device.interfaces.includes(ScryptedInterface.VideoCamera); }, async getAccessory(device: ScryptedDevice & VideoCamera & Camera & MotionSensor & AudioSensor & Intercom, homekitSession: HomeKitSession) { - const console = deviceManager.getMixinConsole - ? deviceManager.getMixinConsole(device.id, undefined) - : deviceManager.getDeviceConsole(undefined); + const console = deviceManager.getMixinConsole(device.id, undefined); interface Session { prepareRequest: PrepareStreamRequest; @@ -126,7 +124,7 @@ addSupportedType({ callback(null, response); }, async handleStreamRequest(request: StreamingRequest, callback: StreamRequestCallback) { - console.log(device.name, 'streaming request', request); + console.log('streaming request', request); if (request.type === StreamRequestTypes.STOP) { killSession(request.sessionID); callback(); @@ -193,7 +191,7 @@ addSupportedType({ const audiomtu = 188 * 1; try { - console.log(device.name, 'fetching video stream'); + console.log('fetching video stream'); const media = await device.getVideoStream(selectedStream); const ffmpegInput = JSON.parse((await mediaManager.convertMediaObjectToBuffer(media, ScryptedMimeTypes.FFmpegInput)).toString()) as FFMpegInput; @@ -307,7 +305,12 @@ addSupportedType({ } } - console.log(device.name, args); + if (!sessions.has(request.sessionID)) { + console.log('session ended before streaming could start. bailing.'); + return; + } + + console.log('ffmpeg args', args); const cp = child_process.spawn(await mediaManager.getFFmpegPath(), args); ffmpegLogInitialOutput(console, cp); @@ -316,7 +319,7 @@ addSupportedType({ // audio talkback if (twoWayAudio) { - session.demuxer = new RtpDemuxer(device.name, console, session.audioReturn); + session.demuxer = new RtpDemuxer(console, session.audioReturn); const socketType = session.prepareRequest.addressVersion === 'ipv6' ? 'udp6' : 'udp4'; session.rtpSink = await startRtpSink(socketType, session.prepareRequest.targetAddress, @@ -335,7 +338,7 @@ addSupportedType({ } } catch (e) { - console.error(device.name, 'streaming error', e); + console.error('streaming error', e); } }, };