@livedigital/client 3.56.1 → 3.57.0-lk-5354-api-reference.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/README.md +41 -0
- package/dist/Client.d.ts +160 -0
- package/dist/ClientMetaProvider.d.ts +12 -0
- package/dist/EnhancedEventEmitter.d.ts +6 -0
- package/dist/engine/Peer.d.ts +41 -1
- package/dist/engine/WebRTCStats/types.d.ts +8 -0
- package/dist/engine/index.d.ts +1 -1
- package/dist/engine/media/streamEffects/video/esdk/TrackProcessor.d.ts +33 -0
- package/dist/engine/media/tracks/PeerTrack.d.ts +3 -13
- package/dist/index.d.ts +18 -49
- package/dist/index.es.js +2 -2
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/qoe/ScoresCalculator.d.ts +25 -0
- package/dist/qoe/types.d.ts +37 -0
- package/dist/types/client.d.ts +33 -0
- package/dist/types/common.d.ts +147 -2
- package/dist/types/engine.d.ts +42 -0
- package/dist/types/media.d.ts +65 -0
- package/dist/types/network.d.ts +8 -0
- package/dist/types/peerConsumer.d.ts +36 -0
- package/dist/types/peerTrack.d.ts +52 -0
- package/package.json +9 -1
package/dist/types/media.d.ts
CHANGED
|
@@ -36,34 +36,59 @@ export interface BaseTrackParams {
|
|
|
36
36
|
mediaStreamTrack: MediaStreamTrack;
|
|
37
37
|
constraints: MediaStreamConstraints;
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Базовый контракт локального трека, которым управляет SDK.
|
|
41
|
+
*
|
|
42
|
+
* Через него приложение может публиковать медиа, ставить его на паузу,
|
|
43
|
+
* получать техническую статистику и отслеживать состояние публикации.
|
|
44
|
+
*/
|
|
39
45
|
export interface BaseTrack {
|
|
46
|
+
/** Набор событий трека, на которые можно подписаться из приложения. */
|
|
40
47
|
observer: EnhancedEventEmitter;
|
|
41
48
|
mediaStreamTrack: MediaStreamTrack;
|
|
42
49
|
id: string;
|
|
43
50
|
kind: MediaKind;
|
|
51
|
+
/** Показывает, опубликован ли трек в канале прямо сейчас. */
|
|
44
52
|
isPublished: boolean;
|
|
53
|
+
/** Показывает, находится ли трек в paused-состоянии. */
|
|
45
54
|
isPaused: boolean;
|
|
46
55
|
internalEventEmitter: EnhancedEventEmitter<InternalObserverEvents>;
|
|
47
56
|
producerId?: string;
|
|
48
57
|
videoWebRTCStats?: ParsedOutboundVideoStreamStats;
|
|
49
58
|
audioWebRTCStats?: ParsedOutboundAudioStreamStats;
|
|
59
|
+
/** Текущие MOS-оценки качества для этого трека. */
|
|
50
60
|
connectionScores: MOSScores;
|
|
51
61
|
getLabel: () => TrackLabel;
|
|
52
62
|
setLabel: (label: TrackLabel) => void;
|
|
53
63
|
setEncoderConfig: (encoderConfig: EncoderConfig) => void;
|
|
54
64
|
getEncoderConfig: () => EncoderConfig;
|
|
55
65
|
setProducer: (producer: Producer) => void;
|
|
66
|
+
/** Управляет тем, будет ли исходный `MediaStreamTrack` остановлен при паузе или закрытии публикации. */
|
|
56
67
|
setStopTrackOnPause: (value: boolean) => void;
|
|
57
68
|
getProducer: () => Producer | undefined;
|
|
69
|
+
/** Явно останавливает исходный `MediaStreamTrack`, если приложению нужно освободить устройство. */
|
|
58
70
|
stopMediaStreamTrack: () => void;
|
|
71
|
+
/** Закрывает producer, связанный с треком, без удаления самого объекта трека. */
|
|
59
72
|
closeProducer: (stopTrack?: boolean) => Promise<void>;
|
|
73
|
+
/** Меняет сетевой приоритет отправки этого трека. */
|
|
60
74
|
setPriority: (priority: RTCPriorityType) => Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Низкоуровневый вариант публикации трека с явным контролем параметров кодирования.
|
|
77
|
+
*
|
|
78
|
+
* В большинстве сценариев приложению достаточно вызывать `publish()`.
|
|
79
|
+
*/
|
|
61
80
|
produce: ({ encodings, codecOptions, preferredCodec, transformParams, keyFrameRequestDelay, }: TrackProduceParams) => Promise<void>;
|
|
81
|
+
/** Публикует трек в канале, чтобы он стал доступен другим участникам. */
|
|
62
82
|
publish: () => Promise<void>;
|
|
83
|
+
/** Снимает трек с публикации. */
|
|
63
84
|
unpublish: (stopTrack?: boolean) => Promise<void>;
|
|
85
|
+
/** Возобновляет передачу трека после паузы. */
|
|
64
86
|
resume: () => Promise<void>;
|
|
87
|
+
/** Возвращает сводную информацию о треке в формате, удобном для UI и отладки. */
|
|
65
88
|
getInfo: () => Promise<BaseTrackInfo>;
|
|
89
|
+
/** Возвращает техническую WebRTC-статистику опубликованного трека. */
|
|
66
90
|
getStats: () => Promise<TrackOutboundStats | undefined>;
|
|
91
|
+
/** Подменяет исходный `MediaStreamTrack` без пересоздания всего объекта трека. */
|
|
67
92
|
replaceTrack: (track: MediaStreamTrack) => Promise<void>;
|
|
68
93
|
}
|
|
69
94
|
export interface TrackWithEncodings extends BaseTrack {
|
|
@@ -74,29 +99,58 @@ export interface TrackWithEncodings extends BaseTrack {
|
|
|
74
99
|
export interface TrackWithEffects extends BaseTrack {
|
|
75
100
|
isEffectsProcessing: boolean;
|
|
76
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Публичный контракт локального аудиотрека.
|
|
104
|
+
*/
|
|
77
105
|
export interface AudioTrack extends BaseTrack, TrackWithEncodings, TrackWithEffects {
|
|
106
|
+
/** Подключает пользовательский процессор аудиотрека перед публикацией. */
|
|
78
107
|
setTrackProcessor: (trackProcessor?: AudioTrackProcessor) => void;
|
|
108
|
+
/** Убирает ранее установленный пользовательский процессор аудио. */
|
|
79
109
|
unsetTrackProcessor: () => void;
|
|
110
|
+
/** Включает шумоподавление для текущего микрофонного трека. */
|
|
80
111
|
enableNoiseSuppression: () => Promise<void>;
|
|
112
|
+
/** Отключает шумоподавление для текущего микрофонного трека. */
|
|
81
113
|
disableNoiseSuppression: () => Promise<void>;
|
|
114
|
+
/** Ставит аудиотрек на паузу без его удаления из SDK. */
|
|
82
115
|
pause: () => Promise<void>;
|
|
83
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Дополнительные параметры публикации видеотрека.
|
|
119
|
+
*/
|
|
84
120
|
export interface VideoTrackPublishParams {
|
|
121
|
+
/** Задержка перед запросом key frame после публикации или перепубликации трека. */
|
|
85
122
|
keyFrameRequestDelay?: number;
|
|
86
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Публичный контракт локального видеотрека.
|
|
126
|
+
*/
|
|
87
127
|
export interface VideoTrack extends BaseTrack, TrackWithEncodings, TrackWithEffects {
|
|
128
|
+
/** Публикует видеотрек с дополнительными параметрами управления key frame. */
|
|
88
129
|
publish: (params?: VideoTrackPublishParams) => Promise<void>;
|
|
130
|
+
/** Обновляет прикладные параметры трансформации видео, например ожидаемый размер кадра. */
|
|
89
131
|
setTransformParams: (transformParams: object) => void;
|
|
132
|
+
/** Ограничивает максимальный spatial layer для опубликованного видео. */
|
|
90
133
|
setMaxSpatialLayer: (spatialLayer: number) => Promise<void>;
|
|
134
|
+
/** Возвращает текущий верхний spatial layer, доступный для публикации. */
|
|
91
135
|
getMaxSpatialLayer: () => number | undefined;
|
|
136
|
+
/** Включает движок видеоэффектов для трека. */
|
|
92
137
|
enableEffects: () => Promise<void>;
|
|
138
|
+
/** Отключает ранее включённые видеоэффекты. */
|
|
93
139
|
disableEffects: () => Promise<void>;
|
|
140
|
+
/** Применяет набор визуальных эффектов к текущему видеотреку. */
|
|
94
141
|
applyEffects: (effects: Effects) => Promise<void>;
|
|
142
|
+
/** Сбрасывает текущие визуальные эффекты к исходному состоянию. */
|
|
95
143
|
resetEffects: () => void;
|
|
144
|
+
/** Регистрирует callback, который будет вызван после загрузки моделей движка эффектов. */
|
|
96
145
|
setOnLoadModels: (callback: () => void) => void;
|
|
146
|
+
/** Прогресс загрузки моделей эффекторного движка от `0` до `1`. */
|
|
97
147
|
modelsLoadProgress: number;
|
|
148
|
+
/** Ставит видеотрек на паузу без его удаления из SDK. */
|
|
98
149
|
pause: () => Promise<void>;
|
|
99
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Универсальный тип локального трека, который может быть аудио- или видеотреком.
|
|
153
|
+
*/
|
|
100
154
|
export type Track = AudioTrack | VideoTrack;
|
|
101
155
|
export type AudioTrackParams = BaseTrackParams;
|
|
102
156
|
export interface MediaTracksFactory {
|
|
@@ -114,10 +168,21 @@ export type ProducerAppData = AppData & {
|
|
|
114
168
|
codec?: RtpCodecCapability;
|
|
115
169
|
keyFrameRequestDelay?: number;
|
|
116
170
|
};
|
|
171
|
+
/**
|
|
172
|
+
* Параметры предварительной инициализации SDK видеоэффектов.
|
|
173
|
+
*
|
|
174
|
+
* Используются, когда приложение хочет подготовить blur, background replacement
|
|
175
|
+
* и другие эффекты заранее, до первого вызова `videoTrack.enableEffects()`.
|
|
176
|
+
*/
|
|
117
177
|
export interface InitEffectsSDKParams {
|
|
178
|
+
/** Идентификатор клиента, выданный провайдером эффекторного SDK. */
|
|
118
179
|
customerId?: string;
|
|
180
|
+
/** Явный URL JavaScript-ресурсов эффекторного SDK. */
|
|
119
181
|
sdk_url?: string;
|
|
182
|
+
/** Явный URL API эффекторного SDK. */
|
|
120
183
|
api_url?: string;
|
|
184
|
+
/** Локальный каталог, из которого приложение раздаёт модели и WASM-ресурсы. */
|
|
121
185
|
localDir?: string;
|
|
186
|
+
/** Версия пакета моделей и runtime-компонентов, которую нужно использовать. */
|
|
122
187
|
version?: string;
|
|
123
188
|
}
|
package/dist/types/network.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import type { NETWORK_OBSERVER_EVENTS } from '../constants/events';
|
|
2
2
|
export type ExtendedRTCPeerConnectionState = RTCPeerConnectionState | 'reconnected';
|
|
3
3
|
export type TransportDirection = 'send' | 'recv';
|
|
4
|
+
/**
|
|
5
|
+
* Политика выбора ICE-маршрутов для WebRTC-соединений.
|
|
6
|
+
*
|
|
7
|
+
* Значение `all` разрешает использовать все доступные candidate'ы, а `relay`
|
|
8
|
+
* помогает принудительно уйти в TURN-сценарий, если это требуется для отладки
|
|
9
|
+
* или обхода сетевых ограничений.
|
|
10
|
+
*/
|
|
11
|
+
export type IceTransportPolicy = 'all' | 'relay';
|
|
4
12
|
export interface TransportStatePayload {
|
|
5
13
|
state: ExtendedRTCPeerConnectionState;
|
|
6
14
|
direction: TransportDirection;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ConsumerData, SpatialLayerParams, TrackInboundStats } from './common';
|
|
2
|
+
/**
|
|
3
|
+
* Публичная форма consumer-объекта, связанного с удалённым треком.
|
|
4
|
+
*
|
|
5
|
+
* SDK создаёт и обновляет consumer самостоятельно, а приложение может читать
|
|
6
|
+
* его текущее состояние и вызывать публичные операции управления подпиской.
|
|
7
|
+
*/
|
|
8
|
+
export interface PeerConsumer {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly kind: 'audio' | 'video';
|
|
11
|
+
readonly producerId: string;
|
|
12
|
+
readonly appData: ConsumerData;
|
|
13
|
+
readonly paused: boolean;
|
|
14
|
+
readonly isVideo: boolean;
|
|
15
|
+
readonly isAudio: boolean;
|
|
16
|
+
readonly spatialLayers: number;
|
|
17
|
+
readonly temporalLayers: number;
|
|
18
|
+
readonly currentSpatialLayer: number;
|
|
19
|
+
readonly currentTemporalLayer: number;
|
|
20
|
+
readonly requestedSpatialLayer?: number;
|
|
21
|
+
readonly currentMaxSpatialLayer: number;
|
|
22
|
+
readonly availableSpatialLayers: SpatialLayerParams[];
|
|
23
|
+
readonly currentSpatialLayerParams?: SpatialLayerParams;
|
|
24
|
+
pause: () => void;
|
|
25
|
+
resume: () => void;
|
|
26
|
+
close: () => void;
|
|
27
|
+
setCurrentSpatialLayer: (currentSpatialLayer: number) => void;
|
|
28
|
+
setCurrentTemporalLayer: (currentTemporalLayer: number) => void;
|
|
29
|
+
applyLayersUpdate: (payload: {
|
|
30
|
+
spatialLayer?: number;
|
|
31
|
+
temporalLayer?: number;
|
|
32
|
+
}) => void;
|
|
33
|
+
setRequestedSpatialLayer: (spatialLayer: number | undefined) => void;
|
|
34
|
+
setCurrentMaxSpatialLayer: (spatialLayer: number) => void;
|
|
35
|
+
getStats: () => Promise<TrackInboundStats | undefined>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ParsedInboundAudioStreamStats, ParsedInboundVideoStreamStats } from 'webrtc-issue-detector';
|
|
2
|
+
import type EnhancedEventEmitter from '../EnhancedEventEmitter';
|
|
3
|
+
import type { MOSScores } from '../qoe/types';
|
|
4
|
+
import type { PeerTrackInfo, PreferredLayersParams, SpatialLayerParams, TrackLabel } from './common';
|
|
5
|
+
import type { PeerConsumer } from './peerConsumer';
|
|
6
|
+
/**
|
|
7
|
+
* Карта событий удалённого трека, доступная через `peerTrack.observer`.
|
|
8
|
+
*/
|
|
9
|
+
export interface PeerTrackObserverEvents {
|
|
10
|
+
'track-start': [PeerTrack];
|
|
11
|
+
'track-end': [PeerTrack];
|
|
12
|
+
'track-failed': [PeerTrack];
|
|
13
|
+
'track-paused': [PeerTrack];
|
|
14
|
+
'track-resumed': [PeerTrack];
|
|
15
|
+
'volume-changed': [{
|
|
16
|
+
value: number;
|
|
17
|
+
}];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Публичная форма удалённого трека, который SDK возвращает через `peer.tracks`.
|
|
21
|
+
*
|
|
22
|
+
* Экземпляры создаются и управляются самим SDK, а приложение получает их для
|
|
23
|
+
* управления удалённым медиа, чтения статистики и подписки на события трека.
|
|
24
|
+
*/
|
|
25
|
+
export interface PeerTrack {
|
|
26
|
+
readonly label: TrackLabel;
|
|
27
|
+
readonly observer: EnhancedEventEmitter<PeerTrackObserverEvents>;
|
|
28
|
+
readonly mediaStreamTrack: MediaStreamTrack;
|
|
29
|
+
readonly kind: 'audio' | 'video';
|
|
30
|
+
readonly isPaused: boolean;
|
|
31
|
+
readonly isMuted: boolean;
|
|
32
|
+
readonly isRemote: boolean;
|
|
33
|
+
readonly consumerId?: string;
|
|
34
|
+
readonly currentSpatialLayer: number;
|
|
35
|
+
readonly volume: number;
|
|
36
|
+
readonly connectionScores: MOSScores;
|
|
37
|
+
readonly audioWebRTCStats?: ParsedInboundAudioStreamStats;
|
|
38
|
+
readonly videoWebRTCStats?: ParsedInboundVideoStreamStats;
|
|
39
|
+
close: (params?: {
|
|
40
|
+
closeRemote?: boolean;
|
|
41
|
+
}) => Promise<void>;
|
|
42
|
+
mute: () => Promise<void>;
|
|
43
|
+
unmute: () => Promise<void>;
|
|
44
|
+
pause: (pauseRemote?: boolean) => Promise<void>;
|
|
45
|
+
resume: (resumeRemote?: boolean) => Promise<void>;
|
|
46
|
+
requestVideoPreferredLayers: (params: PreferredLayersParams) => Promise<void>;
|
|
47
|
+
requestKeyFrame: () => Promise<void>;
|
|
48
|
+
getVideoAvailableLayers: () => SpatialLayerParams[] | undefined;
|
|
49
|
+
getInfo: () => Promise<PeerTrackInfo>;
|
|
50
|
+
readonly consumer: PeerConsumer | undefined;
|
|
51
|
+
setVolume: (value: number) => void;
|
|
52
|
+
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@livedigital/client",
|
|
3
3
|
"author": "vlprojects",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "3.
|
|
5
|
+
"version": "3.57.0-lk-5354-api-reference.1",
|
|
6
6
|
"private": false,
|
|
7
7
|
"bugs": {
|
|
8
8
|
"url": "https://github.com/vlprojects/livedigital-sdk/issues"
|
|
@@ -25,6 +25,10 @@
|
|
|
25
25
|
"build-proto": "sh ./build-proto.sh",
|
|
26
26
|
"build": "yarn build-proto && yarn generate-signaling-client && rm -rf dist && rollup -c && tsc --importHelpers && cp src/constants/* dist/constants/",
|
|
27
27
|
"generate-signaling-client": "swagger-typescript-api -p ./api/openapi.yaml -o ./src/engine/signalingApiClient -n api.ts --union-enums --axios --route-types",
|
|
28
|
+
"api:check": "api-extractor run --config ./api-extractor.json --typescript-compiler-folder ./node_modules/typescript",
|
|
29
|
+
"api:update": "api-extractor run --local --config ./api-extractor.json --typescript-compiler-folder ./node_modules/typescript",
|
|
30
|
+
"docs:api": "typedoc --options typedoc.json",
|
|
31
|
+
"docs:sync": "yarn build && yarn api:update && yarn docs:api",
|
|
28
32
|
"watch": "rollup -c --sourcemap inline --watch --watch.onEnd='tsc --importHelpers && tsc --importHelpers && cp src/constants/* dist/constants/'",
|
|
29
33
|
"lint": "eslint",
|
|
30
34
|
"test": "NODE_ENV=test mocha --config test/utils/runners/mocha/.mocharc.js"
|
|
@@ -65,6 +69,7 @@
|
|
|
65
69
|
"@rollup/plugin-node-resolve": "^13.0.0",
|
|
66
70
|
"@rollup/plugin-replace": "^3.0.0",
|
|
67
71
|
"@rollup/plugin-typescript": "^12.1.2",
|
|
72
|
+
"@microsoft/api-extractor": "^7.52.13",
|
|
68
73
|
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
69
74
|
"@semantic-release/git": "^10.0.1",
|
|
70
75
|
"@semantic-release/github": "^12.0.2",
|
|
@@ -114,6 +119,9 @@
|
|
|
114
119
|
"ts-node": "^10.4.0",
|
|
115
120
|
"ts-proto": "^2.7.5",
|
|
116
121
|
"tslib": "^2.3.1",
|
|
122
|
+
"typedoc": "^0.28.12",
|
|
123
|
+
"typedoc-docusaurus-theme": "^1.4.2",
|
|
124
|
+
"typedoc-plugin-markdown": "^4.8.1",
|
|
117
125
|
"typescript": "^5.8.3"
|
|
118
126
|
}
|
|
119
127
|
}
|