@rongcloud/plugin-rtc 5.3.12 → 5.3.13

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.
Files changed (66) hide show
  1. package/dist/async-task-queue.d.ts +15 -0
  2. package/dist/core/PolarisReporter.d.ts +35 -0
  3. package/dist/core/RCAudienceClient.d.ts +72 -0
  4. package/dist/core/RCRTCClient.d.ts +220 -0
  5. package/dist/core/constants.d.ts +2 -0
  6. package/dist/core/enums/BackgroundPictureFillMode.d.ts +14 -0
  7. package/dist/core/enums/MixLayoutMode.d.ts +18 -0
  8. package/dist/core/enums/MixVideoRenderMode.d.ts +14 -0
  9. package/dist/core/enums/RCFrameRate.d.ts +7 -0
  10. package/dist/core/enums/RCInnerCDNBroadcast.d.ts +5 -0
  11. package/dist/core/enums/RCInnerCDNModel.d.ts +5 -0
  12. package/dist/core/enums/RCInnerCDNPullIsHttps.d.ts +5 -0
  13. package/dist/core/enums/RCInnerCDNPullKind.d.ts +6 -0
  14. package/dist/core/enums/RCInnerCDNPushMode.d.ts +5 -0
  15. package/dist/core/enums/RCKickType.d.ts +11 -0
  16. package/dist/core/enums/RCLivingRoomType.d.ts +11 -0
  17. package/dist/core/enums/RCLivingType.d.ts +14 -0
  18. package/dist/core/enums/RCMediaType.d.ts +18 -0
  19. package/dist/core/enums/RCMixInputFilterMode.d.ts +35 -0
  20. package/dist/core/enums/RCRTCCode.d.ts +91 -0
  21. package/dist/core/enums/RCRTCLiveRole.d.ts +14 -0
  22. package/dist/core/enums/RCRTCPingResult.d.ts +5 -0
  23. package/dist/core/enums/RCRTCResolution.d.ts +102 -0
  24. package/dist/core/enums/RCResolution.d.ts +16 -0
  25. package/dist/core/enums/inner/PolarisRole.d.ts +14 -0
  26. package/dist/core/enums/inner/R2Action.d.ts +14 -0
  27. package/dist/core/enums/inner/R2Status.d.ts +11 -0
  28. package/dist/core/enums/inner/RCRTCMessageType.d.ts +66 -0
  29. package/dist/core/enums/inner/RCStreamType.d.ts +14 -0
  30. package/dist/core/enums/inner/TrackState.d.ts +14 -0
  31. package/dist/core/interfaces.d.ts +893 -0
  32. package/dist/core/room/Pinger.d.ts +34 -0
  33. package/dist/core/room/RCAbstractRoom.d.ts +379 -0
  34. package/dist/core/room/RCAudienceLivingRoom.d.ts +305 -0
  35. package/dist/core/room/RCAudioLevelReport.d.ts +17 -0
  36. package/dist/core/room/RCLivingPKHandler.d.ts +176 -0
  37. package/dist/core/room/RCLivingRoom.d.ts +145 -0
  38. package/dist/core/room/RCLocalMediaStream.d.ts +8 -0
  39. package/dist/core/room/RCMCUConfigBuilder.d.ts +207 -0
  40. package/dist/core/room/RCRTCRoom.d.ts +11 -0
  41. package/dist/core/service/RCMediaService.d.ts +96 -0
  42. package/dist/core/service/helper.d.ts +8 -0
  43. package/dist/core/service/index.d.ts +6 -0
  44. package/dist/core/service/interface.d.ts +311 -0
  45. package/dist/core/service/mcu-interface.d.ts +290 -0
  46. package/dist/core/tracks/RCLocalTrack.d.ts +108 -0
  47. package/dist/core/tracks/RCRemoteTrack.d.ts +23 -0
  48. package/dist/core/tracks/RCTrack.d.ts +80 -0
  49. package/dist/core/webrtc/ASdpStrategy.d.ts +43 -0
  50. package/dist/core/webrtc/PlanBStrategy.d.ts +25 -0
  51. package/dist/core/webrtc/RCRTCPeerConnection.d.ts +80 -0
  52. package/dist/core/webrtc/UnifiedPlanStrategy.d.ts +20 -0
  53. package/dist/core/webrtc/helper.d.ts +26 -0
  54. package/dist/core/webrtc/stat-parser/AbstractStatParser.d.ts +116 -0
  55. package/dist/core/webrtc/stat-parser/ChromeStatParser.d.ts +14 -0
  56. package/dist/core/webrtc/stat-parser/FirefoxStatParser.d.ts +14 -0
  57. package/dist/core/webrtc/stat-parser/IStatParser.d.ts +24 -0
  58. package/dist/core/webrtc/stat-parser/SafariStatParser.d.ts +14 -0
  59. package/dist/device.d.ts +6 -0
  60. package/dist/helper.d.ts +176 -0
  61. package/dist/index.d.ts +26 -7
  62. package/dist/index.esm.js +1 -1
  63. package/dist/index.js +1 -1
  64. package/dist/index.umd.js +1 -1
  65. package/dist/logger.d.ts +4 -0
  66. package/package.json +2 -2
@@ -0,0 +1,34 @@
1
+ import { RTCMode, RTCPluginContext } from '@rongcloud/engine';
2
+ import { RCRTCPingResult } from '../enums/RCRTCPingResult';
3
+ /**
4
+ * RTCPing 类,累计 1 分钟未能正确收到 Ping 值则认为 ping 失败
5
+ */
6
+ export default class Pinger {
7
+ private readonly _roomId;
8
+ private readonly _roomMode;
9
+ private readonly _context;
10
+ private readonly _gap;
11
+ /**
12
+ * 记录最近一次成功的 Ping 时间戳
13
+ */
14
+ private _latestTimestamp;
15
+ constructor(_roomId: string, _roomMode: RTCMode, _context: RTCPluginContext, _gap?: number);
16
+ /**
17
+ * Ping 失败回调,当失败次数超出 `MAX_FAILED` 时,该方法将被调用
18
+ */
19
+ onFailed?(byServer: boolean): void;
20
+ /**
21
+ * 单次 ping 结果
22
+ */
23
+ onPingResult?(result: RCRTCPingResult): void;
24
+ private _started;
25
+ private _timer;
26
+ /**
27
+ * 启动 Ping
28
+ */
29
+ start(): void;
30
+ private _sendPing;
31
+ private _checkAlive;
32
+ stop(): void;
33
+ }
34
+ //# sourceMappingURL=Pinger.d.ts.map
@@ -0,0 +1,379 @@
1
+ import { IJoinRTCRoomData, IReceivedMessage, RTCMode, RTCPluginContext, KVString, IRuntime } from '@rongcloud/engine';
2
+ import { IPublishedResource, IPublishAttrs, IRCRTCReportListener, IRoomEventListener, ISubscribeAttr, IRCRTCInitOptions, IAudioLevelChangeHandler, RoomData } from '../interfaces';
3
+ import { IExchangeReqBody, IRTCReqHeader, RCMediaService } from '../service';
4
+ import RCRTCPeerConnection from '../webrtc/RCRTCPeerConnection';
5
+ import PolarisReporter from '../PolarisReporter';
6
+ import { RCLocalTrack } from '../tracks/RCLocalTrack';
7
+ import { RCRemoteTrack } from '../tracks/RCRemoteTrack';
8
+ import { RCRTCCode } from '../enums/RCRTCCode';
9
+ import { RCLivingType } from '../enums/RCLivingType';
10
+ import { IOnRecvPKMsg } from './RCLivingPKHandler';
11
+ export interface IPushOtherRooms {
12
+ roomId: string;
13
+ autoMix: boolean;
14
+ sessionId: string;
15
+ }
16
+ /**
17
+ * 房间抽象基类
18
+ */
19
+ export default abstract class RCAbstractRoom {
20
+ protected readonly _context: RTCPluginContext;
21
+ private readonly _runtime;
22
+ readonly _roomId: string;
23
+ protected readonly _roomMode: RTCMode;
24
+ protected readonly _service: RCMediaService;
25
+ protected readonly _initOptions: IRCRTCInitOptions;
26
+ private readonly _ntfClearRoomItem;
27
+ protected _isMainRoom?: boolean | undefined;
28
+ /**
29
+ * 房间资源数据
30
+ */
31
+ protected readonly _roomResources: RoomData;
32
+ /**
33
+ * 远端 track
34
+ */
35
+ private _remoteTracks;
36
+ /**
37
+ * 已订阅参数
38
+ */
39
+ protected readonly _subscribedList: ISubscribeAttr[];
40
+ /**
41
+ * 房间保活 rtcPing
42
+ */
43
+ private readonly _pinger;
44
+ /**
45
+ * 与 MediaServer 交互需要的 token 信息
46
+ */
47
+ protected readonly _token: string;
48
+ /**
49
+ * 每次加入房间后都会改变
50
+ */
51
+ private readonly _sessionId;
52
+ /**
53
+ * PeerConnection 连接实例
54
+ */
55
+ protected readonly _pc: RCRTCPeerConnection;
56
+ private _destroyed;
57
+ /**
58
+ * 北极星上报实例
59
+ */
60
+ protected _polarisReport: PolarisReporter | null;
61
+ /**
62
+ * 音量上报实例
63
+ */
64
+ private _audioLevelReport;
65
+ constructor(_context: RTCPluginContext, _runtime: IRuntime, _roomId: string, data: IJoinRTCRoomData, _roomMode: RTCMode, _service: RCMediaService, _initOptions: IRCRTCInitOptions, _ntfClearRoomItem: Function, isUpgrade?: boolean, _isMainRoom?: boolean | undefined);
66
+ private _initRemoteTracks;
67
+ private _handlePingResult;
68
+ /**
69
+ * 设置房间上行资源的总码率配置
70
+ * @description
71
+ * * 自 v5.1.0 版本开始,推荐使用 `RCLocalTrack.setBitrate` 对不同流分别指定码率。
72
+ * * 该方法仅在 SDP `plan-b` 协议下(Chrome 92 与 Safari 11 之前的版本)有效。
73
+ * @param max 音视频发送码率上限,不可小于 200 且不可小于 `min`
74
+ * @param min 音视频发送码率下限,默认值为 1,且不可小于 1,不可大于 `max`
75
+ * @param start 起始码率,默认为码率上限的 70%
76
+ */
77
+ setBitrate(max: number, min: number, start?: number): void;
78
+ private _onTrackReady;
79
+ protected _callAppListener(eventType: keyof IRoomEventListener, ...attrs: any[]): void;
80
+ private _onUserUnpublish;
81
+ private _onTrackUnpublish;
82
+ private _unpublishPrev;
83
+ __parseInnerMessage(message: IReceivedMessage): boolean;
84
+ private msgTaskQueue;
85
+ /**
86
+ * 被踢出房间通知
87
+ * @param byServer
88
+ * * 当值为 false 时,说明本端 rtcPing 超时
89
+ * * 当值为 true 时,说明本端收到被踢出房间通知
90
+ */
91
+ private _kickoff;
92
+ private _rtcpeerClosed;
93
+ /**
94
+ * 处理资源变更事件
95
+ * @param content
96
+ * @param messageType 消息类型
97
+ * @param userId 消息发送者
98
+ */
99
+ protected _resourceHandle(content: {
100
+ /**
101
+ * 旧版本兼容参数,当收到非 `RTCMessageName.TOTAL_CONTENT_RESOURCE` 时:
102
+ * * ignore 值为 `true` 表示该消息由 signal server 向旧版本 RTCLib 提供的兼容消息,无需处理
103
+ * * 否则认为该消息是由旧版本 RTCLib 主动发出的增量变更消息,需要处理
104
+ */
105
+ ignore?: boolean;
106
+ /**
107
+ * 发布到房间内的资源列表,`RTCMessageName.TOTAL_CONTENT_RESOURCE` 消息携带全量数据,否则为增量数据
108
+ */
109
+ uris: IPublishedResource[];
110
+ }, messageType: string, userId: string): Promise<void>;
111
+ private _onTrackPublish;
112
+ /**
113
+ * 处理 `RCRTCMessageType.STATE` 消息
114
+ * @param content
115
+ */
116
+ private _stateHandle;
117
+ /**
118
+ * 获取房间 Id
119
+ */
120
+ getRoomId(): string;
121
+ /**
122
+ * 获取当前 userId
123
+ */
124
+ getCrtUserId(): string;
125
+ /**
126
+ * 获取 _pc 实例
127
+ */
128
+ __getPC(): RCRTCPeerConnection;
129
+ /**
130
+ * 获取远程用户列表,不包含当前用户
131
+ */
132
+ getRemoteUserIds(): string[];
133
+ /**
134
+ * 获取所有房间已发布的远端资源列表
135
+ * @returns
136
+ */
137
+ getRemoteTracks(): RCRemoteTrack[];
138
+ /**
139
+ * 获取远端用户的资源列表
140
+ * @param userId
141
+ * @returns
142
+ */
143
+ getRemoteTracksByUserId(userId: string): RCRemoteTrack[];
144
+ /**
145
+ * 获取房间当前会话 Id,当房间内已无成员时房间会回收,重新加入时 sessionId 将更新
146
+ */
147
+ getSessionId(): string;
148
+ /**
149
+ * 向房间内发消息
150
+ * @param name 消息名称
151
+ * @param content 消息内容
152
+ */
153
+ sendMessage(name: string, content: any): Promise<{
154
+ code: RCRTCCode;
155
+ }>;
156
+ /**
157
+ * 设置房间属性
158
+ * @param key 属性名
159
+ * @param value 属性值
160
+ * @param message 是否在设置属性的时候携带消息内容,传空则不往房间中发送消息
161
+ * @param isInner RTC 业务内部使用参数,用户忽略
162
+ */
163
+ setRoomAttribute(key: string, value: string, message?: {
164
+ name: string;
165
+ content: string;
166
+ }, isInner?: boolean): Promise<{
167
+ code: RCRTCCode;
168
+ }>;
169
+ /**
170
+ * 删除房间属性
171
+ * @param keys 待删除的属性名数组
172
+ * @param message 是否在删除属性的时候携带消息内容,传空则不往房间中发送消息
173
+ * @param isInner RTC 业务内部使用参数,用户忽略
174
+ */
175
+ deleteRoomAttributes(keys: string[], message?: {
176
+ name: string;
177
+ content: string;
178
+ }, isInner?: boolean): Promise<{
179
+ code: RCRTCCode;
180
+ }>;
181
+ /**
182
+ * 获取房间属性
183
+ * @param keys 要查询的属性名数组,当数组长度为空时,取所有已设置的 kv 值
184
+ * @param isInner RTC 业务内部使用参数,用户忽略
185
+ */
186
+ getRoomAttributes(keys?: string[], isInner?: boolean): Promise<{
187
+ code: RCRTCCode;
188
+ data?: KVString;
189
+ }>;
190
+ /**
191
+ * 设置当前用户属性(暂不开放)
192
+ * @param key 属性名
193
+ * @param value 属性值
194
+ * @param message 是否在设置属性的时候携带消息内容,传空则不往房间中发送消息
195
+ */
196
+ private _setUserAttributeValue;
197
+ /**
198
+ * 删除当前用户属性(暂不开放)
199
+ * @param keys 待删除的属性名数组
200
+ * @param message 是否在删除属性的时候携带消息内容,传空则不往房间中发送消息
201
+ */
202
+ private _deleteUserAttributes;
203
+ /**
204
+ * 获取当前用户属性(暂不开放)
205
+ * @param keys 要查询的属性名数组
206
+ */
207
+ private _getUserAttributes;
208
+ /**
209
+ * 查询房间是否已销毁
210
+ */
211
+ isDestroyed(): boolean;
212
+ /**
213
+ * 退出并销毁当前房间实例,退出后该房间的所有方法将不可用
214
+ */
215
+ __destroy(quitRoom: boolean): Promise<void>;
216
+ /**
217
+ * 退出房间之前禁用所有远端资源,避免退出动作耗时过长,
218
+ * 导致在未完全退出的过程中仍能听到房间内的声音问题
219
+ */
220
+ private _muteRemoteTracksBeforeQuit;
221
+ private _leaveHandle;
222
+ private _onLocalTrackDestroied;
223
+ /**
224
+ * 本端流状态修改,需通知房间内其他成员
225
+ * @param localTrack
226
+ */
227
+ private _onLocalTrackMuted;
228
+ /**
229
+ * 发布默认流,默认流的 TAG 为 `RongCloudRTC`,分辨率 640*480,帧率 15 帧
230
+ * @param pubTiny 是否同步发小流
231
+ */
232
+ /**
233
+ * 从 pc 移除当次发布失败的资源
234
+ */
235
+ private _removePubFailedTracks;
236
+ /**
237
+ * 增量发布资源,若发布的资源 tag 及媒体类型重复,后者将覆盖前者进行发布。
238
+ * @param tracks 待发布的 RCLocalTrack 实例
239
+ * @returns
240
+ */
241
+ publish(tracks: (RCLocalTrack | IPublishAttrs)[]): Promise<{
242
+ code: RCRTCCode;
243
+ liveUrl?: string;
244
+ }>;
245
+ private __publish;
246
+ /**
247
+ * 获取跨房间连麦需携带参数 pushOtherRooms 的值
248
+ */
249
+ protected _getPushOtherRoomsParams(): IPushOtherRooms[];
250
+ /**
251
+ * ice 断线后,尝试重新走 exchange
252
+ */
253
+ protected _reTryExchange(): Promise<void>;
254
+ protected _exchangeHandle(body: IExchangeReqBody): Promise<{
255
+ code: RCRTCCode;
256
+ data?: import("../service").IExchangeResponse | undefined;
257
+ }>;
258
+ protected _getRTCReqestHeaders(): IRTCReqHeader;
259
+ /**
260
+ * 获取 exchange 接口的请求体数据
261
+ * @param subscribeList 订阅清单
262
+ * @param iceRestart
263
+ */
264
+ protected _createExchangeParams(subscribeList: ISubscribeAttr[], iceRestart: boolean): Promise<IExchangeReqBody>;
265
+ /**
266
+ * 获取已发布资源的 state 数据
267
+ * @param trackId
268
+ */
269
+ private _getResourceState;
270
+ /**
271
+ * 增量取消资源发布,若相应资源中存在小流资源,则同时取消发布
272
+ * @param resourceIds 取消发布的资源 Id 列表
273
+ */
274
+ unpublish(tracks: RCLocalTrack[]): Promise<{
275
+ code: RCRTCCode;
276
+ }>;
277
+ private __unpublish;
278
+ /**
279
+ * 根据资源 Id 获取资源数据
280
+ * @param resourceId
281
+ */
282
+ private _getResourceById;
283
+ /**
284
+ * resourceId 有效性验证
285
+ * @param resourceId
286
+ */
287
+ protected _isValidResourceId(resourceId: string): boolean;
288
+ /**
289
+ * 订阅资源
290
+ * @param tracks
291
+ */
292
+ subscribe(tracks: (RCRemoteTrack | ISubscribeAttr)[]): Promise<{
293
+ code: RCRTCCode;
294
+ failedList?: ISubscribeAttr[];
295
+ }>;
296
+ private __subscribe;
297
+ /**
298
+ * 取消订阅资源
299
+ * @param tracks 预取消远端资源
300
+ */
301
+ unsubscribe(tracks: RCRemoteTrack[]): Promise<{
302
+ code: RCRTCCode;
303
+ failedList?: ISubscribeAttr[];
304
+ }>;
305
+ private __unsubscribe;
306
+ protected _assertRoomDestroyed(): RCRTCCode | undefined;
307
+ /**
308
+ * 获取已发布的本地资源
309
+ * @param trackId
310
+ * @returns
311
+ */
312
+ getLocalTrack(trackId: string): RCLocalTrack | null;
313
+ /**
314
+ * 获取所有已发布的资源
315
+ */
316
+ getLocalTracks(): RCLocalTrack[];
317
+ /**
318
+ * 根据 trackId 获取房间内的远端资源
319
+ * @param trackId
320
+ * @returns
321
+ */
322
+ getRemoteTrack(trackId: string): RCRemoteTrack | null;
323
+ /**
324
+ * 强制修改订阅列表,仅订阅数组中的资源,取消订阅其他已订阅资源。
325
+ * 当参数为 `[]` 时,意味着不再订阅任何资源
326
+ * @param tracks 变更的资源列表
327
+ */
328
+ updateSubList(tracks: (RCRemoteTrack | ISubscribeAttr)[]): Promise<{
329
+ code: RCRTCCode;
330
+ }>;
331
+ private _updateSubListHandle;
332
+ private _appListener;
333
+ /**
334
+ * 注册事件监听器,多次注册会导致后者覆盖前者,可以通过使用 `registerRoomEventListener(null)` 取消注册
335
+ * @param listener
336
+ */
337
+ registerRoomEventListener(listener: IRoomEventListener | null): void;
338
+ /**
339
+ * 注册房间数据监控
340
+ * @param listener
341
+ * @description 该方法暂仅支持 Chrome 浏览器
342
+ */
343
+ registerReportListener(listener: IRCRTCReportListener | null): void;
344
+ /**
345
+ * 音量上报
346
+ * @param handler 业务端传入的音量上报事件
347
+ * @param gap 上报时间间隔
348
+ */
349
+ onAudioLevelChange(handler: IAudioLevelChangeHandler | null, gap?: number): void;
350
+ /**
351
+ * 断线重连后尝试补发断线过程中的通知信息
352
+ */
353
+ __onReconnected(livingType?: RCLivingType): Promise<{
354
+ data: IJoinRTCRoomData | undefined;
355
+ } | void>;
356
+ private _onAudioMuteChange;
357
+ private _onVideoMuteChange;
358
+ /**
359
+ * 观众切换为主播后直接处理人员变更及资源变更
360
+ */
361
+ protected _afterChangedRole(data: IJoinRTCRoomData): void;
362
+ /**
363
+ * 销毁远端资源
364
+ */
365
+ private _removeRemoteTracks;
366
+ /**
367
+ * 存储连麦监听事件
368
+ */
369
+ private _onRecvPKMsg;
370
+ /**
371
+ * 注册 PK 业务监听方法
372
+ */
373
+ protected _registerPKMsgListener(listener: IOnRecvPKMsg | null): void;
374
+ /**
375
+ * 退出 PK 房间
376
+ */
377
+ protected _quitAllPKRoom(): void;
378
+ }
379
+ //# sourceMappingURL=RCAbstractRoom.d.ts.map