@scrypted/server 0.94.33 → 0.94.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plugin/media.d.ts +5 -5
- package/dist/plugin/media.js +62 -22
- package/dist/plugin/media.js.map +1 -1
- package/dist/plugin/mediaobject.d.ts +2 -2
- package/dist/plugin/mediaobject.js +2 -0
- package/dist/plugin/mediaobject.js.map +1 -1
- package/dist/services/service-control.d.ts +0 -1
- package/dist/services/service-control.js +3 -4
- package/dist/services/service-control.js.map +1 -1
- package/package.json +4 -4
- package/src/plugin/media.ts +76 -27
- package/src/plugin/mediaobject.ts +5 -2
- package/src/services/service-control.ts +3 -5
package/dist/plugin/media.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/// <reference types="node" />
|
2
|
-
import { BufferConverter, DeviceManager, FFmpegInput, MediaManager, MediaObject as MediaObjectInterface,
|
2
|
+
import { BufferConverter, DeviceManager, FFmpegInput, MediaManager, MediaObjectCreateOptions, MediaObject as MediaObjectInterface, ScryptedDevice, ScryptedNativeId, SystemDeviceState, SystemManager } from "@scrypted/types";
|
3
3
|
import { MediaObjectRemote } from "./plugin-api";
|
4
4
|
type IdBufferConverter = BufferConverter & {
|
5
5
|
id: string;
|
@@ -29,10 +29,10 @@ export declare abstract class MediaManagerBase implements MediaManager {
|
|
29
29
|
convertMediaObjectToBuffer(mediaObject: MediaObjectInterface, toMimeType: string): Promise<Buffer>;
|
30
30
|
convertMediaObjectToLocalUrl(mediaObject: string | MediaObjectInterface, toMimeType: string): Promise<string>;
|
31
31
|
convertMediaObjectToUrl(mediaObject: string | MediaObjectInterface, toMimeType: string): Promise<string>;
|
32
|
-
createMediaObjectRemote<T extends
|
33
|
-
createFFmpegMediaObject(ffMpegInput: FFmpegInput, options?:
|
34
|
-
createMediaObjectFromUrl(data: string, options?:
|
35
|
-
createMediaObject<T extends
|
32
|
+
createMediaObjectRemote<T extends MediaObjectCreateOptions>(data: any | Buffer | Promise<string | Buffer>, mimeType: string, options?: T): MediaObjectRemote & T;
|
33
|
+
createFFmpegMediaObject<T extends MediaObjectCreateOptions>(ffMpegInput: FFmpegInput, options?: T): Promise<MediaObjectInterface & T>;
|
34
|
+
createMediaObjectFromUrl<T extends MediaObjectCreateOptions>(data: string, options?: T): Promise<MediaObjectInterface & T>;
|
35
|
+
createMediaObject<T extends MediaObjectCreateOptions>(data: any, mimeType: string, options?: T): Promise<MediaObjectInterface & T>;
|
36
36
|
convert(converters: IdBufferConverter[], mediaObject: MediaObjectRemote, toMimeType: string): Promise<{
|
37
37
|
data: Buffer | string | any;
|
38
38
|
mimeType: string;
|
package/dist/plugin/media.js
CHANGED
@@ -4,16 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.MediaManagerHostImpl = exports.MediaManagerImpl = exports.MediaManagerBase = void 0;
|
7
|
-
const types_1 = require("@scrypted/types");
|
8
7
|
const ffmpeg_static_1 = require("@scrypted/ffmpeg-static");
|
8
|
+
const types_1 = require("@scrypted/types");
|
9
9
|
const fs_1 = __importDefault(require("fs"));
|
10
10
|
const https_1 = __importDefault(require("https"));
|
11
11
|
const node_dijkstra_1 = __importDefault(require("node-dijkstra"));
|
12
12
|
const os_1 = __importDefault(require("os"));
|
13
13
|
const path_1 = __importDefault(require("path"));
|
14
|
+
const send_1 = __importDefault(require("send"));
|
14
15
|
const whatwg_mimetype_1 = __importDefault(require("whatwg-mimetype"));
|
15
16
|
const mediaobject_1 = require("./mediaobject");
|
16
|
-
const send_1 = __importDefault(require("send"));
|
17
17
|
function typeMatches(target, candidate) {
|
18
18
|
// candidate will accept anything
|
19
19
|
if (candidate === '*' || target === '*')
|
@@ -170,7 +170,7 @@ class MediaManagerBase {
|
|
170
170
|
return ret;
|
171
171
|
}
|
172
172
|
getConverters() {
|
173
|
-
const
|
173
|
+
const bufferConverters = Object.entries(this.getSystemState())
|
174
174
|
.filter(([id, state]) => state[types_1.ScryptedInterfaceProperty.interfaces]?.value?.includes(types_1.ScryptedInterface.BufferConverter))
|
175
175
|
.map(([id]) => {
|
176
176
|
const device = this.getDeviceById(id);
|
@@ -184,6 +184,26 @@ class MediaManagerBase {
|
|
184
184
|
},
|
185
185
|
};
|
186
186
|
});
|
187
|
+
const mediaConverters = Object.entries(this.getSystemState())
|
188
|
+
.filter(([id, state]) => state[types_1.ScryptedInterfaceProperty.interfaces]?.value?.includes(types_1.ScryptedInterface.MediaConverter))
|
189
|
+
.map(([id]) => {
|
190
|
+
const device = this.getDeviceById(id);
|
191
|
+
return (device.converters || []).map(([fromMimeType, toMimeType], index) => {
|
192
|
+
return {
|
193
|
+
id: `${id}-${index}`,
|
194
|
+
name: device.name,
|
195
|
+
fromMimeType,
|
196
|
+
toMimeType,
|
197
|
+
convert(data, fromMimeType, toMimeType, options) {
|
198
|
+
// MediaConverter is injected the plugin's node runtime which may be compiled against an
|
199
|
+
// older sdk that does not have MediaConverter. use the older convert method instead.
|
200
|
+
// once BufferConverter is removed, this can be simplified to device.convertMedia.
|
201
|
+
return (device.convertMedia || device.convert)(data, fromMimeType, toMimeType, options);
|
202
|
+
},
|
203
|
+
};
|
204
|
+
});
|
205
|
+
});
|
206
|
+
const converters = [...mediaConverters.flat(), ...bufferConverters];
|
187
207
|
// builtins should be after system converters. these should not be overriden by system,
|
188
208
|
// as it could cause system instability with misconfiguration.
|
189
209
|
converters.push(...this.builtinConverters);
|
@@ -226,8 +246,6 @@ class MediaManagerBase {
|
|
226
246
|
return url.data.toString();
|
227
247
|
}
|
228
248
|
createMediaObjectRemote(data, mimeType, options) {
|
229
|
-
if (typeof data === 'string')
|
230
|
-
throw new Error('string is not a valid type. if you intended to send a url, use createMediaObjectFromUrl.');
|
231
249
|
if (!mimeType)
|
232
250
|
throw new Error('no mimeType provided');
|
233
251
|
if (mimeType === types_1.ScryptedMimeTypes.MediaObject)
|
@@ -235,10 +253,8 @@ class MediaManagerBase {
|
|
235
253
|
if (data.constructor?.name === Object.name)
|
236
254
|
data = Buffer.from(JSON.stringify(data));
|
237
255
|
const sourceId = typeof options?.sourceId === 'string' ? options?.sourceId : this.getPluginDeviceId();
|
238
|
-
|
239
|
-
|
240
|
-
options.sourceId = sourceId;
|
241
|
-
}
|
256
|
+
options ||= {};
|
257
|
+
options.sourceId = sourceId;
|
242
258
|
return new mediaobject_1.MediaObject(mimeType, data, options);
|
243
259
|
}
|
244
260
|
async createFFmpegMediaObject(ffMpegInput, options) {
|
@@ -248,19 +264,7 @@ class MediaManagerBase {
|
|
248
264
|
const url = new URL(data);
|
249
265
|
const scheme = url.protocol.slice(0, -1);
|
250
266
|
const mimeType = types_1.ScryptedMimeTypes.SchemePrefix + scheme;
|
251
|
-
|
252
|
-
class MediaObjectImpl {
|
253
|
-
__proxy_props = {
|
254
|
-
mimeType,
|
255
|
-
sourceId,
|
256
|
-
};
|
257
|
-
mimeType = mimeType;
|
258
|
-
sourceId = sourceId;
|
259
|
-
async getData() {
|
260
|
-
return Promise.resolve(data);
|
261
|
-
}
|
262
|
-
}
|
263
|
-
return new MediaObjectImpl();
|
267
|
+
return this.createMediaObjectRemote(data, mimeType, options);
|
264
268
|
}
|
265
269
|
async createMediaObject(data, mimeType, options) {
|
266
270
|
return this.createMediaObjectRemote(data, mimeType, options);
|
@@ -287,6 +291,42 @@ class MediaManagerBase {
|
|
287
291
|
const mediaNode = {};
|
288
292
|
nodes['mediaObject'] = mediaNode;
|
289
293
|
nodes['output'] = {};
|
294
|
+
const minimumWeight = .000001;
|
295
|
+
for (const toMimeType of mediaObject.toMimeTypes instanceof Array ? mediaObject.toMimeTypes : []) {
|
296
|
+
console.log('biultin toMimeType', toMimeType);
|
297
|
+
const id = `media-${toMimeType}`;
|
298
|
+
converterMap.set(id, {
|
299
|
+
id,
|
300
|
+
name: `MediaObject to ${toMimeType}`,
|
301
|
+
fromMimeType: mediaObject.mimeType,
|
302
|
+
toMimeType,
|
303
|
+
convert: async (data, fromMimeType, toMimeType) => {
|
304
|
+
return mediaObject.convert(toMimeType);
|
305
|
+
}
|
306
|
+
});
|
307
|
+
// connect the media object to the intrinsic target mime type
|
308
|
+
mediaNode[id] = minimumWeight;
|
309
|
+
const node = nodes[id] = {};
|
310
|
+
const convertedMime = new whatwg_mimetype_1.default(toMimeType);
|
311
|
+
// target output matches
|
312
|
+
if (mimeMatches(outputMime, convertedMime) || toMimeType === types_1.ScryptedMimeTypes.MediaObject) {
|
313
|
+
node['output'] = minimumWeight;
|
314
|
+
}
|
315
|
+
// connect the intrinsic converter to other converters
|
316
|
+
for (const candidate of converters) {
|
317
|
+
try {
|
318
|
+
const candidateMime = new whatwg_mimetype_1.default(candidate.fromMimeType);
|
319
|
+
if (!mimeMatches(convertedMime, candidateMime))
|
320
|
+
continue;
|
321
|
+
const outputWeight = parseFloat(candidateMime.parameters.get('converter-weight')) || (candidateMime.essence === '*/*' ? 1000 : 1);
|
322
|
+
const candidateId = candidate.id;
|
323
|
+
node[candidateId] = outputWeight;
|
324
|
+
}
|
325
|
+
catch (e) {
|
326
|
+
// console.warn(candidate.name, 'skipping converter due to error', e)
|
327
|
+
}
|
328
|
+
}
|
329
|
+
}
|
290
330
|
for (const converter of converters) {
|
291
331
|
try {
|
292
332
|
const inputMime = new whatwg_mimetype_1.default(converter.fromMimeType);
|
package/dist/plugin/media.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/plugin/media.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/plugin/media.ts"],"names":[],"mappings":"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"}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
/// <reference types="node" />
|
2
|
-
import {
|
2
|
+
import { MediaObjectCreateOptions } from "@scrypted/types";
|
3
3
|
import { MediaObjectRemote } from "./plugin-api";
|
4
4
|
export declare class MediaObject implements MediaObjectRemote {
|
5
5
|
mimeType: string;
|
6
6
|
data: any;
|
7
7
|
__proxy_props: any;
|
8
|
-
constructor(mimeType: string, data: any, options:
|
8
|
+
constructor(mimeType: string, data: any, options: MediaObjectCreateOptions);
|
9
9
|
getData(): Promise<Buffer | string>;
|
10
10
|
}
|
@@ -12,6 +12,8 @@ class MediaObject {
|
|
12
12
|
this.__proxy_props = {};
|
13
13
|
options ||= {};
|
14
14
|
options.mimeType = mimeType;
|
15
|
+
options.convert ||= null;
|
16
|
+
options.toMimeTypes ||= null;
|
15
17
|
for (const [key, value] of Object.entries(options)) {
|
16
18
|
if (rpc_1.RpcPeer.isTransportSafe(value))
|
17
19
|
this.__proxy_props[key] = value;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mediaobject.js","sourceRoot":"","sources":["../../src/plugin/mediaobject.ts"],"names":[],"mappings":";;;AACA,gCAAiC;AAGjC,MAAa,WAAW;IAGD;IAAyB;IAF5C,aAAa,CAAM;IAEnB,YAAmB,QAAgB,EAAS,IAAS,EAAE,
|
1
|
+
{"version":3,"file":"mediaobject.js","sourceRoot":"","sources":["../../src/plugin/mediaobject.ts"],"names":[],"mappings":";;;AACA,gCAAiC;AAGjC,MAAa,WAAW;IAGD;IAAyB;IAF5C,aAAa,CAAM;IAEnB,YAAmB,QAAgB,EAAS,IAAS,EAAE,OAAiC;QAArE,aAAQ,GAAR,QAAQ,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAK;QACjD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACvB,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;QACzB,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;QAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,aAAO,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnC,IAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ;AApBD,kCAoBC"}
|
@@ -2,7 +2,6 @@ import { ScryptedRuntime } from "../runtime";
|
|
2
2
|
export declare class ServiceControl {
|
3
3
|
scrypted: ScryptedRuntime;
|
4
4
|
constructor(scrypted: ScryptedRuntime);
|
5
|
-
exit(): Promise<void>;
|
6
5
|
restart(): Promise<void>;
|
7
6
|
getUpdateAvailable(): Promise<string>;
|
8
7
|
update(): Promise<void>;
|
@@ -11,11 +11,10 @@ class ServiceControl {
|
|
11
11
|
constructor(scrypted) {
|
12
12
|
this.scrypted = scrypted;
|
13
13
|
}
|
14
|
-
async exit() {
|
15
|
-
fs_1.default.writeFileSync('.exit', '');
|
16
|
-
this.restart();
|
17
|
-
}
|
18
14
|
async restart() {
|
15
|
+
// legacy file necessary to exit the npx scrypted service,
|
16
|
+
// and allow it to be restarted by launchd or systemd.
|
17
|
+
fs_1.default.writeFileSync('.exit', '');
|
19
18
|
process.exit();
|
20
19
|
}
|
21
20
|
async getUpdateAvailable() {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"service-control.js","sourceRoot":"","sources":["../../src/services/service-control.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,oDAAgD;AAGhD,MAAa,cAAc;IACJ;IAAnB,YAAmB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAC5C,CAAC;IAED,KAAK,CAAC,
|
1
|
+
{"version":3,"file":"service-control.js","sourceRoot":"","sources":["../../src/services/service-control.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,oDAAgD;AAGhD,MAAa,cAAc;IACJ;IAAnB,YAAmB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO;QACT,0DAA0D;QAC1D,sDAAsD;QACtD,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACpB,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;IACnH,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC1D,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,0BAA0B,GAAG,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC;YACrF,MAAM,IAAA,sBAAS,EAAC;gBACZ,GAAG,EAAE,aAAa;gBAClB,OAAO,EAAE;oBACL,aAAa,EAAE,0BAA0B;iBAC5C;aACJ,CAAC,CAAC;QACP,CAAC;aACI,CAAC;YACF,YAAE,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;CACJ;AA/BD,wCA+BC"}
|
package/package.json
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
{
|
2
2
|
"name": "@scrypted/server",
|
3
|
-
"version": "0.94.
|
3
|
+
"version": "0.94.34",
|
4
4
|
"description": "",
|
5
5
|
"dependencies": {
|
6
6
|
"@mapbox/node-pre-gyp": "^1.0.11",
|
7
7
|
"@scrypted/ffmpeg-static": "^6.1.0-build1",
|
8
|
-
"@scrypted/types": "^0.3.
|
8
|
+
"@scrypted/types": "^0.3.27",
|
9
9
|
"adm-zip": "^0.5.12",
|
10
10
|
"body-parser": "^1.20.2",
|
11
11
|
"cookie-parser": "^1.4.6",
|
12
12
|
"engine.io": "^6.5.4",
|
13
|
-
"express": "^4.
|
13
|
+
"express": "^4.19.0",
|
14
14
|
"follow-redirects": "^1.15.6",
|
15
15
|
"http-auth": "^4.2.0",
|
16
16
|
"ip": "^2.0.1",
|
@@ -20,7 +20,7 @@
|
|
20
20
|
"node-dijkstra": "^2.5.0",
|
21
21
|
"node-forge": "^1.3.1",
|
22
22
|
"node-gyp": "^10.0.1",
|
23
|
-
"py": "npm:@bjia56/portable-python@^0.1.
|
23
|
+
"py": "npm:@bjia56/portable-python@^0.1.23",
|
24
24
|
"router": "^1.3.8",
|
25
25
|
"semver": "^7.6.0",
|
26
26
|
"sharp": "^0.33.2",
|
package/src/plugin/media.ts
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
import { BufferConverter, DeviceManager, FFmpegInput, MediaManager, MediaObject as MediaObjectInterface, MediaObjectOptions, MediaStreamUrl, ScryptedDevice, ScryptedInterface, ScryptedInterfaceProperty, ScryptedMimeTypes, ScryptedNativeId, SystemDeviceState, SystemManager } from "@scrypted/types";
|
2
1
|
import { getFfmpegPath } from '@scrypted/ffmpeg-static';
|
2
|
+
import { BufferConverter, DeviceManager, FFmpegInput, MediaConverter, MediaManager, MediaObjectCreateOptions, MediaObject as MediaObjectInterface, MediaStreamUrl, ScryptedDevice, ScryptedInterface, ScryptedInterfaceProperty, ScryptedMimeTypes, ScryptedNativeId, SystemDeviceState, SystemManager } from "@scrypted/types";
|
3
3
|
import fs from 'fs';
|
4
4
|
import https from 'https';
|
5
5
|
import Graph from 'node-dijkstra';
|
6
6
|
import os from 'os';
|
7
7
|
import path from 'path';
|
8
|
+
import send from 'send';
|
8
9
|
import MimeType from 'whatwg-mimetype';
|
9
10
|
import { MediaObject } from "./mediaobject";
|
10
11
|
import { MediaObjectRemote } from "./plugin-api";
|
11
|
-
import send from 'send';
|
12
12
|
|
13
13
|
function typeMatches(target: string, candidate: string): boolean {
|
14
14
|
// candidate will accept anything
|
@@ -204,7 +204,7 @@ export abstract class MediaManagerBase implements MediaManager {
|
|
204
204
|
}
|
205
205
|
|
206
206
|
getConverters(): IdBufferConverter[] {
|
207
|
-
const
|
207
|
+
const bufferConverters = Object.entries(this.getSystemState())
|
208
208
|
.filter(([id, state]) => state[ScryptedInterfaceProperty.interfaces]?.value?.includes(ScryptedInterface.BufferConverter))
|
209
209
|
.map(([id]) => {
|
210
210
|
const device = this.getDeviceById<BufferConverter>(id);
|
@@ -219,6 +219,29 @@ export abstract class MediaManagerBase implements MediaManager {
|
|
219
219
|
} as IdBufferConverter;
|
220
220
|
});
|
221
221
|
|
222
|
+
const mediaConverters = Object.entries(this.getSystemState())
|
223
|
+
.filter(([id, state]) => state[ScryptedInterfaceProperty.interfaces]?.value?.includes(ScryptedInterface.MediaConverter))
|
224
|
+
.map(([id]) => {
|
225
|
+
const device = this.getDeviceById<MediaConverter & BufferConverter>(id);
|
226
|
+
|
227
|
+
return (device.converters || []).map(([fromMimeType, toMimeType], index) => {
|
228
|
+
return {
|
229
|
+
id: `${id}-${index}`,
|
230
|
+
name: device.name,
|
231
|
+
fromMimeType,
|
232
|
+
toMimeType,
|
233
|
+
convert(data, fromMimeType, toMimeType, options?) {
|
234
|
+
// MediaConverter is injected the plugin's node runtime which may be compiled against an
|
235
|
+
// older sdk that does not have MediaConverter. use the older convert method instead.
|
236
|
+
// once BufferConverter is removed, this can be simplified to device.convertMedia.
|
237
|
+
return (device.convertMedia || device.convert)(data, fromMimeType, toMimeType, options);
|
238
|
+
},
|
239
|
+
} as IdBufferConverter;
|
240
|
+
});
|
241
|
+
});
|
242
|
+
|
243
|
+
const converters = [...mediaConverters.flat(), ...bufferConverters];
|
244
|
+
|
222
245
|
// builtins should be after system converters. these should not be overriden by system,
|
223
246
|
// as it could cause system instability with misconfiguration.
|
224
247
|
converters.push(...this.builtinConverters);
|
@@ -266,9 +289,7 @@ export abstract class MediaManagerBase implements MediaManager {
|
|
266
289
|
return url.data.toString();
|
267
290
|
}
|
268
291
|
|
269
|
-
createMediaObjectRemote<T extends
|
270
|
-
if (typeof data === 'string')
|
271
|
-
throw new Error('string is not a valid type. if you intended to send a url, use createMediaObjectFromUrl.');
|
292
|
+
createMediaObjectRemote<T extends MediaObjectCreateOptions>(data: any | Buffer | Promise<string | Buffer>, mimeType: string, options?: T): MediaObjectRemote & T {
|
272
293
|
if (!mimeType)
|
273
294
|
throw new Error('no mimeType provided');
|
274
295
|
if (mimeType === ScryptedMimeTypes.MediaObject)
|
@@ -278,40 +299,25 @@ export abstract class MediaManagerBase implements MediaManager {
|
|
278
299
|
data = Buffer.from(JSON.stringify(data));
|
279
300
|
|
280
301
|
const sourceId = typeof options?.sourceId === 'string' ? options?.sourceId : this.getPluginDeviceId();
|
281
|
-
|
282
|
-
|
283
|
-
options.sourceId = sourceId;
|
284
|
-
}
|
302
|
+
options ||= {} as T;
|
303
|
+
options.sourceId = sourceId;
|
285
304
|
|
286
305
|
return new MediaObject(mimeType, data, options) as MediaObject & T;
|
287
306
|
}
|
288
307
|
|
289
|
-
async createFFmpegMediaObject(ffMpegInput: FFmpegInput, options?:
|
308
|
+
async createFFmpegMediaObject<T extends MediaObjectCreateOptions>(ffMpegInput: FFmpegInput, options?: T): Promise<MediaObjectInterface & T> {
|
290
309
|
return this.createMediaObjectRemote(Buffer.from(JSON.stringify(ffMpegInput)), ScryptedMimeTypes.FFmpegInput, options);
|
291
310
|
}
|
292
311
|
|
293
|
-
async createMediaObjectFromUrl(data: string, options?:
|
312
|
+
async createMediaObjectFromUrl<T extends MediaObjectCreateOptions>(data: string, options?: T): Promise<MediaObjectInterface & T> {
|
294
313
|
const url = new URL(data);
|
295
314
|
const scheme = url.protocol.slice(0, -1);
|
296
315
|
const mimeType = ScryptedMimeTypes.SchemePrefix + scheme;
|
297
316
|
|
298
|
-
|
299
|
-
class MediaObjectImpl implements MediaObjectRemote {
|
300
|
-
__proxy_props = {
|
301
|
-
mimeType,
|
302
|
-
sourceId,
|
303
|
-
}
|
304
|
-
|
305
|
-
mimeType = mimeType;
|
306
|
-
sourceId = sourceId;
|
307
|
-
async getData(): Promise<Buffer | string> {
|
308
|
-
return Promise.resolve(data);
|
309
|
-
}
|
310
|
-
}
|
311
|
-
return new MediaObjectImpl();
|
317
|
+
return this.createMediaObjectRemote(data, mimeType, options);
|
312
318
|
}
|
313
319
|
|
314
|
-
async createMediaObject<T extends
|
320
|
+
async createMediaObject<T extends MediaObjectCreateOptions>(data: any, mimeType: string, options?: T): Promise<MediaObjectInterface & T> {
|
315
321
|
return this.createMediaObjectRemote(data, mimeType, options);
|
316
322
|
}
|
317
323
|
|
@@ -341,6 +347,49 @@ export abstract class MediaManagerBase implements MediaManager {
|
|
341
347
|
const mediaNode: any = {};
|
342
348
|
nodes['mediaObject'] = mediaNode;
|
343
349
|
nodes['output'] = {};
|
350
|
+
|
351
|
+
const minimumWeight = .000001;
|
352
|
+
|
353
|
+
for (const toMimeType of mediaObject.toMimeTypes instanceof Array ? mediaObject.toMimeTypes : []) {
|
354
|
+
console.log('biultin toMimeType', toMimeType);
|
355
|
+
const id = `media-${toMimeType}`;
|
356
|
+
converterMap.set(id, {
|
357
|
+
id,
|
358
|
+
name: `MediaObject to ${toMimeType}`,
|
359
|
+
fromMimeType: mediaObject.mimeType,
|
360
|
+
toMimeType,
|
361
|
+
convert: async (data, fromMimeType, toMimeType) => {
|
362
|
+
return mediaObject.convert(toMimeType);
|
363
|
+
}
|
364
|
+
});
|
365
|
+
|
366
|
+
// connect the media object to the intrinsic target mime type
|
367
|
+
mediaNode[id] = minimumWeight;
|
368
|
+
|
369
|
+
const node: { [edge: string]: number } = nodes[id] = {};
|
370
|
+
const convertedMime = new MimeType(toMimeType);
|
371
|
+
|
372
|
+
// target output matches
|
373
|
+
if (mimeMatches(outputMime, convertedMime) || toMimeType === ScryptedMimeTypes.MediaObject) {
|
374
|
+
node['output'] = minimumWeight;
|
375
|
+
}
|
376
|
+
|
377
|
+
// connect the intrinsic converter to other converters
|
378
|
+
for (const candidate of converters) {
|
379
|
+
try {
|
380
|
+
const candidateMime = new MimeType(candidate.fromMimeType);
|
381
|
+
if (!mimeMatches(convertedMime, candidateMime))
|
382
|
+
continue;
|
383
|
+
const outputWeight = parseFloat(candidateMime.parameters.get('converter-weight')) || (candidateMime.essence === '*/*' ? 1000 : 1);
|
384
|
+
const candidateId = candidate.id;
|
385
|
+
node[candidateId] = outputWeight;
|
386
|
+
}
|
387
|
+
catch (e) {
|
388
|
+
// console.warn(candidate.name, 'skipping converter due to error', e)
|
389
|
+
}
|
390
|
+
}
|
391
|
+
}
|
392
|
+
|
344
393
|
for (const converter of converters) {
|
345
394
|
try {
|
346
395
|
const inputMime = new MimeType(converter.fromMimeType);
|
@@ -1,14 +1,17 @@
|
|
1
|
-
import {
|
1
|
+
import { MediaObjectCreateOptions } from "@scrypted/types";
|
2
2
|
import { RpcPeer } from "../rpc";
|
3
3
|
import { MediaObjectRemote } from "./plugin-api";
|
4
4
|
|
5
5
|
export class MediaObject implements MediaObjectRemote {
|
6
6
|
__proxy_props: any;
|
7
7
|
|
8
|
-
constructor(public mimeType: string, public data: any, options:
|
8
|
+
constructor(public mimeType: string, public data: any, options: MediaObjectCreateOptions) {
|
9
9
|
this.__proxy_props = {}
|
10
10
|
options ||= {};
|
11
11
|
options.mimeType = mimeType;
|
12
|
+
options.convert ||= null;
|
13
|
+
options.toMimeTypes ||= null;
|
14
|
+
|
12
15
|
for (const [key, value] of Object.entries(options)) {
|
13
16
|
if (RpcPeer.isTransportSafe(value))
|
14
17
|
this.__proxy_props[key] = value;
|
@@ -6,12 +6,10 @@ export class ServiceControl {
|
|
6
6
|
constructor(public scrypted: ScryptedRuntime) {
|
7
7
|
}
|
8
8
|
|
9
|
-
async exit() {
|
10
|
-
fs.writeFileSync('.exit', '');
|
11
|
-
this.restart();
|
12
|
-
}
|
13
|
-
|
14
9
|
async restart() {
|
10
|
+
// legacy file necessary to exit the npx scrypted service,
|
11
|
+
// and allow it to be restarted by launchd or systemd.
|
12
|
+
fs.writeFileSync('.exit', '');
|
15
13
|
process.exit();
|
16
14
|
}
|
17
15
|
|