@norskvideo/norsk-sdk 1.0.389 → 1.0.391
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/norsk-sdk.d.ts +31 -2
- package/lib/package.json +2 -2
- package/lib/src/media_nodes/common.d.ts +8 -8
- package/lib/src/media_nodes/common.js +7 -7
- package/lib/src/media_nodes/debug.js +6 -6
- package/lib/src/media_nodes/input.d.ts +4 -4
- package/lib/src/media_nodes/input.js +86 -86
- package/lib/src/media_nodes/mediaStore.d.ts +12 -12
- package/lib/src/media_nodes/mediaStore.js +33 -33
- package/lib/src/media_nodes/output.d.ts +42 -13
- package/lib/src/media_nodes/output.js +107 -107
- package/lib/src/media_nodes/processor.d.ts +9 -9
- package/lib/src/media_nodes/processor.js +209 -209
- package/lib/src/media_nodes/types.d.ts +107 -107
- package/lib/src/sdk.d.ts +1 -1
- package/lib/src/sdk.js +76 -76
- package/lib/src/types.d.ts +6 -6
- package/package.json +2 -2
package/dist/norsk-sdk.d.ts
CHANGED
|
@@ -2844,6 +2844,19 @@ export declare class MoqOutputNode extends AutoSinkMediaNode<"audio" | "video">
|
|
|
2844
2844
|
* see {@link NorskOutput.moq}
|
|
2845
2845
|
*/
|
|
2846
2846
|
export declare interface MoqOutputSettings extends SinkNodeSettings<MoqOutputNode>, StreamStatisticsMixin {
|
|
2847
|
+
/**
|
|
2848
|
+
* The namespace to publish tracks within (for example: 'bbb')
|
|
2849
|
+
* */
|
|
2850
|
+
namespace: string;
|
|
2851
|
+
/**
|
|
2852
|
+
* The URL of a remote MoQT server subscriber to connect to and publish tracks for
|
|
2853
|
+
* */
|
|
2854
|
+
url: string;
|
|
2855
|
+
/**
|
|
2856
|
+
* Disable verification of remote server's TLS certificate
|
|
2857
|
+
* (for development use ONLY, not for production)
|
|
2858
|
+
* */
|
|
2859
|
+
disableTlsVerify: boolean;
|
|
2847
2860
|
}
|
|
2848
2861
|
|
|
2849
2862
|
/** @public */
|
|
@@ -3310,9 +3323,25 @@ export declare interface NorskOutput {
|
|
|
3310
3323
|
*/
|
|
3311
3324
|
fileWebVtt(settings: FileWebVttOutputSettings): Promise<FileWebVttOutputNode>;
|
|
3312
3325
|
/**
|
|
3313
|
-
*
|
|
3326
|
+
* EXPERIMENTAL Connects and sends output to a remote Media over QUIC endpoint
|
|
3327
|
+
*
|
|
3328
|
+
* Here Norsk acts as a Media over QUIC Transport (MoQT) client publisher
|
|
3329
|
+
* and connects to a MoQT server subscriber (e.g. a relay) and publishes a
|
|
3330
|
+
* catalog and a video track into the configured namespace.
|
|
3331
|
+
*
|
|
3332
|
+
* Warning: experimental! Expect bugs and missing features.
|
|
3333
|
+
*
|
|
3334
|
+
* The MoQT specification is still a work in progress and this exeperimental
|
|
3335
|
+
* implementation serves to inform further specification changes
|
|
3336
|
+
*
|
|
3337
|
+
* Current target specification: <https://www.ietf.org/archive/id/draft-ietf-moq-transport-04.html>
|
|
3338
|
+
*
|
|
3339
|
+
* The catalog track is named '.catalog' and describes the available
|
|
3340
|
+
* video track(s) within the namespace
|
|
3341
|
+
*
|
|
3342
|
+
* Video is currently configured to publish as fragmented MP4 (fMP4)
|
|
3314
3343
|
*
|
|
3315
|
-
* @param settings - Configuration for the
|
|
3344
|
+
* @param settings - Configuration for the MoQ Output
|
|
3316
3345
|
*/
|
|
3317
3346
|
moq(settings: MoqOutputSettings): Promise<MoqOutputNode>;
|
|
3318
3347
|
}
|
package/lib/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"license": "MIT",
|
|
3
3
|
"name": "@norskvideo/norsk-sdk",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.391",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@bufbuild/protobuf": "^0.3.0",
|
|
7
7
|
"@grpc/grpc-js": "^1.2.2",
|
|
8
|
-
"@norskvideo/norsk-api": "1.0.
|
|
8
|
+
"@norskvideo/norsk-api": "1.0.391",
|
|
9
9
|
"lodash": "^4.17.21",
|
|
10
10
|
"typescript-nullable": "^0.6.0"
|
|
11
11
|
},
|
|
@@ -3,7 +3,7 @@ import * as grpc from "@grpc/grpc-js";
|
|
|
3
3
|
import { MediaClient as MediaClientPB } from "@norskvideo/norsk-api/lib/media_grpc_pb";
|
|
4
4
|
import EventEmitter from "events";
|
|
5
5
|
/** @public */
|
|
6
|
-
export
|
|
6
|
+
export type MediaClient = {
|
|
7
7
|
media: MediaClientPB;
|
|
8
8
|
subscriptions: grpc.ClientDuplexStream<SubscriptionChannelMessage, SubscriptionChannelResponse>;
|
|
9
9
|
};
|
|
@@ -64,10 +64,10 @@ export interface StreamStatisticsMixin {
|
|
|
64
64
|
stats: MultiStreamStatistics) => void;
|
|
65
65
|
onGopStructure?: (structure: GopStructure) => void;
|
|
66
66
|
}
|
|
67
|
-
export
|
|
67
|
+
export type EventMap = {
|
|
68
68
|
[key: string]: (arg: any) => void;
|
|
69
69
|
};
|
|
70
|
-
export
|
|
70
|
+
export type MediaNodeStateEvents = {
|
|
71
71
|
close: (id: string) => void;
|
|
72
72
|
};
|
|
73
73
|
/** @public */
|
|
@@ -84,17 +84,17 @@ export declare class MediaNodeState<Events extends EventMap & MediaNodeStateEven
|
|
|
84
84
|
close(): Promise<void>;
|
|
85
85
|
}
|
|
86
86
|
/** @public */
|
|
87
|
-
export
|
|
87
|
+
export type ReceiveFromAddress<Pins extends string> = {
|
|
88
88
|
source: SourceMediaNode;
|
|
89
89
|
sourceSelector: (streams: StreamMetadata[]) => PinToKey<Pins>;
|
|
90
90
|
};
|
|
91
91
|
/** @public */
|
|
92
|
-
export
|
|
92
|
+
export type ReceiveFromAddressAuto = {
|
|
93
93
|
source: SourceMediaNode;
|
|
94
94
|
sourceSelector: (streams: StreamMetadata[]) => StreamKey[];
|
|
95
95
|
};
|
|
96
96
|
/** @public */
|
|
97
|
-
export
|
|
97
|
+
export type PinToKey<Pins extends string> = Nullable<Partial<Record<Pins, StreamKey[]>>>;
|
|
98
98
|
/** @public */
|
|
99
99
|
export interface SubscribeDestination {
|
|
100
100
|
id?: string;
|
|
@@ -102,7 +102,7 @@ export interface SubscribeDestination {
|
|
|
102
102
|
on?: (e: "close", a: () => void) => void;
|
|
103
103
|
off?: (e: "close", a: () => void) => void;
|
|
104
104
|
}
|
|
105
|
-
export
|
|
105
|
+
export type SourceMediaNodeEvents = {
|
|
106
106
|
outboundContextChange: (streams: StreamMetadata[]) => void;
|
|
107
107
|
} & MediaNodeStateEvents;
|
|
108
108
|
/** @public */
|
|
@@ -124,7 +124,7 @@ export declare class SourceMediaNode<Events extends SourceMediaNodeEvents = Sour
|
|
|
124
124
|
* - deny_and_drop: Deny the incoming context, drop any currently queued data, and drop any further data that might be received
|
|
125
125
|
* this is useful if you have a lot of setup on start-up and would prefer not to queue data while waiting for that to take place
|
|
126
126
|
* */
|
|
127
|
-
export
|
|
127
|
+
export type SubscriptionValidationResponse = true | false | "accept" | "deny" | "accept_and_terminate" | "deny_and_queue" | "deny_and_drop";
|
|
128
128
|
/** @public */
|
|
129
129
|
export declare class SinkMediaNode<Pins extends string, Events extends MediaNodeStateEvents = MediaNodeStateEvents> extends MediaNodeState<Events> implements SubscribeDestination {
|
|
130
130
|
permissiveSubscriptionValidation(_context: Context): SubscriptionValidationResponse;
|
|
@@ -45,13 +45,6 @@ function applyMixins(derivedCtor, baseCtors) {
|
|
|
45
45
|
exports.applyMixins = applyMixins;
|
|
46
46
|
/** @public */
|
|
47
47
|
class MediaNodeState {
|
|
48
|
-
constructor(client) {
|
|
49
|
-
this.closed = false;
|
|
50
|
-
this.events = new events_1.default();
|
|
51
|
-
this.client = client;
|
|
52
|
-
this.id = undefined;
|
|
53
|
-
this.events.setMaxListeners(0);
|
|
54
|
-
}
|
|
55
48
|
emit(name, arg) {
|
|
56
49
|
this.events.emit(name, arg);
|
|
57
50
|
}
|
|
@@ -61,6 +54,13 @@ class MediaNodeState {
|
|
|
61
54
|
off(name, listener) {
|
|
62
55
|
this.events.off(name, listener);
|
|
63
56
|
}
|
|
57
|
+
constructor(client) {
|
|
58
|
+
this.closed = false;
|
|
59
|
+
this.events = new events_1.default();
|
|
60
|
+
this.client = client;
|
|
61
|
+
this.id = undefined;
|
|
62
|
+
this.events.setMaxListeners(0);
|
|
63
|
+
}
|
|
64
64
|
/** @public */
|
|
65
65
|
async close() {
|
|
66
66
|
if (this.closed)
|
|
@@ -10,6 +10,12 @@ const types_1 = require("./types");
|
|
|
10
10
|
* see: {@link NorskDebug.streamTimestampReport}
|
|
11
11
|
*/
|
|
12
12
|
class StreamTimestampReportNode extends common_1.AutoSinkMediaNode {
|
|
13
|
+
/** @internal */
|
|
14
|
+
static async create(settings, client, unregisterNode) {
|
|
15
|
+
const node = new StreamTimestampReportNode(settings, client, unregisterNode);
|
|
16
|
+
await node.initialised;
|
|
17
|
+
return node;
|
|
18
|
+
}
|
|
13
19
|
/** @internal */
|
|
14
20
|
constructor(settings, client, unregisterNode) {
|
|
15
21
|
super(client, () => this.grpcStream, async (subscription) => this.grpcStream.write((0, common_1.provideFull)(media_pb_1.StreamTimestampReportMessage, (0, common_1.mkMessageCase)({ subscription }))), settings.onSubscriptionError);
|
|
@@ -54,12 +60,6 @@ class StreamTimestampReportNode extends common_1.AutoSinkMediaNode {
|
|
|
54
60
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "debugStreamTimestampReport", reject, settings);
|
|
55
61
|
});
|
|
56
62
|
}
|
|
57
|
-
/** @internal */
|
|
58
|
-
static async create(settings, client, unregisterNode) {
|
|
59
|
-
const node = new StreamTimestampReportNode(settings, client, unregisterNode);
|
|
60
|
-
await node.initialised;
|
|
61
|
-
return node;
|
|
62
|
-
}
|
|
63
63
|
}
|
|
64
64
|
exports.StreamTimestampReportNode = StreamTimestampReportNode;
|
|
65
65
|
//# sourceMappingURL=debug.js.map
|
|
@@ -106,7 +106,7 @@ export interface RtpInputSettings extends SourceNodeSettings<RtpInputNode>, Stre
|
|
|
106
106
|
* @public
|
|
107
107
|
* The stream keys in an RTMP input stream
|
|
108
108
|
*/
|
|
109
|
-
export
|
|
109
|
+
export type RtmpServerStreamKeys = {
|
|
110
110
|
audioStreamKey: StreamKeyPB;
|
|
111
111
|
videoStreamKey: StreamKeyPB;
|
|
112
112
|
}[];
|
|
@@ -194,7 +194,7 @@ export interface RtmpServerInputSettings extends SourceNodeSettings<RtmpServerIn
|
|
|
194
194
|
* @public
|
|
195
195
|
* Return type to enable control of an RTMP stream once media arrives on it
|
|
196
196
|
*/
|
|
197
|
-
export
|
|
197
|
+
export type OnStreamResult =
|
|
198
198
|
/** Accept the stream */
|
|
199
199
|
{
|
|
200
200
|
accept: true;
|
|
@@ -426,7 +426,7 @@ export declare class FileTsInputNode extends TsCommonInputNode<FileTsInputMessag
|
|
|
426
426
|
* The return value for the {@link SrtInputSettings.onConnection} callback
|
|
427
427
|
* determining what to do with an incoming stream
|
|
428
428
|
*/
|
|
429
|
-
export
|
|
429
|
+
export type SrtConnectionResult =
|
|
430
430
|
/** Accept the stream */
|
|
431
431
|
{
|
|
432
432
|
accept: true;
|
|
@@ -678,7 +678,7 @@ export interface VideoTestcardGeneratorSettings extends SourceNodeSettings<Video
|
|
|
678
678
|
/** Optionally make an interlaced source */
|
|
679
679
|
interlaced?: boolean;
|
|
680
680
|
}
|
|
681
|
-
|
|
681
|
+
type Pattern = "black" | "smpte75" | "smpte100";
|
|
682
682
|
/**
|
|
683
683
|
* @public
|
|
684
684
|
* see: {@link NorskInput.audioSignal}
|
|
@@ -14,6 +14,12 @@ const common_pb_1 = require("@norskvideo/norsk-api/lib/shared/common_pb");
|
|
|
14
14
|
* see: {@link NorskInput.rtp}
|
|
15
15
|
*/
|
|
16
16
|
class RtpInputNode extends common_1.SourceMediaNode {
|
|
17
|
+
/** @internal */
|
|
18
|
+
static async create(settings, client, unregisterNode) {
|
|
19
|
+
const node = new RtpInputNode(settings, client, unregisterNode);
|
|
20
|
+
await node.initialised;
|
|
21
|
+
return node;
|
|
22
|
+
}
|
|
17
23
|
/** @internal */
|
|
18
24
|
constructor(settings, client, unregisterNode) {
|
|
19
25
|
super(client, settings.onOutboundContextChange);
|
|
@@ -134,12 +140,6 @@ class RtpInputNode extends common_1.SourceMediaNode {
|
|
|
134
140
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "rtp", reject, settings);
|
|
135
141
|
});
|
|
136
142
|
}
|
|
137
|
-
/** @internal */
|
|
138
|
-
static async create(settings, client, unregisterNode) {
|
|
139
|
-
const node = new RtpInputNode(settings, client, unregisterNode);
|
|
140
|
-
await node.initialised;
|
|
141
|
-
return node;
|
|
142
|
-
}
|
|
143
143
|
/**
|
|
144
144
|
* @public
|
|
145
145
|
* Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
|
|
@@ -154,6 +154,12 @@ exports.RtpInputNode = RtpInputNode;
|
|
|
154
154
|
* see: {@link NorskInput.rtmpServer}
|
|
155
155
|
*/
|
|
156
156
|
class RtmpServerInputNode extends common_1.SourceMediaNode {
|
|
157
|
+
/** @internal */
|
|
158
|
+
static async create(settings, client, unregisterNode) {
|
|
159
|
+
const node = new RtmpServerInputNode(settings, client, unregisterNode);
|
|
160
|
+
await node.initialised;
|
|
161
|
+
return node;
|
|
162
|
+
}
|
|
157
163
|
/** @internal */
|
|
158
164
|
constructor(settings, client, unregisterNode) {
|
|
159
165
|
super(client, settings.onOutboundContextChange);
|
|
@@ -340,12 +346,6 @@ class RtmpServerInputNode extends common_1.SourceMediaNode {
|
|
|
340
346
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "rtmp", reject, settings);
|
|
341
347
|
});
|
|
342
348
|
}
|
|
343
|
-
/** @internal */
|
|
344
|
-
static async create(settings, client, unregisterNode) {
|
|
345
|
-
const node = new RtmpServerInputNode(settings, client, unregisterNode);
|
|
346
|
-
await node.initialised;
|
|
347
|
-
return node;
|
|
348
|
-
}
|
|
349
349
|
/**
|
|
350
350
|
* @public
|
|
351
351
|
* Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
|
|
@@ -434,6 +434,12 @@ class TsCommonInputNode extends common_1.SourceMediaNode {
|
|
|
434
434
|
* see: {@link NorskInput.deckLink}.
|
|
435
435
|
*/
|
|
436
436
|
class DeckLinkInputNode extends common_1.SourceMediaNode {
|
|
437
|
+
/** @internal */
|
|
438
|
+
static async create(settings, client, unregisterNode) {
|
|
439
|
+
const node = new DeckLinkInputNode(settings, client, unregisterNode);
|
|
440
|
+
await node.initialised;
|
|
441
|
+
return node;
|
|
442
|
+
}
|
|
437
443
|
/** @internal */
|
|
438
444
|
constructor(settings, client, unregisterNode) {
|
|
439
445
|
super(client, settings.onOutboundContextChange);
|
|
@@ -485,12 +491,6 @@ class DeckLinkInputNode extends common_1.SourceMediaNode {
|
|
|
485
491
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "decklink", reject, settings);
|
|
486
492
|
});
|
|
487
493
|
}
|
|
488
|
-
/** @internal */
|
|
489
|
-
static async create(settings, client, unregisterNode) {
|
|
490
|
-
const node = new DeckLinkInputNode(settings, client, unregisterNode);
|
|
491
|
-
await node.initialised;
|
|
492
|
-
return node;
|
|
493
|
-
}
|
|
494
494
|
/**
|
|
495
495
|
* @public
|
|
496
496
|
* Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
|
|
@@ -506,6 +506,12 @@ exports.DeckLinkInputNode = DeckLinkInputNode;
|
|
|
506
506
|
* see: {@link NorskInput.deltaCast}.
|
|
507
507
|
*/
|
|
508
508
|
class DeltacastInputNode extends common_1.SourceMediaNode {
|
|
509
|
+
/** @internal */
|
|
510
|
+
static async create(settings, client, unregisterNode) {
|
|
511
|
+
const node = new DeltacastInputNode(settings, client, unregisterNode);
|
|
512
|
+
await node.initialised;
|
|
513
|
+
return node;
|
|
514
|
+
}
|
|
509
515
|
/** @internal */
|
|
510
516
|
constructor(settings, client, unregisterNode) {
|
|
511
517
|
super(client, settings.onOutboundContextChange);
|
|
@@ -551,12 +557,6 @@ class DeltacastInputNode extends common_1.SourceMediaNode {
|
|
|
551
557
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "decklink", reject, settings);
|
|
552
558
|
});
|
|
553
559
|
}
|
|
554
|
-
/** @internal */
|
|
555
|
-
static async create(settings, client, unregisterNode) {
|
|
556
|
-
const node = new DeltacastInputNode(settings, client, unregisterNode);
|
|
557
|
-
await node.initialised;
|
|
558
|
-
return node;
|
|
559
|
-
}
|
|
560
560
|
/**
|
|
561
561
|
* @public
|
|
562
562
|
* Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
|
|
@@ -571,6 +571,14 @@ exports.DeltacastInputNode = DeltacastInputNode;
|
|
|
571
571
|
* see: {@link NorskInput.whip}
|
|
572
572
|
*/
|
|
573
573
|
class WhipInputNode extends common_1.SourceMediaNode {
|
|
574
|
+
/** @internal */
|
|
575
|
+
static async create(settings, client, unregisterNode) {
|
|
576
|
+
const node = new WhipInputNode(settings, client, unregisterNode);
|
|
577
|
+
await node.initialised;
|
|
578
|
+
node.clientUrl = `${(0, utils_1.publicUrlPrefix)()}/whip/${node.id}/whip.html`;
|
|
579
|
+
node.endpointUrl = `${(0, utils_1.publicUrlPrefix)()}/whip/${node.id}/publish`;
|
|
580
|
+
return node;
|
|
581
|
+
}
|
|
574
582
|
/** @internal */
|
|
575
583
|
constructor(settings, client, unregisterNode) {
|
|
576
584
|
super(client, settings.onOutboundContextChange);
|
|
@@ -615,14 +623,6 @@ class WhipInputNode extends common_1.SourceMediaNode {
|
|
|
615
623
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "whipInput", reject, settings);
|
|
616
624
|
});
|
|
617
625
|
}
|
|
618
|
-
/** @internal */
|
|
619
|
-
static async create(settings, client, unregisterNode) {
|
|
620
|
-
const node = new WhipInputNode(settings, client, unregisterNode);
|
|
621
|
-
await node.initialised;
|
|
622
|
-
node.clientUrl = `${(0, utils_1.publicUrlPrefix)()}/whip/${node.id}/whip.html`;
|
|
623
|
-
node.endpointUrl = `${(0, utils_1.publicUrlPrefix)()}/whip/${node.id}/publish`;
|
|
624
|
-
return node;
|
|
625
|
-
}
|
|
626
626
|
/**
|
|
627
627
|
* @public
|
|
628
628
|
* Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
|
|
@@ -643,6 +643,12 @@ exports.WhipInputNode = WhipInputNode;
|
|
|
643
643
|
* see: {@link NorskInput.fileWebVtt}
|
|
644
644
|
*/
|
|
645
645
|
class FileWebVttInputNode extends common_1.SourceMediaNode {
|
|
646
|
+
/** @internal */
|
|
647
|
+
static async create(settings, client, unregisterNode) {
|
|
648
|
+
const node = new FileWebVttInputNode(settings, client, unregisterNode);
|
|
649
|
+
await node.initialised;
|
|
650
|
+
return node;
|
|
651
|
+
}
|
|
646
652
|
/** @internal */
|
|
647
653
|
constructor(settings, client, unregisterNode) {
|
|
648
654
|
super(client, settings.onOutboundContextChange);
|
|
@@ -680,12 +686,6 @@ class FileWebVttInputNode extends common_1.SourceMediaNode {
|
|
|
680
686
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "webvtt", reject, settings);
|
|
681
687
|
});
|
|
682
688
|
}
|
|
683
|
-
/** @internal */
|
|
684
|
-
static async create(settings, client, unregisterNode) {
|
|
685
|
-
const node = new FileWebVttInputNode(settings, client, unregisterNode);
|
|
686
|
-
await node.initialised;
|
|
687
|
-
return node;
|
|
688
|
-
}
|
|
689
689
|
}
|
|
690
690
|
exports.FileWebVttInputNode = FileWebVttInputNode;
|
|
691
691
|
/**
|
|
@@ -693,6 +693,12 @@ exports.FileWebVttInputNode = FileWebVttInputNode;
|
|
|
693
693
|
* see: {@link NorskInput.streamWebVtt}
|
|
694
694
|
*/
|
|
695
695
|
class StreamWebVttInputNode extends common_1.SourceMediaNode {
|
|
696
|
+
/** @internal */
|
|
697
|
+
static async create(settings, client, unregisterNode) {
|
|
698
|
+
const node = new StreamWebVttInputNode(settings, client, unregisterNode);
|
|
699
|
+
await node.initialised;
|
|
700
|
+
return node;
|
|
701
|
+
}
|
|
696
702
|
/** @internal */
|
|
697
703
|
constructor(settings, client, unregisterNode) {
|
|
698
704
|
super(client, settings.onOutboundContextChange);
|
|
@@ -734,12 +740,6 @@ class StreamWebVttInputNode extends common_1.SourceMediaNode {
|
|
|
734
740
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "streamWebVtt", reject, settings);
|
|
735
741
|
});
|
|
736
742
|
}
|
|
737
|
-
/** @internal */
|
|
738
|
-
static async create(settings, client, unregisterNode) {
|
|
739
|
-
const node = new StreamWebVttInputNode(settings, client, unregisterNode);
|
|
740
|
-
await node.initialised;
|
|
741
|
-
return node;
|
|
742
|
-
}
|
|
743
743
|
sendChunk(chunk) {
|
|
744
744
|
this.grpcStream.write((0, utils_1.provideFull)(media_pb_1.StreamWebVttInputMessage, (0, utils_1.mkMessageCase)({ vttChunk: chunk })));
|
|
745
745
|
}
|
|
@@ -799,6 +799,12 @@ exports.FileTsInputNode = FileTsInputNode;
|
|
|
799
799
|
* see: {@link NorskInput.srt}
|
|
800
800
|
*/
|
|
801
801
|
class SrtInputNode extends common_1.SourceMediaNode {
|
|
802
|
+
/** @internal */
|
|
803
|
+
static async create(settings, client, unregisterNode) {
|
|
804
|
+
const node = new SrtInputNode(settings, client, unregisterNode);
|
|
805
|
+
await node.initialised;
|
|
806
|
+
return node;
|
|
807
|
+
}
|
|
802
808
|
/** @internal */
|
|
803
809
|
constructor(settings, client, unregisterNode) {
|
|
804
810
|
super(client, settings.onOutboundContextChange);
|
|
@@ -897,12 +903,6 @@ class SrtInputNode extends common_1.SourceMediaNode {
|
|
|
897
903
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "ts", reject, settings);
|
|
898
904
|
});
|
|
899
905
|
}
|
|
900
|
-
/** @internal */
|
|
901
|
-
static async create(settings, client, unregisterNode) {
|
|
902
|
-
const node = new SrtInputNode(settings, client, unregisterNode);
|
|
903
|
-
await node.initialised;
|
|
904
|
-
return node;
|
|
905
|
-
}
|
|
906
906
|
/**
|
|
907
907
|
* @public
|
|
908
908
|
* Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
|
|
@@ -1010,6 +1010,12 @@ exports.M3u8InputNode = M3u8InputNode;
|
|
|
1010
1010
|
* see: {@link NorskInput.browser}
|
|
1011
1011
|
*/
|
|
1012
1012
|
class BrowserInputNode extends common_1.SourceMediaNode {
|
|
1013
|
+
/** @internal */
|
|
1014
|
+
static async create(settings, client, unregisterNode) {
|
|
1015
|
+
const node = new BrowserInputNode(settings, client, unregisterNode);
|
|
1016
|
+
await node.initialised;
|
|
1017
|
+
return node;
|
|
1018
|
+
}
|
|
1013
1019
|
/** @internal */
|
|
1014
1020
|
constructor(settings, client, unregisterNode) {
|
|
1015
1021
|
super(client, settings.onOutboundContextChange);
|
|
@@ -1083,12 +1089,6 @@ class BrowserInputNode extends common_1.SourceMediaNode {
|
|
|
1083
1089
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "browser", reject, settings);
|
|
1084
1090
|
});
|
|
1085
1091
|
}
|
|
1086
|
-
/** @internal */
|
|
1087
|
-
static async create(settings, client, unregisterNode) {
|
|
1088
|
-
const node = new BrowserInputNode(settings, client, unregisterNode);
|
|
1089
|
-
await node.initialised;
|
|
1090
|
-
return node;
|
|
1091
|
-
}
|
|
1092
1092
|
/**
|
|
1093
1093
|
* @public
|
|
1094
1094
|
* Supply new config for an active web browser session
|
|
@@ -1117,6 +1117,12 @@ exports.BrowserInputNode = BrowserInputNode;
|
|
|
1117
1117
|
* see: {@link NorskInput.audioSignal}
|
|
1118
1118
|
*/
|
|
1119
1119
|
class AudioSignalGeneratorNode extends common_1.SourceMediaNode {
|
|
1120
|
+
/** @internal */
|
|
1121
|
+
static async create(settings, client, unregisterNode) {
|
|
1122
|
+
const node = new AudioSignalGeneratorNode(settings, client, unregisterNode);
|
|
1123
|
+
await node.initialised;
|
|
1124
|
+
return node;
|
|
1125
|
+
}
|
|
1120
1126
|
/** @internal */
|
|
1121
1127
|
constructor(settings, client, unregisterNode) {
|
|
1122
1128
|
super(client, settings.onOutboundContextChange);
|
|
@@ -1157,12 +1163,6 @@ class AudioSignalGeneratorNode extends common_1.SourceMediaNode {
|
|
|
1157
1163
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "audiosignal", reject, settings);
|
|
1158
1164
|
});
|
|
1159
1165
|
}
|
|
1160
|
-
/** @internal */
|
|
1161
|
-
static async create(settings, client, unregisterNode) {
|
|
1162
|
-
const node = new AudioSignalGeneratorNode(settings, client, unregisterNode);
|
|
1163
|
-
await node.initialised;
|
|
1164
|
-
return node;
|
|
1165
|
-
}
|
|
1166
1166
|
}
|
|
1167
1167
|
exports.AudioSignalGeneratorNode = AudioSignalGeneratorNode;
|
|
1168
1168
|
function toPattern(p) {
|
|
@@ -1182,6 +1182,12 @@ function toPattern(p) {
|
|
|
1182
1182
|
* see: {@link NorskInput.audioSignal}
|
|
1183
1183
|
*/
|
|
1184
1184
|
class VideoTestcardGeneratorNode extends common_1.SourceMediaNode {
|
|
1185
|
+
/** @internal */
|
|
1186
|
+
static async create(settings, client, unregisterNode) {
|
|
1187
|
+
const node = new VideoTestcardGeneratorNode(settings, client, unregisterNode);
|
|
1188
|
+
await node.initialised;
|
|
1189
|
+
return node;
|
|
1190
|
+
}
|
|
1185
1191
|
/** @internal */
|
|
1186
1192
|
constructor(settings, client, unregisterNode) {
|
|
1187
1193
|
super(client, settings.onOutboundContextChange);
|
|
@@ -1226,12 +1232,6 @@ class VideoTestcardGeneratorNode extends common_1.SourceMediaNode {
|
|
|
1226
1232
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "videotestcard", reject, settings);
|
|
1227
1233
|
});
|
|
1228
1234
|
}
|
|
1229
|
-
/** @internal */
|
|
1230
|
-
static async create(settings, client, unregisterNode) {
|
|
1231
|
-
const node = new VideoTestcardGeneratorNode(settings, client, unregisterNode);
|
|
1232
|
-
await node.initialised;
|
|
1233
|
-
return node;
|
|
1234
|
-
}
|
|
1235
1235
|
}
|
|
1236
1236
|
exports.VideoTestcardGeneratorNode = VideoTestcardGeneratorNode;
|
|
1237
1237
|
/**
|
|
@@ -1252,6 +1252,12 @@ function toImageHardwareAcceleration(h) {
|
|
|
1252
1252
|
* see: {@link NorskInput.fileImage}
|
|
1253
1253
|
*/
|
|
1254
1254
|
class FileImageInputNode extends common_1.SourceMediaNode {
|
|
1255
|
+
/** @internal */
|
|
1256
|
+
static async create(settings, client, unregisterNode) {
|
|
1257
|
+
const node = new FileImageInputNode(settings, client, unregisterNode);
|
|
1258
|
+
await node.initialised;
|
|
1259
|
+
return node;
|
|
1260
|
+
}
|
|
1255
1261
|
/** @internal */
|
|
1256
1262
|
constructor(settings, client, unregisterNode) {
|
|
1257
1263
|
super(client, settings.onOutboundContextChange);
|
|
@@ -1298,12 +1304,6 @@ class FileImageInputNode extends common_1.SourceMediaNode {
|
|
|
1298
1304
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "imagefile", reject, settings);
|
|
1299
1305
|
});
|
|
1300
1306
|
}
|
|
1301
|
-
/** @internal */
|
|
1302
|
-
static async create(settings, client, unregisterNode) {
|
|
1303
|
-
const node = new FileImageInputNode(settings, client, unregisterNode);
|
|
1304
|
-
await node.initialised;
|
|
1305
|
-
return node;
|
|
1306
|
-
}
|
|
1307
1307
|
}
|
|
1308
1308
|
exports.FileImageInputNode = FileImageInputNode;
|
|
1309
1309
|
/**
|
|
@@ -1311,6 +1311,12 @@ exports.FileImageInputNode = FileImageInputNode;
|
|
|
1311
1311
|
* see: {@link NorskInput.fileMp4}
|
|
1312
1312
|
*/
|
|
1313
1313
|
class FileMp4InputNode extends common_1.SourceMediaNode {
|
|
1314
|
+
/** @internal */
|
|
1315
|
+
static async create(settings, client, unregisterNode) {
|
|
1316
|
+
const node = new FileMp4InputNode(settings, client, unregisterNode);
|
|
1317
|
+
await node.initialised;
|
|
1318
|
+
return node;
|
|
1319
|
+
}
|
|
1314
1320
|
/** @internal */
|
|
1315
1321
|
constructor(settings, client, unregisterNode) {
|
|
1316
1322
|
super(client, settings.onOutboundContextChange);
|
|
@@ -1380,12 +1386,6 @@ class FileMp4InputNode extends common_1.SourceMediaNode {
|
|
|
1380
1386
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "mp4file", reject, settings);
|
|
1381
1387
|
});
|
|
1382
1388
|
}
|
|
1383
|
-
/** @internal */
|
|
1384
|
-
static async create(settings, client, unregisterNode) {
|
|
1385
|
-
const node = new FileMp4InputNode(settings, client, unregisterNode);
|
|
1386
|
-
await node.initialised;
|
|
1387
|
-
return node;
|
|
1388
|
-
}
|
|
1389
1389
|
/**
|
|
1390
1390
|
* @public
|
|
1391
1391
|
* Applies a gradual nudge to the outgoing stream timestamps by the specified number of milliseconds
|
|
@@ -1419,6 +1419,12 @@ exports.FileMp4InputNode = FileMp4InputNode;
|
|
|
1419
1419
|
* see: {@link NorskInput.fileWav}
|
|
1420
1420
|
*/
|
|
1421
1421
|
class FileWavInputNode extends common_1.SourceMediaNode {
|
|
1422
|
+
/** @internal */
|
|
1423
|
+
static async create(settings, client, unregisterNode) {
|
|
1424
|
+
const node = new FileWavInputNode(settings, client, unregisterNode);
|
|
1425
|
+
await node.initialised;
|
|
1426
|
+
return node;
|
|
1427
|
+
}
|
|
1422
1428
|
/** @internal */
|
|
1423
1429
|
constructor(settings, client, unregisterNode) {
|
|
1424
1430
|
super(client, settings.onOutboundContextChange);
|
|
@@ -1453,12 +1459,6 @@ class FileWavInputNode extends common_1.SourceMediaNode {
|
|
|
1453
1459
|
(0, common_1.registerStreamHandlers)(this.grpcStream, () => unregisterNode(this), "mp4file", reject, settings);
|
|
1454
1460
|
});
|
|
1455
1461
|
}
|
|
1456
|
-
/** @internal */
|
|
1457
|
-
static async create(settings, client, unregisterNode) {
|
|
1458
|
-
const node = new FileWavInputNode(settings, client, unregisterNode);
|
|
1459
|
-
await node.initialised;
|
|
1460
|
-
return node;
|
|
1461
|
-
}
|
|
1462
1462
|
}
|
|
1463
1463
|
exports.FileWavInputNode = FileWavInputNode;
|
|
1464
1464
|
//# sourceMappingURL=input.js.map
|
|
@@ -2,19 +2,19 @@ import { AutoSinkMediaNode, SinkNodeSettings, SourceMediaNode, StreamStatisticsM
|
|
|
2
2
|
import { InputSettings } from "./input";
|
|
3
3
|
import { MediaStoreStreamSelection, StreamKey, StreamMetadata, X264Codec, X265Codec } from "./types";
|
|
4
4
|
/** @public */
|
|
5
|
-
export
|
|
5
|
+
export type MediaStoreExpireByTime = {
|
|
6
6
|
expire: "byTime";
|
|
7
7
|
durationS: number;
|
|
8
8
|
};
|
|
9
9
|
/** @public */
|
|
10
|
-
export
|
|
10
|
+
export type MediaStoreExpireBySize = {
|
|
11
11
|
expire: "bySize";
|
|
12
12
|
size: bigint;
|
|
13
13
|
};
|
|
14
14
|
/** @public */
|
|
15
|
-
export
|
|
15
|
+
export type MediaStoreExpiry = MediaStoreExpireBySize | MediaStoreExpireByTime;
|
|
16
16
|
/** @public */
|
|
17
|
-
export
|
|
17
|
+
export type MediaStoreCutRequest = {
|
|
18
18
|
fileFormat: "mp4";
|
|
19
19
|
id: string;
|
|
20
20
|
cuts: MediaStoreCut[];
|
|
@@ -26,7 +26,7 @@ export declare type MediaStoreCutRequest = {
|
|
|
26
26
|
progressCb?: (progress: number) => void;
|
|
27
27
|
};
|
|
28
28
|
/** @public */
|
|
29
|
-
export
|
|
29
|
+
export type MediaStoreStreamVersion = {
|
|
30
30
|
versionNum: number;
|
|
31
31
|
metadata: StreamMetadata;
|
|
32
32
|
startDateTime: Date;
|
|
@@ -34,12 +34,12 @@ export declare type MediaStoreStreamVersion = {
|
|
|
34
34
|
active: boolean;
|
|
35
35
|
};
|
|
36
36
|
/** @public */
|
|
37
|
-
export
|
|
37
|
+
export type MediaStoreStream = {
|
|
38
38
|
streamKey: StreamKey;
|
|
39
39
|
versions: MediaStoreStreamVersion[];
|
|
40
40
|
};
|
|
41
41
|
/** @public */
|
|
42
|
-
export
|
|
42
|
+
export type MediaStoreSession = {
|
|
43
43
|
sessionNum: number;
|
|
44
44
|
streams: MediaStoreStream[];
|
|
45
45
|
};
|
|
@@ -90,7 +90,7 @@ export declare class MediaStoreRecorderCut {
|
|
|
90
90
|
*/
|
|
91
91
|
sessionNum?: number;
|
|
92
92
|
}
|
|
93
|
-
|
|
93
|
+
type MediaStoreCut = {
|
|
94
94
|
mediaStoreName: string;
|
|
95
95
|
cut: {
|
|
96
96
|
type: "asset";
|
|
@@ -163,20 +163,20 @@ export declare class MediaStoreActiveCut {
|
|
|
163
163
|
cancel(): void;
|
|
164
164
|
}
|
|
165
165
|
/** @public */
|
|
166
|
-
export
|
|
166
|
+
export type MediaStoreAssetFileWithHash = {
|
|
167
167
|
file: string;
|
|
168
168
|
hash: string;
|
|
169
169
|
importIfNeeded?: boolean;
|
|
170
170
|
};
|
|
171
171
|
/** @public */
|
|
172
|
-
export
|
|
172
|
+
export type MediaStoreAssetFile = {
|
|
173
173
|
file: string;
|
|
174
174
|
importIfNeeded?: boolean;
|
|
175
175
|
};
|
|
176
176
|
/** @public */
|
|
177
|
-
export
|
|
177
|
+
export type MediaStoreAssetSource = MediaStoreAssetFileWithHash | MediaStoreAssetFile;
|
|
178
178
|
/** @public */
|
|
179
|
-
export
|
|
179
|
+
export type MediaStoreAssetSettings = {
|
|
180
180
|
name: string;
|
|
181
181
|
source?: MediaStoreAssetSource;
|
|
182
182
|
path: string;
|