From 841475cb97e7ee33a975fc555ed24fc34fd8639e Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Sat, 30 Dec 2023 18:53:15 -0800 Subject: [PATCH] wyze: better ffmpeg kill method --- plugins/wyze/package-lock.json | 5 +++-- plugins/wyze/package.json | 2 +- plugins/wyze/src/main.py | 11 +++++++---- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/plugins/wyze/package-lock.json b/plugins/wyze/package-lock.json index 1ac7fbb2d..bac868328 100644 --- a/plugins/wyze/package-lock.json +++ b/plugins/wyze/package-lock.json @@ -1,17 +1,18 @@ { "name": "@scrypted/wyze", - "version": "0.0.48", + "version": "0.0.49", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/wyze", - "version": "0.0.48", + "version": "0.0.49", "devDependencies": { "@scrypted/sdk": "file:../../sdk" } }, "../../sdk": { + "name": "@scrypted/sdk", "version": "0.3.3", "dev": true, "license": "ISC", diff --git a/plugins/wyze/package.json b/plugins/wyze/package.json index 82560e0fe..613be9a7f 100644 --- a/plugins/wyze/package.json +++ b/plugins/wyze/package.json @@ -33,5 +33,5 @@ "devDependencies": { "@scrypted/sdk": "file:../../sdk" }, - "version": "0.0.48" + "version": "0.0.49" } diff --git a/plugins/wyze/src/main.py b/plugins/wyze/src/main.py index d16585603..684ac2e65 100644 --- a/plugins/wyze/src/main.py +++ b/plugins/wyze/src/main.py @@ -264,6 +264,11 @@ class WyzeCamera(scrypted_sdk.ScryptedDeviceBase, VideoCamera, Settings, PanTilt stderr=asyncio.subprocess.DEVNULL, ) + def pkill(p: asyncio.subprocess.Process): + p.stdin.write_eof() + loop.call_later(5, lambda: p.terminate()) + loop.call_later(10, lambda: p.kill()) + try: forked, gen = self.forkAndStream(substream) async for audio, data, codec, sampleRate in gen: @@ -280,11 +285,9 @@ class WyzeCamera(scrypted_sdk.ScryptedDeviceBase, VideoCamera, Settings, PanTilt forked.worker.terminate() writer.close() self.print("rfc reader closed") - vprocess.stdin.write("q\n".encode()) - vprocess.terminate() + pkill(vprocess) if aprocess: - aprocess.stdin.write("q\n".encode()) - aprocess.terminate() + pkill(aprocess) async def ensureServer(self, cb) -> int: server = await asyncio.start_server(cb, "127.0.0.1", 0)