diff --git a/plugins/core/package-lock.json b/plugins/core/package-lock.json index ff6483a4a..0d7e3a7d6 100644 --- a/plugins/core/package-lock.json +++ b/plugins/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/core", - "version": "0.1.23", + "version": "0.1.24", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/core", - "version": "0.1.23", + "version": "0.1.24", "license": "Apache-2.0", "dependencies": { "@scrypted/common": "file:../../common", diff --git a/plugins/core/package.json b/plugins/core/package.json index 558b6922c..0dc758425 100644 --- a/plugins/core/package.json +++ b/plugins/core/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/core", - "version": "0.1.23", + "version": "0.1.24", "description": "Scrypted Core plugin. Provides the UI, websocket, and engine.io APIs.", "author": "Scrypted", "license": "Apache-2.0", diff --git a/plugins/core/src/aggregate.ts b/plugins/core/src/aggregate.ts index 3d92ca334..30344066f 100644 --- a/plugins/core/src/aggregate.ts +++ b/plugins/core/src/aggregate.ts @@ -1,4 +1,4 @@ -import sdk, { EventListener, EventListenerRegister, FFmpegInput, LockState, RequestMediaStreamOptions, ResponseMediaStreamOptions, ScryptedDevice, ScryptedDeviceBase, ScryptedInterface, ScryptedInterfaceDescriptors, ScryptedMimeTypes, VideoCamera } from "@scrypted/sdk"; +import sdk, { EventListener, EventListenerRegister, FFmpegInput, LockState, MediaStreamDestination, RequestMediaStreamOptions, ResponseMediaStreamOptions, ScryptedDevice, ScryptedDeviceBase, ScryptedInterface, ScryptedInterfaceDescriptors, ScryptedMimeTypes, VideoCamera } from "@scrypted/sdk"; const { systemManager, mediaManager, deviceManager } = sdk; export interface AggregateDevice extends ScryptedDeviceBase { @@ -40,8 +40,11 @@ aggregators.set(ScryptedInterface.Lock, function createVideoCamera(devices: VideoCamera[], console: Console): VideoCamera { async function getVideoStreamWrapped(options: RequestMediaStreamOptions) { + const destination: MediaStreamDestination = devices.length > 4 ? 'low-resolution' : "medium-resolution"; const args = await Promise.allSettled(devices.map(async (device) => { - const mo = await device.getVideoStream(); + const mo = await device.getVideoStream({ + destination, + }); const buffer = await mediaManager.convertMediaObjectToBuffer(mo, ScryptedMimeTypes.FFmpegInput); const ffmpegInput = JSON.parse(buffer.toString()) as FFmpegInput; return ffmpegInput;