core: use low/medium res on aggregate devices

This commit is contained in:
Koushik Dutta
2022-08-17 12:35:49 -07:00
parent 82f644990a
commit ef1883744b
3 changed files with 8 additions and 5 deletions

View File

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

View File

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

View File

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