@rongcloud/plugin-rtc 5.5.5-beem.1 → 5.5.5

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 (114) hide show
  1. package/dist/async-task-queue.d.ts +9 -0
  2. package/dist/core/Invoker.d.ts +55 -0
  3. package/dist/core/PolarisReporter.d.ts +36 -0
  4. package/dist/core/RCAudienceClient.d.ts +90 -0
  5. package/dist/core/RCMediaStreamCapture.d.ts +124 -0
  6. package/dist/core/RCRTCClient.d.ts +148 -0
  7. package/dist/core/Store.d.ts +86 -0
  8. package/dist/core/codec/RTCContext.d.ts +76 -0
  9. package/dist/core/codec/interface.d.ts +168 -0
  10. package/dist/core/codec/proto.d.ts +94 -0
  11. package/dist/core/codec/rtc-helper.d.ts +17 -0
  12. package/dist/core/command/AsyncCommand.d.ts +55 -0
  13. package/dist/core/command/AsyncSubscribeCommand.d.ts +28 -0
  14. package/dist/core/command/AsyncUnsubscribeCommand.d.ts +28 -0
  15. package/dist/core/command/AsyncUpdateSubscribeListCommand.d.ts +25 -0
  16. package/dist/core/command/BaseCommand.d.ts +31 -0
  17. package/dist/core/command/EnabelInnerCDNCommand.d.ts +16 -0
  18. package/dist/core/command/ExchangeCommand.d.ts +18 -0
  19. package/dist/core/command/ExchangeWithPushOtherRoomCommand.d.ts +22 -0
  20. package/dist/core/command/JoinRoomCommand.d.ts +31 -0
  21. package/dist/core/command/LeaveOtherRoomCommand.d.ts +32 -0
  22. package/dist/core/command/LocalTrackMuteCommand.d.ts +18 -0
  23. package/dist/core/command/MCUConfigFlushCommand.d.ts +18 -0
  24. package/dist/core/command/OnRemoteUserUnpubCommand.d.ts +13 -0
  25. package/dist/core/command/OnSignalReconnectedCommand.d.ts +38 -0
  26. package/dist/core/command/ParseRemoteResCommand.d.ts +38 -0
  27. package/dist/core/command/ParseUserStateCommand.d.ts +57 -0
  28. package/dist/core/command/PubCommand.d.ts +34 -0
  29. package/dist/core/command/PublishCommand.d.ts +36 -0
  30. package/dist/core/command/RTCIdentityChangeCommand.d.ts +18 -0
  31. package/dist/core/command/RetryExchangeCommand.d.ts +18 -0
  32. package/dist/core/command/SubscribeCommand.d.ts +21 -0
  33. package/dist/core/command/UnpublishCommand.d.ts +22 -0
  34. package/dist/core/command/UnpublishPrevCommand.d.ts +11 -0
  35. package/dist/core/command/UnsubscribeCommand.d.ts +20 -0
  36. package/dist/core/command/UpdateSubscribeListCommand.d.ts +28 -0
  37. package/dist/core/command/helper.d.ts +20 -0
  38. package/dist/core/constants.d.ts +4 -0
  39. package/dist/core/enums/BackgroundPictureFillMode.d.ts +14 -0
  40. package/dist/core/enums/MixLayoutMode.d.ts +18 -0
  41. package/dist/core/enums/MixVideoRenderMode.d.ts +14 -0
  42. package/dist/core/enums/RCBitrate.d.ts +48 -0
  43. package/dist/core/enums/RCCommandKind.d.ts +12 -0
  44. package/dist/core/enums/RCFrameRate.d.ts +7 -0
  45. package/dist/core/enums/RCInnerCDNBroadcast.d.ts +5 -0
  46. package/dist/core/enums/RCInnerCDNModel.d.ts +5 -0
  47. package/dist/core/enums/RCInnerCDNPullIsHttps.d.ts +5 -0
  48. package/dist/core/enums/RCInnerCDNPullKind.d.ts +6 -0
  49. package/dist/core/enums/RCInnerCDNPushMode.d.ts +5 -0
  50. package/dist/core/enums/RCKickType.d.ts +11 -0
  51. package/dist/core/enums/RCLinkedListPoint.d.ts +6 -0
  52. package/dist/core/enums/RCLivingType.d.ts +14 -0
  53. package/dist/core/enums/RCLoggerTag.d.ts +649 -0
  54. package/dist/core/enums/RCMediaType.d.ts +18 -0
  55. package/dist/core/enums/RCMixInputFilterMode.d.ts +35 -0
  56. package/dist/core/enums/RCRTCCode.d.ts +93 -0
  57. package/dist/core/enums/RCRTCLiveRole.d.ts +14 -0
  58. package/dist/core/enums/RCRTCPingResult.d.ts +5 -0
  59. package/dist/core/enums/RCRTCResolution.d.ts +132 -0
  60. package/dist/core/enums/RCResolution.d.ts +21 -0
  61. package/dist/core/enums/RTCJoinType.d.ts +18 -0
  62. package/dist/core/enums/RTCMode.d.ts +22 -0
  63. package/dist/core/enums/inner/LiveRole.d.ts +11 -0
  64. package/dist/core/enums/inner/LiveType.d.ts +14 -0
  65. package/dist/core/enums/inner/PolarisRole.d.ts +14 -0
  66. package/dist/core/enums/inner/R2Action.d.ts +14 -0
  67. package/dist/core/enums/inner/R2Status.d.ts +11 -0
  68. package/dist/core/enums/inner/RCRTCMessageType.d.ts +70 -0
  69. package/dist/core/enums/inner/RCStreamType.d.ts +14 -0
  70. package/dist/core/enums/inner/RTCApiType.d.ts +5 -0
  71. package/dist/core/enums/inner/RTCIdentityChangeType.d.ts +5 -0
  72. package/dist/core/enums/inner/TrackState.d.ts +14 -0
  73. package/dist/core/interfaces.d.ts +942 -0
  74. package/dist/core/room/Pinger.d.ts +36 -0
  75. package/dist/core/room/RCAbstractRoom.d.ts +354 -0
  76. package/dist/core/room/RCAudienceLivingRoom.d.ts +334 -0
  77. package/dist/core/room/RCAudioLevelReport.d.ts +16 -0
  78. package/dist/core/room/RCLivingPKHandler.d.ts +165 -0
  79. package/dist/core/room/RCLivingRoom.d.ts +112 -0
  80. package/dist/core/room/RCLocalMediaStream.d.ts +8 -0
  81. package/dist/core/room/RCMCUConfigBuilder.d.ts +211 -0
  82. package/dist/core/room/RCRTCRoom.d.ts +17 -0
  83. package/dist/core/service/RCMediaService.d.ts +121 -0
  84. package/dist/core/service/helper.d.ts +18 -0
  85. package/dist/core/service/index.d.ts +6 -0
  86. package/dist/core/service/interface.d.ts +328 -0
  87. package/dist/core/service/mcu-interface.d.ts +293 -0
  88. package/dist/core/tracks/RC3AnoiseTrack.d.ts +27 -0
  89. package/dist/core/tracks/RCLocalTrack.d.ts +143 -0
  90. package/dist/core/tracks/RCRemoteTrack.d.ts +29 -0
  91. package/dist/core/tracks/RCTrack.d.ts +95 -0
  92. package/dist/core/webrtc/RCRTCPeerCManager.d.ts +161 -0
  93. package/dist/core/webrtc/RCRTCPeerConnection.d.ts +112 -0
  94. package/dist/core/webrtc/helper.d.ts +26 -0
  95. package/dist/core/webrtc/sdp/ASdpBuilder.d.ts +120 -0
  96. package/dist/core/webrtc/sdp/ASdpStrategy.d.ts +53 -0
  97. package/dist/core/webrtc/sdp/PlanBSdpBuilder.d.ts +20 -0
  98. package/dist/core/webrtc/sdp/PlanBStrategy.d.ts +26 -0
  99. package/dist/core/webrtc/sdp/SDPUtils.d.ts +60 -0
  100. package/dist/core/webrtc/sdp/UnifiedPlanSdpBuilder.d.ts +11 -0
  101. package/dist/core/webrtc/sdp/UnifiedPlanStrategy.d.ts +25 -0
  102. package/dist/core/webrtc/stat-parser/AbstractStatParser.d.ts +117 -0
  103. package/dist/core/webrtc/stat-parser/ChromeStatParser.d.ts +14 -0
  104. package/dist/core/webrtc/stat-parser/FirefoxStatParser.d.ts +14 -0
  105. package/dist/core/webrtc/stat-parser/IStatParser.d.ts +24 -0
  106. package/dist/core/webrtc/stat-parser/SafariStatParser.d.ts +14 -0
  107. package/dist/device.d.ts +6 -0
  108. package/dist/helper.d.ts +195 -0
  109. package/dist/index.d.ts +39 -524
  110. package/dist/index.esm.js +15 -28870
  111. package/dist/index.js +15 -28899
  112. package/dist/index.umd.js +15 -28903
  113. package/dist/logger.d.ts +4 -0
  114. package/package.json +5 -2
@@ -0,0 +1,9 @@
1
+ export declare type AsyncTask<T = void> = () => Promise<T>;
2
+ /**
3
+ * 将异步任务推送到异步队列,队列内任务先进先出,依次执行,执行完成后通过
4
+ * Promise.resolve 返回执行结果
5
+ * @param task 传参不能是 `async () => {}` 所定义的异步函数,
6
+ * 只能使用明确的 `() => Promise<T> | T` 形式,避免转义时微任务被提前执行
7
+ */
8
+ export declare const push: <T>(task: AsyncTask<T>, name?: string) => Promise<T>;
9
+ //# sourceMappingURL=async-task-queue.d.ts.map
@@ -0,0 +1,55 @@
1
+ import { BaseCommand } from './command/BaseCommand';
2
+ import { RCRTCCode } from './enums/RCRTCCode';
3
+ import PolarisReporter from './PolarisReporter';
4
+ import { RCMediaService } from './service';
5
+ import { ReadableStore, Store } from './Store';
6
+ import RCRTCPeerCManager from './webrtc/RCRTCPeerCManager';
7
+ import { RTCContext } from './codec/RTCContext';
8
+ import { RTCMode } from './enums/RTCMode';
9
+ export declare class BaseInvoker<STORE> {
10
+ /**
11
+ * 内存数据管理实例
12
+ */
13
+ protected readonly _store: STORE;
14
+ /**
15
+ * 命令终止时返回的错误码定义
16
+ */
17
+ private abortCode;
18
+ constructor(
19
+ /**
20
+ * 内存数据管理实例
21
+ */
22
+ _store: STORE,
23
+ /**
24
+ * 命令终止时返回的错误码定义
25
+ */
26
+ abortCode: RCRTCCode);
27
+ private _queue;
28
+ private _busy;
29
+ private _next;
30
+ private _execute;
31
+ push<R>(command: BaseCommand<R, STORE>): Promise<R>;
32
+ private _isDestroyed;
33
+ /**
34
+ * 查找出 RCCommandKind.AsyncCommand 类型的 Command,并将其从队列中删除
35
+ * 并使用最新的一次 Command 接管它的 resolve & reject
36
+ * @param resolve
37
+ * @param reject
38
+ * @returns 具有两个属性的对象,resolve 和 reject。
39
+ */
40
+ private commandOffset;
41
+ isDestroyed(): boolean;
42
+ destroy(): void;
43
+ }
44
+ /**
45
+ * 房间任务队列管理
46
+ */
47
+ export declare class Invoker extends BaseInvoker<Store> {
48
+ constructor(context: RTCContext, service: RCMediaService, peerMrg: RCRTCPeerCManager, roomId: string, crtUserId: string, mode: RTCMode, reporter: PolarisReporter, isUpgrade?: boolean, isMainRoom?: boolean);
49
+ /**
50
+ * 获取 store 存储实例,返回值类型 `ReadableStore`,避免非 command 定义中修改内存
51
+ */
52
+ get store(): ReadableStore;
53
+ destroy(): void;
54
+ }
55
+ //# sourceMappingURL=Invoker.d.ts.map
@@ -0,0 +1,36 @@
1
+ import { IRuntime } from '@rongcloud/engine';
2
+ import { IInnerRCRTCStateReport } from './interfaces';
3
+ import RCAbstractRoom from './room/RCAbstractRoom';
4
+ import RCAudienceLivingRoom from './room/RCAudienceLivingRoom';
5
+ import { PolarisRole } from './enums/inner/PolarisRole';
6
+ import { RTCContext } from './codec/RTCContext';
7
+ export default class PolarisReporter {
8
+ private readonly _context;
9
+ private readonly _runtime;
10
+ private readonly _roomId;
11
+ private readonly _crtRTCRoom;
12
+ private readonly _userRole;
13
+ constructor(_context: RTCContext, _runtime: IRuntime, _roomId: string, _crtRTCRoom: RCAbstractRoom | RCAudienceLivingRoom, _userRole?: PolarisRole);
14
+ private _send;
15
+ private _getClientID;
16
+ /**
17
+ * 小流需去掉 _tiny,小流 resourceId 为 userId_tag_mediaType_tiny
18
+ */
19
+ private _getRealResourceId;
20
+ /**
21
+ * 生成北极星上报的 trackId
22
+ * @param resourceId userId_11_1_tiny 改为 userId_11_tiny_video
23
+ */
24
+ private _getPolarisTrackId;
25
+ sendR3R4Data(data: IInnerRCRTCStateReport): Promise<boolean>;
26
+ /**
27
+ * 加入房间
28
+ */
29
+ sendR1(): void;
30
+ /**
31
+ * RTC 和 LIVE 发布、取消发布
32
+ * RTC 订阅、取消订阅
33
+ */
34
+ sendR2(action: string, status: string, trackIds: string[]): void;
35
+ }
36
+ //# sourceMappingURL=PolarisReporter.d.ts.map
@@ -0,0 +1,90 @@
1
+ import { IRuntime } from '@rongcloud/engine';
2
+ import { IRCRTCReportListener, IRCRTCTrackEventListener, IRCRTCInitOptions } from './interfaces';
3
+ import { RCRemoteTrack } from './tracks/RCRemoteTrack';
4
+ import { RCLivingType } from './enums/RCLivingType';
5
+ import { RCRTCCode } from './enums/RCRTCCode';
6
+ import { RCMediaType } from './enums/RCMediaType';
7
+ import { RTCContext } from './codec/RTCContext';
8
+ /**
9
+ * 直播观众客户端
10
+ */
11
+ export default class RCAudienceClient {
12
+ private readonly _context;
13
+ /**
14
+ * 是否使用多 peerConnection
15
+ */
16
+ private readonly _useMutilPeerC?;
17
+ private _pc;
18
+ private _service;
19
+ /**
20
+ * RTCToken
21
+ */
22
+ private _rtcToken;
23
+ /**
24
+ * 已订阅的资源信息
25
+ */
26
+ private _liveUrl;
27
+ /**
28
+ * 已订阅的远端流
29
+ */
30
+ private readonly _subTracks;
31
+ /**
32
+ * 客户端传入的数据上报事件
33
+ */
34
+ private _reportListener;
35
+ /**
36
+ * 使用的 peerConnection 对应 id
37
+ */
38
+ private _pcName;
39
+ /**
40
+ * peerConnection 管理类
41
+ */
42
+ private _peerCManager;
43
+ private readonly _clientSessionId;
44
+ constructor(_context: RTCContext, runtime: IRuntime, _initOption: IRCRTCInitOptions,
45
+ /**
46
+ * 是否使用多 peerConnection
47
+ */
48
+ _useMutilPeerC?: boolean | undefined);
49
+ private _getReqHeaders;
50
+ private _clearSubscribeInfo;
51
+ private _livingType;
52
+ private _mediaType;
53
+ private _subTiny;
54
+ private _fromRetry;
55
+ private _reTryExchange;
56
+ /**
57
+ * 直播观众订阅主播资源,直播观众端无需加入房间
58
+ * @param liveUrl 直播资源地址
59
+ * @param livingType 直播类型,有效值为音频、音视频
60
+ * @param mediaType 订阅资源类型,其有效值为 `RCMediaType` 的枚举值
61
+ * @param subTiny 当值为 `true` 时将订阅小流,否则订阅大流。默认值为 `false`
62
+ */
63
+ subscribe(liveUrl: string, livingType: RCLivingType, mediaType: RCMediaType, subTiny?: boolean): Promise<{
64
+ code: RCRTCCode;
65
+ tracks: RCRemoteTrack[];
66
+ }>;
67
+ private __subscribe;
68
+ /**
69
+ * 取消订阅主播资源
70
+ * @param liveUrl
71
+ */
72
+ unsubscribe(): Promise<{
73
+ code: RCRTCCode;
74
+ }>;
75
+ private __unsubscribe;
76
+ /**
77
+ * 注册房间数据监控
78
+ * @param listener
79
+ * @description 该方法暂仅支持 Chrome 浏览器
80
+ */
81
+ registerReportListener(listener: IRCRTCReportListener | null): void;
82
+ private _appListener;
83
+ /**
84
+ * 注册流事件监听,多次注册会导致后者覆盖前者,可以通过使用 `registerTrackEventListener(null)` 取消注册
85
+ * @param listener
86
+ */
87
+ registerTrackEventListener(listener: IRCRTCTrackEventListener | null): void;
88
+ private _onTrackReady;
89
+ }
90
+ //# sourceMappingURL=RCAudienceClient.d.ts.map
@@ -0,0 +1,124 @@
1
+ import { RCRTCCode } from './enums/RCRTCCode';
2
+ import { ICameraVideoProfile, ICreateLocalTrackOptions, IMicphoneAudioProfile, IScreenVideoProfile } from './interfaces';
3
+ import { RCCameraVideoTrack, RCLocalAudioTrack, RCLocalFileTrack, RCLocalTrack, RCLocalVideoTrack, RCMicphoneAudioTrack, RCScreenAudioTrack, RCScreenVideoTrack } from './tracks/RCLocalTrack';
4
+ import { RTCContext } from './codec/RTCContext';
5
+ export default class RCMediaStreamCapture {
6
+ protected readonly _context: RTCContext;
7
+ constructor(_context: RTCContext);
8
+ private _isElectron;
9
+ private _getMediaStream;
10
+ /**
11
+ * 如果用户设置了音频约束为true,那么我们将音频约束设置为一个空对象,
12
+ * 然后我们将检查浏览器是否支持noiseSuppression、autoGainControl和echoCancellation约束,
13
+ * 如果支持,那么我们将设置音频约束为真
14
+ * @param {any} constraints - 约束参数与 getUserMedia 方法中的约束参数相同。
15
+ * @returns 返回值是约束对象。
16
+ */
17
+ private setConstraintsConfig;
18
+ /**
19
+ * 从麦克风中捕获音轨数据
20
+ * @param tag
21
+ * @param options
22
+ * @returns
23
+ */
24
+ createMicrophoneAudioTrack(tag?: string, options?: IMicphoneAudioProfile): Promise<{
25
+ code: RCRTCCode;
26
+ track?: RCMicphoneAudioTrack;
27
+ }>;
28
+ /**
29
+ * 由摄像头捕获视轨数据
30
+ * @param tag
31
+ * @param options
32
+ * @returns
33
+ */
34
+ createCameraVideoTrack(tag?: string, options?: ICameraVideoProfile): Promise<{
35
+ code: RCRTCCode;
36
+ track?: RCCameraVideoTrack;
37
+ }>;
38
+ /**
39
+ * 通过摄像头与麦克风采集音视频轨道数据
40
+ * @param tag
41
+ * @param options
42
+ * @returns
43
+ */
44
+ createMicrophoneAndCameraTracks(tag?: string, options?: {
45
+ audio?: IMicphoneAudioProfile;
46
+ video?: ICameraVideoProfile;
47
+ }): Promise<{
48
+ code: RCRTCCode;
49
+ tracks: RCLocalTrack[];
50
+ }>;
51
+ /**
52
+ * 创建屏幕共享视频流,默认分辨率 `1280 * 720`,帧率 `15`
53
+ * @param tag 屏幕共享视轨数据标识
54
+ * @param options
55
+ * @description
56
+ * 支持 Electron 平台下通过制定 `chromeMediaSourceId` 的方式获取屏幕共享视频。
57
+ * 参考:https://www.electronjs.org/docs/api/desktop-capturer
58
+ */
59
+ createScreenVideoTrack(tag?: string, options?: IScreenVideoProfile): Promise<{
60
+ code: RCRTCCode;
61
+ track?: RCScreenVideoTrack;
62
+ }>;
63
+ /**
64
+ * 创建带音频的屏幕共享资源
65
+ * @param tag 屏幕共享视轨数据标识
66
+ * @param options
67
+ * @description electron 中 mac 系统暂不支持屏幕共享采集声音
68
+ * @returns 在可以取到音频的情况下,tracks 中包含音轨和视轨;取不到音视频时 tracks 仅返回视轨
69
+ */
70
+ createScreenWithAudioTracks(tag?: string, options?: IScreenVideoProfile): Promise<{
71
+ code: RCRTCCode;
72
+ tracks?: (RCScreenVideoTrack | RCScreenAudioTrack)[];
73
+ }>;
74
+ private _createScreenTracks;
75
+ /**
76
+ * 创建 RCLocalAudioTrack 实例
77
+ * @param tag
78
+ * @param track
79
+ * @returns
80
+ */
81
+ createLocalAudioTrack(tag: string, track: MediaStreamTrack): Promise<{
82
+ code: RCRTCCode;
83
+ track?: RCLocalAudioTrack;
84
+ }>;
85
+ /**
86
+ * 创建 RCLocalVideoTrack 实例
87
+ * @param tag 视轨数据标识
88
+ * @param track MediaStreamTrack 实例
89
+ * @returns
90
+ */
91
+ createLocalVideoTrack(tag: string, track: MediaStreamTrack): Promise<{
92
+ code: RCRTCCode;
93
+ track?: RCLocalVideoTrack;
94
+ }>;
95
+ /**
96
+ * 根据本地或网络媒体文件资源创建 `RCLocalFileTrack` 实例
97
+ * @param tag 资源标识
98
+ * @param file 网络文件地址,或通过 <input type='file'> 获取到的 File 实例
99
+ * @param options 可用于指定 `withoutVideo` 与 `withoutAudio` 以剔除视轨与音轨
100
+ */
101
+ createLocalFileTracks(tag: string, file: string | File, options?: ICreateLocalTrackOptions): Promise<{
102
+ code: RCRTCCode;
103
+ tracks: RCLocalFileTrack[];
104
+ }>;
105
+ /**
106
+ * 根据 MediaStream 实例对象创建 RCLocalTrack 实例
107
+ * @param tag 轨道标识
108
+ * @param stream MediaStream 实例
109
+ * @param options 可用于指定 `withoutVideo` 与 `withoutAudio` 以剔除视轨与音轨
110
+ * @returns
111
+ */
112
+ createLocalTracks(tag: string, stream: MediaStream, options?: ICreateLocalTrackOptions): Promise<{
113
+ code: RCRTCCode;
114
+ tracks: RCLocalTrack[];
115
+ }>;
116
+ /**
117
+ * 它接受一个 MediaStream 和一个可选的选项对象并返回一个 MediaStreamTracks 数组
118
+ * @param {MediaStream} stream - MediaStream - 从中获取曲目的流。
119
+ * @param {ICreateLocalTrackOptions} [options] - ICreateLocalTrackOptions
120
+ * @returns 一组 MediaStreamTrack 对象。
121
+ */
122
+ static getTracksWithOptions(stream: MediaStream, options?: ICreateLocalTrackOptions): Array<MediaStreamTrack | undefined>;
123
+ }
124
+ //# sourceMappingURL=RCMediaStreamCapture.d.ts.map
@@ -0,0 +1,148 @@
1
+ import { ErrorCode, IRuntime } from '@rongcloud/engine';
2
+ import RCLivingRoom from './room/RCLivingRoom';
3
+ import RCRTCRoom from './room/RCRTCRoom';
4
+ import RCAudienceClient from './RCAudienceClient';
5
+ import { IJoinResCDNInfo, IRCRTCInitOptions } from './interfaces';
6
+ import RCAbstractRoom from './room/RCAbstractRoom';
7
+ import { RCRTCCode } from './enums/RCRTCCode';
8
+ import { RCLivingType } from './enums/RCLivingType';
9
+ import { RCRemoteTrack } from './tracks/RCRemoteTrack';
10
+ import RCAudienceLivingRoom from './room/RCAudienceLivingRoom';
11
+ import RCMediaStreamCapture from './RCMediaStreamCapture';
12
+ import { RTCContext } from './codec/RTCContext';
13
+ import { RTCMode } from './enums/RTCMode';
14
+ import { RTCJoinType } from './enums/RTCJoinType';
15
+ import { IRTCUserData, IRTCJoinedInfo } from './codec/interface';
16
+ /**
17
+ * RTC 业务客户端
18
+ * @public
19
+ */
20
+ export default class RCRTCClient extends RCMediaStreamCapture {
21
+ protected readonly _context: RTCContext;
22
+ private readonly _runtime;
23
+ private readonly _options;
24
+ private readonly _service;
25
+ constructor(_context: RTCContext, _runtime: IRuntime, _options: IRCRTCInitOptions);
26
+ private _handleMessage;
27
+ /**
28
+ * voip 变更、jwt 变更需要触发重走嗅探逻辑
29
+ */
30
+ private naviDataChange;
31
+ /**
32
+ * 获取加入的连麦房间
33
+ */
34
+ private _getJoinedPKRoomList;
35
+ /**
36
+ * 获取当前用户 Id,若 IM 未连接,这返回 `''`
37
+ * @returns
38
+ */
39
+ getCurrentId(): string;
40
+ private _crtRoom;
41
+ /**
42
+ * 加入普通音视频房间
43
+ * @param roomId
44
+ * @param joinType 多端处理方式
45
+ * @param outerUserDatas 业务层设置人员属性
46
+ * @param useMutilPeerC 是否使用多 peerConnection 发布资源
47
+ * @param roomType 加入房间的类型 默认参数 RTCMode.RTC
48
+ */
49
+ joinRTCRoom(roomId: string, joinType?: RTCJoinType, outerUserDatas?: IRTCUserData, useMutilPeerC?: boolean, roomType?: RTCMode): Promise<{
50
+ room?: RCRTCRoom;
51
+ code: RCRTCCode;
52
+ userIds?: string[];
53
+ tracks?: RCRemoteTrack[];
54
+ }>;
55
+ /**
56
+ * 加入跨AppKey音视频房间
57
+ * @param roomId
58
+ * @param joinType 多端处理方式
59
+ * @param outerUserDatas 业务层设置人员属性
60
+ * @param useMutilPeerC 是否使用多 peerConnection 发布资源
61
+ * @param roomType 加入房间的类型 默认参数 RTCMode.CROSS_MUTI
62
+ */
63
+ joinCrossRTCRoom(roomId: string, joinType?: RTCJoinType, outerUserDatas?: IRTCUserData, useMutilPeerC?: boolean, roomType?: RTCMode): Promise<{
64
+ room?: RCRTCRoom;
65
+ code: RCRTCCode;
66
+ userIds?: string[];
67
+ tracks?: RCRemoteTrack[];
68
+ }>;
69
+ /**
70
+ * 主播加入直播房间或观众上麦场景调用,观众上麦之前需先取消已订阅的直播间资源
71
+ * @param roomId 房间 Id
72
+ * @param livingType 直播间类型,`RCLivingType.AUDIO` 为音频直播,`RCLivingType.VIDEO` 为音视频直播
73
+ * @param joinType 多端处理方式,公有云暂不支持该字段
74
+ * @param outerUserDatas 业务层设置人员属性
75
+ */
76
+ joinLivingRoom(roomId: string, livingType: RCLivingType, joinType?: RTCJoinType, outerUserDatas?: IRTCUserData, useMutilPeerC?: boolean): Promise<{
77
+ room?: RCLivingRoom;
78
+ code: RCRTCCode;
79
+ userIds?: string[];
80
+ tracks?: RCRemoteTrack[];
81
+ CDNEnable?: boolean;
82
+ }>;
83
+ private _audience;
84
+ /**
85
+ * 获取直播观众客户端
86
+ */
87
+ getAudienceClient(useMutilPeerC?: boolean): RCAudienceClient;
88
+ private _onIMStatusChange;
89
+ private _onIMDisconnect;
90
+ private _onIMUninit;
91
+ /**
92
+ * 退出并销毁当前房间实例,退出后该房间的所有方法将不可用
93
+ */
94
+ leaveRoom(room: RCAbstractRoom): Promise<{
95
+ code: RCRTCCode;
96
+ }>;
97
+ private _crtAudienceLivingRoom;
98
+ /**
99
+ * 观众加入直播房间
100
+ * @param roomId 房间 ID
101
+ * @param livingType 直播类型(音频直播 or 音视频直播)
102
+ */
103
+ joinLivingRoomAsAudience(roomId: string, livingType: RCLivingType, useMutilPeerC?: boolean): Promise<{
104
+ room?: RCAudienceLivingRoom;
105
+ code: RCRTCCode;
106
+ userIds?: string[];
107
+ RTCTracks?: RCRemoteTrack[];
108
+ MCUTracks?: RCRemoteTrack[];
109
+ CDNUris?: IJoinResCDNInfo;
110
+ }>;
111
+ /**
112
+ * 观众退出并销毁当前房间实例,退出后该房间的所有方法将不可用
113
+ */
114
+ leaveLivingRoomAsAudience(room: RCAudienceLivingRoom): Promise<{
115
+ code: RCRTCCode;
116
+ }>;
117
+ /**
118
+ * 升级为主播房间
119
+ * @param room 观众房间实例
120
+ */
121
+ upgradeToAnchorRoom(room: RCAudienceLivingRoom): Promise<{
122
+ room?: RCLivingRoom;
123
+ code: RCRTCCode;
124
+ userIds?: string[];
125
+ tracks?: RCRemoteTrack[];
126
+ }>;
127
+ /**
128
+ * 降级为观众房间
129
+ * @param room 主播房间实例
130
+ */
131
+ downgradeToAudienceRoom(room: RCLivingRoom): Promise<{
132
+ room?: RCAudienceLivingRoom;
133
+ code: RCRTCCode;
134
+ userIds?: string[];
135
+ RTCTracks?: RCRemoteTrack[];
136
+ MCUTracks?: RCRemoteTrack[];
137
+ CDNUris?: IJoinResCDNInfo;
138
+ }>;
139
+ /**
140
+ * 获取在房间内用户信息
141
+ * @since version 5.2.1
142
+ */
143
+ getJoinedRoomInfo(): Promise<{
144
+ code: RCRTCCode | ErrorCode;
145
+ data?: IRTCJoinedInfo[];
146
+ }>;
147
+ }
148
+ //# sourceMappingURL=RCRTCClient.d.ts.map
@@ -0,0 +1,86 @@
1
+ import { IPublishedResource, ISubscribeAttr, RoomData } from './interfaces';
2
+ import PolarisReporter from './PolarisReporter';
3
+ import { RCMediaService } from './service';
4
+ import { ICDNUris } from './service/interface';
5
+ import { RCLocalTrack } from './tracks/RCLocalTrack';
6
+ import { RCRemoteAudioTrack, RCRemoteTrack, RCRemoteVideoTrack } from './tracks/RCRemoteTrack';
7
+ import RCRTCPeerCManager from './webrtc/RCRTCPeerCManager';
8
+ import { RTCContext } from './codec/RTCContext';
9
+ import { RTCMode } from './enums/RTCMode';
10
+ import { IJoinRTCRoomData } from './codec/interface';
11
+ export declare const StoreEvent: {};
12
+ export declare abstract class ReadableStore {
13
+ readonly context: RTCContext;
14
+ readonly service: RCMediaService;
15
+ readonly peerMgr: RCRTCPeerCManager;
16
+ readonly roomId: string;
17
+ readonly crtUserId: string;
18
+ readonly roomMode: RTCMode;
19
+ readonly polarisReport: PolarisReporter;
20
+ readonly isUpgrade?: boolean | undefined;
21
+ readonly isMainRoom?: boolean | undefined;
22
+ /**
23
+ * 房间资源数据
24
+ */
25
+ protected _roomResources: RoomData;
26
+ /**
27
+ * 远端 track
28
+ */
29
+ protected _remoteTracks: {
30
+ [trackId: string]: RCRemoteAudioTrack | RCRemoteVideoTrack;
31
+ };
32
+ /**
33
+ * 已订阅参数
34
+ */
35
+ protected _subscribedList: ISubscribeAttr[];
36
+ protected _collectSubscribeList: ISubscribeAttr[];
37
+ /**
38
+ * 与 MediaServer 交互需要的 token 信息
39
+ */
40
+ protected _token: string;
41
+ /**
42
+ * 每次加入房间后都会改变
43
+ */
44
+ protected _sessionId: string;
45
+ /**
46
+ * cdn_uris 信令扩散数据
47
+ */
48
+ protected _CDNUris: ICDNUris | null;
49
+ protected _CDNEnable: boolean;
50
+ protected _destroyed: boolean;
51
+ constructor(context: RTCContext, service: RCMediaService, peerMgr: RCRTCPeerCManager, roomId: string, crtUserId: string, roomMode: RTCMode, polarisReport: PolarisReporter, isUpgrade?: boolean | undefined, isMainRoom?: boolean | undefined);
52
+ get useMutilPeerC(): boolean;
53
+ getResourcesByUserId(userId: string): IPublishedResource[] | undefined;
54
+ getRemoteTrack(trackId: string): RCRemoteTrack | undefined;
55
+ getRemoteTracksByUserId(userId: string): RCRemoteTrack[];
56
+ getRemoteTracks(): {
57
+ [trackId: string]: RCRemoteAudioTrack | RCRemoteVideoTrack;
58
+ };
59
+ getSessionId(): string;
60
+ getAllUserIds(): string[];
61
+ getRemoteUserIds(): string[];
62
+ getSubscribedList(): ISubscribeAttr[];
63
+ getCollectSubscribeList(): ISubscribeAttr[];
64
+ getPublishedResourceByTrackId(trackId: string): IPublishedResource | undefined;
65
+ getToken(): string;
66
+ getLocalTrack(trackId: string): RCLocalTrack | null;
67
+ getLocalTracks(): RCLocalTrack[];
68
+ getTrackState(trackId: string): 0 | 1;
69
+ getCDNEnable(): boolean;
70
+ getCDNUris(): ICDNUris | null;
71
+ }
72
+ export declare class Store extends ReadableStore {
73
+ private _initRemoteTracks;
74
+ initWithRoomData(data: IJoinRTCRoomData): void;
75
+ assignRoomData(data: RoomData): void;
76
+ setResourcesByUserId(userId: string, arr: IPublishedResource[]): void;
77
+ removeRemoteTrack(trackId: string): void;
78
+ removeResourcesByUserId(userId: string): void;
79
+ addRemoteTrack(track: RCRemoteTrack): void;
80
+ removeRemoteTracks(): void;
81
+ setCDNEnabel(bool: boolean): void;
82
+ setCDNUris(uris: ICDNUris | null): void;
83
+ resetSubscribedList(subscribeList: ISubscribeAttr[]): void;
84
+ resetCollectSubscribeList(collectSubscribeList: ISubscribeAttr[]): void;
85
+ }
86
+ //# sourceMappingURL=Store.d.ts.map
@@ -0,0 +1,76 @@
1
+ import { AbsCodec, ErrorCode, IAsyncRes, IPromiseResult, KVString, RTCPluginContext, ConversationType, ISendMsgOptions, IReceivedMessage, ConnectionStatus } from '@rongcloud/engine';
2
+ import { RTCMode } from '../enums/RTCMode';
3
+ import { RTCJoinType } from '../enums/RTCJoinType';
4
+ import { RTCApiType } from '../enums/inner/RTCApiType';
5
+ import { RTCIdentityChangeType } from '../enums/inner/RTCIdentityChangeType';
6
+ import { IChrmKVPullData } from '../interfaces';
7
+ import { RTCKeyMaps } from './proto';
8
+ import { IRTCUserData, IJoinRTCRoomData, IRTCRoomInfo, IRTCUsers, IRtcTokenData, IServerRTCRoomEntry, IReqRoomPKOptions, ICancelRoomPKOptions, IResRoomPKOptions, IEndRoomPKOptions, IRTCJoinedInfo } from './interface';
9
+ export declare class RTCContext {
10
+ private context;
11
+ private codec;
12
+ constructor(context: RTCPluginContext, codec: AbsCodec<RTCKeyMaps>);
13
+ joinRTCRoom(roomId: string, mode: RTCMode, broadcastType?: number, joinType?: RTCJoinType, innerUserDatas?: IRTCUserData, outerUserDatas?: IRTCUserData): IPromiseResult<IJoinRTCRoomData>;
14
+ quitRTCRoom(roomId: string): Promise<ErrorCode>;
15
+ getRTCRoomInfo(roomId: string): IPromiseResult<IRTCRoomInfo>;
16
+ getRTCUserInfoList(roomId: string): IPromiseResult<IRTCUsers>;
17
+ getRTCUserInfo(roomId: string): IPromiseResult<unknown>;
18
+ removeRTCUserInfo(roomId: string, keys: string[]): Promise<ErrorCode>;
19
+ setRTCData(roomId: string, key: string, value: string, isInner: boolean, apiType: RTCApiType, message?: {
20
+ name: string;
21
+ content: string;
22
+ }): Promise<ErrorCode>;
23
+ /**
24
+ * 全量订阅资源修改
25
+ * @param roomId 房间 Id
26
+ * @param message 向前兼容的消息内容
27
+ * @param valueInfo 全量资源数据
28
+ * @param objectName 全量 URI 消息名
29
+ */
30
+ setRTCTotalRes(roomId: string, message: {
31
+ name: string;
32
+ content: string;
33
+ }, valueInfo: string, objectName: string, mcuValInfo?: string): Promise<ErrorCode>;
34
+ setRTCCDNUris(roomId: string, objectName: string, CDNUris: string): Promise<ErrorCode>;
35
+ getRTCData(roomId: string, keys: string[], isInner: boolean, apiType: RTCApiType): IPromiseResult<KVString>;
36
+ removeRTCData(roomId: string, keys: string[], isInner: boolean, apiType: RTCApiType, message?: {
37
+ name: string;
38
+ content: string;
39
+ }): Promise<ErrorCode>;
40
+ setRTCOutData(roomId: string, rtcData: unknown, type: number, message: unknown): Promise<ErrorCode>;
41
+ getRTCOutData(roomId: string, userIds: string[]): IPromiseResult<unknown>;
42
+ getRTCToken(roomId: string, mode: number, broadcastType?: number): IPromiseResult<IRtcTokenData>;
43
+ setRTCState(roomId: string, report: string): Promise<ErrorCode>;
44
+ getRTCUserList(roomId: string): IPromiseResult<IRTCUsers>;
45
+ joinLivingRoomAsAudience(roomId: string, mode: RTCMode, broadcastType?: number): Promise<IAsyncRes<{
46
+ token: string;
47
+ kvEntries: IServerRTCRoomEntry[];
48
+ }>>;
49
+ quitLivingRoomAsAudience(roomId: string): Promise<ErrorCode>;
50
+ rtcIdentityChange(roomId: string, changeType: RTCIdentityChangeType, broadcastType?: number): Promise<IAsyncRes<IJoinRTCRoomData>>;
51
+ requestRoomPK(options: IReqRoomPKOptions): Promise<ErrorCode>;
52
+ cancelRoomPK(options: ICancelRoomPKOptions): Promise<ErrorCode>;
53
+ responseRoomPK(options: IResRoomPKOptions): Promise<ErrorCode>;
54
+ endRoomPK(options: IEndRoomPKOptions): Promise<ErrorCode>;
55
+ getRTCJoinedUserInfo(userId: string): Promise<IAsyncRes<IRTCJoinedInfo[]>>;
56
+ pullRTCRoomEntry(roomId: string): Promise<IAsyncRes<IChrmKVPullData>>;
57
+ decodeRtcNotify(buffer: Uint8Array): {
58
+ time: any;
59
+ type: any;
60
+ roomId: any;
61
+ };
62
+ getCurrentId(): string;
63
+ getNaviInfo(): import("@rongcloud/engine").INaviInfo | null;
64
+ getConnectionStatus(): ConnectionStatus;
65
+ getAppkey(): string;
66
+ rtcPing(roomId: string, roomMode: number, broadcastType?: number): Promise<ErrorCode>;
67
+ sendMessage(conversationType: ConversationType, targetId: string, options: ISendMsgOptions): IPromiseResult<IReceivedMessage>;
68
+ registerRTCSignalListener(listener?: ((buffer: Uint8Array) => void) | undefined): void;
69
+ registerConnectionStateChangeListener(listener: (status: ConnectionStatus) => void): void;
70
+ registerDisconnectListener(listener: () => void): void;
71
+ registerDestroyListener(listener: () => void): void;
72
+ registerMessageListener(listener: (message: IReceivedMessage) => boolean): void;
73
+ getCoreVersion(): string;
74
+ getPluginContext(): RTCPluginContext;
75
+ }
76
+ //# sourceMappingURL=RTCContext.d.ts.map