@norskvideo/norsk-sdk 1.0.351 → 1.0.354
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 +222 -105
- package/lib/src/media_nodes/common.js +4 -0
- package/lib/src/media_nodes/input.d.ts +31 -3
- package/lib/src/media_nodes/input.js +22 -11
- package/lib/src/media_nodes/output.d.ts +78 -90
- package/lib/src/media_nodes/output.js +52 -55
- package/lib/src/media_nodes/processor.d.ts +95 -4
- package/lib/src/media_nodes/processor.js +148 -5
- package/lib/src/media_nodes/types.d.ts +12 -7
- package/lib/src/media_nodes/types.js +40 -3
- package/lib/src/sdk.js +3 -3
- package/package.json +4 -2
- package/src/sdk.ts +10 -10
package/dist/norsk-sdk.d.ts
CHANGED
|
@@ -22,7 +22,6 @@ import { PlainMessage } from '@bufbuild/protobuf';
|
|
|
22
22
|
import { Readable } from 'stream';
|
|
23
23
|
import { RtmpError_UnsupportedAudio } from '@norskvideo/norsk-api/lib/media_pb';
|
|
24
24
|
import { RtmpError_UnsupportedVideo } from '@norskvideo/norsk-api/lib/media_pb';
|
|
25
|
-
import { Scte35SpliceInfoSection as Scte35SpliceInfoSection_2 } from '@norskvideo/norsk-api/lib/media_pb';
|
|
26
25
|
import { StreamKey as StreamKey_2 } from '@norskvideo/norsk-api/lib/media_pb';
|
|
27
26
|
import { StreamStatisticsSampling } from '@norskvideo/norsk-api/lib/media_pb';
|
|
28
27
|
import { Subscription } from '@norskvideo/norsk-api/lib/media_pb';
|
|
@@ -31,6 +30,7 @@ import { TsInputEvent } from '@norskvideo/norsk-api/lib/media_pb';
|
|
|
31
30
|
import { UdpTsInputMessage } from '@norskvideo/norsk-api/lib/media_pb';
|
|
32
31
|
import { VancPayloadFormat as VancPayloadFormat_2 } from '@norskvideo/norsk-api/lib/media_pb';
|
|
33
32
|
import { Version } from '@norskvideo/norsk-api/lib/shared/common_pb';
|
|
33
|
+
import { VideoTransformConfiguration } from '@norskvideo/norsk-api/lib/media_pb';
|
|
34
34
|
import { Wave } from '@norskvideo/norsk-api/lib/media_pb';
|
|
35
35
|
import { Writable } from 'stream';
|
|
36
36
|
|
|
@@ -59,11 +59,11 @@ export declare interface AdMarker {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
export declare class AncillaryNode extends AutoProcessorMediaNode<"ancillary"> {
|
|
62
|
-
sendScte35(key: StreamKey, info:
|
|
62
|
+
sendScte35(key: StreamKey, info: Scte35SpliceInfoSection): void;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
export declare interface AncillarySettings extends ProcessorNodeSettings<AncillaryNode> {
|
|
66
|
-
onScte35?: (stream: StreamKey, message:
|
|
66
|
+
onScte35?: (stream: StreamKey, message: Scte35SpliceInfoSection) => void;
|
|
67
67
|
onSmpte2038?: (stream: StreamKey, message: Smpte2038Message) => void;
|
|
68
68
|
}
|
|
69
69
|
|
|
@@ -440,11 +440,18 @@ export declare class AudioTranscribeWhisperNode extends AutoProcessorMediaNode<"
|
|
|
440
440
|
|
|
441
441
|
/**
|
|
442
442
|
* @public
|
|
443
|
-
* Settings for an Audio Transcribe operation using Whisper sdk
|
|
443
|
+
* Settings for an Audio Transcribe operation using Whisper sdk (whisper-cpp)
|
|
444
444
|
* see: {@link NorskTransform.audioTranscribeWhisper}
|
|
445
445
|
* */
|
|
446
446
|
export declare interface AudioTranscribeWhisperSettings extends ProcessorNodeSettings<AudioTranscribeWhisperNode> {
|
|
447
447
|
outputStreamId: number;
|
|
448
|
+
/** The duration of audio that is accumulated before performing one transcription step. Decreasing this
|
|
449
|
+
* value will decrease latency but also decrease performance. Visualiser metrics are available to monitor the
|
|
450
|
+
* duration of each "step" operation, if this is not clearly faster than the audio duration real-time output will not be
|
|
451
|
+
* attained and the workflow will back up.
|
|
452
|
+
*
|
|
453
|
+
* Default 3000ms.
|
|
454
|
+
*/
|
|
448
455
|
stepMs?: number;
|
|
449
456
|
lengthMs?: number;
|
|
450
457
|
keepMs?: number;
|
|
@@ -452,12 +459,38 @@ export declare interface AudioTranscribeWhisperSettings extends ProcessorNodeSet
|
|
|
452
459
|
speedUp?: boolean;
|
|
453
460
|
noFallback?: boolean;
|
|
454
461
|
numThreads?: number;
|
|
462
|
+
/**
|
|
463
|
+
* Use GPU if available. In the cases where GPU is available, it may not necessarily increase performance, but instead opt
|
|
464
|
+
* to move load from CPU to GPU.
|
|
465
|
+
*/
|
|
455
466
|
useGpu?: boolean;
|
|
467
|
+
/**
|
|
468
|
+
* Language setting for the Whisper model. Leave unset to auto-detect (with a multi-language model)
|
|
469
|
+
*/
|
|
456
470
|
language?: string;
|
|
471
|
+
/**
|
|
472
|
+
* The file name of the GGML-format whisper model.
|
|
473
|
+
*
|
|
474
|
+
* Information: https://github.com/ggerganov/whisper.cpp/blob/master/models/README.md
|
|
475
|
+
*
|
|
476
|
+
* Model downloads: https://huggingface.co/ggerganov/whisper.cpp/tree/main
|
|
477
|
+
*/
|
|
457
478
|
model: string;
|
|
479
|
+
/**
|
|
480
|
+
* Whether to translate a non-English input to English, or leave the foreign-language transcription in the source language.
|
|
481
|
+
*/
|
|
458
482
|
translate?: boolean;
|
|
483
|
+
/**
|
|
484
|
+
* Enable tiny-diarize if supported in the given model
|
|
485
|
+
*/
|
|
459
486
|
tinyDiarize?: boolean;
|
|
487
|
+
/**
|
|
488
|
+
* Initial prompt to prime the model - this is in addition to prompting based on past transcription history.
|
|
489
|
+
*/
|
|
460
490
|
initialPrompt?: string;
|
|
491
|
+
/**
|
|
492
|
+
* Whether to suppress non-speech tokens
|
|
493
|
+
*/
|
|
461
494
|
suppressNonSpeechTokens?: boolean;
|
|
462
495
|
samplingStrategy?: WhisperSamplingStrategy;
|
|
463
496
|
}
|
|
@@ -539,6 +572,22 @@ export declare interface AwsS3PushDestinationSettings {
|
|
|
539
572
|
* in order to generate an accurate playlist
|
|
540
573
|
*/
|
|
541
574
|
retentionPeriodSeconds: number;
|
|
575
|
+
/**
|
|
576
|
+
* In the absence of a HLS_SKIP query parameter, how many segments should be served in a playlist
|
|
577
|
+
* this effectively controls how far back in time a player can seek from first load (as long as the data exists)
|
|
578
|
+
*/
|
|
579
|
+
defaultSegmentCount?: number;
|
|
580
|
+
/**
|
|
581
|
+
Server control directive, informs the client how far back in the stream (in seconds) it should attempt to play
|
|
582
|
+
this should take into account the end to end latency from source capture, to the segment and playlist being published
|
|
583
|
+
*/
|
|
584
|
+
holdBackSeconds?: number;
|
|
585
|
+
/**
|
|
586
|
+
Server control directive, informs the client how far back in the stream (in seconds) it should attempt to play
|
|
587
|
+
when using the lower latency parts
|
|
588
|
+
this should take into account the end to end latency from source capture, to the part and playlist being published
|
|
589
|
+
*/
|
|
590
|
+
partHoldBackSeconds?: number;
|
|
542
591
|
}
|
|
543
592
|
|
|
544
593
|
/**
|
|
@@ -795,6 +844,8 @@ export declare type CmafDestinationSettings = HlsPushDestinationSettings | AwsS3
|
|
|
795
844
|
export declare class CmafMultiVariantOutputNode extends CmafNodeBase<CmafMultiVariantMessage, "video" | "audio" | "subtitle", CmafMultiVariantOutputNode> {
|
|
796
845
|
/** @public The URL of the file based multi variant playlist */
|
|
797
846
|
url: string;
|
|
847
|
+
/** @public The URL of the file based DASH manifest */
|
|
848
|
+
dashUrl: string;
|
|
798
849
|
/**
|
|
799
850
|
* @public
|
|
800
851
|
* Updates the credentials for a specific destination within this output by id
|
|
@@ -848,7 +899,6 @@ declare class CmafNodeBase<ClientMessage, Pins extends string, T extends MediaNo
|
|
|
848
899
|
}
|
|
849
900
|
|
|
850
901
|
declare class CmafNodeWithPlaylist<ClientMessage, Pins extends string, T extends MediaNodeState> extends CmafNodeBase<ClientMessage, Pins, T> {
|
|
851
|
-
constructor(client: MediaClient, unregisterNode: (node: MediaNodeState) => void, settings: ProcessorNodeSettings<T> & StreamStatisticsMixin, grpcInit: () => grpc.ClientDuplexStream<ClientMessage, HlsOutputEvent>, subscribeFn: (subscription: Subscription) => Promise<boolean>, playlistPath: PlaylistPath, segmentDuration: number, onPlaylistAddition: PlaylistOnChangeFn<ClientMessage>, destinations: DestinationId[], localDestination?: LocalPullDestinationSettings, maximumPlaylistSegments?: number);
|
|
852
902
|
/**
|
|
853
903
|
* @public
|
|
854
904
|
* Returns the URL to the HLS playlist entry. Note this can only be evaluated once the stream is active as it
|
|
@@ -874,18 +924,6 @@ export declare interface CmafOutputSettings extends SinkNodeSettings<CmafAudioOu
|
|
|
874
924
|
* without going over this target
|
|
875
925
|
*/
|
|
876
926
|
partDurationSeconds: number;
|
|
877
|
-
/**
|
|
878
|
-
* By default, the program date time or event start time will be based on the
|
|
879
|
-
* timestamp of the first video packet received by Norsk in a stream.
|
|
880
|
-
*
|
|
881
|
-
* Assuming minimal latency in Norsk itself, this behaviour is fine - but encodes and composition
|
|
882
|
-
* or synchronisation with external streams can then result in players requesting segments that don't exist yet
|
|
883
|
-
*
|
|
884
|
-
* delayOutputMs can be used to push the timestamp forwards so that players can calculate the edge of the stream accurately.
|
|
885
|
-
*
|
|
886
|
-
* This number should match the delayOutputMs of other streams which will be served within the same multi variant playlist
|
|
887
|
-
*/
|
|
888
|
-
delayOutputMs?: number;
|
|
889
927
|
/**
|
|
890
928
|
* Settings for encrypting the content.
|
|
891
929
|
*/
|
|
@@ -906,10 +944,6 @@ export declare interface CmafOutputSettings extends SinkNodeSettings<CmafAudioOu
|
|
|
906
944
|
* Audio or video bitrate for the {@link NorskOutput.cmafMultiVariant} playlist
|
|
907
945
|
*/
|
|
908
946
|
bitrate?: number;
|
|
909
|
-
/**
|
|
910
|
-
* The maximum number of segments to display in a single generated playlist
|
|
911
|
-
*/
|
|
912
|
-
maximumPlaylistSegments?: number;
|
|
913
947
|
}
|
|
914
948
|
|
|
915
949
|
/**
|
|
@@ -955,18 +989,6 @@ export declare interface CmafWebVttOutputSettings extends SinkNodeSettings<CmafW
|
|
|
955
989
|
* in a compliant manner if necessary
|
|
956
990
|
*/
|
|
957
991
|
segmentDurationSeconds: number;
|
|
958
|
-
/**
|
|
959
|
-
* By default, the program date time or event start time will be based on the
|
|
960
|
-
* timestamp of the first video packet received by Norsk in a stream.
|
|
961
|
-
*
|
|
962
|
-
* Assuming minimal latency in Norsk itself, this behaviour is fine - but encodes and composition
|
|
963
|
-
* or synchronisation with external streams can then result in players requesting segments that don't exist yet
|
|
964
|
-
*
|
|
965
|
-
* delayOutputMs can be used to push the timestamp forwards so that players can calculate the edge of the stream accurately.
|
|
966
|
-
*
|
|
967
|
-
* This number should match the delayOutputMs of other streams which will be served within the same multi variant playlist
|
|
968
|
-
*/
|
|
969
|
-
delayOutputMs?: number;
|
|
970
992
|
/**
|
|
971
993
|
* A list of destinations {@link CmafDestinationSettings} for this stream to be published to
|
|
972
994
|
*/
|
|
@@ -975,10 +997,6 @@ export declare interface CmafWebVttOutputSettings extends SinkNodeSettings<CmafW
|
|
|
975
997
|
* A local directory in which to store the segments while they're available
|
|
976
998
|
*/
|
|
977
999
|
hlsCacheDirectory: string;
|
|
978
|
-
/**
|
|
979
|
-
* The maximum number of segments to display in a single generated playlist
|
|
980
|
-
*/
|
|
981
|
-
maximumPlaylistSegments?: number;
|
|
982
1000
|
}
|
|
983
1001
|
|
|
984
1002
|
/** @public */
|
|
@@ -1148,6 +1166,11 @@ export declare type DeckLinkVideoIOSupport = "capture" | "playback";
|
|
|
1148
1166
|
/** @public */
|
|
1149
1167
|
export declare type DeferredVideoComposeSettings<Pins extends string> = (streams: StreamMetadata[]) => VideoComposeSettings<Pins> | undefined;
|
|
1150
1168
|
|
|
1169
|
+
export declare type DeinterlaceSettings = {
|
|
1170
|
+
type: 'software';
|
|
1171
|
+
algorithm: 'bwdif' | 'kerndeint' | 'nnedi' | 'w3fdif' | 'yadif';
|
|
1172
|
+
};
|
|
1173
|
+
|
|
1151
1174
|
/** @public */
|
|
1152
1175
|
export declare type DestinationId = string;
|
|
1153
1176
|
|
|
@@ -1251,6 +1274,8 @@ export declare class FileMp4InputNode extends SourceMediaNode {
|
|
|
1251
1274
|
* */
|
|
1252
1275
|
nudge(nudge: number): void;
|
|
1253
1276
|
updateSettings(settings: FileMp4InputSettingsUpdate): void;
|
|
1277
|
+
pause(): void;
|
|
1278
|
+
play(): void;
|
|
1254
1279
|
}
|
|
1255
1280
|
|
|
1256
1281
|
/**
|
|
@@ -1269,6 +1294,8 @@ export declare interface FileMp4InputSettings extends SourceNodeSettings<FileMp4
|
|
|
1269
1294
|
onInfo?: (info: FileMp4Info) => void;
|
|
1270
1295
|
/** Whether to loop back to the start of the file after reaching the end (default false) */
|
|
1271
1296
|
loop?: boolean;
|
|
1297
|
+
/** Whether to start paused or already playing (default: playing) */
|
|
1298
|
+
start?: 'playing' | 'paused';
|
|
1272
1299
|
}
|
|
1273
1300
|
|
|
1274
1301
|
export declare interface FileMp4InputSettingsUpdate {
|
|
@@ -1325,12 +1352,16 @@ export declare interface FileMp4OutputSettings extends SinkNodeSettings<FileMp4O
|
|
|
1325
1352
|
*/
|
|
1326
1353
|
export declare class FileTsInputNode extends TsCommonInputNode<FileTsInputMessage, FileTsInputNode> {
|
|
1327
1354
|
updateSettings(settings: FileTsInputSettingsUpdate): void;
|
|
1355
|
+
pause(): void;
|
|
1356
|
+
play(): void;
|
|
1328
1357
|
}
|
|
1329
1358
|
|
|
1330
1359
|
/** @public */
|
|
1331
1360
|
export declare interface FileTsInputSettings extends LocalFileInputSettings, StreamStatisticsMixin {
|
|
1332
1361
|
/** Whether to loop back to the start of the file after reaching the end */
|
|
1333
1362
|
loop?: boolean;
|
|
1363
|
+
/** Whether to start paused or already playing (default: playing) */
|
|
1364
|
+
start?: 'playing' | 'paused';
|
|
1334
1365
|
}
|
|
1335
1366
|
|
|
1336
1367
|
/** @public */
|
|
@@ -1407,7 +1438,7 @@ export declare type FrameStoreExpiry = FrameStoreExpireBySize | FrameStoreExpire
|
|
|
1407
1438
|
|
|
1408
1439
|
/**
|
|
1409
1440
|
* @public
|
|
1410
|
-
* see: {@link NorskInput.
|
|
1441
|
+
* see: {@link NorskInput.frameStore}
|
|
1411
1442
|
*/
|
|
1412
1443
|
export declare class FrameStorePlayerNode extends SourceMediaNode {
|
|
1413
1444
|
}
|
|
@@ -1415,7 +1446,7 @@ export declare class FrameStorePlayerNode extends SourceMediaNode {
|
|
|
1415
1446
|
/**
|
|
1416
1447
|
* @public
|
|
1417
1448
|
* Settings for Frame Store playback
|
|
1418
|
-
* see: {@link NorskInput.
|
|
1449
|
+
* see: {@link NorskInput.frameStore}
|
|
1419
1450
|
*/
|
|
1420
1451
|
export declare interface FrameStorePlayerSettings extends InputSettings<FrameStorePlayerNode>, StreamStatisticsMixin {
|
|
1421
1452
|
/**
|
|
@@ -1440,7 +1471,7 @@ export declare interface FrameStorePlayerSettings extends InputSettings<FrameSto
|
|
|
1440
1471
|
|
|
1441
1472
|
/**
|
|
1442
1473
|
* @public
|
|
1443
|
-
* see: {@link NorskOutput.
|
|
1474
|
+
* see: {@link NorskOutput.frameStore}
|
|
1444
1475
|
*/
|
|
1445
1476
|
export declare class FrameStoreRecorderNode extends AutoSinkMediaNode<"audio" | "video"> {
|
|
1446
1477
|
makeCut(request: FrameStoreCutRequest): void;
|
|
@@ -1449,7 +1480,7 @@ export declare class FrameStoreRecorderNode extends AutoSinkMediaNode<"audio" |
|
|
|
1449
1480
|
/**
|
|
1450
1481
|
* @public
|
|
1451
1482
|
* Settings to configure a frame store recorder
|
|
1452
|
-
* see {@link NorskOutput.
|
|
1483
|
+
* see {@link NorskOutput.frameStore}
|
|
1453
1484
|
*/
|
|
1454
1485
|
export declare interface FrameStoreRecorderSettings extends SinkNodeSettings<FrameStoreRecorderNode>, StreamStatisticsMixin {
|
|
1455
1486
|
/**
|
|
@@ -1547,6 +1578,22 @@ export declare interface HlsPushDestinationSettings {
|
|
|
1547
1578
|
* in order to generate an accurate playlist
|
|
1548
1579
|
*/
|
|
1549
1580
|
retentionPeriodSeconds: number;
|
|
1581
|
+
/**
|
|
1582
|
+
* In the absence of a HLS_SKIP query parameter, how many segments should be served in a playlist
|
|
1583
|
+
* this effectively controls how far back in time a player can seek from first load (as long as the data exists)
|
|
1584
|
+
*/
|
|
1585
|
+
defaultSegmentCount?: number;
|
|
1586
|
+
/**
|
|
1587
|
+
Server control directive, informs the client how far back in the stream (in seconds) it should attempt to play
|
|
1588
|
+
this should take into account the end to end latency from source capture, to the segment and playlist being published
|
|
1589
|
+
*/
|
|
1590
|
+
holdBackSeconds?: number;
|
|
1591
|
+
/**
|
|
1592
|
+
Server control directive, informs the client how far back in the stream (in seconds) it should attempt to play
|
|
1593
|
+
when using the lower latency parts
|
|
1594
|
+
this should take into account the end to end latency from source capture, to the part and playlist being published
|
|
1595
|
+
*/
|
|
1596
|
+
partHoldBackSeconds?: number;
|
|
1550
1597
|
}
|
|
1551
1598
|
|
|
1552
1599
|
/** @public */
|
|
@@ -1582,18 +1629,6 @@ export declare interface HlsTsAudioOutputSettings extends SinkNodeSettings<HlsTs
|
|
|
1582
1629
|
* without going over this target using the durations of the individual audio frames
|
|
1583
1630
|
*/
|
|
1584
1631
|
segmentDurationSeconds: number;
|
|
1585
|
-
/**
|
|
1586
|
-
* By default, the program date time or event start time will be based on the
|
|
1587
|
-
* timestamp of the first video packet received by Norsk in a stream.
|
|
1588
|
-
*
|
|
1589
|
-
* Assuming minimal latency in Norsk itself, this behaviour is fine - but encodes and composition
|
|
1590
|
-
* or synchronisation with external streams can then result in players requesting segments that don't exist yet
|
|
1591
|
-
*
|
|
1592
|
-
* delayOutputMs can be used to push the timestamp forwards so that players can calculate the edge of the stream accurately.
|
|
1593
|
-
*
|
|
1594
|
-
* This number should match the delayOutputMs of other streams which will be served within the same multi variant playlist
|
|
1595
|
-
*/
|
|
1596
|
-
delayOutputMs?: number;
|
|
1597
1632
|
/**
|
|
1598
1633
|
* A list of destinations {@link CmafDestinationSettings} for this stream to be published to
|
|
1599
1634
|
*/
|
|
@@ -1610,10 +1645,6 @@ export declare interface HlsTsAudioOutputSettings extends SinkNodeSettings<HlsTs
|
|
|
1610
1645
|
* Audio bitrate for the {@link NorskOutput.hlsTsMultiVariant} playlist
|
|
1611
1646
|
*/
|
|
1612
1647
|
bitrate?: number;
|
|
1613
|
-
/**
|
|
1614
|
-
* The maximum number of segments to display in a single generated playlist
|
|
1615
|
-
*/
|
|
1616
|
-
maximumPlaylistSegments?: number;
|
|
1617
1648
|
}
|
|
1618
1649
|
|
|
1619
1650
|
/**
|
|
@@ -1635,18 +1666,6 @@ export declare interface HlsTsCombinedPushOutputSettings extends SinkNodeSetting
|
|
|
1635
1666
|
* using timestamps to line them up
|
|
1636
1667
|
*/
|
|
1637
1668
|
segmentDurationSeconds: number;
|
|
1638
|
-
/**
|
|
1639
|
-
* By default, the program date time or event start time will be based on the
|
|
1640
|
-
* timestamp of the first video packet received by Norsk in a stream.
|
|
1641
|
-
*
|
|
1642
|
-
* Assuming minimal latency in Norsk itself, this behaviour is fine - but encodes and composition
|
|
1643
|
-
* or synchronisation with external streams can then result in players requesting segments that don't exist yet
|
|
1644
|
-
*
|
|
1645
|
-
* delayOutputMs can be used to push the timestamp forwards so that players can calculate the edge of the stream accurately.
|
|
1646
|
-
*
|
|
1647
|
-
* This number should match the delayOutputMs of other streams which will be served within the same multi variant playlist
|
|
1648
|
-
*/
|
|
1649
|
-
delayOutputMs?: number;
|
|
1650
1669
|
/**
|
|
1651
1670
|
* The destination {@link CmafDestinationSettings} for this stream to be published to
|
|
1652
1671
|
*/
|
|
@@ -1733,18 +1752,6 @@ export declare interface HlsTsVideoOutputSettings extends SinkNodeSettings<HlsTs
|
|
|
1733
1752
|
* to produce compliant segments that are less than or equal to this in duration
|
|
1734
1753
|
*/
|
|
1735
1754
|
segmentDurationSeconds: number;
|
|
1736
|
-
/**
|
|
1737
|
-
* By default, the program date time or event start time will be based on the
|
|
1738
|
-
* timestamp of the first video packet received by Norsk in a stream.
|
|
1739
|
-
*
|
|
1740
|
-
* Assuming minimal latency in Norsk itself, this behaviour is fine - but encodes and composition
|
|
1741
|
-
* or synchronisation with external streams can then result in players requesting segments that don't exist yet
|
|
1742
|
-
*
|
|
1743
|
-
* delayOutputMs can be used to push the timestamp forwards so that players can calculate the edge of the stream accurately.
|
|
1744
|
-
*
|
|
1745
|
-
* This number should match the delayOutputMs of other streams which will be served within the same multi variant playlist
|
|
1746
|
-
*/
|
|
1747
|
-
delayOutputMs?: number;
|
|
1748
1755
|
/**
|
|
1749
1756
|
* A list of destinations {@link CmafDestinationSettings} for this stream to be published to
|
|
1750
1757
|
*/
|
|
@@ -1761,10 +1768,6 @@ export declare interface HlsTsVideoOutputSettings extends SinkNodeSettings<HlsTs
|
|
|
1761
1768
|
* Video bitrate for the {@link NorskOutput.hlsTsMultiVariant} playlist
|
|
1762
1769
|
*/
|
|
1763
1770
|
bitrate?: number;
|
|
1764
|
-
/**
|
|
1765
|
-
* The maximum number of segments to display in a single generated playlist
|
|
1766
|
-
*/
|
|
1767
|
-
maximumPlaylistSegments?: number;
|
|
1768
1771
|
}
|
|
1769
1772
|
|
|
1770
1773
|
/** @public */
|
|
@@ -1875,6 +1878,22 @@ export declare interface LocalPullDestinationSettings {
|
|
|
1875
1878
|
* and informs the local web server how long to retain those segments
|
|
1876
1879
|
*/
|
|
1877
1880
|
retentionPeriodSeconds: number;
|
|
1881
|
+
/**
|
|
1882
|
+
* In the absence of a HLS_SKIP query parameter, how many segments should be served in a playlist
|
|
1883
|
+
* this effectively controls how far back in time a player can seek from first load (as long as the data exists)
|
|
1884
|
+
*/
|
|
1885
|
+
defaultSegmentCount?: number;
|
|
1886
|
+
/**
|
|
1887
|
+
Server control directive, informs the client how far back in the stream (in seconds) it should attempt to play
|
|
1888
|
+
this should take into account the end to end latency from source capture, to the segment and playlist being published
|
|
1889
|
+
*/
|
|
1890
|
+
holdBackSeconds?: number;
|
|
1891
|
+
/**
|
|
1892
|
+
Server control directive, informs the client how far back in the stream (in seconds) it should attempt to play
|
|
1893
|
+
when using the lower latency parts
|
|
1894
|
+
this should take into account the end to end latency from source capture, to the part and playlist being published
|
|
1895
|
+
*/
|
|
1896
|
+
partHoldBackSeconds?: number;
|
|
1878
1897
|
}
|
|
1879
1898
|
|
|
1880
1899
|
/** @public */
|
|
@@ -2024,17 +2043,17 @@ export declare function mkSine(freq: number): Wave;
|
|
|
2024
2043
|
|
|
2025
2044
|
/**
|
|
2026
2045
|
* @public
|
|
2027
|
-
* see: {@link NorskOutput.
|
|
2046
|
+
* see: {@link NorskOutput.moq}
|
|
2028
2047
|
*/
|
|
2029
|
-
export declare class
|
|
2048
|
+
export declare class MoqOutputNode extends AutoSinkMediaNode<"audio" | "video"> {
|
|
2030
2049
|
}
|
|
2031
2050
|
|
|
2032
2051
|
/**
|
|
2033
2052
|
* @public
|
|
2034
2053
|
* Settings to configure a Moq Egest
|
|
2035
|
-
* see {@link NorskOutput.
|
|
2054
|
+
* see {@link NorskOutput.moq}
|
|
2036
2055
|
*/
|
|
2037
|
-
export declare interface
|
|
2056
|
+
export declare interface MoqOutputSettings extends SinkNodeSettings<MoqOutputNode>, StreamStatisticsMixin {
|
|
2038
2057
|
}
|
|
2039
2058
|
|
|
2040
2059
|
/** @public */
|
|
@@ -2278,7 +2297,7 @@ export declare interface NorskInput {
|
|
|
2278
2297
|
/**
|
|
2279
2298
|
* Playback from an existing Frame Store recording
|
|
2280
2299
|
*/
|
|
2281
|
-
|
|
2300
|
+
frameStore(settings: FrameStorePlayerSettings): Promise<FrameStorePlayerNode>;
|
|
2282
2301
|
}
|
|
2283
2302
|
|
|
2284
2303
|
/**
|
|
@@ -2422,13 +2441,13 @@ export declare interface NorskOutput {
|
|
|
2422
2441
|
*
|
|
2423
2442
|
* @param settings - Configuration for the frame store recorder
|
|
2424
2443
|
*/
|
|
2425
|
-
|
|
2444
|
+
frameStore(settings: FrameStoreRecorderSettings): Promise<FrameStoreRecorderNode>;
|
|
2426
2445
|
/**
|
|
2427
2446
|
* Create a Moq Egest
|
|
2428
2447
|
*
|
|
2429
2448
|
* @param settings - Configuration for the egest
|
|
2430
2449
|
*/
|
|
2431
|
-
|
|
2450
|
+
moq(settings: MoqOutputSettings): Promise<MoqOutputNode>;
|
|
2432
2451
|
}
|
|
2433
2452
|
|
|
2434
2453
|
/** @public */
|
|
@@ -2495,6 +2514,14 @@ export declare interface NorskTransform {
|
|
|
2495
2514
|
* @param settings - Encode ladder settings
|
|
2496
2515
|
*/
|
|
2497
2516
|
videoEncode(settings: VideoEncodeSettings): Promise<VideoEncodeNode>;
|
|
2517
|
+
/**
|
|
2518
|
+
* Decode a video stream to a specific type of 'raw' format
|
|
2519
|
+
* this isn't usually needed because decode will happen automatically for nodes that need raw data
|
|
2520
|
+
* however if we definitely want a hardware decode and we're creating nodes that accept inMemory raw, we can use this node
|
|
2521
|
+
* to ensure that the hardware decode takes place
|
|
2522
|
+
* @param settings - Decode settings
|
|
2523
|
+
*/
|
|
2524
|
+
videoDecode(settings: VideoDecodeSettings): Promise<VideoDecodeNode>;
|
|
2498
2525
|
/**
|
|
2499
2526
|
* Transform a single video stream (rescale, frame rate, etc)
|
|
2500
2527
|
* @param settings - Transform settings
|
|
@@ -2529,7 +2556,10 @@ export declare interface NorskTransform {
|
|
|
2529
2556
|
audioTranscribeAzure(settings: AudioTranscribeAzureSettings): Promise<AudioTranscribeAzureNode>;
|
|
2530
2557
|
/**
|
|
2531
2558
|
* Create a Media Node performing transcription into subtitles using the
|
|
2532
|
-
* Whisper speech recognition model.
|
|
2559
|
+
* Whisper speech recognition model via the whisper-cpp SDK.
|
|
2560
|
+
*
|
|
2561
|
+
* For reference on general concepts https://github.com/ggerganov/whisper.cpp - many settings are directly settings on the
|
|
2562
|
+
* underlying library and can be evaluted via the CLI tool there also.
|
|
2533
2563
|
* @param settings - Settings and credentials for Whisper transcribe
|
|
2534
2564
|
*/
|
|
2535
2565
|
audioTranscribeWhisper(settings: AudioTranscribeWhisperSettings): Promise<AudioTranscribeWhisperNode>;
|
|
@@ -2571,6 +2601,10 @@ export declare interface NorskTransform {
|
|
|
2571
2601
|
* bitrate.
|
|
2572
2602
|
*/
|
|
2573
2603
|
audioEncode(settings: AudioEncodeSettings): Promise<AudioEncodeNode>;
|
|
2604
|
+
/**
|
|
2605
|
+
* Translate subtitles using the AWS Translate service
|
|
2606
|
+
*/
|
|
2607
|
+
subtitleTranslateAws(settings: SubtitleTranslateAwsSettings): Promise<SubtitleTranslateAwsNode>;
|
|
2574
2608
|
/**
|
|
2575
2609
|
* A node to nudge the timestamps on a stream, which affects how it syncs
|
|
2576
2610
|
* with other streams. Useful for correcting for drift between different
|
|
@@ -2772,13 +2806,13 @@ export declare type NvidiaPreset = "p1" | "p2" | "p3" | "p4" | "p5" | "p6" | "p7
|
|
|
2772
2806
|
export declare interface NvidiaRateControl {
|
|
2773
2807
|
/** the mode to use for this rate control operation */
|
|
2774
2808
|
mode: NvidiaRateControlMode;
|
|
2775
|
-
/** The average bitrate of this encode */
|
|
2809
|
+
/** The average bitrate of this encode (bits/sec) */
|
|
2776
2810
|
averageBitrate: number;
|
|
2777
|
-
/** The max bitrate of this encode */
|
|
2811
|
+
/** The max bitrate of this encode (bits/sec) */
|
|
2778
2812
|
maxBitrate?: number;
|
|
2779
|
-
/** The vbv buffer size used for this encode */
|
|
2813
|
+
/** The vbv buffer size used for this encode (bits) */
|
|
2780
2814
|
vbvBufferSize?: number;
|
|
2781
|
-
/** The vbv initial delay used for this encode */
|
|
2815
|
+
/** The vbv initial delay used for this encode (bits) */
|
|
2782
2816
|
vbvInitialDelay?: number;
|
|
2783
2817
|
/** Enable lookahead or not:
|
|
2784
2818
|
* Note: enabling lookahead will introduce scene cuts unless this is specifically disabled
|
|
@@ -2871,12 +2905,6 @@ export declare type PlaylistOnChangeFn<ClientMessage> = {
|
|
|
2871
2905
|
hlsTsMultiVariantPlaylist?: (grpcStream: grpc.ClientDuplexStream<ClientMessage, HlsOutputEvent>, destinationId: DestinationId, playlist: string) => void;
|
|
2872
2906
|
};
|
|
2873
2907
|
|
|
2874
|
-
/** @public */
|
|
2875
|
-
declare enum PlaylistPath {
|
|
2876
|
-
Cmaf = 0,
|
|
2877
|
-
Ts = 1
|
|
2878
|
-
}
|
|
2879
|
-
|
|
2880
2908
|
/**
|
|
2881
2909
|
* @public
|
|
2882
2910
|
* Returns the stream keys for playlist streams in a media context
|
|
@@ -3745,6 +3773,26 @@ export declare interface SrtInputSettings extends RemoteInputSettings<SrtInputNo
|
|
|
3745
3773
|
* Stream ID to set on the socket when acting in caller mode
|
|
3746
3774
|
*/
|
|
3747
3775
|
streamId?: string;
|
|
3776
|
+
/**
|
|
3777
|
+
* The latency value in the receiving direction of the socket (SRTO_RCVLATENCY)
|
|
3778
|
+
*/
|
|
3779
|
+
receiveLatency?: number;
|
|
3780
|
+
/**
|
|
3781
|
+
* The latency value provided by the sender side as a minimum value for the receiver (SRTO_PEERLATENCY)
|
|
3782
|
+
*/
|
|
3783
|
+
peerLatency?: number;
|
|
3784
|
+
/**
|
|
3785
|
+
* Input bandwidth (SRTO_INPUTBW)
|
|
3786
|
+
*/
|
|
3787
|
+
inputBandwidth?: number;
|
|
3788
|
+
/**
|
|
3789
|
+
* Overhead bandwidth (SRTO_OHEADBW)
|
|
3790
|
+
*/
|
|
3791
|
+
overheadBandwidth?: number;
|
|
3792
|
+
/**
|
|
3793
|
+
* Max bandwidth (SRTO_MAXBW)
|
|
3794
|
+
*/
|
|
3795
|
+
maxBandwidth?: number;
|
|
3748
3796
|
/**
|
|
3749
3797
|
* On connect callback, notifying that a new caller has connected (in listener mode) and set the source name accordingly
|
|
3750
3798
|
* @eventProperty
|
|
@@ -3797,6 +3845,26 @@ export declare interface SrtOutputSettings extends SinkNodeSettings<SrtOutputNod
|
|
|
3797
3845
|
* Stream ID to set on the socket when acting in caller mode
|
|
3798
3846
|
*/
|
|
3799
3847
|
streamId?: string;
|
|
3848
|
+
/**
|
|
3849
|
+
* The latency value in the receiving direction of the socket (SRTO_RCVLATENCY)
|
|
3850
|
+
*/
|
|
3851
|
+
receiveLatency?: number;
|
|
3852
|
+
/**
|
|
3853
|
+
* The latency value provided by the sender side as a minimum value for the receiver (SRTO_PEERLATENCY)
|
|
3854
|
+
*/
|
|
3855
|
+
peerLatency?: number;
|
|
3856
|
+
/**
|
|
3857
|
+
* Input bandwidth (SRTO_INPUTBW)
|
|
3858
|
+
*/
|
|
3859
|
+
inputBandwidth?: number;
|
|
3860
|
+
/**
|
|
3861
|
+
* Overhead bandwidth (SRTO_OHEADBW)
|
|
3862
|
+
*/
|
|
3863
|
+
overheadBandwidth?: number;
|
|
3864
|
+
/**
|
|
3865
|
+
* Max bandwidth (SRTO_MAXBW)
|
|
3866
|
+
*/
|
|
3867
|
+
maxBandwidth?: number;
|
|
3800
3868
|
/**
|
|
3801
3869
|
* The mode to act in (see {@link SrtMode})
|
|
3802
3870
|
*/
|
|
@@ -3976,6 +4044,12 @@ export declare interface StreamMetadataOverrideSettingsUpdate {
|
|
|
3976
4044
|
subtitles?: {
|
|
3977
4045
|
/** Override the language metadata of a subtitles stream, or `""` to clear. RFC 5646 language tag. */
|
|
3978
4046
|
language?: string;
|
|
4047
|
+
/** Override the property of whether a subtitles string is the default/primary rendition or not */
|
|
4048
|
+
default?: boolean;
|
|
4049
|
+
};
|
|
4050
|
+
playlist?: {
|
|
4051
|
+
/** Override the name of a playlist stream, or `""` to clear. Free form text. */
|
|
4052
|
+
name?: string;
|
|
3979
4053
|
};
|
|
3980
4054
|
}
|
|
3981
4055
|
|
|
@@ -4249,6 +4323,31 @@ export declare interface SubtitleStreamMetadata {
|
|
|
4249
4323
|
*/
|
|
4250
4324
|
export declare function subtitleStreams(streams: readonly StreamMetadata[]): StreamMetadata[];
|
|
4251
4325
|
|
|
4326
|
+
/**
|
|
4327
|
+
* @public
|
|
4328
|
+
* see: {@link NorskTransform.subtitleTranslateAws}
|
|
4329
|
+
*/
|
|
4330
|
+
export declare class SubtitleTranslateAwsNode extends AutoProcessorMediaNode<"audio"> {
|
|
4331
|
+
}
|
|
4332
|
+
|
|
4333
|
+
/**
|
|
4334
|
+
* @public
|
|
4335
|
+
* Settings for an Audio Transcribe operation using AWS
|
|
4336
|
+
* see: {@link NorskTransform.subtitleTranslateAws}
|
|
4337
|
+
* */
|
|
4338
|
+
export declare interface SubtitleTranslateAwsSettings extends ProcessorNodeSettings<SubtitleTranslateAwsNode> {
|
|
4339
|
+
/** Source language code/tag, e.g. de or fr-CA (omit to use the source subtitle language / AWS automatic detection) */
|
|
4340
|
+
sourceLanguage?: string;
|
|
4341
|
+
/** Target language code/tag, e.g. en or es-MX */
|
|
4342
|
+
targetLanguage: string;
|
|
4343
|
+
/** Enable brevity option */
|
|
4344
|
+
brevity?: boolean;
|
|
4345
|
+
/** Enable profanity masking */
|
|
4346
|
+
maskProfanity?: boolean;
|
|
4347
|
+
}
|
|
4348
|
+
|
|
4349
|
+
export declare function toDeinterlaceSettings(settings: DeinterlaceSettings): VideoTransformConfiguration["deinterlace"];
|
|
4350
|
+
|
|
4252
4351
|
declare class TsCommonInputNode<SourceMessage, T extends SourceMediaNode> extends SourceMediaNode {
|
|
4253
4352
|
constructor(tsType: TsInputType, client: MediaClient, unregisterNode: (node: MediaNodeState) => void, settings: SourceNodeSettings<T> & StreamStatisticsMixin, nudgeFn: (nudge: TimestampProgramNudge) => SourceMessage, onEof: (() => void) | undefined, grpcStartFn: () => grpc.ClientDuplexStream<SourceMessage, TsInputEvent>);
|
|
4254
4353
|
/**
|
|
@@ -4432,6 +4531,22 @@ export declare interface VideoComposeSettingsUpdate<Pins extends string> {
|
|
|
4432
4531
|
parts: readonly ComposePart<Pins>[];
|
|
4433
4532
|
}
|
|
4434
4533
|
|
|
4534
|
+
/**
|
|
4535
|
+
* @public
|
|
4536
|
+
* see: {@link NorskTransform.videoDecode}
|
|
4537
|
+
*/
|
|
4538
|
+
export declare class VideoDecodeNode extends AutoProcessorMediaNode<"video"> {
|
|
4539
|
+
}
|
|
4540
|
+
|
|
4541
|
+
/**
|
|
4542
|
+
* @public
|
|
4543
|
+
* Settings for a VideoDecode operation
|
|
4544
|
+
* see: {@link NorskTransform.videoDecode}
|
|
4545
|
+
* */
|
|
4546
|
+
export declare interface VideoDecodeSettings extends ProcessorNodeSettings<VideoDecodeNode> {
|
|
4547
|
+
decoder: 'software' | 'nvidia' | 'quadra' | 'logan' | 'xilinx';
|
|
4548
|
+
}
|
|
4549
|
+
|
|
4435
4550
|
/**
|
|
4436
4551
|
* @public
|
|
4437
4552
|
* see: {@link NorskTransform.videoEncode}
|
|
@@ -4563,6 +4678,8 @@ export declare interface VideoTransformSettings extends ProcessorNodeSettings<Vi
|
|
|
4563
4678
|
resolution?: Resolution;
|
|
4564
4679
|
/** An optional framerate to resample this single stream to */
|
|
4565
4680
|
frameRate?: FrameRate;
|
|
4681
|
+
/** An optional de-interlace algorithm to apply on this stream */
|
|
4682
|
+
deinterlace?: DeinterlaceSettings;
|
|
4566
4683
|
/** An optional SAR to set on the outgoing stream
|
|
4567
4684
|
* Note: You can set this and only this if the SAR on your incoming stream is incorrect
|
|
4568
4685
|
* for example (An often-seen problem with sources)
|
|
@@ -4737,7 +4854,7 @@ export declare interface X264Codec {
|
|
|
4737
4854
|
*/
|
|
4738
4855
|
cabac?: boolean;
|
|
4739
4856
|
/**
|
|
4740
|
-
* Sets the maximum rate the VBV buffer should be assumed to refill at
|
|
4857
|
+
* Sets the maximum rate the VBV buffer should be assumed to refill at (kbit/s)
|
|
4741
4858
|
*/
|
|
4742
4859
|
vbvMaxRate?: number;
|
|
4743
4860
|
/**
|
|
@@ -4839,7 +4956,7 @@ export declare interface X265Codec {
|
|
|
4839
4956
|
*/
|
|
4840
4957
|
frameReference?: number;
|
|
4841
4958
|
/**
|
|
4842
|
-
* Sets the maximum rate the VBV buffer should be assumed to refill at
|
|
4959
|
+
* Sets the maximum rate the VBV buffer should be assumed to refill at (kbit/s)
|
|
4843
4960
|
*/
|
|
4844
4961
|
vbvMaxRate?: number;
|
|
4845
4962
|
/**
|
|
@@ -123,6 +123,10 @@ class SourceMediaNode extends MediaNodeState {
|
|
|
123
123
|
}
|
|
124
124
|
;
|
|
125
125
|
let index = pending.pendingSubscribes.indexOf(subscriber);
|
|
126
|
+
if (index === -1) {
|
|
127
|
+
(0, utils_1.errorlog)("No pending subscriber %s found for ref %s on %s (%d), something went horribly wrong", subscriber.id, context.blockingCallRef, this.id, pending.pendingSubscribes.length);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
126
130
|
pending.pendingSubscribes.splice(index, 1);
|
|
127
131
|
this.maybeAckPendingContext(context);
|
|
128
132
|
};
|