@hysc/meeting 5.0.117 → 5.0.120

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 (182) hide show
  1. package/esm/boom-core/src/BoomCore/BCClient/clientEventType.d.ts +428 -0
  2. package/{umd → esm/boom-meeting/src}/BMChat/BMChatVM.d.ts +3 -1
  3. package/{umd → esm/boom-meeting/src}/BMRoom/BMRoomVM.d.ts +42 -9
  4. package/{umd → esm/boom-meeting/src}/BMStream/BMStreamModel.d.ts +64 -21
  5. package/{umd → esm/boom-meeting/src}/BMStream/BMStreamModelVM.d.ts +78 -53
  6. package/{umd → esm/boom-meeting/src}/BMUser/BMUser.d.ts +8 -5
  7. package/{umd → esm/boom-meeting/src}/BMUser/BMUserVM.d.ts +58 -12
  8. package/esm/boom-meeting/src/audioPlay/AudioPlay.d.ts +31 -0
  9. package/{umd/src/BMRoom → esm/boom-meeting/src/handleEvent}/attachEvents.d.ts +23 -9
  10. package/esm/boom-meeting/src/handleEvent/brtcNetEvent.d.ts +9 -0
  11. package/esm/boom-meeting/src/handleEvent/customMessageEvent.d.ts +2 -0
  12. package/esm/boom-meeting/src/handleEvent/handleParticipantEvent.d.ts +24 -0
  13. package/esm/boom-meeting/src/handleEvent/handleRoomEvent.d.ts +20 -0
  14. package/esm/boom-meeting/src/handleEvent/messageEvent.d.ts +5 -0
  15. package/esm/boom-meeting/src/handleEvent/pullUser.d.ts +7 -0
  16. package/esm/boom-meeting/src/handleEvent/roomErrEvent.d.ts +9 -0
  17. package/esm/boom-meeting/src/handleEvent/streamEvent.d.ts +22 -0
  18. package/{umd → esm/boom-meeting/src}/type/customStats.d.ts +6 -0
  19. package/{umd → esm/boom-meeting/src}/type/stream.d.ts +0 -2
  20. package/esm/index.js +8 -40401
  21. package/esm/src/BMChat/BMChatVM.d.ts +3 -3
  22. package/esm/src/BMChat/BMMessageInfo.d.ts +31 -31
  23. package/esm/src/BMRoom/BMLiveVM.d.ts +35 -35
  24. package/esm/src/BMRoom/BMRoom.d.ts +705 -705
  25. package/esm/src/BMRoom/BMRoomInfo.d.ts +215 -215
  26. package/esm/src/BMStream/BMSpeaker.d.ts +26 -26
  27. package/esm/src/BMStream/BMStreamModel.d.ts +4 -5
  28. package/esm/src/BMStream/BMStreamModelVM.d.ts +4 -4
  29. package/esm/src/BMStream/getHTMLMediaStreamOptions.d.ts +35 -35
  30. package/esm/src/BMStream/sortStream.d.ts +30 -30
  31. package/esm/src/BMUser/BMUser.d.ts +1 -1
  32. package/esm/src/BMUser/BMUserVM.d.ts +4 -4
  33. package/esm/src/SingletonQueue/SingletonQueue.d.ts +26 -26
  34. package/esm/src/bjy-common/function/execute.d.ts +9 -9
  35. package/esm/src/bjy-common/function/isNative.d.ts +1 -1
  36. package/esm/src/bjy-common/function/nextTick.d.ts +2 -2
  37. package/esm/src/bjy-common/function/toString.d.ts +1 -1
  38. package/esm/src/bjy-common/util/constant.d.ts +50 -50
  39. package/esm/src/bjy-common/util/is.d.ts +49 -49
  40. package/esm/src/bjy-common/util/string.d.ts +102 -102
  41. package/esm/src/constants.d.ts +129 -129
  42. package/esm/src/error/RTCError.d.ts +20 -20
  43. package/esm/src/error/errorType.d.ts +96 -96
  44. package/esm/src/handleEvent/attachEvents.d.ts +3 -2
  45. package/esm/src/handleEvent/handleParticipantEvent.d.ts +2 -2
  46. package/esm/src/index.d.ts +2 -4
  47. package/esm/src/logger/logger.d.ts +86 -86
  48. package/esm/src/type/stream.d.ts +4 -1
  49. package/esm/src/util/Pqueue.d.ts +62 -62
  50. package/esm/src/util/Thread.d.ts +12 -12
  51. package/esm/src/util/constant.d.ts +67 -67
  52. package/esm/src/util/emitter.d.ts +43 -43
  53. package/esm/src/util/sortUtils.d.ts +10 -10
  54. package/esm/src/util/util.d.ts +78 -78
  55. package/esm/utils/BoomError.d.ts +19 -0
  56. package/esm/utils/ErrorTypes.d.ts +139 -0
  57. package/esm/utils/index.d.ts +9 -0
  58. package/package.json +7 -8
  59. package/umd/boom-meeting/src/BMStream/BMStreamModelVM.d.ts +2 -1
  60. package/umd/boom-meeting/src/audioPlay/AudioPlay.d.ts +1 -1
  61. package/umd/index.js +2 -2
  62. package/umd/src/BMChat/BMChatVM.d.ts +4 -3
  63. package/umd/src/BMRoom/BMRoom.d.ts +9 -0
  64. package/umd/src/BMRoom/BMRoomInfo.d.ts +9 -7
  65. package/umd/src/BMRoom/BMRoomVM.d.ts +16 -1
  66. package/umd/src/BMStream/BMSpeaker.d.ts +2 -20
  67. package/umd/src/BMStream/BMStreamModel.d.ts +61 -15
  68. package/umd/src/BMStream/BMStreamModelVM.d.ts +63 -56
  69. package/umd/src/BMUser/BMUser.d.ts +3 -3
  70. package/umd/src/BMUser/BMUserVM.d.ts +54 -17
  71. package/umd/src/audioPlay/AudioPlay.d.ts +31 -0
  72. package/umd/src/constants.d.ts +35 -18
  73. package/umd/src/handleEvent/attachEvents.d.ts +47 -0
  74. package/umd/src/handleEvent/brtcNetEvent.d.ts +9 -0
  75. package/umd/src/handleEvent/customMessageEvent.d.ts +2 -0
  76. package/umd/src/handleEvent/handleParticipantEvent.d.ts +24 -0
  77. package/umd/src/handleEvent/handleRoomEvent.d.ts +20 -0
  78. package/umd/src/handleEvent/messageEvent.d.ts +5 -0
  79. package/umd/src/handleEvent/pullUser.d.ts +7 -0
  80. package/umd/src/handleEvent/roomErrEvent.d.ts +9 -0
  81. package/umd/src/handleEvent/streamEvent.d.ts +22 -0
  82. package/umd/src/type/customStats.d.ts +5 -0
  83. package/umd/src/type/stream.d.ts +1 -6
  84. package/umd/src/util/Pqueue.d.ts +1 -0
  85. package/umd/src/util/Stutter.d.ts +1 -1
  86. package/umd/src/util/devices.d.ts +1 -1
  87. package/umd/src/util/emitter.d.ts +28 -4
  88. package/umd/src/util/request.d.ts +1 -1
  89. package/umd/src/util/util.d.ts +2 -1
  90. package/esm/index.js.map +0 -7
  91. package/umd/BMChat/BMMessageInfo.d.ts +0 -31
  92. package/umd/BMRoom/BMLiveVM.d.ts +0 -35
  93. package/umd/BMRoom/BMRoom.d.ts +0 -638
  94. package/umd/BMRoom/BMRoomInfo.d.ts +0 -189
  95. package/umd/BMRoom/attachEvents.d.ts +0 -27
  96. package/umd/BMStream/BMSpeaker.d.ts +0 -44
  97. package/umd/BMStream/getHTMLMediaStreamOptions.d.ts +0 -35
  98. package/umd/bjy-common/function/execute.d.ts +0 -9
  99. package/umd/bjy-common/function/isNative.d.ts +0 -1
  100. package/umd/bjy-common/function/nextTick.d.ts +0 -2
  101. package/umd/bjy-common/function/toString.d.ts +0 -1
  102. package/umd/bjy-common/util/constant.d.ts +0 -50
  103. package/umd/bjy-common/util/is.d.ts +0 -49
  104. package/umd/bjy-common/util/string.d.ts +0 -102
  105. package/umd/boom-meeting/src/BMChat/BMMessageInfo.d.ts +0 -31
  106. package/umd/boom-meeting/src/BMRoom/BMLiveVM.d.ts +0 -35
  107. package/umd/boom-meeting/src/BMRoom/BMRoom.d.ts +0 -699
  108. package/umd/boom-meeting/src/BMRoom/BMRoomInfo.d.ts +0 -215
  109. package/umd/boom-meeting/src/BMRoom/attachEvents.d.ts +0 -34
  110. package/umd/boom-meeting/src/BMStream/BMSpeaker.d.ts +0 -26
  111. package/umd/boom-meeting/src/BMStream/getHTMLMediaStreamOptions.d.ts +0 -35
  112. package/umd/boom-meeting/src/EventHandler.d.ts +0 -20
  113. package/umd/boom-meeting/src/bjy-common/function/execute.d.ts +0 -9
  114. package/umd/boom-meeting/src/bjy-common/function/isNative.d.ts +0 -1
  115. package/umd/boom-meeting/src/bjy-common/function/nextTick.d.ts +0 -2
  116. package/umd/boom-meeting/src/bjy-common/function/toString.d.ts +0 -1
  117. package/umd/boom-meeting/src/bjy-common/util/constant.d.ts +0 -50
  118. package/umd/boom-meeting/src/bjy-common/util/is.d.ts +0 -49
  119. package/umd/boom-meeting/src/bjy-common/util/string.d.ts +0 -102
  120. package/umd/boom-meeting/src/constants.d.ts +0 -129
  121. package/umd/boom-meeting/src/error/RTCError.d.ts +0 -20
  122. package/umd/boom-meeting/src/error/errorType.d.ts +0 -96
  123. package/umd/boom-meeting/src/logger/logger.d.ts +0 -86
  124. package/umd/boom-meeting/src/util/Pqueue.d.ts +0 -62
  125. package/umd/boom-meeting/src/util/constant.d.ts +0 -67
  126. package/umd/boom-meeting/src/util/emitter.d.ts +0 -43
  127. package/umd/boom-meeting/src/util/sortUtils.d.ts +0 -10
  128. package/umd/boom-meeting/src/util/util.d.ts +0 -78
  129. package/umd/constants.d.ts +0 -107
  130. package/umd/error/RTCError.d.ts +0 -20
  131. package/umd/error/errorType.d.ts +0 -96
  132. package/umd/index.d.ts +0 -2
  133. package/umd/index.js.map +0 -1
  134. package/umd/logger/logger.d.ts +0 -86
  135. package/umd/src/EventHandler.d.ts +0 -20
  136. package/umd/util/Pqueue.d.ts +0 -61
  137. package/umd/util/constant.d.ts +0 -67
  138. package/umd/util/emitter.d.ts +0 -18
  139. package/umd/util/sortUtils.d.ts +0 -10
  140. package/umd/util/util.d.ts +0 -76
  141. /package/{umd → esm/boom-meeting/src}/BMRoom/RoomEvent.d.ts +0 -0
  142. /package/{umd → esm/boom-meeting/src}/bjy-common/function/debounce.d.ts +0 -0
  143. /package/{umd → esm/boom-meeting/src}/bjy-common/function/getErrorMessage.d.ts +0 -0
  144. /package/{umd → esm/boom-meeting/src}/bjy-common/function/isDef.d.ts +0 -0
  145. /package/{umd → esm/boom-meeting/src}/bjy-common/function/isUndef.d.ts +0 -0
  146. /package/{umd → esm/boom-meeting/src}/bjy-common/function/throttling.d.ts +0 -0
  147. /package/{umd → esm/boom-meeting/src}/bjy-common/function/toNumber.d.ts +0 -0
  148. /package/{umd → esm/boom-meeting/src}/bjy-common/type/api.d.ts +0 -0
  149. /package/{umd → esm/boom-meeting/src}/bjy-common/type/options.d.ts +0 -0
  150. /package/{umd → esm/boom-meeting/src}/bjy-common/type/type.d.ts +0 -0
  151. /package/{umd → esm/boom-meeting/src}/bjy-common/util/CustomEvent.d.ts +0 -0
  152. /package/{umd → esm/boom-meeting/src}/bjy-common/util/Emitter.d.ts +0 -0
  153. /package/{umd → esm/boom-meeting/src}/bjy-common/util/NextTask.d.ts +0 -0
  154. /package/{umd → esm/boom-meeting/src}/bjy-common/util/Sleep.d.ts +0 -0
  155. /package/{umd → esm/boom-meeting/src}/bjy-common/util/Timer.d.ts +0 -0
  156. /package/{umd → esm/boom-meeting/src}/bjy-common/util/array.d.ts +0 -0
  157. /package/{umd → esm/boom-meeting/src}/bjy-common/util/browser.d.ts +0 -0
  158. /package/{umd → esm/boom-meeting/src}/bjy-common/util/holder.d.ts +0 -0
  159. /package/{umd → esm/boom-meeting/src}/bjy-common/util/keypath.d.ts +0 -0
  160. /package/{umd → esm/boom-meeting/src}/bjy-common/util/logger.d.ts +0 -0
  161. /package/{umd → esm/boom-meeting/src}/bjy-common/util/network.d.ts +0 -0
  162. /package/{umd → esm/boom-meeting/src}/bjy-common/util/object.d.ts +0 -0
  163. /package/{umd → esm/boom-meeting/src}/bjy-common/util/os.d.ts +0 -0
  164. /package/{umd → esm/boom-meeting/src}/error/errorMap.d.ts +0 -0
  165. /package/{umd → esm/boom-meeting/src}/type/index.d.ts +0 -0
  166. /package/{umd → esm/boom-meeting/src}/type/user.d.ts +0 -0
  167. /package/{umd → esm/boom-meeting/src}/util/PackLoss.d.ts +0 -0
  168. /package/{umd → esm/boom-meeting/src}/util/Privileges.d.ts +0 -0
  169. /package/{umd → esm/boom-meeting/src}/util/ReportCollector.d.ts +0 -0
  170. /package/{umd → esm/boom-meeting/src}/util/Stutter.d.ts +0 -0
  171. /package/{umd → esm/boom-meeting/src}/util/base64.d.ts +0 -0
  172. /package/{umd → esm/boom-meeting/src}/util/checkPermissions.d.ts +0 -0
  173. /package/{umd → esm/boom-meeting/src}/util/checkSystemRequirements.d.ts +0 -0
  174. /package/{umd → esm/boom-meeting/src}/util/devices.d.ts +0 -0
  175. /package/{umd → esm/boom-meeting/src}/util/formatUserId.d.ts +0 -0
  176. /package/{umd → esm/boom-meeting/src}/util/is.d.ts +0 -0
  177. /package/{umd → esm/boom-meeting/src}/util/peerToPeerProbe.d.ts +0 -0
  178. /package/{umd → esm/boom-meeting/src}/util/request.d.ts +0 -0
  179. /package/{umd → esm/boom-meeting/src}/util/roomUtils.d.ts +0 -0
  180. /package/umd/{boom-meeting/src → src}/BMStream/sortStream.d.ts +0 -0
  181. /package/umd/{boom-meeting/src → src}/SingletonQueue/SingletonQueue.d.ts +0 -0
  182. /package/umd/{boom-meeting/src → src}/util/Thread.d.ts +0 -0
@@ -1,6 +1,10 @@
1
- import { SingleStream, SubscribeOptions } from '../type';
2
- import BMUser from '../BMUser/BMUser';
3
- import { BehaviorSubject, Subject } from 'rxjs';
1
+ import { SingleStream, SubscribeOptions } from "../type";
2
+ import BMUser from "../BMUser/BMUser";
3
+ import { BehaviorSubject, Subject } from "rxjs";
4
+ import { Player } from "@hysc/core/esm";
5
+ import BMStreamModelVM from "./BMStreamModelVM";
6
+ import { BloudStreamState } from "../handleEvent/attachEvents";
7
+ import type { StreamCustomInfo } from '@hysc/bloud';
4
8
  /**
5
9
  * @name: BMStreamModel
6
10
  * @author: yangliye
@@ -16,9 +20,23 @@ export interface ConnectErrorMessage {
16
20
  stream: BMStreamModel;
17
21
  isLocal: boolean;
18
22
  }
23
+ export interface NoPlayerContainer {
24
+ type: 'share' | 'normal';
25
+ container: 'small' | 'big';
26
+ id: string;
27
+ }
28
+ /**
29
+ * 播放器状态
30
+ */
31
+ declare enum PlayerState {
32
+ NO_CONTAINER = 0,
33
+ NO_PLAYING = 1,
34
+ PLAYING = 2
35
+ }
19
36
  export default class BMStreamModel {
20
37
  private user;
21
38
  private _stream;
39
+ bloudStream: BloudStreamState | undefined;
22
40
  /**
23
41
  * 流类型
24
42
  */
@@ -47,6 +65,11 @@ export default class BMStreamModel {
47
65
  isInBigObserve: Subject<boolean>;
48
66
  _hasPulled: boolean;
49
67
  playerId: string;
68
+ /**
69
+ * 手动拉流配置, 默认是false, 如果是走手动拉流,设置成true,说明拉他的流
70
+ * shouldPull 是否应该拉
71
+ */
72
+ shouldPull: boolean;
50
73
  get hasPulled(): boolean;
51
74
  set hasPulled(value: boolean);
52
75
  /**
@@ -60,8 +83,8 @@ export default class BMStreamModel {
60
83
  */
61
84
  pulledStreamGoal: StreamType;
62
85
  bigPlayerId: string;
63
- private player;
64
- private isPlayingBig;
86
+ player: Player | undefined | null;
87
+ isPlayingBig: boolean;
65
88
  /**
66
89
  * 是否静音了扬声器,brtc不会处理业务上静音的逻辑,所以需要自己处理
67
90
  * 如果静音了,就把所有的流都重新静音播放一遍
@@ -84,8 +107,9 @@ export default class BMStreamModel {
84
107
  handleSpeakerChange(): void;
85
108
  /**
86
109
  * 排序数字
110
+ * 窗口的排序使用二进制运算进行了优化,为了提高运行速度牺牲了一部分代码可读性
87
111
  */
88
- get sortNum(): number;
112
+ sortNum: number;
89
113
  get isToupingma(): boolean;
90
114
  get isMixer(): boolean;
91
115
  get isSignal(): boolean;
@@ -126,14 +150,24 @@ export default class BMStreamModel {
126
150
  * 更新当前streamModel中的流
127
151
  * @param stream
128
152
  * @param needReProcess
153
+ * @param bmStreamVm
129
154
  */
130
- updateStream(stream: SingleStream | undefined, needReProcess?: boolean): void;
155
+ updateStream(stream: SingleStream | undefined, needReProcess: boolean | undefined, bmStreamVm: BMStreamModelVM): void;
156
+ /**
157
+ * 更新bloud的stream,设置流状态
158
+ * @param streamState
159
+ * @param bmStreamVM
160
+ * @param forceSearch
161
+ */
162
+ updateBloudStream(streamState: BloudStreamState | undefined, bmStreamVM: BMStreamModelVM, forceSearch?: boolean): void;
163
+ updateBloudCustomInfo(customInfo: StreamCustomInfo): void;
131
164
  private onPlayerStateChange;
132
165
  handleStreamConnectError: () => void;
133
166
  /**
134
167
  * 获取当前的streamId
135
168
  */
136
169
  get streamId(): string;
170
+ get bStreamId(): string;
137
171
  /**
138
172
  * 获取当前窗口绑定的用户id
139
173
  */
@@ -149,7 +183,8 @@ export default class BMStreamModel {
149
183
  /**
150
184
  * 是否是屏幕共享的流
151
185
  */
152
- get isShare(): boolean | undefined;
186
+ get isShare(): boolean;
187
+ get isWeb(): boolean;
153
188
  /**
154
189
  * 当前音频是否开启
155
190
  */
@@ -158,6 +193,8 @@ export default class BMStreamModel {
158
193
  * 当前视频是否开启
159
194
  */
160
195
  get videoEnable(): boolean;
196
+ private get brtcPlayerId();
197
+ private get selfPlayerId();
161
198
  /**
162
199
  * 获取当前流绑定的用户昵称
163
200
  */
@@ -186,22 +223,19 @@ export default class BMStreamModel {
186
223
  emitBindElement: any;
187
224
  emitBindBigElement: any;
188
225
  /**
189
- * 判断当前是不是正在小窗口播放
190
- */
191
- currentIsPlaying: () => boolean;
192
- /**
193
- * 判断当前是不是正在小窗口播放
226
+ * 当前是不是正在播放
227
+ * @param containerId sdk绑定播放器容器id
228
+ * @param playerContainerId 播放器创建的容器id
194
229
  */
195
- currentBigIsPlaying: () => boolean | null | undefined;
230
+ currentIsPlaying: (containerId: string) => PlayerState;
196
231
  /**
197
232
  * 播放当前流
198
233
  */
199
- play: any;
234
+ play: () => Promise<void>;
200
235
  /**
201
236
  * 在大窗口播放该流的时候调用这个方法
202
- * @param mute 是否静音 默认true
203
237
  */
204
- playInBig: any;
238
+ playInBig: () => Promise<void>;
205
239
  private initBigPlayer;
206
240
  /**
207
241
  * 停止播放当前流
@@ -226,7 +260,7 @@ export default class BMStreamModel {
226
260
  *
227
261
  * @returns
228
262
  */
229
- resume(): Promise<any> | undefined;
263
+ resume(): void;
230
264
  /**
231
265
  * 是否有音频流
232
266
  */
@@ -240,13 +274,16 @@ export default class BMStreamModel {
240
274
  * @param user
241
275
  */
242
276
  updateUser(user: BMUser): void;
243
- updateSortNum(): void;
277
+ updateSortNum(force?: boolean): void;
278
+ setSortNum(sortNum: number, force: boolean): void;
279
+ getSortNum(): number;
244
280
  /**
245
281
  * 启动音频音量检测
246
282
  */
247
- collectAudioLevel(): void;
283
+ collectAudioLevel: () => void;
248
284
  private handleAudioLevel;
249
- checkVideo(): void;
285
+ checkSmallVideo(): void;
286
+ checkBigVideo: any;
250
287
  /**
251
288
  * 播放黑窗处理,主要是做一个容错处理,又可能这股流拉下来或者存在订阅就出现问题的情况
252
289
  * 播放时黑窗的,这个时候需要,检测,然后重新拉流
@@ -258,5 +295,11 @@ export default class BMStreamModel {
258
295
  */
259
296
  subscribeStream(): void;
260
297
  unSubscribeStream(): void;
298
+ checkStreamIsPlaying: any;
299
+ /**
300
+ * 取消流的播放
301
+ * @param type big: 大窗口 small: 小窗口 all: 全部
302
+ */
303
+ unAttach(type: 'big' | 'small' | 'all'): void;
261
304
  }
262
305
  export {};
@@ -14,56 +14,52 @@
14
14
  * 共享屏幕用户做了特殊处理,因为web端共享屏幕和移动端共享屏幕处理逻辑不一样
15
15
  */
16
16
  /// <reference types="node" />
17
- import BMStreamModel from './BMStreamModel';
18
- import BMUser from '../BMUser/BMUser';
19
- import { SingleLocalStream, SingleRemoteStream, SingleStream } from '../type';
20
- import BMRoom from '../BMRoom/BMRoom';
21
- import { BehaviorSubject, Subject } from 'rxjs';
22
- import { Device } from '@hysc/core/esm/BoomAdapter/type/value';
23
- import BMSpeaker from './BMSpeaker';
17
+ import BMStreamModel, { NoPlayerContainer } from "./BMStreamModel";
18
+ import BMUser from "../BMUser/BMUser";
19
+ import { SingleLocalStream, SingleRemoteStream, SingleStream } from "../type";
20
+ import BMRoom from "../BMRoom/BMRoom";
21
+ import { BehaviorSubject, Subject } from "rxjs";
22
+ import { BoomError } from "@hysc/utils";
23
+ import { Device } from "@hysc/core/esm/BoomAdapter/type/value";
24
+ import BMSpeaker from "./BMSpeaker";
24
25
  import { ShareMediaOptions } from "@hysc/core/esm/BoomCore/BCClient/BCClient";
25
- import { getHTMLMediaStreamOptions, Result, getMediaStreamInfo } from "./getHTMLMediaStreamOptions";
26
- export declare const pubFailedStreamMap: Map<string, import("@hysc/core/esm/BoomAdapter/singleMode/stream/RemoteStream").default>;
27
- /**
28
- * 全量的brtc流记录,把所有brtc用户推的流都做记录
29
- * stream-added 的时候添加
30
- * stream-removed 的时候删除
31
- * mute/unmute-video/audio 的时候更新流
32
- * 当用户进来的时候,去查看这个流对象,如果流存在,就给这个人添加流
33
- *
34
- */
35
- export declare const BRTCStreamMap: Map<string, import("@hysc/core/esm/BoomAdapter/singleMode/stream/RemoteStream").default>;
36
- export declare const BRTCShareStreamMap: Map<string, import("@hysc/core/esm/BoomAdapter/singleMode/stream/RemoteStream").default>;
26
+ import { getHTMLMediaStreamOptions, getMediaStreamInfo, Result } from "./getHTMLMediaStreamOptions";
27
+ import { BloudStream } from "@hysc/core";
28
+ import type { StreamCustomInfo } from '@hysc/bloud';
29
+ import { BloudStreamEventState } from "../handleEvent/attachEvents";
30
+ export declare function transShareScreen2User(userId: string): string;
37
31
  export default class BMStreamModelVM {
38
32
  streamModels: Map<string, BMStreamModel>;
39
- sendStreamModels: BMStreamModel[];
40
33
  /**
41
34
  * 因为投屏码用户进来以后,他是不在小窗口展示的,所以要把投屏的用户过滤掉给业务的展示
42
35
  */
43
36
  streamModelsWatcher: BehaviorSubject<BMStreamModel[]>;
44
37
  shareStreamModels: Map<string, BMStreamModel>;
45
38
  shareStreamModelsWatcher: BehaviorSubject<BMStreamModel[]>;
39
+ localStreamErrorWatcher: Subject<string>;
46
40
  localModel: BMStreamModel | null;
47
- private room;
48
- bloudStream: any;
49
- audioStream: SingleLocalStream | undefined;
41
+ room: BMRoom | null;
42
+ bloudStream: BloudStream | null;
50
43
  brtcStream: SingleLocalStream | undefined;
44
+ /**
45
+ * 后面打开摄像头存储的流,主要是关闭摄像头的时候得把它清除掉
46
+ */
47
+ videoStream: SingleLocalStream | null;
48
+ audioStream: SingleLocalStream | null;
49
+ audioStats: boolean;
50
+ videoStats: boolean;
51
51
  /**
52
52
  * 本地是否在屏幕共享
53
53
  */
54
54
  localIsShare: boolean;
55
+ isShareWatcher: Subject<boolean>;
55
56
  _speaker_enable: boolean;
56
57
  speakerEnableWatcher: BehaviorSubject<boolean>;
57
58
  /**
58
59
  * 混流
59
60
  */
60
61
  mixStreamModelWatcher: BehaviorSubject<BMStreamModel | null>;
61
- isShareWatcher: Subject<boolean>;
62
62
  canvasTimer: NodeJS.Timeout | null;
63
- /**
64
- * 后面打开摄像头存储的流,主要是关闭摄像头的时候得把它清除掉
65
- */
66
- videoStream: SingleLocalStream | null;
67
63
  private _recorder;
68
64
  private _isRecording;
69
65
  private _slicingRecord;
@@ -72,6 +68,25 @@ export default class BMStreamModelVM {
72
68
  private _speakerDetector;
73
69
  private _speakers;
74
70
  speakerWatcher: BehaviorSubject<BMUser | null>;
71
+ /**
72
+ * 窗口没有播放容器的错误处理
73
+ */
74
+ noContainerWatcher: Subject<BMStreamModel>;
75
+ /**
76
+ * 窗口没有大窗口播放容器的错误处理
77
+ */
78
+ noBigContainerWatcher: Subject<BMStreamModel>;
79
+ localStreamConnectErrorWatcher: Subject<BoomError>;
80
+ /**
81
+ * 共享屏幕相关错误
82
+ * 包括,共享客户端错误
83
+ * 共享屏幕流错误
84
+ */
85
+ localShareError: Subject<BoomError>;
86
+ /**
87
+ * 共享屏幕流是单独处理的逻辑,不是先创建streamModel然后在去查流,而是先去查流,在创建streamModel
88
+ */
89
+ shareBloudStateMap: Map<string, BloudStreamEventState>;
75
90
  constructor();
76
91
  private static filterStreamModels;
77
92
  initWithRoom(room: BMRoom): this;
@@ -94,6 +109,7 @@ export default class BMStreamModelVM {
94
109
  addStreamModel(streamModel: BMStreamModel): void;
95
110
  addShareStreamModel(streamModel: BMStreamModel): void;
96
111
  removeStreamModel(streamModel: BMStreamModel): void;
112
+ removeShareStreamModelByUId(uid: string): void;
97
113
  removeShareStreamModel(streamModel: BMStreamModel): void;
98
114
  /**`
99
115
  * 通过用户id删除streamModel
@@ -108,7 +124,7 @@ export default class BMStreamModelVM {
108
124
  * @returns
109
125
  */
110
126
  remoteStreamUnpublished(stream: SingleRemoteStream): BMStreamModel | undefined;
111
- sortStreamModels(): void;
127
+ sortStreamModels(): BMStreamModel[];
112
128
  updateStreamModel(streamModel: BMStreamModel, stream: SingleStream): void;
113
129
  updateShareStreamModel(streamModel: BMStreamModel, stream: SingleStream): void;
114
130
  /**
@@ -116,7 +132,11 @@ export default class BMStreamModelVM {
116
132
  * @param status true:开,false:关
117
133
  * @param videoTrack 开启美颜之后,需要传递这个参数,携带美颜之后的videoTrack
118
134
  */
119
- setLocalVideoEnable(status: boolean, videoTrack?: MediaStreamTrack): Promise<void>;
135
+ setLocalVideoEnable(status: boolean, videoTrack?: MediaStreamTrack): Promise<undefined>;
136
+ /**
137
+ * brtc流更新状态失败,这个时候重新推流
138
+ */
139
+ handleStreamUpdateFailed(): Promise<void>;
120
140
  /**
121
141
  * 开关本地麦克风
122
142
  * @param status true:开,false:关
@@ -128,33 +148,41 @@ export default class BMStreamModelVM {
128
148
  * @param audio
129
149
  * @param video
130
150
  */
131
- joinWithAudioAndAudio(audio: boolean, video: boolean): Promise<undefined>;
151
+ joinWithAudioAndAudio(audio: boolean, video: boolean): Promise<void>;
132
152
  /**
133
153
  * 切换扬声器
134
154
  * @param device
155
+ * @param force
135
156
  */
136
- changeSpeaker(device: Device): Promise<void>;
157
+ changeSpeaker(device: Device, force?: boolean): Promise<void>;
137
158
  /**
138
159
  * 设置单个流的扬声器
139
160
  * @param streamModel
140
161
  */
141
162
  changeSingleStreamSpeaker(streamModel: BMStreamModel): Promise<void>;
142
- changeAudioInput(device: Device): Promise<void>;
143
- changeVideoInput(device: Device): Promise<void>;
163
+ changeAudioInput(device: Device): Promise<boolean | undefined>;
164
+ changeVideoInput(device: Device): Promise<boolean | undefined>;
144
165
  /**
145
166
  * 是否静音扬声器
146
167
  * @param enable
147
168
  */
148
169
  muteSpeaker(enable: boolean): Promise<undefined>;
170
+ /**
171
+ * 创建本地音频流
172
+ */
173
+ createLocalAudioStream(): Promise<void>;
149
174
  /**
150
175
  * 创建流并且发布
151
176
  * @param audio 是否发布音频流
152
177
  * @param video 是否发布视频流
153
178
  * @param localModel 本地的streamModel
179
+ * @param videoTrack
154
180
  * @private
155
181
  */
156
182
  private createStreamAndPublish;
157
- videoMuteHandler(): Promise<void>;
183
+ publishBloudStream(audio: boolean, video: boolean): Promise<void>;
184
+ muteHandler(type: 'video' | 'audio'): void;
185
+ unpublishStream(): Promise<void>;
158
186
  /**
159
187
  * 更改音视频状态或者取消发布
160
188
  * @param type 更改类型
@@ -163,23 +191,10 @@ export default class BMStreamModelVM {
163
191
  * @private
164
192
  */
165
193
  private muteOrUnpublishStream;
166
- /**
167
- * 是否开启屏幕共享
168
- * @param enable
169
- * @param opts 开启屏幕共享参数
170
- * @param customShare
171
- * @param opts.audio 是否开启音频
172
- * @param opts.source_name Electron 下窗口名称
173
- * @param opts.width 共享屏幕宽度
174
- * @param opts.height 共享屏幕高度
175
- * @param opts.contentHint 视频的contentHint 可选值: '' | 'motion' | 'detail' | 'text'
176
- */
177
- toggleShareScreen(enable: boolean, opts: any, customShare?: Result): Promise<unknown>;
178
- setShareScreenContentHint(contentHint: '' | 'motion' | 'detail' | 'text'): Promise<void>;
179
- /**
180
- * 排序变化之后的处理逻辑
181
- */
182
- updateSort: any;
194
+ toggleShareScreen(enable: boolean, opts: any, customShare?: Result): Promise<boolean>;
195
+ setShareScreenContentHint(contentHint: '' | 'motion' | 'detail' | 'text'): void;
196
+ updateModelSort: any;
197
+ handleNoContainer: (info: NoPlayerContainer) => void;
183
198
  /**
184
199
  * 创建canvas,目的是为了捕获空track流,给brtc使用
185
200
  */
@@ -204,7 +219,7 @@ export default class BMStreamModelVM {
204
219
  * 添加流对象到录制器,用于音频轨道录制
205
220
  * @param stream
206
221
  */
207
- addToRecorder(stream: any): void;
222
+ addToRecorder(stream: SingleStream): void;
208
223
  /**
209
224
  * 从录制器中删除流对象
210
225
  * @param stream
@@ -225,11 +240,21 @@ export default class BMStreamModelVM {
225
240
  startSpeakerDetector(): void;
226
241
  addToDetector(speaker: BMSpeaker): void;
227
242
  removeFromDetector(speakerId: string): void;
243
+ clearDetector(): void;
228
244
  shareCustomMedia(enable: boolean, shareOptions: ShareMediaOptions): Promise<undefined>;
229
245
  /**
230
246
  * 根据videoElement 获取内部流数据
231
247
  */
232
248
  getHTMLMediaStream: typeof getHTMLMediaStreamOptions;
233
249
  getMediaStream: typeof getMediaStreamInfo;
250
+ /**
251
+ * 更新流信息 会给服务端发送updateStream信令,会收到updateStream的广播
252
+ */
253
+ updateBloudStreamCustomStats(uid: string, streamId: string, streamInfo: StreamCustomInfo): Promise<any> | undefined;
254
+ /**
255
+ * 布局发生变化之后去调用一下这个方法去检测所有流的播放状态
256
+ * @param {string} status tag 用于区分是什么状态下调用的
257
+ */
258
+ checkStreamStats(status: string): void;
234
259
  clearCache(): void;
235
260
  }
@@ -1,8 +1,8 @@
1
1
  import BMStreamModel from '../BMStream/BMStreamModel';
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import BCUser from '@hysc/core/esm/BoomAdapter/User/User';
4
- import BMRoom from "../BMRoom/BMRoom";
5
- declare type Operation = 'none' | 'getMaster' | 'getManager' | 'removeMaster' | 'getGuest' | 'removeGuest' | 'removeManager' | 'changeNickName' | 'speakerEnable' | 'changeShare' | 'updateUser' | 'raiseHandsVideo' | 'raiseHandsAudio' | 'audienceEnableSpeaking' | 'inBackground';
4
+ import BMRoom from '../BMRoom/BMRoom';
5
+ export declare type Operation = 'none' | 'getMaster' | 'getManager' | 'removeMaster' | 'getGuest' | 'removeGuest' | 'removeManager' | 'changeNickName' | 'speakerEnable' | 'changeShare' | 'updateUser' | 'raiseHandsVideo' | 'raiseHandsAudio' | 'audienceEnableSpeaking' | 'inBackground' | 'raiseHand';
6
6
  interface IUserActionWatcher {
7
7
  operation: Operation;
8
8
  user: BMUser;
@@ -19,7 +19,7 @@ interface UserInfo {
19
19
  };
20
20
  }
21
21
  export interface RaiseHandInfo {
22
- status: 'raiseHandsAudio' | 'raiseHandsVideo';
22
+ status: 'raiseHandsAudio' | 'raiseHandsVideo' | 'raiseHand';
23
23
  user: BMUser;
24
24
  }
25
25
  export default class BMUser {
@@ -57,6 +57,7 @@ export default class BMUser {
57
57
  * 'changeShare': 是否在屏幕共享
58
58
  * 'raiseHandsVideo': 是否视频举手
59
59
  * 'raiseHandsAudio': 是否音频举手
60
+ * 'raiseHand':单纯的举手
60
61
  * @property {BMUser} user
61
62
  */
62
63
  watcher: BehaviorSubject<IUserActionWatcher>;
@@ -69,6 +70,7 @@ export default class BMUser {
69
70
  */
70
71
  raiseVideoHands: boolean;
71
72
  raiseAudioHands: boolean;
73
+ raiseHand: boolean;
72
74
  isAudience: boolean;
73
75
  /**
74
76
  * 是不是普通参会者
@@ -78,6 +80,7 @@ export default class BMUser {
78
80
  * 如果改用户是移动端, 该值用于判断这个用户是否在后台
79
81
  */
80
82
  inBackground: boolean;
83
+ raiseHandTime: number;
81
84
  /**
82
85
  * 是不是web端入会
83
86
  */
@@ -147,7 +150,7 @@ export default class BMUser {
147
150
  /**
148
151
  * 更新当前用户的排序
149
152
  */
150
- updateSortNum(): void;
151
- setSortNum(sortNum: number): void;
153
+ updateSortNum(force?: boolean, shouldDelay?: boolean): void;
154
+ setSortNum(sortNum: number, force: boolean, shouldDelay: boolean): void;
152
155
  }
153
156
  export {};
@@ -1,9 +1,10 @@
1
1
  import BoomCore from '@hysc/core/esm';
2
- import BMUser from './BMUser';
2
+ import BMUser from "./BMUser";
3
3
  import BCUser from '@hysc/core/esm/BoomAdapter/User/User';
4
4
  import BMRoom from '../BMRoom/BMRoom';
5
- import { BehaviorSubject } from 'rxjs';
5
+ import { BehaviorSubject } from "rxjs";
6
6
  import { UpdateMasterType } from '../type';
7
+ import { UserSortType } from "../util/emitter";
7
8
  /**
8
9
  * 往业务端返回的时候,需要把这些用户过滤掉
9
10
  */
@@ -13,21 +14,30 @@ export interface ChangeIsGuest {
13
14
  preIsGuest: boolean;
14
15
  isGuest: boolean;
15
16
  }
17
+ /**
18
+ * bloud 一页用户拉取数量
19
+ */
20
+ export declare const BLOUD_PAGE_SIZE = 500;
21
+ /**
22
+ * 嘉宾及以上身份用户
23
+ */
24
+ export declare const PERMISSION_NOT_COMMON = "RWPSAVMO,RWPSAVM,RWPSAV";
16
25
  export default class BMUserVM {
17
26
  userList: Map<string, BMUser>;
18
27
  audiencesList: Map<string, BMUser>;
19
28
  signalList: Map<string, BMUser>;
20
29
  commonUserList: Map<string, BMUser>;
21
30
  boomCore: BoomCore;
22
- room: BMRoom | null;
31
+ room: BMRoom;
23
32
  userListWatcher: BehaviorSubject<BMUser[]>;
24
33
  audiencesListWatcher: BehaviorSubject<BMUser[]>;
25
34
  commonUserListWatcher: BehaviorSubject<BMUser[]>;
26
35
  signalListWatcher: BehaviorSubject<BMUser[]>;
27
36
  masterUserWatcher: BehaviorSubject<BMUser | null>;
37
+ getForceUserWatcher: BehaviorSubject<boolean>;
28
38
  localUser: BMUser;
29
- constructor(boomCore: BoomCore, localUser: BMUser);
30
- initWithRoom(room: BMRoom): void;
39
+ commTimer: number;
40
+ constructor(boomCore: BoomCore, localUser: BMUser, room: BMRoom);
31
41
  handleUserRoleChange(info: ChangeIsGuest): Promise<void>;
32
42
  /**
33
43
  * 添加用户, 并返回已添加的用户对象
@@ -38,7 +48,7 @@ export default class BMUserVM {
38
48
  * 移除用户
39
49
  * @param userId 用户id
40
50
  */
41
- removeUser(userId: string): void;
51
+ removeUser(userId: string): boolean;
42
52
  /**
43
53
  * 获取用户视频开启状态
44
54
  * @param userId 用户id
@@ -57,7 +67,7 @@ export default class BMUserVM {
57
67
  /**
58
68
  * 检测当前用户是否有主持人权限
59
69
  */
60
- checkLocalHasMaster(): any;
70
+ checkLocalHasMaster(): boolean;
61
71
  /**
62
72
  * 检测目标用户是否有主持人权限
63
73
  */
@@ -67,11 +77,13 @@ export default class BMUserVM {
67
77
  * @param {string} userId
68
78
  */
69
79
  getUser(userId: string): BMUser | undefined;
70
- getAllUsers(pageIndex: number, allUsers: Map<string, BCUser>): Promise<void>;
80
+ getAllUsers(pageIndex: number, allUsers: Map<string, BCUser>, permission?: string, useNew?: boolean): Promise<void>;
71
81
  /**
72
82
  * 刚加入房间时初始化人数
73
83
  */
74
84
  initUserList(usersInRoom: Map<string, BCUser>): Promise<void>;
85
+ addBcUsersMap(users: Map<string, BCUser>, forceGetStream?: boolean): void;
86
+ addBCUser: (bcUser: BCUser, forceGetStream?: boolean) => BMUser | null;
75
87
  /**
76
88
  * 改变userList中的主持人,返回改变后的主持人用户对象,该方法只在change-master中调用, 不对外暴露
77
89
  * @param userId
@@ -83,7 +95,7 @@ export default class BMUserVM {
83
95
  * 联席主持人设置嘉宾的操作
84
96
  * @param userId
85
97
  */
86
- managerChangeToGuest(userId: string): any;
98
+ managerChangeToGuest(userId: string): BMUser | undefined;
87
99
  /**
88
100
  * 改变联席主持人,返回设置为联席主持人的bmuser对象
89
101
  * @param userId
@@ -97,6 +109,7 @@ export default class BMUserVM {
97
109
  */
98
110
  getLocalUser(): BMUser;
99
111
  updateUser(bmUser: BMUser, bcUser: BCUser): void;
112
+ updateLocalUserPermission(permission: string): void;
100
113
  /**
101
114
  * bcUser变成BMUser
102
115
  * @param bcUser
@@ -111,12 +124,24 @@ export default class BMUserVM {
111
124
  /**
112
125
  * 排序变化之后的处理逻辑
113
126
  */
114
- updateSort: () => void;
127
+ updateAllSort: () => void;
128
+ updateSortByType: (userType: UserSortType) => void;
129
+ updateUserSort: any;
130
+ updateCommonUserSort: any;
131
+ updateDelayCommonUserSort: any;
132
+ updateAudienceUserSort: () => void;
133
+ updateSignalUserSort: () => void;
115
134
  /**
116
135
  * 初始化所有的用户
117
- * @param total
118
136
  */
119
- initUsers(total: number): Promise<void>;
137
+ initUsers(): Promise<void>;
138
+ /**
139
+ * 把bloud用户转化为当前的BMUser 和创建对应的BMStreamModel
140
+ * @param page
141
+ * @param permission
142
+ * @param useNew 是否使用getUsersList
143
+ */
144
+ transBloudUsers: (page: number, permission?: string, useNew?: boolean, failedNum?: number) => Promise<void>;
120
145
  /**
121
146
  * 本地嘉宾用户降级为普通参会者之后要取消拉流
122
147
  */
@@ -126,6 +151,27 @@ export default class BMUserVM {
126
151
  userList: BMUser[];
127
152
  total: number;
128
153
  }>;
154
+ getUsersList(page: number, pageSize: number, permission?: string, waitRoom?: boolean): Promise<{
155
+ userList: BMUser[];
156
+ total: number;
157
+ pageIndex: number;
158
+ }>;
129
159
  getTotalUserNumber(): Promise<number>;
130
160
  clearUsers(): void;
161
+ /**
162
+ * 参会者列表搜索(嘉宾及以上才能搜索)
163
+ * @param searchTxt 搜索文本
164
+ * @param pageSize 一页几个
165
+ * @param waitRoom 是否是等候室用户
166
+ */
167
+ searchUsers(searchTxt: string, pageSize: number): Promise<{
168
+ userList: BMUser[];
169
+ commonUserList: BMUser[];
170
+ }>;
171
+ /**
172
+ * 查找等候室用户
173
+ * @param searchTxt
174
+ * @param pageSize
175
+ */
176
+ searchWaitRoomUsers(searchTxt: string, pageSize: number): Promise<BMUser[]>;
131
177
  }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @name: AudioPlay.ts
3
+ * @author: yangliye
4
+ * @date: 2023-06-08 16:35
5
+ * @description:AudioPlay.ts
6
+ * @update: 2023-06-08 16:35
7
+ */
8
+ import { SingleRemoteStream, SingleStream } from "../type";
9
+ import { AudioPlayer } from '@hysc/core';
10
+ import BMRoom from "../BMRoom/BMRoom";
11
+ import { Subject } from "rxjs";
12
+ export default class AudioPlay {
13
+ playMap: WeakSet<SingleStream>;
14
+ playerMap: Map<string, AudioPlayer>;
15
+ container: HTMLDivElement | undefined;
16
+ muted: boolean;
17
+ room: BMRoom;
18
+ playStateChangeWatcher: Subject<AudioPlayer>;
19
+ deviceId?: string;
20
+ constructor(containerId: string, room: BMRoom);
21
+ addStream(stream: SingleRemoteStream, force?: boolean): void;
22
+ removeStream(stream: SingleStream): void;
23
+ removeStreamByUid(uid: string): void;
24
+ play(stream: SingleRemoteStream): Promise<void>;
25
+ mute(mute: boolean): void;
26
+ setVolume(streamId: string, volume: number): void;
27
+ setDevice(deviceId: string, force?: boolean): Promise<void>;
28
+ addPlayerEvent(player: AudioPlayer): void;
29
+ clear(): void;
30
+ destroy(): void;
31
+ }