@norskvideo/norsk-studio-built-ins 1.10.1 → 1.11.1
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/lib/test/rtmp-input.js +59 -46
- package/lib/test/rtmp-input.js.map +1 -1
- package/lib/test/rtmp-output.js +28 -12
- package/lib/test/rtmp-output.js.map +1 -1
- package/lib/test/srt-input-caller.js +35 -19
- package/lib/test/srt-input-caller.js.map +1 -1
- package/lib/test/srt-input-listener.js +155 -82
- package/lib/test/srt-input-listener.js.map +1 -1
- package/lib/test/srt-output.js +2 -2
- package/lib/test/srt-output.js.map +1 -1
- package/lib/test/udp-ts-input.js +10 -9
- package/lib/test/udp-ts-input.js.map +1 -1
- package/lib/util.latency/runtime.js.map +1 -1
- package/lib/util.timestamps/runtime.js.map +1 -1
- package/package.json +3 -8
- package/client/processor.audioLevel/styles.css +0 -164
- package/client/processor.audioMixer/styles.css +0 -249
- package/lib/storage.s3/info.d.ts +0 -2
- package/lib/storage.s3/info.js +0 -11
- package/lib/storage.s3/info.js.map +0 -1
- package/lib/storage.s3/storage.d.ts +0 -13
- package/lib/storage.s3/storage.js +0 -173
- package/lib/storage.s3/storage.js.map +0 -1
package/lib/test/rtmp-input.js
CHANGED
@@ -33,12 +33,12 @@ const document = __importStar(require("@norskvideo/norsk-studio/lib/runtime/docu
|
|
33
33
|
const yaml_1 = __importDefault(require("yaml"));
|
34
34
|
const execution_1 = __importDefault(require("@norskvideo/norsk-studio/lib/runtime/execution"));
|
35
35
|
const sinks_1 = require("@norskvideo/norsk-studio/lib/test/_util/sinks");
|
36
|
-
const ffmpeg_1 = require("@norskvideo/norsk-studio/lib/test/_util/ffmpeg");
|
37
36
|
const info_1 = __importDefault(require("../input.rtmp/info"));
|
38
37
|
const client_types_1 = require("@norskvideo/norsk-studio/lib/extension/client-types");
|
39
38
|
const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
|
40
39
|
const chai_1 = require("chai");
|
41
40
|
const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
|
41
|
+
const sources_1 = require("@norskvideo/norsk-studio/lib/test/_util/sources");
|
42
42
|
async function defaultRuntime() {
|
43
43
|
const runtime = (0, builder_1.emptyRuntime)();
|
44
44
|
await (0, __1.registerAll)(runtime);
|
@@ -60,17 +60,15 @@ describe("RTMP Input", () => {
|
|
60
60
|
impl("RTMP Input with one streamid", {
|
61
61
|
id: 'rtmp',
|
62
62
|
displayName: "rtmp",
|
63
|
-
port:
|
63
|
+
port: 65403,
|
64
64
|
appName: 'yolo',
|
65
65
|
streamNames: ['first']
|
66
66
|
}, (testDocument, _cfg) => {
|
67
67
|
let norsk = undefined;
|
68
|
-
let ffmpeg = [];
|
69
|
-
afterEach(async () => {
|
70
|
-
await norsk?.close();
|
71
|
-
await Promise.all(ffmpeg.map(async (f) => f.stop()));
|
72
|
-
});
|
73
68
|
describe("A single source connects with no stream id", () => {
|
69
|
+
after(async () => {
|
70
|
+
await norsk?.close();
|
71
|
+
});
|
74
72
|
it("Should output no streams", async () => {
|
75
73
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
76
74
|
const compiled = await testDocument();
|
@@ -81,16 +79,21 @@ describe("RTMP Input", () => {
|
|
81
79
|
sink.subscribe([
|
82
80
|
new runtime_types_1.StudioNodeSubscriptionSource(source, compiled.components['rtmp'].yaml, { type: 'take-all-streams', select: ["audio", "video"] }, (0, info_1.default)(client_types_1.RegistrationConsts))
|
83
81
|
]);
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
82
|
+
const av = await (0, sources_1._videoAndAudio)(norsk, "source");
|
83
|
+
const rtmp = await norsk.output.rtmp({
|
84
|
+
id: "av-srt",
|
85
|
+
url: 'rtmp://127.0.0.1:65403/yolo'
|
86
|
+
});
|
87
|
+
rtmp.subscribe([{ source: av, sourceSelector: norsk_sdk_1.selectAV }], norsk_sdk_1.requireAV);
|
88
88
|
await (0, sinks_1.waitForAssert)(() => false, () => {
|
89
89
|
(0, chai_1.expect)(sink.streamCount()).equals(0);
|
90
90
|
}, 5000.0, 10.0);
|
91
91
|
});
|
92
92
|
});
|
93
93
|
describe("a single source connects with the wrong stream id", () => {
|
94
|
+
after(async () => {
|
95
|
+
await norsk?.close();
|
96
|
+
});
|
94
97
|
it("Should output no streams", async () => {
|
95
98
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
96
99
|
const compiled = await testDocument();
|
@@ -101,17 +104,21 @@ describe("RTMP Input", () => {
|
|
101
104
|
sink.subscribe([
|
102
105
|
new runtime_types_1.StudioNodeSubscriptionSource(source, compiled.components['rtmp'].yaml, { type: 'take-all-streams', select: client_types_1.Av }, (0, info_1.default)(client_types_1.RegistrationConsts))
|
103
106
|
]);
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
107
|
+
const av = await (0, sources_1._videoAndAudio)(norsk, "source");
|
108
|
+
const rtmp = await norsk.output.rtmp({
|
109
|
+
id: "av-rtmp",
|
110
|
+
url: 'rtmp://127.0.0.1:65403/yolo/wrong'
|
111
|
+
});
|
112
|
+
rtmp.subscribe([{ source: av, sourceSelector: norsk_sdk_1.selectAV }], norsk_sdk_1.requireAV);
|
109
113
|
await (0, sinks_1.waitForAssert)(() => false, () => {
|
110
114
|
(0, chai_1.expect)(sink.streamCount()).equals(0);
|
111
115
|
}, 5000.0, 10.0);
|
112
116
|
});
|
113
117
|
});
|
114
118
|
describe("a single source connects with the right stream id", () => {
|
119
|
+
after(async () => {
|
120
|
+
await norsk?.close();
|
121
|
+
});
|
115
122
|
it("Should output the stream with the right id", async () => {
|
116
123
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
117
124
|
const compiled = await testDocument();
|
@@ -122,11 +129,12 @@ describe("RTMP Input", () => {
|
|
122
129
|
sink.subscribe([
|
123
130
|
new runtime_types_1.StudioNodeSubscriptionSource(source, compiled.components['rtmp'].yaml, { type: 'take-all-streams', select: client_types_1.Av }, (0, info_1.default)(client_types_1.RegistrationConsts))
|
124
131
|
]);
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
132
|
+
const av = await (0, sources_1._videoAndAudio)(norsk, "source");
|
133
|
+
const rtmp = await norsk.output.rtmp({
|
134
|
+
id: "av-rtmp",
|
135
|
+
url: 'rtmp://127.0.0.1:65403/yolo/first'
|
136
|
+
});
|
137
|
+
rtmp.subscribe([{ source: av, sourceSelector: norsk_sdk_1.selectAV }], norsk_sdk_1.requireAV);
|
130
138
|
await (0, sinks_1.waitForAssert)(() => sink.streamCount() == 2 && sink.totalMessages() > 25, () => {
|
131
139
|
(0, chai_1.expect)(sink.streamCount()).equals(2);
|
132
140
|
(0, chai_1.expect)(sink.messages.find((m) => m.streamKey.sourceName == 'first')).exist;
|
@@ -134,6 +142,9 @@ describe("RTMP Input", () => {
|
|
134
142
|
});
|
135
143
|
});
|
136
144
|
describe("source re-connects with the right id", () => {
|
145
|
+
after(async () => {
|
146
|
+
await norsk?.close();
|
147
|
+
});
|
137
148
|
it("Should re-output the stream with the right id", async () => {
|
138
149
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
139
150
|
const compiled = await testDocument();
|
@@ -144,19 +155,20 @@ describe("RTMP Input", () => {
|
|
144
155
|
sink.subscribe([
|
145
156
|
new runtime_types_1.StudioNodeSubscriptionSource(source, compiled.components['rtmp'].yaml, { type: 'take-all-streams', select: client_types_1.Av }, (0, info_1.default)(client_types_1.RegistrationConsts))
|
146
157
|
]);
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
158
|
+
const av = await (0, sources_1._videoAndAudio)(norsk, "source");
|
159
|
+
const rtmp = await norsk.output.rtmp({
|
160
|
+
id: "av-rtmp1",
|
161
|
+
url: 'rtmp://127.0.0.1:65403/yolo/first'
|
162
|
+
});
|
163
|
+
rtmp.subscribe([{ source: av, sourceSelector: norsk_sdk_1.selectAV }], norsk_sdk_1.requireAV);
|
152
164
|
await (0, util_1.waitForCondition)(() => sink.streamCount() == 2);
|
153
|
-
await
|
165
|
+
await rtmp.close();
|
154
166
|
await (0, util_1.waitForCondition)(() => sink.streamCount() == 0);
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
];
|
167
|
+
const rtmp2 = await norsk.output.rtmp({
|
168
|
+
id: "av-rtmp2",
|
169
|
+
url: 'rtmp://127.0.0.1:65403/yolo/first'
|
170
|
+
});
|
171
|
+
rtmp2.subscribe([{ source: av, sourceSelector: norsk_sdk_1.selectAV }], norsk_sdk_1.requireAV);
|
160
172
|
await (0, sinks_1.waitForAssert)(() => sink.streamCount() == 2 && sink.totalMessages() > 25, () => {
|
161
173
|
(0, chai_1.expect)(sink.streamCount()).equals(2);
|
162
174
|
(0, chai_1.expect)(sink.messages.find((m) => m.streamKey.sourceName == 'first')).exist;
|
@@ -166,17 +178,15 @@ describe("RTMP Input", () => {
|
|
166
178
|
impl("RTMP Input with two stream names", {
|
167
179
|
id: 'rtmp',
|
168
180
|
displayName: 'rtmp',
|
169
|
-
port:
|
181
|
+
port: 65403,
|
170
182
|
appName: 'yolo',
|
171
183
|
streamNames: ['first', 'second']
|
172
184
|
}, async (testDocument, _cfg) => {
|
173
185
|
let norsk = undefined;
|
174
|
-
let ffmpeg = [];
|
175
|
-
afterEach(async () => {
|
176
|
-
await norsk?.close();
|
177
|
-
await Promise.all(ffmpeg.map(async (f) => f.stop()));
|
178
|
-
});
|
179
186
|
describe("Both sources connect", () => {
|
187
|
+
after(async () => {
|
188
|
+
await norsk?.close();
|
189
|
+
});
|
180
190
|
it("should be able to select those streams", async () => {
|
181
191
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
182
192
|
const compiled = await testDocument();
|
@@ -191,14 +201,17 @@ describe("RTMP Input", () => {
|
|
191
201
|
sink2.subscribe([
|
192
202
|
new runtime_types_1.StudioNodeSubscriptionSource(source, compiled.components['rtmp'].yaml, { type: 'take-specific-stream', select: ["audio", "video"], filter: 'second' }, (0, info_1.default)(client_types_1.RegistrationConsts))
|
193
203
|
]);
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
204
|
+
const av = await (0, sources_1._videoAndAudio)(norsk, "source");
|
205
|
+
const rtmp = await norsk.output.rtmp({
|
206
|
+
id: "av-rtmp1",
|
207
|
+
url: 'rtmp://127.0.0.1:65403/yolo/first'
|
208
|
+
});
|
209
|
+
rtmp.subscribe([{ source: av, sourceSelector: norsk_sdk_1.selectAV }], norsk_sdk_1.requireAV);
|
210
|
+
const rtmp2 = await norsk.output.rtmp({
|
211
|
+
id: "av-rtmp2",
|
212
|
+
url: 'rtmp://127.0.0.1:65403/yolo/second'
|
213
|
+
});
|
214
|
+
rtmp2.subscribe([{ source: av, sourceSelector: norsk_sdk_1.selectAV }], norsk_sdk_1.requireAV);
|
202
215
|
await (0, sinks_1.waitForAssert)(() => sink1.streamCount() == 2 && sink1.totalMessages() > 25 && sink2.streamCount() == 2 && sink2.totalMessages() > 25, () => {
|
203
216
|
(0, chai_1.expect)(sink1.streamCount()).equal(2);
|
204
217
|
(0, chai_1.expect)(sink2.streamCount()).equal(2);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rtmp-input.js","sourceRoot":"","sources":["../../src/test/rtmp-input.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
1
|
+
{"version":3,"file":"rtmp-input.js","sourceRoot":"","sources":["../../src/test/rtmp-input.ts"],"names":[],"mappings":"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"}
|
package/lib/test/rtmp-output.js
CHANGED
@@ -34,10 +34,12 @@ const yaml_1 = __importDefault(require("yaml"));
|
|
34
34
|
const execution_1 = __importDefault(require("@norskvideo/norsk-studio/lib/runtime/execution"));
|
35
35
|
const sources_1 = require("@norskvideo/norsk-studio/lib/test/_util/sources");
|
36
36
|
const info_1 = __importDefault(require("../output.rtmp/info"));
|
37
|
+
const info_2 = __importDefault(require("../input.rtmp/info"));
|
37
38
|
const client_types_1 = require("@norskvideo/norsk-studio/lib/extension/client-types");
|
38
39
|
const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
|
39
40
|
const sinks_1 = require("@norskvideo/norsk-studio/lib/test/_util/sinks");
|
40
41
|
const chai_1 = require("chai");
|
42
|
+
const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
|
41
43
|
async function defaultRuntime() {
|
42
44
|
const runtime = (0, builder_1.emptyRuntime)();
|
43
45
|
await (0, __1.registerAll)(runtime);
|
@@ -47,42 +49,56 @@ describe("RTMP Output", () => {
|
|
47
49
|
async function testDocument() {
|
48
50
|
const runtime = await defaultRuntime();
|
49
51
|
const yaml = new builder_1.YamlBuilder()
|
50
|
-
.addNode(new builder_1.YamlNodeBuilder('rtmp', (0, info_1.default)(client_types_1.RegistrationConsts), { url: "rtmp://127.0.0.1:
|
52
|
+
.addNode(new builder_1.YamlNodeBuilder('rtmp', (0, info_1.default)(client_types_1.RegistrationConsts), { url: "rtmp://127.0.0.1:65403/norsk/output" }).reify())
|
53
|
+
.addNode(new builder_1.YamlNodeBuilder('input', (0, info_2.default)(client_types_1.RegistrationConsts), {
|
54
|
+
appName: 'norsk',
|
55
|
+
port: 65403,
|
56
|
+
streamNames: ['output']
|
57
|
+
}).reify())
|
51
58
|
.reify();
|
52
59
|
const compiled = document.load(__filename, runtime, yaml_1.default.stringify(yaml));
|
53
60
|
return compiled;
|
54
61
|
}
|
55
62
|
let norsk = undefined;
|
56
|
-
let ffprobe = undefined;
|
57
63
|
afterEach(async () => {
|
58
64
|
await norsk?.close();
|
59
65
|
});
|
60
66
|
it("Provides an RTMP output when there is a stream", async () => {
|
61
|
-
ffprobe = (0, sinks_1.getStreams)('rtmp://127.0.0.1:5001/norsk/output');
|
62
67
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
63
68
|
const compiled = await testDocument();
|
64
69
|
const result = await (0, execution_1.default)(norsk, compiled);
|
65
70
|
const rtmp = result.components["rtmp"];
|
71
|
+
const input = result.components["input"];
|
66
72
|
const source = await (0, sources_1.videoAndAudio)(norsk, 'source');
|
67
73
|
rtmp.subscribe([new runtime_types_1.StudioNodeSubscriptionSource(source, (0, sources_1.testSourceDescription)(), { type: "take-first-stream", select: client_types_1.Av })], { requireOneOfEverything: true });
|
68
|
-
const
|
69
|
-
|
74
|
+
const sink = new sinks_1.TraceSink(norsk, "sink");
|
75
|
+
await sink.initialised;
|
76
|
+
sink.subscribe([
|
77
|
+
new runtime_types_1.StudioNodeSubscriptionSource(input, compiled.components['input'].yaml, { type: 'take-all-streams', select: ["audio", "video"] }, (0, info_2.default)(client_types_1.RegistrationConsts))
|
78
|
+
]);
|
79
|
+
await (0, util_1.waitForCondition)(() => sink.streamCount() == 2);
|
80
|
+
(0, chai_1.expect)(sink.streamCount()).equal(2);
|
70
81
|
});
|
71
82
|
it("Provides an RTMP output when the stream changes", async () => {
|
72
83
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
73
84
|
const compiled = await testDocument();
|
74
85
|
const result = await (0, execution_1.default)(norsk, compiled);
|
75
86
|
const source = await (0, sources_1.video)(norsk, 'source1');
|
87
|
+
const input = result.components["input"];
|
76
88
|
const rtmp = result.components["rtmp"];
|
77
89
|
rtmp.subscribe([new runtime_types_1.StudioNodeSubscriptionSource(source, (0, sources_1.testSourceDescription)(), { type: "take-first-stream", select: client_types_1.Video })], { requireOneOfEverything: true });
|
78
|
-
|
79
|
-
|
80
|
-
|
90
|
+
const sink = new sinks_1.TraceSink(norsk, "sink");
|
91
|
+
await sink.initialised;
|
92
|
+
sink.subscribe([
|
93
|
+
new runtime_types_1.StudioNodeSubscriptionSource(input, compiled.components['input'].yaml, { type: 'take-all-streams', select: ["audio", "video"] }, (0, info_2.default)(client_types_1.RegistrationConsts))
|
94
|
+
], { requireOneOfEverything: false });
|
95
|
+
await (0, util_1.waitForCondition)(() => sink.streamCount() == 1);
|
96
|
+
await source.close();
|
97
|
+
await (0, util_1.waitForCondition)(() => sink.streamCount() == 0, 60000, 10);
|
81
98
|
const source2 = await (0, sources_1.videoAndAudio)(norsk, 'source2');
|
82
|
-
rtmp.subscribe([new runtime_types_1.StudioNodeSubscriptionSource(source2, (0, sources_1.testSourceDescription)(), { type: "take-first-stream", select: client_types_1.Av })]
|
83
|
-
|
84
|
-
|
85
|
-
(0, chai_1.expect)(streams2 ?? []).lengthOf(2);
|
99
|
+
rtmp.subscribe([new runtime_types_1.StudioNodeSubscriptionSource(source2, (0, sources_1.testSourceDescription)(), { type: "take-first-stream", select: client_types_1.Av })]);
|
100
|
+
await (0, util_1.waitForCondition)(() => sink.streamCount() == 2, 60000, 10);
|
101
|
+
(0, chai_1.expect)(sink.streamCount()).equal(2);
|
86
102
|
});
|
87
103
|
});
|
88
104
|
//# sourceMappingURL=rtmp-output.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rtmp-output.js","sourceRoot":"","sources":["../../src/test/rtmp-output.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAA8C;AAC9C,2BAAkC;AAElC,6EAA4G;AAC5G,wFAA0E;AAC1E,gDAAwB;AACxB,+FAAgE;AAEhE,6EAA8G;AAC9G,+DAA2C;AAC3C,
|
1
|
+
{"version":3,"file":"rtmp-output.js","sourceRoot":"","sources":["../../src/test/rtmp-output.ts"],"names":[],"mappings":"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"}
|
@@ -33,11 +33,11 @@ const document = __importStar(require("@norskvideo/norsk-studio/lib/runtime/docu
|
|
33
33
|
const yaml_1 = __importDefault(require("yaml"));
|
34
34
|
const execution_1 = __importDefault(require("@norskvideo/norsk-studio/lib/runtime/execution"));
|
35
35
|
const sinks_1 = require("@norskvideo/norsk-studio/lib/test/_util/sinks");
|
36
|
-
const ffmpeg_1 = require("@norskvideo/norsk-studio/lib/test/_util/ffmpeg");
|
37
36
|
const info_1 = __importDefault(require("../input.srt-caller/info"));
|
38
37
|
const client_types_1 = require("@norskvideo/norsk-studio/lib/extension/client-types");
|
39
38
|
const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
|
40
39
|
const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
|
40
|
+
const sources_1 = require("@norskvideo/norsk-studio/lib/test/_util/sources");
|
41
41
|
async function defaultRuntime() {
|
42
42
|
const runtime = (0, builder_1.emptyRuntime)();
|
43
43
|
await (0, __1.registerAll)(runtime);
|
@@ -49,7 +49,7 @@ describe("SRT Caller Input", () => {
|
|
49
49
|
const yaml = new builder_1.YamlBuilder()
|
50
50
|
.addNode(new builder_1.YamlNodeBuilder('srt', (0, info_1.default)(client_types_1.RegistrationConsts), {
|
51
51
|
sourceName: 'foo',
|
52
|
-
port:
|
52
|
+
port: 65403,
|
53
53
|
ip: '127.0.0.1',
|
54
54
|
socketOptions: {}
|
55
55
|
}).reify())
|
@@ -58,18 +58,24 @@ describe("SRT Caller Input", () => {
|
|
58
58
|
return compiled;
|
59
59
|
}
|
60
60
|
let norsk = undefined;
|
61
|
-
let
|
61
|
+
let srt = undefined;
|
62
|
+
let av = undefined;
|
62
63
|
before(async () => {
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
65
|
+
av = await (0, sources_1._videoAndAudio)(norsk, "source");
|
66
|
+
srt = await norsk.output.srt({
|
67
|
+
id: "av-srt-output",
|
68
|
+
mode: "listener",
|
69
|
+
ip: "0.0.0.0",
|
70
|
+
port: 65403
|
71
|
+
});
|
72
|
+
srt.subscribe([{ source: av, sourceSelector: norsk_sdk_1.selectAV }]);
|
66
73
|
});
|
67
74
|
after(async () => {
|
68
75
|
await norsk?.close();
|
69
|
-
await
|
76
|
+
await new Promise(f => setTimeout(f, 1000));
|
70
77
|
});
|
71
78
|
it("Should output some frames", async () => {
|
72
|
-
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
73
79
|
const compiled = await testDocument();
|
74
80
|
const nodes = await (0, execution_1.default)(norsk, compiled);
|
75
81
|
await Promise.all([
|
@@ -84,7 +90,7 @@ describe("SRT Caller Reconnect", () => {
|
|
84
90
|
const yaml = new builder_1.YamlBuilder()
|
85
91
|
.addNode(new builder_1.YamlNodeBuilder('srt', (0, info_1.default)(client_types_1.RegistrationConsts), {
|
86
92
|
sourceName: 'foo',
|
87
|
-
port:
|
93
|
+
port: 65403,
|
88
94
|
ip: '127.0.0.1',
|
89
95
|
socketOptions: {}
|
90
96
|
}).reify())
|
@@ -93,18 +99,24 @@ describe("SRT Caller Reconnect", () => {
|
|
93
99
|
return compiled;
|
94
100
|
}
|
95
101
|
let norsk = undefined;
|
96
|
-
let
|
102
|
+
let srt = undefined;
|
103
|
+
let av = undefined;
|
97
104
|
before(async () => {
|
98
|
-
|
99
|
-
|
100
|
-
|
105
|
+
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
106
|
+
av = await (0, sources_1._videoAndAudio)(norsk, "source");
|
107
|
+
srt = await norsk.output.srt({
|
108
|
+
id: "av-srt-output",
|
109
|
+
mode: "listener",
|
110
|
+
ip: "0.0.0.0",
|
111
|
+
port: 65403
|
112
|
+
});
|
113
|
+
srt.subscribe([{ source: av, sourceSelector: norsk_sdk_1.selectAV }]);
|
101
114
|
});
|
102
115
|
after(async () => {
|
103
116
|
await norsk?.close();
|
104
|
-
await
|
117
|
+
await new Promise(f => setTimeout(f, 1000));
|
105
118
|
});
|
106
119
|
it("Should output some frames", async () => {
|
107
|
-
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
108
120
|
const compiled = await testDocument();
|
109
121
|
const nodes = await (0, execution_1.default)(norsk, compiled);
|
110
122
|
const source = nodes.components['srt'];
|
@@ -114,11 +126,15 @@ describe("SRT Caller Reconnect", () => {
|
|
114
126
|
new runtime_types_1.StudioNodeSubscriptionSource(source, compiled.components['srt'].yaml, { type: 'take-all-streams', select: ["audio", "video"] }, (0, info_1.default)(client_types_1.RegistrationConsts))
|
115
127
|
]);
|
116
128
|
await (0, util_1.waitForCondition)(() => sink.streamCount() == 2 && sink.totalMessages() > 25, 10000.0);
|
117
|
-
await
|
129
|
+
await srt?.close();
|
118
130
|
await (0, util_1.waitForCondition)(() => sink.streamCount() == 0, 10000.0);
|
119
|
-
|
120
|
-
|
121
|
-
|
131
|
+
srt = await norsk.output.srt({
|
132
|
+
id: "av-srt-output",
|
133
|
+
mode: "listener",
|
134
|
+
ip: "0.0.0.0",
|
135
|
+
port: 65403
|
136
|
+
});
|
137
|
+
srt.subscribe([{ source: av, sourceSelector: norsk_sdk_1.selectAV }]);
|
122
138
|
await Promise.all([
|
123
139
|
await (0, sinks_1.waitForAssert)(() => sink.streamCount() == 2, () => sink.streamCount() == 2, 10000, 500),
|
124
140
|
await (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, nodes, 'srt'),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"srt-input-caller.js","sourceRoot":"","sources":["../../src/test/srt-input-caller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
1
|
+
{"version":3,"file":"srt-input-caller.js","sourceRoot":"","sources":["../../src/test/srt-input-caller.ts"],"names":[],"mappings":"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"}
|