wyze: better ffmpeg kill method

This commit is contained in:
Koushik Dutta
2023-12-30 18:53:15 -08:00
parent 4b03a3a458
commit 841475cb97
3 changed files with 11 additions and 7 deletions

View File

@@ -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",

View File

@@ -33,5 +33,5 @@
"devDependencies": {
"@scrypted/sdk": "file:../../sdk"
},
"version": "0.0.48"
"version": "0.0.49"
}

View File

@@ -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)