@hysc/meeting 0.1.0

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 (214) hide show
  1. package/esm/BMChat/BMChatVM.d.ts +24 -0
  2. package/esm/BMChat/BMMessageInfo.d.ts +27 -0
  3. package/esm/BMRoom/BMLiveVM.d.ts +35 -0
  4. package/esm/BMRoom/BMRoom.d.ts +622 -0
  5. package/esm/BMRoom/BMRoomInfo.d.ts +189 -0
  6. package/esm/BMRoom/BMRoomVM.d.ts +283 -0
  7. package/esm/BMRoom/RoomEvent.d.ts +1 -0
  8. package/esm/BMRoom/attachEvents.d.ts +27 -0
  9. package/esm/BMStream/BMSpeaker.d.ts +44 -0
  10. package/esm/BMStream/BMStreamModel.d.ts +248 -0
  11. package/esm/BMStream/BMStreamModelVM.d.ts +233 -0
  12. package/esm/BMStream/getHTMLMediaStreamOptions.d.ts +35 -0
  13. package/esm/BMUser/BMUser.d.ts +147 -0
  14. package/esm/BMUser/BMUserVM.d.ts +137 -0
  15. package/esm/bjy-common/function/debounce.d.ts +9 -0
  16. package/esm/bjy-common/function/execute.d.ts +9 -0
  17. package/esm/bjy-common/function/isDef.d.ts +1 -0
  18. package/esm/bjy-common/function/isNative.d.ts +1 -0
  19. package/esm/bjy-common/function/isUndef.d.ts +1 -0
  20. package/esm/bjy-common/function/nextTick.d.ts +2 -0
  21. package/esm/bjy-common/function/throttling.d.ts +9 -0
  22. package/esm/bjy-common/function/toNumber.d.ts +1 -0
  23. package/esm/bjy-common/function/toString.d.ts +1 -0
  24. package/esm/bjy-common/type/api.d.ts +66 -0
  25. package/esm/bjy-common/type/options.d.ts +7 -0
  26. package/esm/bjy-common/type/type.d.ts +90 -0
  27. package/esm/bjy-common/util/CustomEvent.d.ts +30 -0
  28. package/esm/bjy-common/util/Emitter.d.ts +57 -0
  29. package/esm/bjy-common/util/NextTask.d.ts +28 -0
  30. package/esm/bjy-common/util/Sleep.d.ts +14 -0
  31. package/esm/bjy-common/util/Timer.d.ts +13 -0
  32. package/esm/bjy-common/util/array.d.ts +96 -0
  33. package/esm/bjy-common/util/browser.d.ts +6 -0
  34. package/esm/bjy-common/util/constant.d.ts +50 -0
  35. package/esm/bjy-common/util/holder.d.ts +6 -0
  36. package/esm/bjy-common/util/is.d.ts +49 -0
  37. package/esm/bjy-common/util/keypath.d.ts +41 -0
  38. package/esm/bjy-common/util/logger.d.ts +42 -0
  39. package/esm/bjy-common/util/network.d.ts +4 -0
  40. package/esm/bjy-common/util/object.d.ts +83 -0
  41. package/esm/bjy-common/util/os.d.ts +14 -0
  42. package/esm/bjy-common/util/string.d.ts +102 -0
  43. package/esm/boom-meeting/src/BMChat/BMChatVM.d.ts +21 -0
  44. package/esm/boom-meeting/src/BMChat/BMMessageInfo.d.ts +27 -0
  45. package/esm/boom-meeting/src/BMRoom/BMLiveVM.d.ts +35 -0
  46. package/esm/boom-meeting/src/BMRoom/BMRoomInfo.d.ts +147 -0
  47. package/esm/boom-meeting/src/BMRoom/RoomEvent.d.ts +1 -0
  48. package/esm/boom-meeting/src/BMStream/BMSpeaker.d.ts +44 -0
  49. package/esm/boom-meeting/src/BMStream/BMStreamModel.d.ts +248 -0
  50. package/esm/boom-meeting/src/BMStream/BMStreamModelVM.d.ts +213 -0
  51. package/esm/boom-meeting/src/BMStream/getHTMLMediaStreamOptions.d.ts +35 -0
  52. package/esm/boom-meeting/src/BMUser/BMUser.d.ts +147 -0
  53. package/esm/boom-meeting/src/BMUser/BMUserVM.d.ts +111 -0
  54. package/esm/boom-meeting/src/bjy-common/function/debounce.d.ts +9 -0
  55. package/esm/boom-meeting/src/bjy-common/function/execute.d.ts +9 -0
  56. package/esm/boom-meeting/src/bjy-common/function/isDef.d.ts +1 -0
  57. package/esm/boom-meeting/src/bjy-common/function/isNative.d.ts +1 -0
  58. package/esm/boom-meeting/src/bjy-common/function/isUndef.d.ts +1 -0
  59. package/esm/boom-meeting/src/bjy-common/function/nextTick.d.ts +2 -0
  60. package/esm/boom-meeting/src/bjy-common/function/throttling.d.ts +9 -0
  61. package/esm/boom-meeting/src/bjy-common/function/toNumber.d.ts +1 -0
  62. package/esm/boom-meeting/src/bjy-common/function/toString.d.ts +1 -0
  63. package/esm/boom-meeting/src/bjy-common/type/api.d.ts +66 -0
  64. package/esm/boom-meeting/src/bjy-common/type/options.d.ts +7 -0
  65. package/esm/boom-meeting/src/bjy-common/type/type.d.ts +90 -0
  66. package/esm/boom-meeting/src/bjy-common/util/CustomEvent.d.ts +30 -0
  67. package/esm/boom-meeting/src/bjy-common/util/Emitter.d.ts +57 -0
  68. package/esm/boom-meeting/src/bjy-common/util/NextTask.d.ts +28 -0
  69. package/esm/boom-meeting/src/bjy-common/util/Sleep.d.ts +14 -0
  70. package/esm/boom-meeting/src/bjy-common/util/Timer.d.ts +13 -0
  71. package/esm/boom-meeting/src/bjy-common/util/array.d.ts +96 -0
  72. package/esm/boom-meeting/src/bjy-common/util/browser.d.ts +6 -0
  73. package/esm/boom-meeting/src/bjy-common/util/constant.d.ts +50 -0
  74. package/esm/boom-meeting/src/bjy-common/util/holder.d.ts +6 -0
  75. package/esm/boom-meeting/src/bjy-common/util/is.d.ts +49 -0
  76. package/esm/boom-meeting/src/bjy-common/util/keypath.d.ts +41 -0
  77. package/esm/boom-meeting/src/bjy-common/util/logger.d.ts +42 -0
  78. package/esm/boom-meeting/src/bjy-common/util/network.d.ts +4 -0
  79. package/esm/boom-meeting/src/bjy-common/util/object.d.ts +83 -0
  80. package/esm/boom-meeting/src/bjy-common/util/os.d.ts +14 -0
  81. package/esm/boom-meeting/src/bjy-common/util/string.d.ts +102 -0
  82. package/esm/boom-meeting/src/constants.d.ts +83 -0
  83. package/esm/boom-meeting/src/error/errorMap.d.ts +70 -0
  84. package/esm/boom-meeting/src/error/errorType.d.ts +96 -0
  85. package/esm/boom-meeting/src/logger/logger.d.ts +86 -0
  86. package/esm/boom-meeting/src/type/customStats.d.ts +117 -0
  87. package/esm/boom-meeting/src/type/index.d.ts +9 -0
  88. package/esm/boom-meeting/src/type/stream.d.ts +17 -0
  89. package/esm/boom-meeting/src/type/user.d.ts +9 -0
  90. package/esm/boom-meeting/src/types/customStats.d.ts +103 -0
  91. package/esm/boom-meeting/src/types/index.d.ts +9 -0
  92. package/esm/boom-meeting/src/types/stream.d.ts +17 -0
  93. package/esm/boom-meeting/src/types/user.d.ts +11 -0
  94. package/esm/boom-meeting/src/util/PackLoss.d.ts +7 -0
  95. package/esm/boom-meeting/src/util/Privileges.d.ts +20 -0
  96. package/esm/boom-meeting/src/util/ReportCollector.d.ts +22 -0
  97. package/esm/boom-meeting/src/util/Stutter.d.ts +19 -0
  98. package/esm/boom-meeting/src/util/base64.d.ts +4 -0
  99. package/esm/boom-meeting/src/util/checkPermissions.d.ts +1 -0
  100. package/esm/boom-meeting/src/util/checkSystemRequirements.d.ts +1 -0
  101. package/esm/boom-meeting/src/util/devices.d.ts +2 -0
  102. package/esm/boom-meeting/src/util/emitter.d.ts +18 -0
  103. package/esm/boom-meeting/src/util/formatUserId.d.ts +2 -0
  104. package/esm/boom-meeting/src/util/is.d.ts +70 -0
  105. package/esm/boom-meeting/src/util/peerToPeerProbe.d.ts +9 -0
  106. package/esm/boom-meeting/src/util/request.d.ts +45 -0
  107. package/esm/boom-meeting/src/util/roomUtils.d.ts +9 -0
  108. package/esm/boom-meeting/src/util/util.d.ts +76 -0
  109. package/esm/constants.d.ts +83 -0
  110. package/esm/error/RTCError.d.ts +20 -0
  111. package/esm/error/errorMap.d.ts +70 -0
  112. package/esm/error/errorType.d.ts +96 -0
  113. package/esm/index.d.ts +2 -0
  114. package/esm/index.js +60529 -0
  115. package/esm/index.js.map +7 -0
  116. package/esm/logger/logger.d.ts +86 -0
  117. package/esm/type/customStats.d.ts +117 -0
  118. package/esm/type/index.d.ts +9 -0
  119. package/esm/type/stream.d.ts +17 -0
  120. package/esm/type/user.d.ts +9 -0
  121. package/esm/types/customStats.d.ts +103 -0
  122. package/esm/types/index.d.ts +9 -0
  123. package/esm/types/stream.d.ts +17 -0
  124. package/esm/types/user.d.ts +11 -0
  125. package/esm/util/PackLoss.d.ts +7 -0
  126. package/esm/util/Pqueue.d.ts +61 -0
  127. package/esm/util/Privileges.d.ts +20 -0
  128. package/esm/util/ReportCollector.d.ts +22 -0
  129. package/esm/util/Stutter.d.ts +19 -0
  130. package/esm/util/base64.d.ts +4 -0
  131. package/esm/util/checkPermissions.d.ts +1 -0
  132. package/esm/util/checkSystemRequirements.d.ts +1 -0
  133. package/esm/util/constant.d.ts +67 -0
  134. package/esm/util/devices.d.ts +2 -0
  135. package/esm/util/emitter.d.ts +18 -0
  136. package/esm/util/formatUserId.d.ts +2 -0
  137. package/esm/util/is.d.ts +70 -0
  138. package/esm/util/peerToPeerProbe.d.ts +9 -0
  139. package/esm/util/request.d.ts +45 -0
  140. package/esm/util/roomUtils.d.ts +9 -0
  141. package/esm/util/util.d.ts +76 -0
  142. package/esm/utils/ErrorTypes.d.ts +97 -0
  143. package/package.json +36 -0
  144. package/umd/BMChat/BMChatVM.d.ts +24 -0
  145. package/umd/BMRoom/BMRoom.d.ts +622 -0
  146. package/umd/BMRoom/BMRoomInfo.d.ts +189 -0
  147. package/umd/BMRoom/BMRoomVM.d.ts +283 -0
  148. package/umd/BMRoom/attachEvents.d.ts +27 -0
  149. package/umd/BMStream/BMStreamModelVM.d.ts +233 -0
  150. package/umd/BMUser/BMUser.d.ts +147 -0
  151. package/umd/BMUser/BMUserVM.d.ts +137 -0
  152. package/umd/boom-meeting/src/BMChat/BMMessageInfo.d.ts +27 -0
  153. package/umd/boom-meeting/src/BMRoom/BMLiveVM.d.ts +35 -0
  154. package/umd/boom-meeting/src/BMRoom/RoomEvent.d.ts +1 -0
  155. package/umd/boom-meeting/src/BMStream/BMSpeaker.d.ts +44 -0
  156. package/umd/boom-meeting/src/BMStream/BMStreamModel.d.ts +248 -0
  157. package/umd/boom-meeting/src/BMStream/getHTMLMediaStreamOptions.d.ts +35 -0
  158. package/umd/boom-meeting/src/bjy-common/function/debounce.d.ts +9 -0
  159. package/umd/boom-meeting/src/bjy-common/function/execute.d.ts +9 -0
  160. package/umd/boom-meeting/src/bjy-common/function/isDef.d.ts +1 -0
  161. package/umd/boom-meeting/src/bjy-common/function/isNative.d.ts +1 -0
  162. package/umd/boom-meeting/src/bjy-common/function/isUndef.d.ts +1 -0
  163. package/umd/boom-meeting/src/bjy-common/function/nextTick.d.ts +2 -0
  164. package/umd/boom-meeting/src/bjy-common/function/throttling.d.ts +9 -0
  165. package/umd/boom-meeting/src/bjy-common/function/toNumber.d.ts +1 -0
  166. package/umd/boom-meeting/src/bjy-common/function/toString.d.ts +1 -0
  167. package/umd/boom-meeting/src/bjy-common/type/api.d.ts +66 -0
  168. package/umd/boom-meeting/src/bjy-common/type/options.d.ts +7 -0
  169. package/umd/boom-meeting/src/bjy-common/type/type.d.ts +90 -0
  170. package/umd/boom-meeting/src/bjy-common/util/CustomEvent.d.ts +30 -0
  171. package/umd/boom-meeting/src/bjy-common/util/Emitter.d.ts +57 -0
  172. package/umd/boom-meeting/src/bjy-common/util/NextTask.d.ts +28 -0
  173. package/umd/boom-meeting/src/bjy-common/util/Sleep.d.ts +14 -0
  174. package/umd/boom-meeting/src/bjy-common/util/Timer.d.ts +13 -0
  175. package/umd/boom-meeting/src/bjy-common/util/array.d.ts +96 -0
  176. package/umd/boom-meeting/src/bjy-common/util/browser.d.ts +6 -0
  177. package/umd/boom-meeting/src/bjy-common/util/constant.d.ts +50 -0
  178. package/umd/boom-meeting/src/bjy-common/util/holder.d.ts +6 -0
  179. package/umd/boom-meeting/src/bjy-common/util/is.d.ts +49 -0
  180. package/umd/boom-meeting/src/bjy-common/util/keypath.d.ts +41 -0
  181. package/umd/boom-meeting/src/bjy-common/util/logger.d.ts +42 -0
  182. package/umd/boom-meeting/src/bjy-common/util/network.d.ts +4 -0
  183. package/umd/boom-meeting/src/bjy-common/util/object.d.ts +83 -0
  184. package/umd/boom-meeting/src/bjy-common/util/os.d.ts +14 -0
  185. package/umd/boom-meeting/src/bjy-common/util/string.d.ts +102 -0
  186. package/umd/boom-meeting/src/constants.d.ts +83 -0
  187. package/umd/boom-meeting/src/error/errorMap.d.ts +70 -0
  188. package/umd/boom-meeting/src/type/customStats.d.ts +117 -0
  189. package/umd/boom-meeting/src/type/index.d.ts +9 -0
  190. package/umd/boom-meeting/src/type/stream.d.ts +17 -0
  191. package/umd/boom-meeting/src/type/user.d.ts +9 -0
  192. package/umd/boom-meeting/src/util/PackLoss.d.ts +7 -0
  193. package/umd/boom-meeting/src/util/Privileges.d.ts +20 -0
  194. package/umd/boom-meeting/src/util/ReportCollector.d.ts +22 -0
  195. package/umd/boom-meeting/src/util/Stutter.d.ts +19 -0
  196. package/umd/boom-meeting/src/util/base64.d.ts +4 -0
  197. package/umd/boom-meeting/src/util/checkPermissions.d.ts +1 -0
  198. package/umd/boom-meeting/src/util/checkSystemRequirements.d.ts +1 -0
  199. package/umd/boom-meeting/src/util/devices.d.ts +2 -0
  200. package/umd/boom-meeting/src/util/emitter.d.ts +18 -0
  201. package/umd/boom-meeting/src/util/formatUserId.d.ts +2 -0
  202. package/umd/boom-meeting/src/util/is.d.ts +70 -0
  203. package/umd/boom-meeting/src/util/peerToPeerProbe.d.ts +9 -0
  204. package/umd/boom-meeting/src/util/request.d.ts +45 -0
  205. package/umd/boom-meeting/src/util/roomUtils.d.ts +9 -0
  206. package/umd/boom-meeting/src/util/util.d.ts +76 -0
  207. package/umd/error/RTCError.d.ts +20 -0
  208. package/umd/error/errorType.d.ts +96 -0
  209. package/umd/index.d.ts +2 -0
  210. package/umd/index.js +60 -0
  211. package/umd/logger/logger.d.ts +86 -0
  212. package/umd/util/Pqueue.d.ts +61 -0
  213. package/umd/util/constant.d.ts +67 -0
  214. package/umd/utils/ErrorTypes.d.ts +97 -0
@@ -0,0 +1,233 @@
1
+ /**
2
+ * @name: BMStreamModelVM
3
+ * @author: yangliye
4
+ * @date: 2022-04-27 15:25
5
+ * @description:BMStreamModelVM
6
+ * @update: 2022-04-27 15:25
7
+ * @description
8
+ * 这个模块的功能是去管理展示窗口的处理逻辑,主要包括创建streamModel,更新streamModel(主要是流相关信息的更新,和用户更新)
9
+ * 创建streamModel的操作:
10
+ * 初始化整个流程是根据bloud的用户来创建的
11
+ * 然后在根据brtc里面流的信息来更新对应的streamModel
12
+ * bloud的用户和brtc的流信息是根据uid来进行关联。
13
+ *
14
+ * 共享屏幕用户做了特殊处理,因为web端共享屏幕和移动端共享屏幕处理逻辑不一样
15
+ */
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 '@boom/core/esm/BoomAdapter/type/value';
23
+ import BMSpeaker from './BMSpeaker';
24
+ import { ShareMediaOptions } from "@boom/core/esm/BoomCore/BCClient/BCClient";
25
+ import { getHTMLMediaStreamOptions, Result, getMediaStreamInfo } from "./getHTMLMediaStreamOptions";
26
+ /**
27
+ * 全量的brtc流记录,把所有brtc用户推的流都做记录
28
+ * stream-added 的时候添加
29
+ * stream-removed 的时候删除
30
+ * mute/unmute-video/audio 的时候更新流
31
+ * 当用户进来的时候,去查看这个流对象,如果流存在,就给这个人添加流
32
+ *
33
+ */
34
+ export declare const BRTCStreamMap: Map<string, import("@boom/core/esm/BoomAdapter/singleMode/stream/RemoteStream").default>;
35
+ export declare const BRTCShareStreamMap: Map<string, import("@boom/core/esm/BoomAdapter/singleMode/stream/RemoteStream").default>;
36
+ export default class BMStreamModelVM {
37
+ streamModels: Map<string, BMStreamModel>;
38
+ /**
39
+ * 因为投屏码用户进来以后,他是不在小窗口展示的,所以要把投屏的用户过滤掉给业务的展示
40
+ */
41
+ streamModelsWatcher: BehaviorSubject<BMStreamModel[]>;
42
+ shareStreamModels: Map<string, BMStreamModel>;
43
+ shareStreamModelsWatcher: BehaviorSubject<BMStreamModel[]>;
44
+ localModel: BMStreamModel | null;
45
+ private room;
46
+ bloudStream: any;
47
+ audioStream: SingleLocalStream | undefined;
48
+ brtcStream: SingleLocalStream | undefined;
49
+ /**
50
+ * 本地是否在屏幕共享
51
+ */
52
+ localIsShare: boolean;
53
+ _speaker_enable: boolean;
54
+ speakerEnableWatcher: BehaviorSubject<boolean>;
55
+ /**
56
+ * 混流
57
+ */
58
+ mixStreamModelWatcher: BehaviorSubject<BMStreamModel | null>;
59
+ isShareWatcher: Subject<boolean>;
60
+ canvasTimer: NodeJS.Timeout | null;
61
+ /**
62
+ * 后面打开摄像头存储的流,主要是关闭摄像头的时候得把它清除掉
63
+ */
64
+ videoStream: SingleLocalStream | null;
65
+ private _recorder;
66
+ private _isRecording;
67
+ private _slicingRecord;
68
+ isRecordingWatcher: BehaviorSubject<boolean>;
69
+ private _speaker;
70
+ private _speakerDetector;
71
+ private _speakers;
72
+ speakerWatcher: BehaviorSubject<BMUser | null>;
73
+ constructor();
74
+ private static filterStreamModels;
75
+ initWithRoom(room: BMRoom): this;
76
+ /**
77
+ * 设置扬声器是否打开
78
+ * @param enable
79
+ * @private
80
+ */
81
+ private setSpeakerEnable;
82
+ getStreamModels(): Array<BMStreamModel>;
83
+ /**
84
+ * 获取streamModel
85
+ * @param userId 用户Id
86
+ * @returns
87
+ */
88
+ getStreamModelByUId(userId: string): BMStreamModel | undefined;
89
+ getShareStreamModelByUId(userId: string): BMStreamModel | undefined;
90
+ getLocalStreamModel(): BMStreamModel | null;
91
+ createStreamModel(user: BMUser, stream?: SingleStream): BMStreamModel;
92
+ addStreamModel(streamModel: BMStreamModel): void;
93
+ addShareStreamModel(streamModel: BMStreamModel): void;
94
+ removeStreamModel(streamModel: BMStreamModel): void;
95
+ removeShareStreamModel(streamModel: BMStreamModel): void;
96
+ /**`
97
+ * 通过用户id删除streamModel
98
+ * @param userId
99
+ * @returns
100
+ */
101
+ removeStreamModelByUId(userId: string): BMStreamModel | undefined;
102
+ remoteStreamPublished(stream: SingleRemoteStream): void;
103
+ /**
104
+ * 有人取消流触发,有人取消流之后brtc底层会把流销毁掉,除了流Id和userId,其他的信息都不稳定能取到
105
+ * @param stream
106
+ * @returns
107
+ */
108
+ remoteStreamUnpublished(stream: SingleRemoteStream): BMStreamModel | undefined;
109
+ sortStreamModels(): BMStreamModel[];
110
+ updateStreamModel(streamModel: BMStreamModel, stream: SingleStream): void;
111
+ updateShareStreamModel(streamModel: BMStreamModel, stream: SingleStream): void;
112
+ /**
113
+ * 开关本地摄像头
114
+ * @param status true:开,false:关
115
+ * @param videoTrack 开启美颜之后,需要传递这个参数,携带美颜之后的videoTrack
116
+ */
117
+ setLocalVideoEnable(status: boolean, videoTrack?: MediaStreamTrack): Promise<void>;
118
+ /**
119
+ * 开关本地麦克风
120
+ * @param status true:开,false:关
121
+ */
122
+ setLocalAudioEnable(status: boolean): Promise<undefined>;
123
+ /**
124
+ * 该方法只是在入会的时候,同时开启音频和视频的时候使用,其他时候禁止使用该方法
125
+ * 切换音频和视频状态请使用 setLocalAudioEnable 和 setLocalVideoEnable
126
+ * @param audio
127
+ * @param video
128
+ */
129
+ joinWithAudioAndAudio(audio: boolean, video: boolean): Promise<undefined>;
130
+ /**
131
+ * 切换扬声器
132
+ * @param device
133
+ */
134
+ changeSpeaker(device: Device): Promise<void>;
135
+ /**
136
+ * 设置单个流的扬声器
137
+ * @param streamModel
138
+ */
139
+ changeSingleStreamSpeaker(streamModel: BMStreamModel): Promise<void>;
140
+ changeAudioInput(device: Device): Promise<void>;
141
+ changeVideoInput(device: Device): Promise<void>;
142
+ /**
143
+ * 是否静音扬声器
144
+ * @param enable
145
+ */
146
+ muteSpeaker(enable: boolean): Promise<undefined>;
147
+ /**
148
+ * 创建流并且发布
149
+ * @param audio 是否发布音频流
150
+ * @param video 是否发布视频流
151
+ * @param localModel 本地的streamModel
152
+ * @private
153
+ */
154
+ private createStreamAndPublish;
155
+ videoMuteHandler(): Promise<void>;
156
+ /**
157
+ * 更改音视频状态或者取消发布
158
+ * @param type 更改类型
159
+ * @param mute 是否取消发布
160
+ * @param localModel 本地的streamModel
161
+ * @private
162
+ */
163
+ private muteOrUnpublishStream;
164
+ /**
165
+ * 是否开启屏幕共享
166
+ * @param enable
167
+ * @param opts 开启屏幕共享参数
168
+ * @param customShare
169
+ * @param opts.audio 是否开启音频
170
+ * @param opts.source_name Electron 下窗口名称
171
+ * @param opts.width 共享屏幕宽度
172
+ * @param opts.height 共享屏幕高度
173
+ * @param opts.contentHint 视频的contentHint 可选值: '' | 'motion' | 'detail' | 'text'
174
+ */
175
+ toggleShareScreen(enable: boolean, opts: any, customShare?: Result): Promise<unknown>;
176
+ setShareScreenContentHint(contentHint: '' | 'motion' | 'detail' | 'text'): Promise<void>;
177
+ /**
178
+ * 排序变化之后的处理逻辑
179
+ */
180
+ updateSort: any;
181
+ /**
182
+ * 创建canvas,目的是为了捕获空track流,给brtc使用
183
+ */
184
+ createCanvas(): void;
185
+ private canvasDisplay;
186
+ private static getCanvasStream;
187
+ private createVideoStream;
188
+ /**
189
+ * 启动录制
190
+ * @param {String} opts.filename - 录制文件名
191
+ * @param {Object} opts.capture - 采集属性
192
+ * @param {Number} opts.capture.width - 宽度
193
+ * @param {Number} opts.capture.height - 高度
194
+ * @param {Number} opts.capture.fps - 帧率
195
+ * @param {Number} opts.record - 编码属性
196
+ * @param {Number} opts.record.bitrate - 编码码率
197
+ * @param {String|undefined} opts.record.format - 编码格式
198
+ * @return {boolean}
199
+ */
200
+ startRecord(opts: any): Promise<boolean | undefined>;
201
+ /**
202
+ * 添加流对象到录制器,用于音频轨道录制
203
+ * @param stream
204
+ */
205
+ addToRecorder(stream: any): void;
206
+ /**
207
+ * 从录制器中删除流对象
208
+ * @param stream
209
+ */
210
+ removeFromRecorder(stream: any): void;
211
+ /**
212
+ * 停止录制
213
+ */
214
+ stopRecord(): Promise<void>;
215
+ /**
216
+ * 启用下一个录制分片
217
+ * @param filename - 下一分片文件名
218
+ */
219
+ sliceRecord(filename: string): Promise<boolean | undefined>;
220
+ /**
221
+ * 启动说话人检测器
222
+ */
223
+ startSpeakerDetector(): void;
224
+ addToDetector(speaker: BMSpeaker): void;
225
+ removeFromDetector(speakerId: string): void;
226
+ shareCustomMedia(enable: boolean, shareOptions: ShareMediaOptions): Promise<undefined>;
227
+ /**
228
+ * 根据videoElement 获取内部流数据
229
+ */
230
+ getHTMLMediaStream: typeof getHTMLMediaStreamOptions;
231
+ getMediaStream: typeof getMediaStreamInfo;
232
+ clearCache(): void;
233
+ }
@@ -0,0 +1,147 @@
1
+ import BMStreamModel from '../BMStream/BMStreamModel';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import BCUser from '@boom/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';
6
+ interface IUserActionWatcher {
7
+ operation: Operation;
8
+ user: BMUser;
9
+ }
10
+ interface UserInfo {
11
+ avatar: string;
12
+ jointime: number;
13
+ nickname: string;
14
+ pos: string;
15
+ userId: string;
16
+ status?: {
17
+ audioRaiseHands: boolean;
18
+ videoRaiseHands: boolean;
19
+ };
20
+ }
21
+ export interface RaiseHandInfo {
22
+ status: 'raiseHandsAudio' | 'raiseHandsVideo';
23
+ user: BMUser;
24
+ }
25
+ export default class BMUser {
26
+ /**
27
+ * 用户id
28
+ */
29
+ userId: string;
30
+ /**
31
+ * 用户信息
32
+ */
33
+ userInfo: UserInfo;
34
+ nickName: string;
35
+ isMaster: boolean;
36
+ isManager: boolean;
37
+ mirror: boolean;
38
+ isLocal: boolean;
39
+ isToupingma: boolean;
40
+ hasMultiple: boolean;
41
+ isCreate: boolean;
42
+ hasShare: boolean;
43
+ audienceEnableSpeaking: boolean;
44
+ /** 头像 */
45
+ avatar: string;
46
+ private streamModels;
47
+ permission: any;
48
+ /**
49
+ * 监听器, 监听返回对象属性
50
+ * @property {string} operation
51
+ * 'getManager':获得管理员权限/成为联席主持人
52
+ * 'getMaster':成为主持人
53
+ * 'removeManager':取消管理员权限/取消联席主持人
54
+ * 'removeMaster':取消主持人
55
+ * 'changeNickName':改变昵称
56
+ * 'speakerEnable':扬声器开关状态改变
57
+ * 'changeShare': 是否在屏幕共享
58
+ * 'raiseHandsVideo': 是否视频举手
59
+ * 'raiseHandsAudio': 是否音频举手
60
+ * @property {BMUser} user
61
+ */
62
+ watcher: BehaviorSubject<IUserActionWatcher>;
63
+ /**
64
+ * 排序
65
+ */
66
+ sortNum: number;
67
+ /**
68
+ * 举手相关
69
+ */
70
+ raiseVideoHands: boolean;
71
+ raiseAudioHands: boolean;
72
+ isAudience: boolean;
73
+ /**
74
+ * 是不是普通参会者
75
+ */
76
+ isCommonUser: boolean;
77
+ /**
78
+ * 是不是web端入会
79
+ */
80
+ get isWeb(): boolean;
81
+ constructor(user: any, isLocal?: boolean);
82
+ setup(userId: string, userinfo: UserInfo, nickname: string): void;
83
+ getMainStreamModel(): BMStreamModel | undefined;
84
+ getShareStreamModel(): BMStreamModel | undefined;
85
+ /**
86
+ * 获取用户麦克风开启状态
87
+ */
88
+ get audioEnable(): boolean;
89
+ get isMixer(): boolean;
90
+ /**
91
+ * 获取用户视频开启状态
92
+ */
93
+ get videoEnable(): boolean;
94
+ get isSharing(): boolean;
95
+ /**
96
+ * 是否是信号源
97
+ */
98
+ get isSignal(): boolean;
99
+ /**
100
+ * 检测当前用户是否有主持人权限
101
+ */
102
+ checkLocalHasMaster(): boolean;
103
+ /**
104
+ * 给用户添加流
105
+ * @param streamId
106
+ * @param stream 流
107
+ */
108
+ addStream(streamId: string, stream: BMStreamModel): void;
109
+ /**
110
+ * 删除流
111
+ * @param streamId
112
+ */
113
+ removeStream(streamId: string): void;
114
+ /**
115
+ * 获取用户id
116
+ */
117
+ getID(): string;
118
+ /**
119
+ * 获取用户昵称
120
+ */
121
+ getNickName(): string;
122
+ /**
123
+ * 获取用户信息
124
+ */
125
+ getUserInfo(): UserInfo;
126
+ /**
127
+ * 获取用户流信息
128
+ */
129
+ getStreams(): Map<string, BMStreamModel>;
130
+ /**
131
+ * updateUserInfo更新用户信息(除了isMaster,isMaster是通过change-master事件改变的)
132
+ * @param bcUser
133
+ * @param participant
134
+ * @param bmRoom
135
+ * @returns
136
+ */
137
+ updateUserInfo(bcUser: BCUser, participant: any, bmRoom: BMRoom): void;
138
+ /** 是否有管理权限, 是主持人或联席主持人之一 */
139
+ hasManager(): boolean;
140
+ /** 获取用户后面的身份标识 */
141
+ getNicknameSuffix(): string;
142
+ /**
143
+ * 更新当前用户的排序
144
+ */
145
+ updateSortNum(): void;
146
+ }
147
+ export {};
@@ -0,0 +1,137 @@
1
+ import BoomCore from '@boom/core/esm';
2
+ import BMUser from './BMUser';
3
+ import BCUser from '@boom/core/esm/BoomAdapter/User/User';
4
+ import BMRoom from '../BMRoom/BMRoom';
5
+ import { BehaviorSubject } from 'rxjs';
6
+ import { UpdateMasterType } from '../type';
7
+ /**
8
+ * 往业务端返回的时候,需要把这些用户过滤掉
9
+ */
10
+ export declare const ignoreUserId: string[];
11
+ export interface ChangeIsGuest {
12
+ user: BMUser;
13
+ preIsGuest: boolean;
14
+ isGuest: boolean;
15
+ }
16
+ export default class BMUserVM {
17
+ userList: Map<string, BMUser>;
18
+ audiencesList: Map<string, BMUser>;
19
+ signalList: Map<string, BMUser>;
20
+ commonUserList: Map<string, BMUser>;
21
+ boomCore: BoomCore;
22
+ room: BMRoom | null;
23
+ userListWatcher: BehaviorSubject<BMUser[]>;
24
+ audiencesListWatcher: BehaviorSubject<BMUser[]>;
25
+ commonUserListWatcher: BehaviorSubject<BMUser[]>;
26
+ signalListWatcher: BehaviorSubject<BMUser[]>;
27
+ masterUserWatcher: BehaviorSubject<BMUser | null>;
28
+ localUser: BMUser;
29
+ constructor(boomCore: BoomCore, localUser: BMUser);
30
+ initWithRoom(room: BMRoom): void;
31
+ handleUserRoleChange(info: ChangeIsGuest): Promise<void>;
32
+ /**
33
+ * 添加用户, 并返回已添加的用户对象
34
+ * @param bcUser bcUser对象
35
+ */
36
+ addUser(bcUser: BCUser): BMUser | null;
37
+ /**
38
+ * 移除用户
39
+ * @param userId 用户id
40
+ */
41
+ removeUser(userId: string): void;
42
+ /**
43
+ * 是否在userList找到该用户,返回true or false
44
+ * @param bcUser bcUser对象
45
+ * @returns
46
+ */
47
+ findUser(bcUser: BCUser): boolean;
48
+ /**
49
+ * 获取用户视频开启状态
50
+ * @param userId 用户id
51
+ */
52
+ videoEnable(userId: string): boolean;
53
+ /**
54
+ * 获取用户音频开启状态
55
+ * @param userId
56
+ */
57
+ audioEnable(userId: string): boolean;
58
+ /**
59
+ * 检测用户是不是主持人
60
+ * @param {string} userId 用户id
61
+ */
62
+ checkIsMaster(userId: any): boolean;
63
+ /**
64
+ * 检测当前用户是否有主持人权限
65
+ */
66
+ checkLocalHasMaster(): any;
67
+ /**
68
+ * 检测目标用户是否有主持人权限
69
+ */
70
+ checkUserHasMaster(userId: string): boolean;
71
+ /**
72
+ * 根据用户id获取user对象
73
+ * @param {string} userId
74
+ */
75
+ getUser(userId: string): BMUser | undefined;
76
+ /**
77
+ * 刚加入房间时初始化人数
78
+ */
79
+ initUserList(pageIndex: number): Promise<void>;
80
+ /**
81
+ * 改变userList中的主持人,返回改变后的主持人用户对象,该方法只在change-master中调用, 不对外暴露
82
+ * @param userId
83
+ * @param oldMasterId
84
+ * @param isKeep
85
+ */
86
+ updateMaster(userId: string, oldMasterId: string, isKeep: boolean): UpdateMasterType;
87
+ /**
88
+ * 联席主持人设置嘉宾的操作
89
+ * @param userId
90
+ */
91
+ managerChangeToGuest(userId: string): any;
92
+ /**
93
+ * 改变联席主持人,返回设置为联席主持人的bmuser对象
94
+ * @param userId
95
+ * @param status true:设置成联席主持人 false:取消联席主持人身份
96
+ * @param hasS
97
+ * @returns
98
+ */
99
+ updateManager(userId: string, status: boolean, hasS?: boolean): BMUser;
100
+ /**
101
+ * 获取我自己
102
+ */
103
+ getLocalUser(): BMUser;
104
+ updateSelf(bcUser: BCUser): void;
105
+ updateUser(bmUser: BMUser, bcUser: BCUser): void;
106
+ /**
107
+ * bcUser变成BMUser
108
+ * @param bcUser
109
+ * @returns
110
+ */
111
+ toBMUser(bcUser: BCUser): BMUser;
112
+ private sortUsers;
113
+ private sortAudiences;
114
+ private sortCommonUsers;
115
+ private sortSignalUsers;
116
+ private static filterUsers;
117
+ /**
118
+ * 排序变化之后的处理逻辑
119
+ */
120
+ updateSort: () => void;
121
+ /**
122
+ * 初始化所有的用户
123
+ * @param total
124
+ */
125
+ initUsers(total: number): Promise<void>;
126
+ /**
127
+ * 本地嘉宾用户降级为普通参会者之后要取消拉流
128
+ */
129
+ handleUnSubCommonUser(): void;
130
+ handleCommonUserChange(): void;
131
+ getUsers(page: number, pageSize: number, permission?: string): Promise<{
132
+ userList: BMUser[];
133
+ total: number;
134
+ }>;
135
+ getTotalUserNumber(): Promise<number>;
136
+ clearUsers(): void;
137
+ }
@@ -0,0 +1,27 @@
1
+ interface IMessageInfo {
2
+ userId?: string;
3
+ message: string;
4
+ role?: string;
5
+ isLocal?: boolean;
6
+ avatar?: string;
7
+ nickName?: string;
8
+ sendTime?: number;
9
+ isMeetingNotice?: boolean;
10
+ to?: string | undefined;
11
+ isDanger?: boolean;
12
+ }
13
+ export default class BMMessageInfo {
14
+ userId?: any;
15
+ message: string;
16
+ time: string;
17
+ timeStamp: number;
18
+ role?: string;
19
+ isLocal?: boolean;
20
+ avatar?: any;
21
+ nickName?: any;
22
+ isMeetingNotice: boolean;
23
+ to: string | undefined;
24
+ isDanger: boolean | undefined;
25
+ constructor(props: IMessageInfo);
26
+ }
27
+ export {};
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @name: BMLiveVM.ts
3
+ * @author: yangliye
4
+ * @date: 2022-07-15 13:53
5
+ * @description:处理直播相关的流处理
6
+ * @update: 2022-07-15 13:53
7
+ */
8
+ import BMRoom from "./BMRoom";
9
+ import BMStreamModel from "../BMStream/BMStreamModel";
10
+ declare class BMLiveVM {
11
+ private room;
12
+ constructor(room: BMRoom);
13
+ private get localBMUser();
14
+ private get localIsAudience();
15
+ /**
16
+ * 拉流处理
17
+ * @param bmStreamModel
18
+ */
19
+ handlePull(bmStreamModel: BMStreamModel): Promise<void>;
20
+ /**
21
+ * 切换大小流处理
22
+ * @param bmStreamModel
23
+ */
24
+ handleChangeStreamType(bmStreamModel: BMStreamModel): Promise<void>;
25
+ handlePlay(bmStreamModel: BMStreamModel, noPlayChanged: boolean): Promise<void>;
26
+ /**
27
+ * 处理观众端举手发言完了,然后在禁止发言,这个时候,没有必要在拉所有人的流,把除了混流的人的流都取消订阅,然后播放混流的声音
28
+ */
29
+ handleAudienceDisable(): Promise<void>;
30
+ /**
31
+ * 观众允许发言,允许发言之后,要把所有的流都拉,然后混流静音
32
+ */
33
+ handleAudienceEnable(): Promise<void>;
34
+ }
35
+ export default BMLiveVM;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ import BMUser from '../BMUser/BMUser';
2
+ import { SingleStream } from '../type';
3
+ /**
4
+ * @name: BMSpeaker
5
+ * @author: liuxinghai
6
+ * @date: 2022-06-07 11:41
7
+ * @description:BMSpeaker
8
+ * 适配 brtc 流对象到 bloud 流对象接口,
9
+ * 用户辅助采用 bloud SpeakerDetector 做说话人检测
10
+ * @date: 2022-06-07 11:41
11
+ */
12
+ export default class BMSpeaker {
13
+ private _user;
14
+ private _stream;
15
+ private _emitter;
16
+ constructor(user: BMUser, stream: SingleStream);
17
+ /**
18
+ * 获取对象 ID 标识,此处使用流 ID 标识
19
+ * @returns
20
+ */
21
+ getID(): string;
22
+ /**
23
+ * 获取用户 BMUser 对象
24
+ * @returns
25
+ */
26
+ getUser(): BMUser;
27
+ /**
28
+ * 监听事件
29
+ *
30
+ * @param type 事件类型
31
+ * @param fn 事件回调
32
+ * @return 实例本身 {@link Client}
33
+ */
34
+ on(type: string, fn: Function): this;
35
+ /**
36
+ * 启动音频音量检测
37
+ */
38
+ collectAudioLevel(): void;
39
+ private handleAudioLevel;
40
+ /**
41
+ * 关闭音频音量检测
42
+ */
43
+ close(): void;
44
+ }