@norskvideo/norsk-studio-aws 1.27.0-2025-03-10-85778fae → 1.27.0-2025-03-13-5c343278
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/client/info.js +22 -26
- package/client/style.css +0 -16
- package/lib/input.mediaconnect/info.js +5 -2
- package/lib/input.mediaconnect/info.js.map +1 -1
- package/lib/output.medialive/info.js +5 -4
- package/lib/output.medialive/info.js.map +1 -1
- package/lib/processor.aws-transcribe/info.d.ts +1 -1
- package/lib/processor.aws-transcribe/info.js +12 -14
- package/lib/processor.aws-transcribe/info.js.map +1 -1
- package/lib/processor.aws-transcribe/runtime.d.ts +4 -6
- package/lib/processor.aws-transcribe/runtime.js +16 -31
- package/lib/processor.aws-transcribe/runtime.js.map +1 -1
- package/package.json +3 -3
package/client/info.js
CHANGED
|
@@ -617,9 +617,11 @@ function info_default({ defineComponent, Av, validation: { Z } }) {
|
|
|
617
617
|
description: "Allows for integration with AWS Elemental MediaConnect, enabling users to ingest media flows from the cloud into their processing pipeline.",
|
|
618
618
|
subscription: {
|
|
619
619
|
produces: {
|
|
620
|
-
type: "
|
|
621
|
-
|
|
622
|
-
|
|
620
|
+
type: "dynamic-streams",
|
|
621
|
+
streams: (cfg) => Av.map((media) => ({
|
|
622
|
+
sourceName: cfg.id,
|
|
623
|
+
media
|
|
624
|
+
}))
|
|
623
625
|
}
|
|
624
626
|
},
|
|
625
627
|
designtime: {
|
|
@@ -668,13 +670,14 @@ function info_default2({ defineComponent, validation: { Z }, All }) {
|
|
|
668
670
|
description: "Enables the integration with AWS Elemental MediaLive, allowing users to output multiple media streams to a MediaLive channel. ",
|
|
669
671
|
subscription: {
|
|
670
672
|
accepts: {
|
|
671
|
-
type: "
|
|
672
|
-
|
|
673
|
+
type: "dynamic-streams",
|
|
674
|
+
mode: "any",
|
|
675
|
+
streams: () => All.map((media) => ({ media }))
|
|
673
676
|
}
|
|
674
677
|
},
|
|
675
678
|
extraValidation: function(ctx) {
|
|
676
|
-
const audioStreams = ctx.
|
|
677
|
-
const videoStreams = ctx.
|
|
679
|
+
const audioStreams = ctx.audioInputs();
|
|
680
|
+
const videoStreams = ctx.videoInputs();
|
|
678
681
|
if (audioStreams.length == 0) {
|
|
679
682
|
ctx.addWarning("Output has no audio, is this intentional");
|
|
680
683
|
}
|
|
@@ -742,7 +745,7 @@ function assertUnreachable(_) {
|
|
|
742
745
|
|
|
743
746
|
// build/processor.aws-transcribe/info.js
|
|
744
747
|
var import_react14 = __toESM(require_react());
|
|
745
|
-
function info_default3({ defineComponent,
|
|
748
|
+
function info_default3({ defineComponent, validation: { LanguageTagWithCountry, LanguageTagOptionalCountry, Z } }) {
|
|
746
749
|
const TranscribeLanguageSelection2 = import_react14.default.lazy(async () => Promise.resolve().then(() => (init_transcribe_language_selection(), transcribe_language_selection_exports)));
|
|
747
750
|
const TranslateLanguageSelection2 = import_react14.default.lazy(async () => Promise.resolve().then(() => (init_translate_language_selection(), translate_language_selection_exports)));
|
|
748
751
|
return defineComponent({
|
|
@@ -751,28 +754,21 @@ function info_default3({ defineComponent, Av, Subtitle, validation: { LanguageTa
|
|
|
751
754
|
name: "AWS Transcribe",
|
|
752
755
|
description: "Transcribes audio from a video stream into subtitles using AWS's Transcribe service. Additionally, the processor can optionally translate the generated subtitles into another language using AWS Translate.",
|
|
753
756
|
subscription: {
|
|
754
|
-
// Must have video AND audio?
|
|
755
|
-
// Or is video optional?
|
|
756
|
-
// either way, we only want one of each
|
|
757
|
-
// and we want QUCV to respect our choice
|
|
758
757
|
accepts: {
|
|
759
|
-
type: "
|
|
760
|
-
|
|
761
|
-
|
|
758
|
+
type: "simple-stream",
|
|
759
|
+
audio: true,
|
|
760
|
+
video: true
|
|
762
761
|
},
|
|
763
762
|
produces: {
|
|
764
|
-
type: "
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
display: "Subtitle",
|
|
769
|
-
media: Subtitle
|
|
763
|
+
type: "dynamic-streams",
|
|
764
|
+
streams: (cfg) => [{
|
|
765
|
+
media: "subtitle",
|
|
766
|
+
sourceName: cfg.id
|
|
770
767
|
}].concat(cfg.targetLanguage ? [{
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
}] : [])
|
|
775
|
-
selector: (selection, metadata) => metadata.filter((x) => selection.includes(x.streamKey.renditionName)).map((x) => x.streamKey)
|
|
768
|
+
media: "subtitle",
|
|
769
|
+
sourceName: cfg.id,
|
|
770
|
+
renditionName: cfg.targetLanguage
|
|
771
|
+
}] : [])
|
|
776
772
|
}
|
|
777
773
|
},
|
|
778
774
|
extraValidation: function(ctx) {
|
package/client/style.css
CHANGED
|
@@ -15,18 +15,6 @@
|
|
|
15
15
|
--tw-shadow-colored: 0 0 #0000;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
.filter {
|
|
19
|
-
--tw-blur: ;
|
|
20
|
-
--tw-brightness: ;
|
|
21
|
-
--tw-contrast: ;
|
|
22
|
-
--tw-grayscale: ;
|
|
23
|
-
--tw-hue-rotate: ;
|
|
24
|
-
--tw-invert: ;
|
|
25
|
-
--tw-saturate: ;
|
|
26
|
-
--tw-sepia: ;
|
|
27
|
-
--tw-drop-shadow: ;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
18
|
.static {
|
|
31
19
|
position: static;
|
|
32
20
|
}
|
|
@@ -111,10 +99,6 @@
|
|
|
111
99
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
112
100
|
}
|
|
113
101
|
|
|
114
|
-
.filter {
|
|
115
|
-
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
102
|
.node-editor-label {
|
|
119
103
|
margin-bottom: 0.125rem;
|
|
120
104
|
display: block;
|
|
@@ -39,8 +39,11 @@ function default_1({ defineComponent, Av, validation: { Z } }) {
|
|
|
39
39
|
description: "Allows for integration with AWS Elemental MediaConnect, enabling users to ingest media flows from the cloud into their processing pipeline.",
|
|
40
40
|
subscription: {
|
|
41
41
|
produces: {
|
|
42
|
-
type: "
|
|
43
|
-
|
|
42
|
+
type: "dynamic-streams",
|
|
43
|
+
streams: (cfg) => Av.map((media) => ({
|
|
44
|
+
sourceName: cfg.id,
|
|
45
|
+
media
|
|
46
|
+
}))
|
|
44
47
|
}
|
|
45
48
|
},
|
|
46
49
|
designtime: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/input.mediaconnect/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/input.mediaconnect/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,4BA+CC;AAjDD,kDAA0B;AAE1B,mBAAwB,EAAE,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,EAAgB;IAC9E,MAAM,aAAa,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,kBAAkB,GAAC,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,oBAAoB,GAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,aAAa,GAAC,CAAC,CAAC;IAE/D,OAAO,eAAe,CAAqB;QACzC,UAAU,EAAE,oBAAoB;QAChC,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,6IAA6I;QAC1J,YAAY,EAAE;YACZ,QAAQ,EAAE;gBACR,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACnC,UAAU,EAAE,GAAG,CAAC,EAAE;oBAClB,KAAK;iBACN,CAAC,CAAC;aACJ;SACF;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;SACf;QACD,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP,IAAI,EAAE,wBAAwB;oBAC9B,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,aAAa;wBACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC;qBAC9D;iBACF;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,+BAA+B;oBACrC,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,eAAe;wBAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,iCAAiC,CAAC;qBACjE;iBACF;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,uCAAuC;oBAC7C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;iBACvC;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -42,13 +42,14 @@ function default_1({ defineComponent, validation: { Z }, All }) {
|
|
|
42
42
|
description: "Enables the integration with AWS Elemental MediaLive, allowing users to output multiple media streams to a MediaLive channel. ",
|
|
43
43
|
subscription: {
|
|
44
44
|
accepts: {
|
|
45
|
-
type: "
|
|
46
|
-
|
|
45
|
+
type: "dynamic-streams",
|
|
46
|
+
mode: 'any',
|
|
47
|
+
streams: () => All.map((media) => ({ media }))
|
|
47
48
|
},
|
|
48
49
|
},
|
|
49
50
|
extraValidation: function (ctx) {
|
|
50
|
-
const audioStreams = ctx.
|
|
51
|
-
const videoStreams = ctx.
|
|
51
|
+
const audioStreams = ctx.audioInputs();
|
|
52
|
+
const videoStreams = ctx.videoInputs();
|
|
52
53
|
if (audioStreams.length == 0) {
|
|
53
54
|
ctx.addWarning("Output has no audio, is this intentional");
|
|
54
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/output.medialive/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/output.medialive/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
|
|
2
2
|
import type { AwsTranscribeConfig } from "./runtime";
|
|
3
|
-
export default function ({ defineComponent,
|
|
3
|
+
export default function ({ defineComponent, validation: { LanguageTagWithCountry, LanguageTagOptionalCountry, Z } }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<AwsTranscribeConfig, object, object, object>;
|
|
@@ -28,7 +28,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.default = default_1;
|
|
30
30
|
const react_1 = __importDefault(require("react"));
|
|
31
|
-
function default_1({ defineComponent,
|
|
31
|
+
function default_1({ defineComponent, validation: { LanguageTagWithCountry, LanguageTagOptionalCountry, Z } }) {
|
|
32
32
|
const TranscribeLanguageSelection = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./transcribe-language-selection'))));
|
|
33
33
|
const TranslateLanguageSelection = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./translate-language-selection'))));
|
|
34
34
|
return defineComponent({
|
|
@@ -38,23 +38,21 @@ function default_1({ defineComponent, Av, Subtitle, validation: { LanguageTagWit
|
|
|
38
38
|
description: "Transcribes audio from a video stream into subtitles using AWS's Transcribe service. Additionally, the processor can optionally translate the generated subtitles into another language using AWS Translate.",
|
|
39
39
|
subscription: {
|
|
40
40
|
accepts: {
|
|
41
|
-
type: '
|
|
42
|
-
|
|
41
|
+
type: 'simple-stream',
|
|
42
|
+
audio: true,
|
|
43
|
+
video: true
|
|
43
44
|
},
|
|
44
45
|
produces: {
|
|
45
|
-
type: "
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
display: "Subtitle",
|
|
50
|
-
media: Subtitle
|
|
46
|
+
type: "dynamic-streams",
|
|
47
|
+
streams: (cfg) => [{
|
|
48
|
+
media: 'subtitle',
|
|
49
|
+
sourceName: cfg.id,
|
|
51
50
|
}].concat(cfg.targetLanguage ?
|
|
52
51
|
[{
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}] : [])
|
|
57
|
-
selector: (selection, metadata) => metadata.filter((x) => selection.includes(x.streamKey.renditionName)).map(x => x.streamKey)
|
|
52
|
+
media: 'subtitle',
|
|
53
|
+
sourceName: cfg.id,
|
|
54
|
+
renditionName: cfg.targetLanguage
|
|
55
|
+
}] : [])
|
|
58
56
|
}
|
|
59
57
|
},
|
|
60
58
|
extraValidation: function (ctx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.aws-transcribe/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.aws-transcribe/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,4BA0DC;AA7DD,kDAA0B;AAG1B,mBAAwB,EACtB,eAAe,EACf,UAAU,EAAE,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,CAAC,EAAE,EACxD;IACb,MAAM,2BAA2B,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,iCAAiC,GAAC,CAAC,CAAC;IACtG,MAAM,0BAA0B,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,gCAAgC,GAAC,CAAC,CAAC;IAEpG,OAAO,eAAe,CAAsB;QAC1C,UAAU,EAAE,0BAA0B;QACtC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,8MAA8M;QAC3N,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;aACZ;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,CAAC,GAAG,EAA4B,EAAE,CAAC,CAAC;wBAC3C,KAAK,EAAE,UAAmB;wBAC1B,UAAU,EAAE,GAAG,CAAC,EAAE;qBACO,CAAC,CAAC,MAAM,CACjC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAClB,CAAC;4BACC,KAAK,EAAE,UAAmB;4BAC1B,UAAU,EAAE,GAAG,CAAC,EAAE;4BAClB,aAAa,EAAE,GAAG,CAAC,cAAc;yBACR,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAEvC;SACF;QACD,eAAe,EAAE,UAAS,GAAG;YAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,QAAQ,CAAC,qEAAqE,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,QAAQ,CAAC,6DAA6D,CAAC,CAAA;YAC7E,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,2BAA2B,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,EAAE;gBAChL,cAAc,EAAE,EAAE,IAAI,EAAE,6CAA6C,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,0BAA0B,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnO,KAAK,EAAE;oBACL,IAAI,EAAE,uCAAuC;oBAC7C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;iBACvC;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AudioTranscribeAwsNode, Norsk, StreamKeyOverrideNode, StreamMetadataOverrideNode,
|
|
2
|
-
import { CreatedMediaNode, OnCreated, RelatedMediaNodes, ServerComponentDefinition,
|
|
1
|
+
import { AudioTranscribeAwsNode, Norsk, StreamKeyOverrideNode, StreamMetadataOverrideNode, AudioTranscribeAwsSettings as SdkSettings, SubtitleTranslateAwsSettings as TranslateSdkSettings, SubtitleTranslateAwsNode } from '@norskvideo/norsk-sdk';
|
|
2
|
+
import { CreatedMediaNode, OnCreated, RelatedMediaNodes, ServerComponentDefinition, StudioComponentInputStream } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
|
|
3
3
|
export type AwsTranscribeConfig = Pick<SdkSettings, 'language'> & Pick<TranslateSdkSettings, 'targetLanguage'> & {
|
|
4
4
|
id: string;
|
|
5
5
|
displayName: string;
|
|
@@ -17,7 +17,7 @@ export default class AwsTranscribeDefinition implements ServerComponentDefinitio
|
|
|
17
17
|
create(norsk: Norsk, cfg: AwsTranscribeConfig, cb: OnCreated<AwsTranscribeNode>): Promise<void>;
|
|
18
18
|
routes(): import("express-ws").Router;
|
|
19
19
|
}
|
|
20
|
-
declare class AwsTranscribeNode implements CreatedMediaNode
|
|
20
|
+
declare class AwsTranscribeNode implements CreatedMediaNode {
|
|
21
21
|
norsk: Norsk;
|
|
22
22
|
cfg: AwsTranscribeConfig;
|
|
23
23
|
initialised: Promise<void>;
|
|
@@ -27,13 +27,11 @@ declare class AwsTranscribeNode implements CreatedMediaNode, SubscribeDestinatio
|
|
|
27
27
|
translatedStreamkey?: StreamKeyOverrideNode;
|
|
28
28
|
originalOverride?: StreamMetadataOverrideNode;
|
|
29
29
|
translatedOverride?: StreamMetadataOverrideNode;
|
|
30
|
-
source?: StudioNodeSubscriptionSource;
|
|
31
30
|
output?: StreamMetadataOverrideNode;
|
|
32
31
|
constructor(norsk: Norsk, cfg: AwsTranscribeConfig);
|
|
33
32
|
get id(): string;
|
|
34
33
|
relatedMediaNodes: RelatedMediaNodes;
|
|
35
34
|
initialise(): Promise<void>;
|
|
36
|
-
subscribe(sources:
|
|
37
|
-
sourceContextChange(_responseCallback: (error?: SubscriptionError | undefined) => void): Promise<boolean>;
|
|
35
|
+
subscribe(sources: StudioComponentInputStream[]): Promise<void>;
|
|
38
36
|
}
|
|
39
37
|
export {};
|
|
@@ -73,7 +73,6 @@ class AwsTranscribeNode {
|
|
|
73
73
|
translatedStreamkey;
|
|
74
74
|
originalOverride;
|
|
75
75
|
translatedOverride;
|
|
76
|
-
source;
|
|
77
76
|
output;
|
|
78
77
|
constructor(norsk, cfg) {
|
|
79
78
|
this.norsk = norsk;
|
|
@@ -86,32 +85,22 @@ class AwsTranscribeNode {
|
|
|
86
85
|
this.output = await this.norsk.processor.transform.streamMetadataOverride({ id: `${this.id}-output` });
|
|
87
86
|
this.relatedMediaNodes.addOutput(this.output);
|
|
88
87
|
}
|
|
89
|
-
subscribe(sources) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
this.aws = await this.norsk.processor.transform.audioTranscribeAws({
|
|
106
|
-
id: `${this.id}-aws`,
|
|
107
|
-
awsRegion: process.env.AWS_REGION ?? 'eu-west-2',
|
|
108
|
-
outputStreamId: 540,
|
|
109
|
-
language: this.cfg.language,
|
|
110
|
-
sentenceBuildMode: 'stable',
|
|
111
|
-
sentenceStabilizationMode: 'medium'
|
|
112
|
-
});
|
|
113
|
-
this.relatedMediaNodes.addInput(this.aws);
|
|
114
|
-
this.aws.subscribe(this.source.selectAudio(), undefined);
|
|
88
|
+
async subscribe(sources) {
|
|
89
|
+
const video = sources.find((s) => s.isMedia("video"));
|
|
90
|
+
const audio = sources.find((s) => s.isMedia("audio"));
|
|
91
|
+
if (video && audio && video.metadata) {
|
|
92
|
+
if (!this.aws) {
|
|
93
|
+
this.aws = await this.norsk.processor.transform.audioTranscribeAws({
|
|
94
|
+
id: `${this.id}-aws`,
|
|
95
|
+
awsRegion: process.env.AWS_REGION ?? 'eu-west-2',
|
|
96
|
+
outputStreamId: 540,
|
|
97
|
+
language: this.cfg.language,
|
|
98
|
+
sentenceBuildMode: 'stable',
|
|
99
|
+
sentenceStabilizationMode: 'medium'
|
|
100
|
+
});
|
|
101
|
+
this.relatedMediaNodes.addInput(this.aws);
|
|
102
|
+
}
|
|
103
|
+
this.aws.subscribe([audio.select()]);
|
|
115
104
|
this.streamkey = await this.norsk.processor.transform.streamKeyOverride({
|
|
116
105
|
streamKey: { ...video.metadata.streamKey, renditionName: 'subs' }
|
|
117
106
|
});
|
|
@@ -158,10 +147,6 @@ class AwsTranscribeNode {
|
|
|
158
147
|
source: this.originalOverride,
|
|
159
148
|
sourceSelector: norsk_sdk_1.selectSubtitles
|
|
160
149
|
}].concat(this.translatedOverride ? [{ source: this.translatedOverride, sourceSelector: norsk_sdk_1.selectSubtitles }] : []));
|
|
161
|
-
return false;
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
return false;
|
|
165
150
|
}
|
|
166
151
|
}
|
|
167
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.aws-transcribe/runtime.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.aws-transcribe/runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@norskvideo/norsk-studio-aws",
|
|
3
|
-
"version": "1.27.0-2025-03-
|
|
3
|
+
"version": "1.27.0-2025-03-13-5c343278",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"clean": "rm -rf lib",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"@aws-sdk/client-mediapackage": "^3.499.0",
|
|
25
25
|
"@aws-sdk/client-s3": "^3.614.0",
|
|
26
26
|
"@aws-sdk/client-translate": "^3.535.0",
|
|
27
|
-
"@norskvideo/norsk-sdk": "^1.0.401-2025-03-
|
|
28
|
-
"@norskvideo/norsk-studio": "1.27.0-2025-03-
|
|
27
|
+
"@norskvideo/norsk-sdk": "^1.0.401-2025-03-13-17d4acac",
|
|
28
|
+
"@norskvideo/norsk-studio": "1.27.0-2025-03-13-5c343278",
|
|
29
29
|
"openapi-types": "^12.1.3"
|
|
30
30
|
},
|
|
31
31
|
"main": "lib/index.js",
|