@hysc/meeting 7.0.0 → 7.0.116

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 (265) hide show
  1. package/esm/boom-core/src/BoomCore/BCClient/clientEventType.d.ts +428 -0
  2. package/esm/boom-meeting/src/BMChat/BMChatVM.d.ts +26 -0
  3. package/esm/boom-meeting/src/BMChat/BMMessageInfo.d.ts +31 -0
  4. package/esm/boom-meeting/src/BMRoom/BMLiveVM.d.ts +35 -0
  5. package/esm/boom-meeting/src/BMRoom/BMRoom.d.ts +696 -0
  6. package/esm/boom-meeting/src/BMRoom/BMRoomInfo.d.ts +215 -0
  7. package/esm/boom-meeting/src/BMRoom/BMRoomVM.d.ts +317 -0
  8. package/esm/boom-meeting/src/BMRoom/RoomEvent.d.ts +1 -0
  9. package/esm/boom-meeting/src/BMStream/BMSpeaker.d.ts +26 -0
  10. package/esm/boom-meeting/src/BMStream/BMStreamModel.d.ts +292 -0
  11. package/esm/boom-meeting/src/BMStream/BMStreamModelVM.d.ts +270 -0
  12. package/esm/boom-meeting/src/BMStream/getHTMLMediaStreamOptions.d.ts +35 -0
  13. package/esm/boom-meeting/src/BMStream/sortStream.d.ts +30 -0
  14. package/esm/boom-meeting/src/BMUser/BMUser.d.ts +156 -0
  15. package/esm/boom-meeting/src/BMUser/BMUserVM.d.ts +177 -0
  16. package/esm/boom-meeting/src/SingletonQueue/SingletonQueue.d.ts +26 -0
  17. package/esm/boom-meeting/src/audioPlay/AudioPlay.d.ts +31 -0
  18. package/esm/boom-meeting/src/bjy-common/function/debounce.d.ts +9 -0
  19. package/esm/boom-meeting/src/bjy-common/function/execute.d.ts +9 -0
  20. package/esm/boom-meeting/src/bjy-common/function/getErrorMessage.d.ts +1 -0
  21. package/esm/boom-meeting/src/bjy-common/function/isDef.d.ts +1 -0
  22. package/esm/boom-meeting/src/bjy-common/function/isNative.d.ts +1 -0
  23. package/esm/boom-meeting/src/bjy-common/function/isUndef.d.ts +1 -0
  24. package/esm/boom-meeting/src/bjy-common/function/nextTick.d.ts +2 -0
  25. package/esm/boom-meeting/src/bjy-common/function/throttling.d.ts +9 -0
  26. package/esm/boom-meeting/src/bjy-common/function/toNumber.d.ts +1 -0
  27. package/esm/boom-meeting/src/bjy-common/function/toString.d.ts +1 -0
  28. package/esm/boom-meeting/src/bjy-common/type/api.d.ts +66 -0
  29. package/esm/boom-meeting/src/bjy-common/type/options.d.ts +7 -0
  30. package/esm/boom-meeting/src/bjy-common/type/type.d.ts +90 -0
  31. package/esm/boom-meeting/src/bjy-common/util/CustomEvent.d.ts +30 -0
  32. package/esm/boom-meeting/src/bjy-common/util/Emitter.d.ts +57 -0
  33. package/esm/boom-meeting/src/bjy-common/util/NextTask.d.ts +28 -0
  34. package/esm/boom-meeting/src/bjy-common/util/Sleep.d.ts +14 -0
  35. package/esm/boom-meeting/src/bjy-common/util/Timer.d.ts +13 -0
  36. package/esm/boom-meeting/src/bjy-common/util/array.d.ts +96 -0
  37. package/esm/boom-meeting/src/bjy-common/util/browser.d.ts +6 -0
  38. package/esm/boom-meeting/src/bjy-common/util/constant.d.ts +50 -0
  39. package/esm/boom-meeting/src/bjy-common/util/holder.d.ts +6 -0
  40. package/esm/boom-meeting/src/bjy-common/util/is.d.ts +49 -0
  41. package/esm/boom-meeting/src/bjy-common/util/keypath.d.ts +41 -0
  42. package/esm/boom-meeting/src/bjy-common/util/logger.d.ts +42 -0
  43. package/esm/boom-meeting/src/bjy-common/util/network.d.ts +4 -0
  44. package/esm/boom-meeting/src/bjy-common/util/object.d.ts +83 -0
  45. package/esm/boom-meeting/src/bjy-common/util/os.d.ts +14 -0
  46. package/esm/boom-meeting/src/bjy-common/util/string.d.ts +102 -0
  47. package/esm/boom-meeting/src/constants.d.ts +129 -0
  48. package/esm/boom-meeting/src/error/RTCError.d.ts +20 -0
  49. package/esm/boom-meeting/src/error/errorMap.d.ts +70 -0
  50. package/esm/boom-meeting/src/error/errorType.d.ts +96 -0
  51. package/esm/boom-meeting/src/handleEvent/attachEvents.d.ts +48 -0
  52. package/esm/boom-meeting/src/handleEvent/brtcNetEvent.d.ts +9 -0
  53. package/esm/boom-meeting/src/handleEvent/customMessageEvent.d.ts +2 -0
  54. package/esm/boom-meeting/src/handleEvent/handleParticipantEvent.d.ts +24 -0
  55. package/esm/boom-meeting/src/handleEvent/handleRoomEvent.d.ts +20 -0
  56. package/esm/boom-meeting/src/handleEvent/messageEvent.d.ts +5 -0
  57. package/esm/boom-meeting/src/handleEvent/pullUser.d.ts +7 -0
  58. package/esm/boom-meeting/src/handleEvent/roomErrEvent.d.ts +9 -0
  59. package/esm/boom-meeting/src/handleEvent/streamEvent.d.ts +22 -0
  60. package/esm/boom-meeting/src/logger/logger.d.ts +86 -0
  61. package/esm/boom-meeting/src/type/customStats.d.ts +123 -0
  62. package/esm/boom-meeting/src/type/index.d.ts +9 -0
  63. package/esm/boom-meeting/src/type/stream.d.ts +15 -0
  64. package/esm/boom-meeting/src/type/user.d.ts +9 -0
  65. package/esm/boom-meeting/src/util/PackLoss.d.ts +7 -0
  66. package/esm/boom-meeting/src/util/Pqueue.d.ts +62 -0
  67. package/esm/boom-meeting/src/util/Privileges.d.ts +20 -0
  68. package/esm/boom-meeting/src/util/ReportCollector.d.ts +22 -0
  69. package/esm/boom-meeting/src/util/Stutter.d.ts +19 -0
  70. package/esm/boom-meeting/src/util/Thread.d.ts +12 -0
  71. package/esm/boom-meeting/src/util/base64.d.ts +4 -0
  72. package/esm/boom-meeting/src/util/checkPermissions.d.ts +1 -0
  73. package/esm/boom-meeting/src/util/checkSystemRequirements.d.ts +1 -0
  74. package/esm/boom-meeting/src/util/constant.d.ts +67 -0
  75. package/esm/boom-meeting/src/util/devices.d.ts +2 -0
  76. package/esm/boom-meeting/src/util/emitter.d.ts +43 -0
  77. package/esm/boom-meeting/src/util/formatUserId.d.ts +2 -0
  78. package/esm/boom-meeting/src/util/is.d.ts +70 -0
  79. package/esm/boom-meeting/src/util/peerToPeerProbe.d.ts +9 -0
  80. package/esm/boom-meeting/src/util/request.d.ts +45 -0
  81. package/esm/boom-meeting/src/util/roomUtils.d.ts +9 -0
  82. package/esm/boom-meeting/src/util/sortUtils.d.ts +10 -0
  83. package/esm/boom-meeting/src/util/util.d.ts +78 -0
  84. package/esm/index.js +29 -0
  85. package/esm/src/BMChat/BMChatVM.d.ts +26 -0
  86. package/esm/src/BMChat/BMMessageInfo.d.ts +31 -0
  87. package/esm/src/BMRoom/BMLiveVM.d.ts +35 -0
  88. package/esm/src/BMRoom/BMRoom.d.ts +696 -0
  89. package/esm/src/BMRoom/BMRoomInfo.d.ts +215 -0
  90. package/esm/src/BMRoom/BMRoomVM.d.ts +317 -0
  91. package/esm/src/BMRoom/RoomEvent.d.ts +1 -0
  92. package/esm/src/BMStream/BMSpeaker.d.ts +26 -0
  93. package/esm/src/BMStream/BMStreamModel.d.ts +292 -0
  94. package/esm/src/BMStream/BMStreamModelVM.d.ts +270 -0
  95. package/esm/src/BMStream/getHTMLMediaStreamOptions.d.ts +35 -0
  96. package/esm/src/BMStream/sortStream.d.ts +30 -0
  97. package/esm/src/BMUser/BMUser.d.ts +156 -0
  98. package/esm/src/BMUser/BMUserVM.d.ts +177 -0
  99. package/esm/src/SingletonQueue/SingletonQueue.d.ts +26 -0
  100. package/esm/src/audioPlay/AudioPlay.d.ts +31 -0
  101. package/esm/src/bjy-common/function/debounce.d.ts +9 -0
  102. package/esm/src/bjy-common/function/execute.d.ts +9 -0
  103. package/esm/src/bjy-common/function/getErrorMessage.d.ts +1 -0
  104. package/esm/src/bjy-common/function/isDef.d.ts +1 -0
  105. package/esm/src/bjy-common/function/isNative.d.ts +1 -0
  106. package/esm/src/bjy-common/function/isUndef.d.ts +1 -0
  107. package/esm/src/bjy-common/function/nextTick.d.ts +2 -0
  108. package/esm/src/bjy-common/function/throttling.d.ts +9 -0
  109. package/esm/src/bjy-common/function/toNumber.d.ts +1 -0
  110. package/esm/src/bjy-common/function/toString.d.ts +1 -0
  111. package/esm/src/bjy-common/type/api.d.ts +66 -0
  112. package/esm/src/bjy-common/type/options.d.ts +7 -0
  113. package/esm/src/bjy-common/type/type.d.ts +90 -0
  114. package/esm/src/bjy-common/util/CustomEvent.d.ts +30 -0
  115. package/esm/src/bjy-common/util/Emitter.d.ts +57 -0
  116. package/esm/src/bjy-common/util/NextTask.d.ts +28 -0
  117. package/esm/src/bjy-common/util/Sleep.d.ts +14 -0
  118. package/esm/src/bjy-common/util/Timer.d.ts +13 -0
  119. package/esm/src/bjy-common/util/array.d.ts +96 -0
  120. package/esm/src/bjy-common/util/browser.d.ts +6 -0
  121. package/esm/src/bjy-common/util/constant.d.ts +50 -0
  122. package/esm/src/bjy-common/util/holder.d.ts +6 -0
  123. package/esm/src/bjy-common/util/is.d.ts +49 -0
  124. package/esm/src/bjy-common/util/keypath.d.ts +41 -0
  125. package/esm/src/bjy-common/util/logger.d.ts +42 -0
  126. package/esm/src/bjy-common/util/network.d.ts +4 -0
  127. package/esm/src/bjy-common/util/object.d.ts +83 -0
  128. package/esm/src/bjy-common/util/os.d.ts +14 -0
  129. package/esm/src/bjy-common/util/string.d.ts +102 -0
  130. package/esm/src/constants.d.ts +129 -0
  131. package/esm/src/error/RTCError.d.ts +20 -0
  132. package/esm/src/error/errorMap.d.ts +70 -0
  133. package/esm/src/error/errorType.d.ts +96 -0
  134. package/esm/src/handleEvent/attachEvents.d.ts +48 -0
  135. package/esm/src/handleEvent/brtcNetEvent.d.ts +9 -0
  136. package/esm/src/handleEvent/customMessageEvent.d.ts +2 -0
  137. package/esm/src/handleEvent/handleParticipantEvent.d.ts +24 -0
  138. package/esm/src/handleEvent/handleRoomEvent.d.ts +20 -0
  139. package/esm/src/handleEvent/messageEvent.d.ts +5 -0
  140. package/esm/src/handleEvent/pullUser.d.ts +7 -0
  141. package/esm/src/handleEvent/roomErrEvent.d.ts +9 -0
  142. package/esm/src/handleEvent/streamEvent.d.ts +22 -0
  143. package/esm/src/index.d.ts +2 -0
  144. package/esm/src/logger/logger.d.ts +86 -0
  145. package/esm/src/type/customStats.d.ts +123 -0
  146. package/esm/src/type/index.d.ts +9 -0
  147. package/esm/src/type/stream.d.ts +15 -0
  148. package/esm/src/type/user.d.ts +9 -0
  149. package/esm/src/util/PackLoss.d.ts +7 -0
  150. package/esm/src/util/Pqueue.d.ts +62 -0
  151. package/esm/src/util/Privileges.d.ts +20 -0
  152. package/esm/src/util/ReportCollector.d.ts +22 -0
  153. package/esm/src/util/Stutter.d.ts +19 -0
  154. package/esm/src/util/Thread.d.ts +12 -0
  155. package/esm/src/util/base64.d.ts +4 -0
  156. package/esm/src/util/checkPermissions.d.ts +1 -0
  157. package/esm/src/util/checkSystemRequirements.d.ts +1 -0
  158. package/esm/src/util/constant.d.ts +67 -0
  159. package/esm/src/util/devices.d.ts +2 -0
  160. package/esm/src/util/emitter.d.ts +43 -0
  161. package/esm/src/util/formatUserId.d.ts +2 -0
  162. package/esm/src/util/is.d.ts +70 -0
  163. package/esm/src/util/peerToPeerProbe.d.ts +9 -0
  164. package/esm/src/util/request.d.ts +45 -0
  165. package/esm/src/util/roomUtils.d.ts +9 -0
  166. package/esm/src/util/sortUtils.d.ts +10 -0
  167. package/esm/src/util/util.d.ts +78 -0
  168. package/esm/utils/BoomError.d.ts +19 -0
  169. package/esm/utils/ErrorTypes.d.ts +139 -0
  170. package/esm/utils/index.d.ts +9 -0
  171. package/package.json +16 -12
  172. package/umd/boom-core/src/BoomCore/BCClient/clientEventType.d.ts +428 -0
  173. package/umd/boom-meeting/src/BMChat/BMChatVM.d.ts +26 -0
  174. package/umd/boom-meeting/src/BMChat/BMMessageInfo.d.ts +31 -0
  175. package/umd/boom-meeting/src/BMRoom/BMLiveVM.d.ts +35 -0
  176. package/umd/boom-meeting/src/BMRoom/BMRoom.d.ts +696 -0
  177. package/umd/boom-meeting/src/BMRoom/BMRoomInfo.d.ts +215 -0
  178. package/umd/boom-meeting/src/BMRoom/BMRoomVM.d.ts +317 -0
  179. package/umd/boom-meeting/src/BMRoom/RoomEvent.d.ts +1 -0
  180. package/umd/boom-meeting/src/BMStream/BMSpeaker.d.ts +26 -0
  181. package/umd/boom-meeting/src/BMStream/BMStreamModel.d.ts +292 -0
  182. package/umd/boom-meeting/src/BMStream/BMStreamModelVM.d.ts +270 -0
  183. package/umd/boom-meeting/src/BMStream/getHTMLMediaStreamOptions.d.ts +35 -0
  184. package/umd/boom-meeting/src/BMStream/sortStream.d.ts +30 -0
  185. package/umd/boom-meeting/src/BMUser/BMUser.d.ts +156 -0
  186. package/umd/boom-meeting/src/BMUser/BMUserVM.d.ts +177 -0
  187. package/umd/boom-meeting/src/SingletonQueue/SingletonQueue.d.ts +26 -0
  188. package/umd/boom-meeting/src/audioPlay/AudioPlay.d.ts +31 -0
  189. package/umd/boom-meeting/src/bjy-common/function/debounce.d.ts +9 -0
  190. package/umd/boom-meeting/src/bjy-common/function/execute.d.ts +9 -0
  191. package/umd/boom-meeting/src/bjy-common/function/getErrorMessage.d.ts +1 -0
  192. package/umd/boom-meeting/src/bjy-common/function/isDef.d.ts +1 -0
  193. package/umd/boom-meeting/src/bjy-common/function/isNative.d.ts +1 -0
  194. package/umd/boom-meeting/src/bjy-common/function/isUndef.d.ts +1 -0
  195. package/umd/boom-meeting/src/bjy-common/function/nextTick.d.ts +2 -0
  196. package/umd/boom-meeting/src/bjy-common/function/throttling.d.ts +9 -0
  197. package/umd/boom-meeting/src/bjy-common/function/toNumber.d.ts +1 -0
  198. package/umd/boom-meeting/src/bjy-common/function/toString.d.ts +1 -0
  199. package/umd/boom-meeting/src/bjy-common/type/api.d.ts +66 -0
  200. package/umd/boom-meeting/src/bjy-common/type/options.d.ts +7 -0
  201. package/umd/boom-meeting/src/bjy-common/type/type.d.ts +90 -0
  202. package/umd/boom-meeting/src/bjy-common/util/CustomEvent.d.ts +30 -0
  203. package/umd/boom-meeting/src/bjy-common/util/Emitter.d.ts +57 -0
  204. package/umd/boom-meeting/src/bjy-common/util/NextTask.d.ts +28 -0
  205. package/umd/boom-meeting/src/bjy-common/util/Sleep.d.ts +14 -0
  206. package/umd/boom-meeting/src/bjy-common/util/Timer.d.ts +13 -0
  207. package/umd/boom-meeting/src/bjy-common/util/array.d.ts +96 -0
  208. package/umd/boom-meeting/src/bjy-common/util/browser.d.ts +6 -0
  209. package/umd/boom-meeting/src/bjy-common/util/constant.d.ts +50 -0
  210. package/umd/boom-meeting/src/bjy-common/util/holder.d.ts +6 -0
  211. package/umd/boom-meeting/src/bjy-common/util/is.d.ts +49 -0
  212. package/umd/boom-meeting/src/bjy-common/util/keypath.d.ts +41 -0
  213. package/umd/boom-meeting/src/bjy-common/util/logger.d.ts +42 -0
  214. package/umd/boom-meeting/src/bjy-common/util/network.d.ts +4 -0
  215. package/umd/boom-meeting/src/bjy-common/util/object.d.ts +83 -0
  216. package/umd/boom-meeting/src/bjy-common/util/os.d.ts +14 -0
  217. package/umd/boom-meeting/src/bjy-common/util/string.d.ts +102 -0
  218. package/umd/boom-meeting/src/constants.d.ts +129 -0
  219. package/umd/boom-meeting/src/error/RTCError.d.ts +20 -0
  220. package/umd/boom-meeting/src/error/errorMap.d.ts +70 -0
  221. package/umd/boom-meeting/src/error/errorType.d.ts +96 -0
  222. package/umd/boom-meeting/src/handleEvent/attachEvents.d.ts +48 -0
  223. package/umd/boom-meeting/src/handleEvent/brtcNetEvent.d.ts +9 -0
  224. package/umd/boom-meeting/src/handleEvent/customMessageEvent.d.ts +2 -0
  225. package/umd/boom-meeting/src/handleEvent/handleParticipantEvent.d.ts +24 -0
  226. package/umd/boom-meeting/src/handleEvent/handleRoomEvent.d.ts +20 -0
  227. package/umd/boom-meeting/src/handleEvent/messageEvent.d.ts +5 -0
  228. package/umd/boom-meeting/src/handleEvent/pullUser.d.ts +7 -0
  229. package/umd/boom-meeting/src/handleEvent/roomErrEvent.d.ts +9 -0
  230. package/umd/boom-meeting/src/handleEvent/streamEvent.d.ts +22 -0
  231. package/umd/boom-meeting/src/logger/logger.d.ts +86 -0
  232. package/umd/boom-meeting/src/type/customStats.d.ts +123 -0
  233. package/umd/boom-meeting/src/type/index.d.ts +9 -0
  234. package/umd/boom-meeting/src/type/stream.d.ts +15 -0
  235. package/umd/boom-meeting/src/type/user.d.ts +9 -0
  236. package/umd/boom-meeting/src/util/PackLoss.d.ts +7 -0
  237. package/umd/boom-meeting/src/util/Pqueue.d.ts +62 -0
  238. package/umd/boom-meeting/src/util/Privileges.d.ts +20 -0
  239. package/umd/boom-meeting/src/util/ReportCollector.d.ts +22 -0
  240. package/umd/boom-meeting/src/util/Stutter.d.ts +19 -0
  241. package/umd/boom-meeting/src/util/Thread.d.ts +12 -0
  242. package/umd/boom-meeting/src/util/base64.d.ts +4 -0
  243. package/umd/boom-meeting/src/util/checkPermissions.d.ts +1 -0
  244. package/umd/boom-meeting/src/util/checkSystemRequirements.d.ts +1 -0
  245. package/umd/boom-meeting/src/util/constant.d.ts +67 -0
  246. package/umd/boom-meeting/src/util/devices.d.ts +2 -0
  247. package/umd/boom-meeting/src/util/emitter.d.ts +43 -0
  248. package/umd/boom-meeting/src/util/formatUserId.d.ts +2 -0
  249. package/umd/boom-meeting/src/util/is.d.ts +70 -0
  250. package/umd/boom-meeting/src/util/peerToPeerProbe.d.ts +9 -0
  251. package/umd/boom-meeting/src/util/request.d.ts +45 -0
  252. package/umd/boom-meeting/src/util/roomUtils.d.ts +9 -0
  253. package/umd/boom-meeting/src/util/sortUtils.d.ts +10 -0
  254. package/umd/boom-meeting/src/util/util.d.ts +78 -0
  255. package/umd/index.js +29 -0
  256. package/umd/src/index.d.ts +2 -0
  257. package/umd/utils/BoomError.d.ts +19 -0
  258. package/umd/utils/ErrorTypes.d.ts +139 -0
  259. package/umd/utils/index.d.ts +9 -0
  260. package/dist/esm/index.js +0 -6
  261. package/dist/esm/index.js.map +0 -1
  262. package/dist/index.d.mts +0 -4099
  263. package/dist/index.d.ts +0 -4099
  264. package/dist/index.js +0 -6
  265. package/dist/index.js.map +0 -1
package/dist/index.d.mts DELETED
@@ -1,4099 +0,0 @@
1
- import * as lodash_es from 'lodash-es';
2
- import BCClient, { BCUser, BloudStream, ShareMediaOptions, Player, AudioPlayer } from '@hysc/core';
3
- import { BehaviorSubject, Subject } from 'rxjs';
4
- import { BoomError } from '@hysc/utils';
5
- export { Logger } from '@hysc/utils';
6
- import { StreamCustomInfo } from '@hysc/bloud/src/core/Room';
7
-
8
- interface IMessageInfo {
9
- userId?: string;
10
- message: string;
11
- role?: string;
12
- isLocal?: boolean;
13
- avatar?: string;
14
- nickName?: string;
15
- sendTime?: number;
16
- isMeetingNotice?: boolean;
17
- to?: string | undefined;
18
- isDanger?: boolean;
19
- seq?: number;
20
- failed?: boolean;
21
- }
22
- declare class BMMessageInfo {
23
- userId?: any;
24
- message: string;
25
- time: string;
26
- timeStamp: number;
27
- role?: string;
28
- isLocal?: boolean;
29
- avatar?: any;
30
- nickName?: any;
31
- isMeetingNotice: boolean;
32
- to: string | undefined;
33
- isDanger: boolean | undefined;
34
- seq: number | undefined;
35
- failed: boolean | undefined;
36
- constructor(props: IMessageInfo);
37
- }
38
-
39
- /**
40
- * 内置 user id 类型
41
- */
42
- declare type UserId = number | string;
43
- /**
44
- * 用户角色
45
- */
46
- declare type Role = 'anchor' | 'audience';
47
- /**
48
- * 房间类型
49
- */
50
- declare type RoomType = 'big' | 'normal';
51
- /**
52
- * 视频编码
53
- */
54
- declare type Codec = 'h264' | 'vp8';
55
- /**
56
- * 音频编码
57
- */
58
- declare type AudioCodec = 'opus';
59
- /**
60
- * 直播模式
61
- */
62
- declare type Mode = 'rtc' | 'live';
63
- /**
64
- * MediaStreamTrack 类型
65
- */
66
- declare type TrackType = 'audio' | 'video';
67
- /**
68
- * 视频 Profile 枚举
69
- */
70
- declare type VideoProfile = '120p' | '180p' | '240p' | '360p' | '480p' | '720p' | '1080p' | '1440p' | '4k';
71
- /**
72
- * 音频 Profile 枚举
73
- */
74
- declare type AudioProfile = 'standard' | 'standard-stereo' | 'high' | 'high-stereo';
75
- /**
76
- * 屏幕分享 Profile 枚举
77
- */
78
- declare type ScreenProfile = '480p' | '480p_2' | '720p' | '720p_2' | '1080p' | '1080p_2';
79
- /**
80
- * 视频自适应模式
81
- * motion 流畅模式
82
- * detail & text 清晰模式
83
- * ‘’ 平衡模式
84
- */
85
- declare type VideoHint = '' | 'motion' | 'detail' | 'text';
86
- /**
87
- * 音频自适应模式
88
- * speech 演讲模式
89
- * speech-recognition 语音识别模式
90
- * music 音乐模式
91
- * ‘’ 平衡模式
92
- */
93
- declare type AudioHint = '' | 'speech' | 'speech-recognition' | 'music';
94
- /**
95
- * 设备接口
96
- */
97
- declare interface Device {
98
- /**
99
- * 设备标识
100
- */
101
- deviceId: string;
102
- /**
103
- * 设备分组 id,来自同一个硬件的两个设备具有相同的 groupId
104
- */
105
- groupId: string;
106
- /**
107
- * 设备索引
108
- */
109
- index: number;
110
- /**
111
- * 设备名称
112
- */
113
- name: string;
114
- /**
115
- * 设备类型
116
- */
117
- kind: 'videoinput' | 'audioinput' | 'audiooutput';
118
- /**
119
- * 是否是系统默认设备
120
- */
121
- default: boolean;
122
- }
123
- /**
124
- * 大流还是小流
125
- */
126
- declare type StreamSimulcastType = 'small' | 'big';
127
- /**
128
- * 主流还是辅流
129
- */
130
- declare type StreamType$1 = 'main' | 'assist';
131
- declare module logger {
132
- /**
133
- * debug 级别
134
- */
135
- export const DEBUG = 1;
136
- /**
137
- * info 级别
138
- */
139
- export const INFO = 2;
140
- /**
141
- * info 级别
142
- */
143
- /**
144
- * warn 级别
145
- */
146
- export const WARN = 3;
147
- /**
148
- * error 级别
149
- */
150
- export const ERROR = 4;
151
- /**
152
- * 关闭所有日志
153
- */
154
- export const CLOSE = 5;
155
- /**
156
- * fatal 级别
157
- * @internal
158
- */
159
- export const FATAL = 6;
160
- /**
161
- * 设置日志输出级别
162
- *
163
- * @param level 日志输出级别
164
- */
165
- export function setLevel(level: number): void;
166
- /**
167
- * 打印 debug 日志
168
- *
169
- * @param msg 日志内容
170
- */
171
- export function debug(msg: string, tag?: string, userId?: UserId, args?: any[]): void;
172
- /**
173
- * 打印 info 日志
174
- *
175
- * @param msg 日志内容
176
- */
177
- export function info(msg: string, tag?: string, userId?: UserId, args?: any[]): void;
178
- /**
179
- * 打印 call 日志
180
- *
181
- * @param msg
182
- * @param args
183
- */
184
- /**
185
- * 打印 warn 日志
186
- *
187
- * @param msg 日志内容
188
- */
189
- export function warn(msg: string, tag?: string, userId?: UserId, args?: any[]): void;
190
- /**
191
- * 打印 error 日志
192
- *
193
- * @param msg 日志内容
194
- */
195
- export function error(msg: string, tag?: string, userId?: UserId, args?: any[]): void;
196
- /**
197
- * 致命错误,中断程序
198
- *
199
- * @param msg 日志内容
200
- */
201
- export function fatal(code: number, name?: string, message?: string): void;
202
- /**
203
- * 打开日志上传
204
- *
205
- */
206
- export function enableUploadLog(): void;
207
- /**
208
- * 关闭日志上传
209
- *
210
- */
211
- export function disableUploadLog(): void;
212
- export const LogMap: {
213
- 1: typeof debug;
214
- 2: typeof info;
215
- 3: typeof warn;
216
- 4: typeof error;
217
- };
218
- }
219
- declare module ClientEvents {
220
- /**
221
- * 远端流添加事件,当远端用户发布流后会收到该通知
222
- * ```javascript
223
- * client.on('stream-added', event => {
224
- * const remoteStream = event.stream;
225
- * });
226
- * ```
227
- */
228
- export const STREAM_ADDED = "stream-added";
229
- /**
230
- * 远端流移除事件,当远端用户取消发布流后会收到该通知。
231
- * ```javascript
232
- * client.on('stream-removed', event => {
233
- * const remoteStream = event.stream;
234
- * });
235
- * ```
236
- */
237
- export const STREAM_REMOVED = "stream-removed";
238
- /**
239
- * 远端流更新事件,当远端用户添加、移除或更换音视频轨道后会收到该通知
240
- * ```javascript
241
- * client.on('stream-updated', event => {
242
- * const remoteStream = event.stream;
243
- * });
244
- * ```
245
- */
246
- export const STREAM_UPDATED = "stream-updated";
247
- /**
248
- * 本地流推流成功事件,调用 publish() 成功后会触发该事件
249
- * ```javascript
250
- * client.on('stream-published', event => {
251
- * const localStream = event.stream;
252
- * });
253
- * ```
254
- */
255
- export const STREAM_PUBLISHED = "stream-published";
256
- /**
257
- * 远端流订阅成功事件,调用 subscribe() 成功后会触发该事件
258
- * ```javascript
259
- * client.on('stream-subscribed', event => {
260
- * const remoteStream = event.stream;
261
- * });
262
- * ```
263
- */
264
- export const STREAM_SUBSCRIBED = "stream-subscribed";
265
- /**
266
- * 远端用户禁用视频通知
267
- * ```javascript
268
- * client.on('mute-video', event => {
269
- * const stream = event.stream;
270
- * });
271
- * ```
272
- */
273
- export const MUTE_VIDEO = "mute-video";
274
- /**
275
- * 远端用户取消禁用视频通知
276
- * ```javascript
277
- * client.on('unmute-video', event => {
278
- * const stream = event.stream;
279
- * });
280
- * ```
281
- */
282
- export const UNMUTE_VIDEO = "unmute-video";
283
- /**
284
- * 远端用户禁用音频通知
285
- * ```javascript
286
- * client.on('mute-audio', event => {
287
- * const stream = event.stream;
288
- * });
289
- * ```
290
- */
291
- export const MUTE_AUDIO = "mute-audio";
292
- /**
293
- * 远端用户取消禁用音频通知
294
- * ```javascript
295
- * client.on('mute-audio', event => {
296
- * const stream = event.stream;
297
- * });
298
- * ```
299
- */
300
- export const UNMUTE_AUDIO = "unmute-audio";
301
- /**
302
- * 客户端错误事件,当出现不可恢复错误后 Client 会通过该事件上报
303
- * ```javascript
304
- * client.on('error', error => {
305
- * console.error('client error observed: ' + error);
306
- * const errorCode = error.getCode();
307
- * // 当出现客户端错误后,请调用 client.leave() 退房并尝试通过 client.join() 重新进房恢复通话。
308
- * });
309
- * ```
310
- */
311
- export const ERROR = "error";
312
- /**
313
- * 用户进入房间通知
314
- * ```javascript
315
- * client.on('peer-joined', event => {
316
- * const userId = event.userId;
317
- * });
318
- * ```
319
- */
320
- export const PEER_JOINED = "peer-joined";
321
- /**
322
- * 用户退出房间通知
323
- * ```javascript
324
- * client.on('peer-leaved', event => {
325
- * const userId = event.userId;
326
- * });
327
- * ```
328
- */
329
- export const PEER_LEAVED = "peer-leaved";
330
- /**
331
- * client 被踢出房间通知,其他端以相同的 user_id 进入了房间
332
- * ```javascript
333
- * client.on('client-banned', () => {
334
- * console.log('你已被踢出!');
335
- * });
336
- * ```
337
- */
338
- export const CLIENT_BANNED = "client-banned";
339
- /**
340
- * 用户被踢出房间通知,被管理员踢出
341
- * ```javascript
342
- * client.on('user-kicked', () => {
343
- * console.log('你已被踢出!');
344
- * });
345
- * ```
346
- */
347
- export const USER_KICKED = "user-kicked";
348
- /**
349
- * token 即将过期
350
- * ```javascript
351
- * client.on('token-will-expire', () => {
352
- * console.log('你的 token 即将过期,请更新 token');
353
- * });
354
- * ```
355
- */
356
- export const TOKEN_WILL_EXPIRE = "token-will-expire";
357
- /**
358
- * token 过期
359
- * ```javascript
360
- * client.on('token-expire', () => {
361
- * console.log('你的 token 已经过期,已自动退出房间');
362
- * });
363
- * ```
364
- */
365
- export const TOKEN_EXPIRE = "token-expire";
366
- /**
367
- * 房间关闭
368
- * ```javascript
369
- * client.on('room-closed', () => {
370
- * console.log('房间已关闭,已自动退出');
371
- * });
372
- * ```
373
- */
374
- export const ROOM_CLOSED = "room-closed";
375
- /**
376
- * 房间自动同步完成
377
- * ```javascript
378
- * client.on('sync-room-completed', () => {
379
- * console.log('房间自动同步完成');
380
- * });
381
- * ```
382
- */
383
- export const SYNC_ROOM_COMPLETED = "sync-room-completed";
384
- }
385
- declare module StreamEvents {
386
- /**
387
- * videoTrack end 事件
388
- * ```javascript
389
- * stream.on('video-track-ended', () => {
390
- * console.log(`stream ${stream.getUserId()} video-track-ended`);
391
- * });
392
- * ```
393
- */
394
- export const VIDEO_TRACK_ENDED = "video-track-ended";
395
- /**
396
- * audioTrack end 事件
397
- * ```javascript
398
- * stream.on('audio-track-ended', () => {
399
- * console.log(`stream ${stream.getUserId()} audio-track-ended`);
400
- * });
401
- * ```
402
- */
403
- export const AUDIO_TRACK_ENDED = "audio-track-ended";
404
- /**
405
- * videoTrack mute 事件
406
- * ```javascript
407
- * stream.on('video-track-mute', () => {
408
- * console.log(`stream ${stream.getUserId()} video-track-mute`);
409
- * });
410
- * ```
411
- */
412
- export const VIDEO_TRACK_MUTE = "video-track-mute";
413
- /**
414
- * audioTrack mute 事件
415
- * ```javascript
416
- * stream.on('audio-track-mute', () => {
417
- * console.log(`stream ${stream.getUserId()} audio-track-mute`);
418
- * });
419
- * ```
420
- */
421
- export const AUDIO_TRACK_MUTE = "audio-track-mute";
422
- /**
423
- * videoTrack unmute 事件
424
- * ```javascript
425
- * stream.on('video-track-unmute', () => {
426
- * console.log(`stream ${stream.getUserId()} video-track-unmute`);
427
- * });
428
- * ```
429
- */
430
- export const VIDEO_TRACK_UNMUTE = "video-track-unmute";
431
- /**
432
- * audioTrack unmute 事件
433
- * ```javascript
434
- * stream.on('audio-track-unmute', () => {
435
- * console.log(`stream ${stream.getUserId()} audio-track-unmute`);
436
- * });
437
- * ```
438
- */
439
- export const AUDIO_TRACK_UNMUTE = "audio-track-unmute";
440
- /**
441
- * audioTrack unmute 事件
442
- * ```javascript
443
- * stream.on('audio-track-unmute', () => {
444
- * console.log(`stream ${stream.getUserId()} audio-track-unmute`);
445
- * });
446
- * ```
447
- */
448
- /**
449
- * track update 事件
450
- * ```javascript
451
- * stream.on('track-update', (event, data: {type: 'audio' | 'video', track: MediaStreamTrack}) => {
452
- * console.log(`stream ${stream.getUserId()} track-update`);
453
- * });
454
- * ```
455
- */
456
- export const TRACK_UPDATE = "track-update";
457
- /**
458
- * Audio/Video Player 状态变化事件 App 可根据状态变化来更新 UI,比如,通过监听 video player 状态变化来关闭或打开遮板
459
- * ```javascript
460
- * stream.on('player-state-changed', (event) => {
461
- * console.log(`${event.type} player is ${event.state} because of ${event.reason}`);
462
- * });
463
- * ```
464
- */
465
- export const PLAYER_STATE_CHANGED = "player-state-changed";
466
- /**
467
- * pc 连接错误,需要重新推拉流
468
- * ```javascript
469
- * stream.on('connect-error', event => {
470
- * console.error('stream pc connect error');
471
- * if (stream.isLocalStream()) {
472
- * client.publish(stream)
473
- * }
474
- * else {
475
- * client.subscribe(stream)
476
- * }
477
- * });
478
- * ```
479
- */
480
- export const CONNECT_ERROR = "connect-error";
481
- /**
482
- * pc 连接成功
483
- * ```javascript
484
- * stream.on('connect-success', event => {
485
- * console.info('stream pc connect success');
486
- * });
487
- * ```
488
- */
489
- export const CONNECT_SUCCESS = "connect-success";
490
- /**
491
- * pc 重连
492
- * ```javascript
493
- * stream.on('connect-reconnecting', event => {
494
- * console.info('stream pc connect reconnecting');
495
- * });
496
- * ```
497
- */
498
- export const CONNECT_RECONNECTING = "connect-reconnecting";
499
- /**
500
- * video 首帧渲染
501
- * ```javascript
502
- * stream.on('player-video-rendered', event => {
503
- * // 移除加载动画
504
- * });
505
- * ```
506
- */
507
- export const PLAYER_VIDEO_RENDERED = "player-video-rendered";
508
- /**
509
- * audio 首帧渲染
510
- * ```javascript
511
- * stream.on('player-audio-rendered', event => {
512
- * // 移除加载动画
513
- * });
514
- * ```
515
- */
516
- export const PLAYER_AUDIO_RENDERED = "player-audio-rendered";
517
- /**
518
- * audio 音量
519
- * ```javascript
520
- * stream.on('audio-level', event => {
521
- * // 移除加载动画
522
- * });
523
- * ```
524
- */
525
- export const AUDIO_LEVEL = "audio-level";
526
- /**
527
- * 流销毁关闭
528
- * ```javascript
529
- * stream.on('close', event => {
530
- * });
531
- * ```
532
- */
533
- export const CLOSE = "close";
534
- }
535
- declare class RTCError extends Error {
536
- /**
537
- * 获取错误码
538
- *
539
- * @returns 错误码
540
- */
541
- getCode(): number;
542
- }
543
- /**
544
- * 创建本地流配置项
545
- */
546
- declare interface StreamDeviceOption {
547
- /**
548
- * 流类型,主流还是辅流,vloud 底层使用
549
- */
550
- type?: StreamType$1;
551
-
552
- /**
553
- * 流来源类型
554
- */
555
- sourceType: 'camera' | 'screen' | 'file'
556
- /**
557
- * 是否有视频
558
- */
559
- video?: boolean;
560
- /**
561
- * 是否有音频
562
- */
563
- audio?: boolean;
564
- /**
565
- * 是否是屏幕分享
566
- */
567
- screen?: boolean;
568
- /**
569
- * 麦克风设备标识
570
- */
571
- microphoneId?: string;
572
- /**
573
- * 摄像头设备标识
574
- */
575
- cameraId?: string;
576
- /**
577
- * 自定义音频源
578
- */
579
- audioSource?: MediaStreamTrack;
580
- /**
581
- * 自定义视频源
582
- */
583
- videoSource?: MediaStreamTrack;
584
- /**
585
- * 是否开启回声消除
586
- */
587
- echoCancellation?: boolean;
588
- /**
589
- * 是否开启自动增益
590
- */
591
- autoGainControl?: boolean;
592
- /**
593
- * 是否开启自动降噪
594
- */
595
- noiseSuppression?: boolean;
596
- /**
597
- * 自适应策略
598
- * https://www.w3.org/TR/mst-content-hint/#video-content-hints
599
- */
600
- videoHint?: VideoHint;
601
- /**
602
- * 自适应策略
603
- * https://www.w3.org/TR/mst-content-hint/#audio-content-hints
604
- */
605
- audioHint?: AudioHint;
606
- }
607
- declare interface StreamPlayOption {
608
- /**
609
- * video fit 类型
610
- */
611
- fit?: 'cover' | 'contain';
612
- /**
613
- * 静音播放
614
- */
615
- muted?: boolean;
616
- /**
617
- * 水平旋转
618
- */
619
- rotateX?: number;
620
- /**
621
- * 垂直旋转
622
- */
623
- rotateY?: number;
624
- /**
625
- * 背景颜色
626
- */
627
- backgroundColor?: string;
628
-
629
- audio?: boolean
630
- }
631
- /**
632
- * LocalStream stats 接口
633
- */
634
- declare interface LocalStreamStats {
635
- /**
636
- * 视频丢包数
637
- */
638
- videoPacketsLost?: number;
639
- /**
640
- * 音频丢包数
641
- */
642
- audioPacketsLost?: number;
643
- /**
644
- * 视频发送字节数
645
- */
646
- videoBytesSent?: number;
647
- /**
648
- * 视频包发送数
649
- */
650
- videoPacketsSent?: number;
651
- /**
652
- * 音频发送字节数
653
- */
654
- audioBytesSent?: number;
655
- /**
656
- * 音频包发送数
657
- */
658
- audioPacketsSent?: number;
659
- /**
660
- * 视频宽度
661
- */
662
- width?: number;
663
- /**
664
- * 视频高度
665
- */
666
- height?: number;
667
- /**
668
- * rtt 网络延时
669
- */
670
- rtt?: number;
671
- /**
672
- * 编码帧数
673
- */
674
- framesEncoded?: number;
675
- /**
676
- * 发送帧数
677
- */
678
- framesSent?: number;
679
- }
680
- /**
681
- * RemoteStream stats 接口
682
- */
683
- declare interface RemoteStreamStats {
684
- /**
685
- * 视频丢包数
686
- */
687
- videoPacketsLost?: number;
688
- /**
689
- * 音频丢包数
690
- */
691
- audioPacketsLost?: number;
692
- /**
693
- * 视频接收字节数
694
- */
695
- videoBytesReceived?: number;
696
- /**
697
- * 音频包接收数
698
- */
699
- videoPacketsReceived?: number;
700
- /**
701
- * 音频接收字节数
702
- */
703
- audioBytesReceived?: number;
704
- /**
705
- * 音频包接收数
706
- */
707
- audioPacketsReceived?: number;
708
- /**
709
- * 视频宽度
710
- */
711
- width?: number;
712
- /**
713
- * 视频高度
714
- */
715
- height?: number;
716
- /**
717
- * rtt 网络延时
718
- */
719
- rtt?: number;
720
- /**
721
- * 解码帧数
722
- */
723
- framesDecoded?: number;
724
- }
725
- declare interface StreamCodecOption {
726
- /**
727
- * 视频宽度
728
- */
729
- width?: number;
730
- /**
731
- * 视频高度
732
- */
733
- height?: number;
734
- /**
735
- * 视频帧率
736
- */
737
- frameRate?: number;
738
- /**
739
- * 音频码率
740
- */
741
- /**
742
- * 视频码率
743
- */
744
- bitrate?: number;
745
- /**
746
- * 设置 h264 profile,默认 42e01f
747
- */
748
- profile?: string;
749
- }
750
- declare interface SmallStreamCodecOption {
751
- /**
752
- * 视频宽度
753
- */
754
- width?: number;
755
- /**
756
- * 视频高度
757
- */
758
- height?: number;
759
- /**
760
- * 视频码率
761
- */
762
- bitrate?: number;
763
- }
764
- declare abstract class Stream {
765
- /**
766
- * 本地流标识
767
- */
768
- static readonly STREAM_TYPE_LOCAL = 0;
769
- /**
770
- * 远端流标识
771
- */
772
- static readonly STREAM_TYPE_REMOTE = 1;
773
- /**
774
- * 创建流实例
775
- *
776
- * @param type 流类型
777
- * @param uid 用户 id
778
- * @param unumber 用户 number
779
- * @param webrtcType webrtc 底层类型
780
- * @param stream 底层流对象
781
- * @returns Stream
782
- */
783
- constructor(type: number, sid?: string, uid?: UserId, webrtcType?: number, stream?: any, subStream?: any);
784
- /**
785
- * 判断是否是本地流
786
- *
787
- * @returns boolean
788
- */
789
- isLocalStream(): boolean;
790
- /**
791
- * 是否是屏幕分享流
792
- *
793
- * @returns boolean
794
- */
795
- isScreenStream(): boolean;
796
- /**
797
- * 流是否正在播放
798
- *
799
- * @returns boolean
800
- */
801
- isPlaying(): boolean;
802
- /**
803
- * 获取 userId
804
- *
805
- * @returns number
806
- */
807
- getUserId(): UserId;
808
- /**
809
- * 获取 stream id
810
- *
811
- * @returns string
812
- */
813
- getStreamId(): string;
814
- /**
815
- * 是否有视频
816
- *
817
- * @returns boolean
818
- */
819
- hasVideo(): boolean;
820
- /**
821
- * 是否有音频
822
- *
823
- * @returns boolean
824
- */
825
- hasAudio(): boolean;
826
- /**
827
- * 获取流视频是否挂起
828
- *
829
- * @returns boolean
830
- */
831
- getVideoOn(): boolean;
832
- /**
833
- * 获取流音频是否挂起
834
- *
835
- * @returns boolean
836
- */
837
- getAudioOn(): boolean;
838
- /**
839
- * 音频轨道
840
- */
841
- get audioTrack(): MediaStreamTrack;
842
- /**
843
- * 视频轨道
844
- */
845
- get videoTrack(): MediaStreamTrack;
846
- /**
847
- * 获取音频轨道
848
- *
849
- * @returns MediaStreamTrack
850
- */
851
- getAudioTrack(): MediaStreamTrack;
852
- /**
853
- * 获取视频轨道
854
- *
855
- * @returns MediaStreamTrack
856
- */
857
- getVideoTrack(): MediaStreamTrack;
858
- /**
859
- * 获取 MediaStream 实例
860
- *
861
- * @returns MediaStream
862
- */
863
- getMediaStream(): MediaStream;
864
- /**
865
- * 禁用视频轨道
866
- *
867
- * - 对于本地流,调用该方法会停止发送视频,远端会触发 Client.on('mute-video') 事件
868
- * - 如果视频是从摄像头采集,此时摄像头灯仍然是亮着的。若想完全禁用视频轨道(即关闭摄像头)
869
- * - 可以使用 removeTrack() 删除视频轨道然后调用 MediaStreamTrack.stop() 关闭视频轨道(关闭摄像头)
870
- * - 对于远端流,调用该方法会停止播放视频,但是仍然接收视频数据。
871
- *
872
- * @returns boolean 是否成功
873
- */
874
- muteVideo(): Promise<boolean>;
875
- /**
876
- * 启用视频轨道
877
- *
878
- * - 对于本地流,调用该方法会触发远端 Client.on('unmute-video') 事件。
879
- * - 视频轨道默认是开启的,若你调用 muteVideo() 后可用该方法重新启用视频。
880
- *
881
- * @returns boolean 是否成功
882
- */
883
- unmuteVideo(): Promise<boolean>;
884
- /**
885
- * 禁用音频轨道
886
- *
887
- * - 对于本地流,调用该方法会停止发送音频,远端会触发 Client.on('mute-audio') 事件。
888
- * - 对于远端流,调用该方法会停止播放音频,但是仍然接收音频数据。
889
- *
890
- * @returns boolean 是否成功
891
- */
892
- muteAudio(): Promise<boolean>;
893
- /**
894
- * 启用音频轨道
895
- *
896
- * - 对于本地流,调用该方法会触发远端 Client.on('unmute-audio') 事件。
897
- * - 音频轨道默认是开启的,若你调用 muteAudio() 后可用该方法重新启用音频。
898
- *
899
- * @returns boolean 是否成功
900
- */
901
- unmuteAudio(): Promise<boolean>;
902
- /**
903
- * 播放流
904
- *
905
- * @param videoId 挂载 dom
906
- * @param options 播放选项
907
- *
908
- * @returns any
909
- */
910
- play(videoId: string | HTMLDivElement, options?: StreamPlayOption): Promise<any>;
911
- /**
912
- * 重新播放流
913
- *
914
- * @returns any
915
- */
916
- replay(): Promise<void>;
917
- /**
918
- * 恢复播放音视频
919
- *
920
- * - 在某些版本浏览器上移动传入 play() 的 div 容器可能会导致音视频播放器进入 ‘PAUSED’ 状态,此时 需要调用该接口恢复播放。
921
- * - 由于浏览器自动播放策略的限制,在 play() 返回 PLAY_NOT_ALLOWED 错误后需要引导用户通过手势 调用该接口恢复播放
922
- *
923
- * @returns any
924
- */
925
- resume(): Promise<any>;
926
- /**
927
- * 停止播放流
928
- *
929
- * @returns void
930
- */
931
- stop(): void;
932
- /**
933
- * 销毁音视频流
934
- *
935
- * @returns void
936
- */
937
- destroy(): void;
938
- /**
939
- * 获取流的麦克风音量
940
- *
941
- * @returns number
942
- */
943
- getAudioLevel(): number;
944
- /**
945
- * 提交事件
946
- *
947
- * @param type 事件类型
948
- * @param data 事件数据
949
- *
950
- * @returns void
951
- */
952
- fire(type: string, data?: any): void;
953
- /**
954
- * 设置事件监听
955
- * 支持链式调用
956
- * 支持命名空间 `type.namespace`,使用 `.` 来分隔 `type` 和 `namespace`
957
- *
958
- * @param type 事件类型
959
- * @param listener 监听函数
960
- *
961
- * @returns Stream
962
- */
963
- on(type: 'video-track-ended', listener: typeof stream_event_video_track_ended): this;
964
- on(type: 'video-track-mute', listener: typeof stream_event_video_track_mute): this;
965
- on(type: 'video-track-unmute', listener: typeof stream_event_video_track_unmute): this;
966
- on(type: 'audio-track-ended', listener: typeof stream_event_audio_track_ended): this;
967
- on(type: 'audio-track-mute', listener: typeof stream_event_audio_track_mute): this;
968
- on(type: 'audio-track-unmute', listener: typeof stream_event_audio_track_unmute): this;
969
- on(type: 'track-update', listener: typeof stream_event_track_update): this;
970
- on(type: 'player-state-changed', listener: typeof stream_event_player_state_changed): this;
971
- on(type: 'connect-error', listener: typeof stream_event_connect_error): this;
972
- on(type: string, listener: Function): this;
973
- /**
974
- * 设置一次事件监听
975
- * 支持链式调用
976
- * 支持命名空间 `type.namespace`,使用 `.` 来分隔 `type` 和 `namespace`
977
- *
978
- * @param type 事件类型
979
- * @param listener 监听函数
980
- *
981
- * @returns Stream
982
- */
983
- one(type: 'video-track-ended', listener: typeof stream_event_video_track_ended): this;
984
- one(type: 'video-track-mute', listener: typeof stream_event_video_track_mute): this;
985
- one(type: 'video-track-unmute', listener: typeof stream_event_video_track_unmute): this;
986
- one(type: 'audio-track-ended', listener: typeof stream_event_audio_track_ended): this;
987
- one(type: 'audio-track-mute', listener: typeof stream_event_audio_track_mute): this;
988
- one(type: 'audio-track-unmute', listener: typeof stream_event_audio_track_unmute): this;
989
- one(type: 'track-update', listener: typeof stream_event_track_update): this;
990
- one(type: 'player-state-changed', listener: typeof stream_event_player_state_changed): this;
991
- one(type: 'connect-error', listener: typeof stream_event_connect_error): this;
992
- one(type: string, listener: Function): this;
993
- /**
994
- * 取消事件监听
995
- * 支持链式调用
996
- *
997
- * @param type 事件类型或者命名空间
998
- * - 如果传入命名空间则解绑此命名空间的所有回调
999
- * - 如果不传则解绑所有设置过的回调
1000
- * @param listener 绑定函数
1001
- * - 如果不传则解绑指定 `type` 的所有回调,否则只解绑指定 `type` 和 `listener` 的回调
1002
- *
1003
- * @returns Stream
1004
- */
1005
- off(type?: string, listener?: Function): this;
1006
- /**
1007
- * 获取当前播放的扬声器设备 id
1008
- *
1009
- * @returns string
1010
- */
1011
- getAudioDeviceId(): string;
1012
- /**
1013
- * 获取当前播放音量
1014
- *
1015
- * @returns number
1016
- */
1017
- getAudioVolume(): number;
1018
- /**
1019
- * 截取当前流的一帧视频数据(base64 png),该方法需要在 play() 后调用,并且 Stream 中有视频流才有效
1020
- *
1021
- * @returns string
1022
- */
1023
- getVideoFrame(): string;
1024
- /**
1025
- * 获取流的传输信息
1026
- */
1027
- abstract getStats(): Promise<LocalStreamStats | RemoteStreamStats>;
1028
- }
1029
- /**
1030
- * 本地流对象
1031
- */
1032
- declare class LocalStream extends Stream {
1033
- /**
1034
- * 创建本地流实例
1035
- *
1036
- * @param options 配置项
1037
- *
1038
- * @returns 本地流实例
1039
- */
1040
- constructor(options: StreamDeviceOption, id?: string);
1041
- /**
1042
- * 是否是屏幕分享流
1043
- *
1044
- * @returns boolean
1045
- */
1046
- isScreenStream(): boolean;
1047
- /**
1048
- * 设置视频 profile
1049
- *
1050
- * - 该方法需要在调用 init() 之前调用。
1051
- *
1052
- * @param profile
1053
- *
1054
- * @returns void
1055
- */
1056
- setVideoProfile(profile: VideoProfile): void;
1057
- /**
1058
- * 设置屏幕分享 profile
1059
- *
1060
- * - 该方法需要在调用 init() 之前调用。
1061
- *
1062
- * @param profile
1063
- *
1064
- * @returns void
1065
- */
1066
- setScreenProfile(profile: ScreenProfile): void;
1067
- /**
1068
- * 设置音频 profile
1069
- *
1070
- * @description 该方法需要在调用 init() 之前调用。
1071
- *
1072
- * @param profile
1073
- *
1074
- * @returns void
1075
- */
1076
- setAudioProfile(profile: AudioProfile): void;
1077
- /**
1078
- * 设置自定义视频编码配置
1079
- *
1080
- * - 该方法可以根据需要灵活设置本地流的视频分辨率、帧率和码率。
1081
- * - 该方法需要在调用 init() 之前调用。
1082
- *
1083
- * @param options 配置项
1084
- *
1085
- * @returns void
1086
- */
1087
- setVideoEncoderConfiguration(options: StreamCodecOption): void;
1088
- /**
1089
- * 初始化 LocalStream 实例
1090
- *
1091
- * @returns any
1092
- */
1093
- init(): Promise<any>;
1094
- /**
1095
- * 添加音频或视频轨道
1096
- *
1097
- * - 调用该方法将音频或视频轨道添加到本地流,若该本地流已经被发布,则会自动更新发往远端的音视频流,此时远端会收到 Client.on('stream-updated') 事件通知。
1098
- * - 请注意,一个 Stream 对象中最多只能同时包含一路音频轨道和一路视频轨道。如果你想要更换同类型的轨道,请使用 replaceTrack()。
1099
- * - 新的音视频轨道可以通过 createStream()/getAudioTrack()|getVideoTrack() 获取, 或者直接通过 getUserMedia()、captureStream() 获取。
1100
- *
1101
- * @param track 媒体轨道
1102
- *
1103
- * @returns any
1104
- */
1105
- addTrack(track: MediaStreamTrack): Promise<any>;
1106
- /**
1107
- * 移除视频轨道
1108
- *
1109
- * - 调用该方法会移除本地流中的视频轨道,若本地流已经被发布,则会自动更新发往远端的视频流,此时远端会收到 Client.on('stream-updated') 事件通知。
1110
- * - 请注意,一个已经发布的 Stream 对象中至少要有一个媒体轨道,如果你想完全删除本地流中的音视频轨道,请直接通过 unpublish() 取消发布, 然后再通过 close() 关闭本地流。
1111
- *
1112
- * @param track 媒体轨道
1113
- *
1114
- * @returns any
1115
- */
1116
- removeTrack(track: MediaStreamTrack): Promise<any>;
1117
- /**
1118
- * 更换音频或视频轨道
1119
- *
1120
- * - 调用该方法更换本地流中的同类型轨道,若本地流已经被发布,该方法会自动更新发往远端的音视频流,此时远端会收到 Client.on('stream-updated') 事件通知。
1121
- * - 新的音视频轨道可以通过 createStream()/getAudioTrack()|getVideoTrack() 获取, 或者直接通过 getUserMedia()、captureStream() 获取。
1122
- * - 如果需要更换媒体输入设备,推荐使用 switchDevice()。
1123
- * - 在更换视频轨道时,要求视频分辨率跟 setVideoProfile() 设置保持一致,否则会抛出异常
1124
- * - 支持 Chrome 65+、Safari 浏览器
1125
- *
1126
- * @param track 媒体轨道
1127
- *
1128
- * @returns any
1129
- */
1130
- replaceTrack(track: MediaStreamTrack): Promise<any>;
1131
- /**
1132
- * 切换媒体输入设备
1133
- *
1134
- * - 调用该方法可更换本地流的媒体输入设备
1135
- *
1136
- * @param type 切换类型
1137
- * @param deviceId
1138
- *
1139
- * @returns any
1140
- */
1141
- switchDevice(type: TrackType, deviceId: string): Promise<any>;
1142
- /**
1143
- * 播放本地流
1144
- *
1145
- * @param videoId 挂载 dom
1146
- * @param options 播放选项
1147
- *
1148
- * @returns any
1149
- */
1150
- play(videoId: string | HTMLDivElement, options?: StreamPlayOption): Promise<any>;
1151
- /**
1152
- * 获取流的传输信息
1153
- *
1154
- * @returns LocalStreamStats
1155
- */
1156
- getStats(): Promise<LocalStreamStats>;
1157
- /**
1158
- * 发送 sei 消息
1159
- * - 单次最大发送 1KB(Byte),每秒最大调用次数 30 次,每秒最多发送 8KB。
1160
- * - 目前仅支持 Chrome 86+, Edge 86+, Opera 72+ 浏览器。
1161
- * - 由于 SEI 跟随视频帧一起发送,视频帧有丢失的可能,因此 SEI 也可能丢失。
1162
- * 可在使用频次限制范围内,增加发送次数,业务侧需要在接收端做消息去重。
1163
- * - 没有推视频流时,无法发送 SEI;没有订阅视频流时,无法接收 SEI。
1164
- * - 仅支持 H264 编码器发送 SEI。
1165
- * - 小流暂不支持 SEI 收发。
1166
- * - 设置 SEI payload type。SDK 默认使用自定义 payloadType 243,业务侧可使用该参数将 payloadType 设置为标准的 5
1167
- * 当业务侧使用 5 payloadType 时,需按照规范确保 buffer 的前 16 字节是业务侧自定义的 uuid。
1168
- *
1169
- * @param buffer
1170
- * @param options
1171
- */
1172
- sendSEIMessage(buffer: ArrayBuffer, options: {
1173
- payloadType?: number;
1174
- }): void;
1175
- }
1176
- /**
1177
- * 远端流对象
1178
- */
1179
- declare class RemoteStream extends Stream {
1180
- /**
1181
- * 创建远端流
1182
- *
1183
- * @param uid 用户 id
1184
- * @param unumber 用户 number
1185
- * @param webrtcType 底层类型
1186
- * @param stream 底层流
1187
- *
1188
- * @returns RemoteStream
1189
- */
1190
- constructor(uid: number, webrtcType?: number, stream?: any, subStream?: any, sid?: string);
1191
- /**
1192
- * 是否已订阅流
1193
- *
1194
- * @returns boolean
1195
- */
1196
- isSubscribed(): boolean;
1197
- /**
1198
- * 设置输出扬声器设备
1199
- *
1200
- * @param deviceId 扬声器标识
1201
- *
1202
- * @returns any
1203
- */
1204
- setAudioOutput(deviceId: string): Promise<any>;
1205
- /**
1206
- * 设置播放音量
1207
- *
1208
- * @param volume 播放音量
1209
- * - 取值范围:[0, 1]
1210
- * - 默认 1
1211
- * @returns any
1212
- */
1213
- setAudioVolume(volume: number): void;
1214
-
1215
- getType(): string;
1216
- /**
1217
- * 播放远端流
1218
- *
1219
- * @param videoId 挂载 dom
1220
- * @param options 播放选项
1221
- *
1222
- * @returns any
1223
- */
1224
- play(videoId: string | HTMLDivElement, options?: StreamPlayOption): Promise<any>;
1225
- /**
1226
- * 获取流的传输信息
1227
- *
1228
- * @returns RemoteStreamStats
1229
- */
1230
- getStats(): Promise<RemoteStreamStats>;
1231
- }
1232
- /**
1233
- *
1234
- * @returns void
1235
- */
1236
- declare function stream_event_video_track_ended(): void;
1237
- /**
1238
- *
1239
- * @returns void
1240
- */
1241
- declare function stream_event_audio_track_ended(): void;
1242
- /**
1243
- *
1244
- * @returns void
1245
- */
1246
- declare function stream_event_video_track_mute(): void;
1247
- /**
1248
- *
1249
- * @returns void
1250
- */
1251
- declare function stream_event_audio_track_mute(): void;
1252
- /**
1253
- *
1254
- * @returns void
1255
- */
1256
- declare function stream_event_video_track_unmute(): void;
1257
- /**
1258
- *
1259
- * @returns void
1260
- */
1261
- declare function stream_event_audio_track_unmute(): void;
1262
- /**
1263
- * track 更新
1264
- *
1265
- * @param event Object
1266
- * - type track 类型
1267
- * - track 更新 track
1268
- *
1269
- * @returns void
1270
- */
1271
- declare function stream_event_track_update(event: {
1272
- type: TrackType;
1273
- track: MediaStreamTrack;
1274
- }): void;
1275
- /**
1276
- * 播放状态改变
1277
- *
1278
- * @param event Object
1279
- * - type track 类型
1280
- * - state 播放状态
1281
- * - reason 原因
1282
- *
1283
- * @returns void
1284
- */
1285
- declare function stream_event_player_state_changed(event: {
1286
- type: TrackType;
1287
- state: 'PAUSE' | 'PLAYING' | 'STOPPED';
1288
- reason: string;
1289
- }): void;
1290
- /**
1291
- * pc 连接失败
1292
- *
1293
- * @returns void
1294
- */
1295
- declare function stream_event_connect_error(): void;
1296
- /**
1297
- * client join 参数配置
1298
- */
1299
- declare interface JoinConfig {
1300
- role?: Role;
1301
- }
1302
- /**
1303
- * 创建 Client 参数
1304
- */
1305
- declare interface ClientOptions {
1306
- /**
1307
- * 用户 appId
1308
- */
1309
- appId: string;
1310
- /**
1311
- * 视频编码类型,默认 h264,目前只支持 h264
1312
- */
1313
- codec?: Codec;
1314
- /**
1315
- * 音频编码类型,默认 opus,目前只支持 opus
1316
- */
1317
- audioCodec?: AudioCodec;
1318
- /**
1319
- * 直播模式,默认 rtc 模式,目前只支持 rtc 模式
1320
- */
1321
- mode?: Mode;
1322
- /**
1323
- * 数据上报自定义字段
1324
- * 长度小于 64 个字符,超过的会被截断
1325
- */
1326
- comments?: string;
1327
- /**
1328
- * 用户角色,默认 anchor(主播)
1329
- */
1330
- role?: Role;
1331
- /**
1332
- * 仅推流
1333
- */
1334
- publishOnly?: boolean;
1335
- /**
1336
- * 是否使用 string 作为 userId 类型
1337
- * - 默认 false userId 为 int32 类型
1338
- */
1339
- useStringUserId?: boolean;
1340
- /**
1341
- * 音量获取间隔,默认 1000,最大 10000
1342
- * 若需要更小间隔则设置此属性值
1343
- */
1344
- audioLevelInterval?: number;
1345
- /**
1346
- * 房间类型
1347
- * - 默认正常房间,正常房间有进房人数限制,进房退房会广播给其他人
1348
- * - 设置 'big' 不限制进房人数,但不推流的 user 将不广播进房通知
1349
- */
1350
- roomType?: RoomType;
1351
- /**
1352
- * 大房间广播模式,大房间下生效
1353
- * - true 不广播
1354
- * - false 广播(默认)
1355
- */
1356
- silence?: boolean;
1357
- enableSEI?: boolean;
1358
- }
1359
- /**
1360
- * 订阅流参数
1361
- */
1362
- declare interface SubscribeOptions {
1363
- /**
1364
- * 是否订阅视频
1365
- */
1366
- video: boolean;
1367
- /**
1368
- * 是否订阅音频
1369
- */
1370
- audio: boolean;
1371
- /**
1372
- * 订阅流类型,大流还是小流,默认大流
1373
- */
1374
- streamType?: StreamSimulcastType;
1375
-
1376
- videoEnable?: boolean
1377
-
1378
- audioEnable?: boolean
1379
- }
1380
- /**
1381
- * Client 对象
1382
- */
1383
- declare class Client {
1384
- /**
1385
- * 创建 Client 对象
1386
- *
1387
- * @param options 配置项
1388
- *
1389
- * @returns Client 实例
1390
- */
1391
- constructor(options: ClientOptions);
1392
- /**
1393
- * 加入一个音视频通话房间
1394
- *
1395
- * - 进房代表开始一个音视频通话会话,这时候 SDK 会监听远端用户进房退房情况,若有远端用户进房并且发布流,本地会收到 'stream-added' 事件。
1396
- * - 进房后用户可以通过 publish() 发布本地流,本地流发布成功后远端用户就会收到相应 'stream-added' 事件通知从而完成一个双向的音视频通话连接。
1397
- *
1398
- * @param roomId 房间 id
1399
- * @param userId 用户 id
1400
- * @param sig 动态口令
1401
- *
1402
- * @returns any
1403
- */
1404
- join(roomId: string, userId: UserId, sig: string, joinConfig?: JoinConfig): Promise<any>;
1405
- /**
1406
- * 退出当前音视频通话房间,结束一次音视频通话会话。
1407
- *
1408
- * - 退房前请确保已经通过 unpublish() 取消发布本地流,若未取消发布本地流,SDK 内部会自动取消发布本地流。 同时,退房会关闭所有远端流。
1409
- *
1410
- * @param type 离开原因,不传表示主动离开
1411
- *
1412
- * @returns any
1413
- */
1414
- leave(type?: string): Promise<any>;
1415
- /**
1416
- * 发布本地音视频流。
1417
- *
1418
- * - 该方法需要在 join() 进房后调用,一次音视频会话中只能发布一个本地流。若想发布另外一个本地流,可先通过 unpublish() 取消发布当前本地流后再发布新的本地流。
1419
- * - 在发布本地流后,可通过 removeTrack()、addTrack()、 replaceTrack() 来更新本地流中的某个音频或视频流。
1420
- * - 发布本地流后远端会收到 ‘stream-added’ 事件通知。
1421
- *
1422
- * @param stream 创建的本地流对象
1423
- *
1424
- * @returns any
1425
- */
1426
- publish(stream: LocalStream): Promise<any>;
1427
- /**
1428
- * 取消发布本地流。
1429
- *
1430
- * - 取消发布本地流后远端会收到 'stream-removed' 事件通知。
1431
- * - 请在 leave() 退房前取消已经发布的本地流。
1432
- *
1433
- * @param stream 取消发布的本地流对象
1434
- *
1435
- * @returns any
1436
- */
1437
- unpublish(stream: LocalStream): Promise<any>;
1438
- /**
1439
- * 订阅远端流
1440
- *
1441
- * - 可通过该订阅接口指明需要订阅音频、视频或者音视频流。
1442
- *
1443
- * @param stream 需要订阅的远端流对象,由 ‘stream-added’ 事件获得
1444
- * @param options 订阅选项,默认音视频都订阅
1445
- *
1446
- * @returns any
1447
- */
1448
- subscribe(stream: RemoteStream, options?: SubscribeOptions): Promise<any>;
1449
- /**
1450
- * 取消订阅远端流
1451
- *
1452
- * @param stream 需要取消订阅的远端流对象,由 ‘stream-added’ 事件获得
1453
- *
1454
- * @returns any
1455
- */
1456
- unsubscribe(stream: RemoteStream): Promise<any>;
1457
- /**
1458
- * - 开启大小流
1459
- * - 在发送视频端开启大小流传输模式。双流为视频大流和视频小流,其中视频大流指高分辨率、高码率的视频流,视频小流指低分辨率、低码率的视频流
1460
- * - 必须在发布之前进行设置,原因是为了避免在发布后进行设置导致大小流表现不一致
1461
- * - 开启大小流传输模式后建议不要对双流进行 track 操作(包括 addTrack / removeTrack / replaceTrack),否则会导致大流和小流的表现不一致
1462
- */
1463
- enableSmallStream(): Promise<any>;
1464
- /**
1465
- * - 关闭大小流
1466
- * - 必须在发布前或者结束发布之后进行操作,原因是为了避免在发布后进行设置导致大小流表现不一致
1467
- */
1468
- disableSmallStream(): Promise<any>;
1469
- /**
1470
- * - 接收端选择订阅大流还是小流
1471
- * - 只能在订阅之后设置
1472
- *
1473
- * @param stream 远端流
1474
- *
1475
- * @param streamType
1476
- * -
1477
- * - big 大流(默认)
1478
- * - small 小流
1479
- */
1480
- setRemoteVideoStreamType(stream: RemoteStream, streamType: StreamSimulcastType): Promise<any>;
1481
- /**
1482
- * 设置小流推流参数
1483
- *
1484
- * @param profile
1485
- */
1486
- setSmallStreamProfile(profile: SmallStreamCodecOption): void;
1487
- /**
1488
- * 拉取 users
1489
- *
1490
- * hasMoreUser 是否还有更多 user 没有拉取到本地
1491
- *
1492
- * 新拉取的 user 会触发 stream-added 和 peer-joined 事件
1493
- *
1494
- * @param count
1495
- */
1496
- pullUsers(count: number): Promise<{
1497
- hasMoreUser: boolean;
1498
- }>;
1499
- /**
1500
- * 查找指定 users 的流
1501
- *
1502
- * 返回 RemoteStream 数组,如果查询的 user 没有推流则不会出现在数组中
1503
- *
1504
- * @param userIds
1505
- */
1506
- queryUsers(userIds: UserId[]): Promise<RemoteStream[]>;
1507
- /**
1508
- * 提交事件
1509
- *
1510
- * @param type 事件类型
1511
- * @param data 事件数据
1512
- *
1513
- * @returns void
1514
- */
1515
- fire(type: string, data?: any): void;
1516
- /**
1517
- * 设置一次事件监听
1518
- * 支持链式调用
1519
- * 支持命名空间 `type.namespace`,使用 `.` 来分隔 `type` 和 `namespace`
1520
- *
1521
- * @param type 事件类型
1522
- * @param listener 监听函数
1523
- *
1524
- * @returns Client
1525
- */
1526
- on(type: 'stream-added', listener: typeof client_event_stream_added): this;
1527
- on(type: 'stream-removed', listener: typeof client_event_stream_removed): this;
1528
- on(type: 'stream-updated', listener: typeof client_event_stream_updated): this;
1529
- on(type: 'stream-published', listener: typeof client_event_stream_published): this;
1530
- on(type: 'stream-subscribed', listener: typeof client_event_stream_subscribed): this;
1531
- on(type: 'mute-video', listener: typeof client_event_mute_video): this;
1532
- on(type: 'unmute-video', listener: typeof client_event_unmute_video): this;
1533
- on(type: 'mute-audio', listener: typeof client_event_mute_audio): this;
1534
- on(type: 'unmute-audio', listener: typeof client_event_unmute_audio): this;
1535
- on(type: 'error', listener: typeof client_event_error): this;
1536
- on(type: 'peer-joined', listener: typeof client_event_peer_joined): this;
1537
- on(type: 'peer-leaved', listener: typeof client_event_peer_leaved): this;
1538
- on(type: 'client-banned', listener: typeof client_event_client_banned): this;
1539
- on(type: 'user-kicked', listener: typeof client_event_user_kicked): this;
1540
- on(type: 'room-closed', listener: typeof client_event_room_closed): this;
1541
- on(type: string, listener: Function): this;
1542
- /**
1543
- * 设置一次事件监听
1544
- * 支持链式调用
1545
- * 支持命名空间 `type.namespace`,使用 `.` 来分隔 `type` 和 `namespace`
1546
- *
1547
- * @param type 事件类型
1548
- * @param listener 监听函数
1549
- *
1550
- * @returns Client
1551
- */
1552
- one(type: 'stream-added', listener: typeof client_event_stream_added): this;
1553
- one(type: 'stream-removed', listener: typeof client_event_stream_removed): this;
1554
- one(type: 'stream-updated', listener: typeof client_event_stream_updated): this;
1555
- one(type: 'stream-published', listener: typeof client_event_stream_published): this;
1556
- one(type: 'stream-subscribed', listener: typeof client_event_stream_subscribed): this;
1557
- one(type: 'mute-video', listener: typeof client_event_mute_video): this;
1558
- one(type: 'unmute-video', listener: typeof client_event_unmute_video): this;
1559
- one(type: 'mute-audio', listener: typeof client_event_mute_audio): this;
1560
- one(type: 'unmute-audio', listener: typeof client_event_unmute_audio): this;
1561
- one(type: 'error', listener: typeof client_event_error): this;
1562
- one(type: 'peer-joined', listener: typeof client_event_peer_joined): this;
1563
- one(type: 'peer-leaved', listener: typeof client_event_peer_leaved): this;
1564
- one(type: 'client-banned', listener: typeof client_event_client_banned): this;
1565
- one(type: 'user-kicked', listener: typeof client_event_user_kicked): this;
1566
- one(type: 'room-closed', listener: typeof client_event_room_closed): this;
1567
- one(type: string, listener: Function): this;
1568
- /**
1569
- * 取消事件监听
1570
- * 支持链式调用
1571
- *
1572
- * @param type 事件类型或者命名空间
1573
- * - 如果传入命名空间则解绑此命名空间的所有回调
1574
- * - 如果不传则解绑所有设置过的回调
1575
- * @param listener 绑定函数
1576
- * - 如果不传则解绑指定 `type` 的所有回调,否则只解绑指定 `type` 和 `listener` 的回调
1577
- *
1578
- * @returns Client
1579
- */
1580
- off(type?: string, listener?: Function): this;
1581
- /**
1582
- * 设置 client 只用于推流,一般用于推多路流的时候
1583
- * 设置主 client 为 false,辅 client 为 true
1584
- * 这样辅 client 只用于推流,只会触发 ’stream-published‘ 事件,所有的流由主 client 来订阅
1585
- *
1586
- * @param value 是否只推流
1587
- *
1588
- * @returns void
1589
- */
1590
- setPublishOnly(value: boolean): void;
1591
- /**
1592
- * 销毁 client 实例
1593
- *
1594
- * @param force 同步销毁,不等待异步返回
1595
- *
1596
- * @returns any
1597
- */
1598
- destroy(force: boolean): Promise<any>;
1599
- }
1600
- /**
1601
- * @param event Object
1602
- * - stream 远端流实例
1603
- *
1604
- * @returns
1605
- * 返回 false 会停止触发后面监听的事件
1606
- */
1607
- declare function client_event_stream_added(event: {
1608
- stream: RemoteStream;
1609
- }): void | false;
1610
- /**
1611
- * @param event Object
1612
- * - stream 远端流实例
1613
- *
1614
- * @returns
1615
- * 返回 false 会停止触发后面监听的事件
1616
- */
1617
- declare function client_event_stream_removed(event: {
1618
- stream: RemoteStream;
1619
- }): void | false;
1620
- /**
1621
- * @param event Object
1622
- * - stream 远端流实例
1623
- *
1624
- * @returns
1625
- * 返回 false 会停止触发后面监听的事件
1626
- */
1627
- declare function client_event_stream_updated(event: {
1628
- stream: RemoteStream;
1629
- }): void | false;
1630
- /**
1631
- * @param event Object
1632
- * - stream 本地流实例
1633
- *
1634
- * @returns
1635
- * 返回 false 会停止触发后面监听的事件
1636
- */
1637
- declare function client_event_stream_published(event: {
1638
- stream: LocalStream;
1639
- }): void | false;
1640
- /**
1641
- * @param event Object
1642
- * - stream 远端流实例
1643
- *
1644
- * @returns
1645
- * 返回 false 会停止触发后面监听的事件
1646
- */
1647
- declare function client_event_stream_subscribed(event: {
1648
- stream: RemoteStream;
1649
- }): void | false;
1650
- /**
1651
- * @param event Object
1652
- * - stream 远端流实例
1653
- *
1654
- * @returns
1655
- * 返回 false 会停止触发后面监听的事件
1656
- */
1657
- declare function client_event_mute_video(event: {
1658
- stream: RemoteStream;
1659
- }): void | false;
1660
- /**
1661
- * @param event Object
1662
- * - stream 远端流实例
1663
- *
1664
- * @returns
1665
- * 返回 false 会停止触发后面监听的事件
1666
- */
1667
- declare function client_event_unmute_video(event: {
1668
- stream: RemoteStream;
1669
- }): void | false;
1670
- /**
1671
- * @param event Object
1672
- * - stream 远端流实例
1673
- *
1674
- * @returns
1675
- * 返回 false 会停止触发后面监听的事件
1676
- */
1677
- declare function client_event_mute_audio(event: {
1678
- stream: RemoteStream;
1679
- }): void | false;
1680
- /**
1681
- * @param event Object
1682
- * - stream 远端流实例
1683
- *
1684
- * @returns
1685
- * 返回 false 会停止触发后面监听的事件
1686
- */
1687
- declare function client_event_unmute_audio(event: {
1688
- stream: RemoteStream;
1689
- }): void | false;
1690
- /**
1691
- * @param event Object
1692
- * - stream 远端流实例
1693
- *
1694
- * @returns
1695
- * 返回 false 会停止触发后面监听的事件
1696
- */
1697
- declare function client_event_error(error: RTCError): void | false;
1698
- /**
1699
- * @param event Object
1700
- * - userId 用户 id
1701
- *
1702
- * @returns
1703
- * 返回 false 会停止触发后面监听的事件
1704
- */
1705
- declare function client_event_peer_joined(event: {
1706
- userId: UserId;
1707
- }): void | false;
1708
- /**
1709
- * @param event Object
1710
- * - userId 用户 id
1711
- *
1712
- * @returns
1713
- * 返回 false 会停止触发后面监听的事件
1714
- */
1715
- declare function client_event_peer_leaved(event: {
1716
- userId: UserId;
1717
- }): void | false;
1718
- /**
1719
- * @param event Object
1720
- * - userId 用户 id
1721
- *
1722
- * @returns
1723
- * 返回 false 会停止触发后面监听的事件
1724
- */
1725
- declare function client_event_client_banned(error: RTCError): void | false;
1726
- /**
1727
- * @param event Object
1728
- * - userId 用户 id
1729
- *
1730
- * @returns
1731
- * 返回 false 会停止触发后面监听的事件
1732
- */
1733
- declare function client_event_user_kicked(error: RTCError): void | false;
1734
- /**
1735
- * @param event Object
1736
- * - userId 用户 id
1737
- *
1738
- * @returns
1739
- * 返回 false 会停止触发后面监听的事件
1740
- */
1741
- declare function client_event_room_closed(error: RTCError): void | false;
1742
- declare type _Client = Client;
1743
- declare type _LocalStream = LocalStream;
1744
- declare type _RemoteStream = RemoteStream;
1745
- declare type _Device = Device;
1746
- declare type _ClientOptions = ClientOptions;
1747
-
1748
- declare namespace BRTC {
1749
- type Client = _Client;
1750
- type LocalStream = _LocalStream;
1751
- type RemoteStream = _RemoteStream;
1752
- type Device = _Device;
1753
- type ClientOptions = _ClientOptions;
1754
-
1755
- const Logger: typeof logger;
1756
- const Events: {
1757
- Client: typeof ClientEvents;
1758
- Stream: typeof StreamEvents;
1759
- };
1760
- /**
1761
- * 创建本地流实例
1762
- *
1763
- * @param options 配置项
1764
- */
1765
- function createStream(options: StreamDeviceOption): LocalStream;
1766
- /**
1767
- * 创建 Client 实例
1768
- *
1769
- * @param options 配置项
1770
- */
1771
- function createClient(options: ClientOptions): Client;
1772
- /**
1773
- * 判断是否支持 BRTC
1774
- *
1775
- * @returns
1776
- */
1777
- function checkSystemSupport(): Promise<boolean>;
1778
- /**
1779
- * 设置环境
1780
- */
1781
- function setEnv(env: string): void;
1782
- /**
1783
- * 判断是否支持屏幕分享
1784
- *
1785
- * @returns
1786
- */
1787
- function supportScreenSharing(): boolean;
1788
- /**
1789
- * 判断是否支持大小流
1790
- *
1791
- * @returns
1792
- */
1793
- function isSmallStreamSupported(): boolean;
1794
- /**
1795
- * 获取设备权限
1796
- */
1797
- function getPermissions(): Promise<any>;
1798
- /**
1799
- * 枚举音频输入设备
1800
- *
1801
- * @returns 设备列表
1802
- */
1803
- function enumAudioInputDevices(): Promise<Device[]>;
1804
- /**
1805
- * 枚举音频输出设备
1806
- *
1807
- * @returns 设备列表
1808
- */
1809
- function enumAudioOutputDevices(): Promise<Device[]>;
1810
- /**
1811
- * 枚举视频输入设备
1812
- *
1813
- * @returns 设备列表
1814
- */
1815
- function enumVideoDevices(): Promise<Device[]>;
1816
- /**
1817
- * BRTC 版本号
1818
- */
1819
- const version: string;
1820
- }
1821
-
1822
- /**
1823
- * @name: stream
1824
- * @author: yangliye
1825
- * @date: 2022-04-25 13:42
1826
- * @description:stream
1827
- * @update: 2022-04-25 13:42
1828
- */
1829
-
1830
- declare type SingleLocalStream = LocalStream;
1831
- declare type SingleRemoteStream = RemoteStream;
1832
- declare type SingleStream = SingleLocalStream | SingleRemoteStream;
1833
-
1834
- declare type UpdateMasterType = {
1835
- master?: BMUser;
1836
- oldMaster?: BMUser;
1837
- };
1838
- declare type audioOffWatcherValue = {
1839
- audioOff: boolean;
1840
- selfopenaudio: boolean;
1841
- };
1842
-
1843
- /**
1844
- * @name: BMSpeaker
1845
- * @author: liuxinghai
1846
- * @date: 2022-06-07 11:41
1847
- * @description:BMSpeaker
1848
- * 适配 brtc 流对象到 bloud 流对象接口,
1849
- * 用户辅助采用 bloud SpeakerDetector 做说话人检测
1850
- * @date: 2022-06-07 11:41
1851
- */
1852
- declare class BMSpeaker {
1853
- user: BMUser;
1854
- stream: SingleStream;
1855
- constructor(user: BMUser, stream: SingleStream);
1856
- /**
1857
- * 获取对象 ID 标识,此处使用流 ID 标识
1858
- * @returns
1859
- */
1860
- getID(): string;
1861
- /**
1862
- * 获取用户 BMUser 对象
1863
- * @returns
1864
- */
1865
- getUser(): BMUser;
1866
- }
1867
-
1868
- /**
1869
- * @name: getHTMLMediaStreamOptions
1870
- * @author: yangliye
1871
- * @date: 2022-09-15 14:58
1872
- * @description:getHTMLMediaStreamOptions
1873
- * @update: 2022-09-15 14:58
1874
- */
1875
- interface Options {
1876
- videoElement: HTMLVideoElement;
1877
- }
1878
- interface Result {
1879
- video: boolean;
1880
- audio: boolean;
1881
- videoSource: MediaStreamTrack;
1882
- audioSource: MediaStreamTrack;
1883
- width: number;
1884
- height: number;
1885
- }
1886
- /**
1887
- * 获取video标签中的mediaStream
1888
- * @param opts
1889
- */
1890
- declare function getHTMLMediaStreamOptions(opts: Options): Result | null;
1891
- declare function getMediaStreamInfo(mediaStream: MediaStream, videoInfo: {
1892
- width: number;
1893
- height: number;
1894
- }): {
1895
- video: boolean;
1896
- audio: boolean;
1897
- videoSource: MediaStreamTrack;
1898
- audioSource: MediaStreamTrack;
1899
- width: number;
1900
- height: number;
1901
- } | null;
1902
-
1903
- /**
1904
- * @name: SingletonQueue
1905
- * @author: yangliye
1906
- * @date: 2023-05-18 09:47
1907
- * @description:SingletonQueue
1908
- * @update: 2023-05-18 09:47
1909
- */
1910
- declare type CallBack = (arg: Map<string, PullItem>, ...args: any) => void;
1911
- declare type PullItem = {
1912
- id: string;
1913
- isScreen: boolean;
1914
- isWeb?: boolean;
1915
- force?: boolean;
1916
- };
1917
- declare class SingletonQueue {
1918
- private static instance;
1919
- private _callback;
1920
- private pullMap;
1921
- constructor();
1922
- addUsers(userIds: PullItem[]): void;
1923
- removeUsers(userId: PullItem[]): void;
1924
- restart(): void;
1925
- setQueueProcessor(callback: CallBack): void;
1926
- removeQueueProcessor(): void;
1927
- }
1928
-
1929
- /**
1930
- * @name: emitter
1931
- * @author: yangliye
1932
- * @date: 2022-05-24 15:15
1933
- * @description:emitter
1934
- * @update: 2022-05-24 15:15
1935
- */
1936
-
1937
- declare type UserSortType = {
1938
- isCommon: boolean;
1939
- shouldDelay: boolean;
1940
- };
1941
-
1942
- interface ChangeIsGuest {
1943
- user: BMUser;
1944
- preIsGuest: boolean;
1945
- isGuest: boolean;
1946
- }
1947
- declare class BMUserVM {
1948
- userList: Map<string, BMUser>;
1949
- audiencesList: Map<string, BMUser>;
1950
- signalList: Map<string, BMUser>;
1951
- commonUserList: Map<string, BMUser>;
1952
- boomCore: BCClient;
1953
- room: BMRoom;
1954
- userListWatcher: BehaviorSubject<BMUser[]>;
1955
- audiencesListWatcher: BehaviorSubject<BMUser[]>;
1956
- commonUserListWatcher: BehaviorSubject<BMUser[]>;
1957
- signalListWatcher: BehaviorSubject<BMUser[]>;
1958
- masterUserWatcher: BehaviorSubject<BMUser | null>;
1959
- getForceUserWatcher: BehaviorSubject<boolean>;
1960
- localUser: BMUser;
1961
- commTimer: number;
1962
- constructor(boomCore: BCClient, localUser: BMUser, room: BMRoom);
1963
- handleUserRoleChange(info: ChangeIsGuest): Promise<void>;
1964
- /**
1965
- * 添加用户, 并返回已添加的用户对象
1966
- * @param bcUser bcUser对象
1967
- */
1968
- addUser(bcUser: BCUser): BMUser | null;
1969
- /**
1970
- * 移除用户
1971
- * @param userId 用户id
1972
- */
1973
- removeUser(userId: string): boolean;
1974
- /**
1975
- * 获取用户视频开启状态
1976
- * @param userId 用户id
1977
- */
1978
- videoEnable(userId: string): boolean;
1979
- /**
1980
- * 获取用户音频开启状态
1981
- * @param userId
1982
- */
1983
- audioEnable(userId: string): boolean;
1984
- /**
1985
- * 检测用户是不是主持人
1986
- * @param {string} userId 用户id
1987
- */
1988
- checkIsMaster(userId: any): boolean;
1989
- /**
1990
- * 检测当前用户是否有主持人权限
1991
- */
1992
- checkLocalHasMaster(): boolean;
1993
- /**
1994
- * 检测目标用户是否有主持人权限
1995
- */
1996
- checkUserHasMaster(userId: string): boolean;
1997
- /**
1998
- * 根据用户id获取user对象
1999
- * @param {string} userId
2000
- */
2001
- getUser(userId: string): BMUser | undefined;
2002
- getAllUsers(pageIndex: number, allUsers: Map<string, BCUser>, permission?: string, useNew?: boolean): Promise<void>;
2003
- /**
2004
- * 刚加入房间时初始化人数
2005
- */
2006
- initUserList(usersInRoom: Map<string, BCUser>): Promise<void>;
2007
- addBcUsersMap(users: Map<string, BCUser>, forceGetStream?: boolean): void;
2008
- addBCUser: (bcUser: BCUser, forceGetStream?: boolean) => BMUser | null;
2009
- /**
2010
- * 改变userList中的主持人,返回改变后的主持人用户对象,该方法只在change-master中调用, 不对外暴露
2011
- * @param userId
2012
- * @param oldMasterId
2013
- * @param isKeep
2014
- */
2015
- updateMaster(userId: string, oldMasterId: string, isKeep: boolean): UpdateMasterType;
2016
- /**
2017
- * 联席主持人设置嘉宾的操作
2018
- * @param userId
2019
- */
2020
- managerChangeToGuest(userId: string): BMUser | undefined;
2021
- /**
2022
- * 改变联席主持人,返回设置为联席主持人的bmuser对象
2023
- * @param userId
2024
- * @param status true:设置成联席主持人 false:取消联席主持人身份
2025
- * @param hasS
2026
- * @returns
2027
- */
2028
- updateManager(userId: string, status: boolean, hasS?: boolean): BMUser;
2029
- /**
2030
- * 获取我自己
2031
- */
2032
- getLocalUser(): BMUser;
2033
- updateUser(bmUser: BMUser, bcUser: BCUser): void;
2034
- updateLocalUserPermission(permission: string): void;
2035
- /**
2036
- * bcUser变成BMUser
2037
- * @param bcUser
2038
- * @returns
2039
- */
2040
- toBMUser(bcUser: BCUser): BMUser;
2041
- private sortUsers;
2042
- private sortAudiences;
2043
- private sortCommonUsers;
2044
- private sortSignalUsers;
2045
- private static filterUsers;
2046
- /**
2047
- * 排序变化之后的处理逻辑
2048
- */
2049
- updateAllSort: () => void;
2050
- updateSortByType: (userType: UserSortType) => void;
2051
- updateUserSort: lodash_es.DebouncedFunc<() => void>;
2052
- updateCommonUserSort: lodash_es.DebouncedFunc<() => void>;
2053
- updateDelayCommonUserSort: lodash_es.DebouncedFunc<() => void>;
2054
- updateAudienceUserSort: () => void;
2055
- updateSignalUserSort: () => void;
2056
- /**
2057
- * 初始化所有的用户
2058
- */
2059
- initUsers(): Promise<void>;
2060
- /**
2061
- * 把bloud用户转化为当前的BMUser 和创建对应的BMStreamModel
2062
- * @param page
2063
- * @param permission
2064
- * @param useNew 是否使用getUsersList
2065
- */
2066
- transBloudUsers: (page: number, permission?: string, useNew?: boolean, failedNum?: number) => Promise<void>;
2067
- /**
2068
- * 本地嘉宾用户降级为普通参会者之后要取消拉流
2069
- */
2070
- handleUnSubCommonUser(): void;
2071
- handleCommonUserChange(): void;
2072
- getUsers(page: number, pageSize: number, permission?: string): Promise<{
2073
- userList: BMUser[];
2074
- total: number;
2075
- }>;
2076
- getUsersList(page: number, pageSize: number, permission?: string, waitRoom?: boolean): Promise<{
2077
- userList: BMUser[];
2078
- total: number;
2079
- pageIndex: number;
2080
- }>;
2081
- getTotalUserNumber(): Promise<number>;
2082
- clearUsers(): void;
2083
- /**
2084
- * 参会者列表搜索(嘉宾及以上才能搜索)
2085
- * @param searchTxt 搜索文本
2086
- * @param pageSize 一页几个
2087
- * @param waitRoom 是否是等候室用户
2088
- */
2089
- searchUsers(searchTxt: string, pageSize: number): Promise<{
2090
- userList: BMUser[];
2091
- commonUserList: BMUser[];
2092
- }>;
2093
- /**
2094
- * 查找等候室用户
2095
- * @param searchTxt
2096
- * @param pageSize
2097
- */
2098
- searchWaitRoomUsers(searchTxt: string, pageSize: number): Promise<BMUser[]>;
2099
- }
2100
-
2101
- declare class BMChatVM {
2102
- messageList: Array<BMMessageInfo>;
2103
- boomCore: BCClient;
2104
- userVM: BMUserVM;
2105
- bmRoom: BMRoom;
2106
- messageListWatcher: BehaviorSubject<Array<BMMessageInfo>>;
2107
- hasDangerMessageWatcher: Subject<boolean>;
2108
- constructor(boomCore: BCClient, userVM: BMUserVM, bmRoom: BMRoom);
2109
- /**
2110
- * 发送聊天消息
2111
- * @param talkMsg 聊天信息
2112
- */
2113
- sendMessage(talkMsg: string, userId: string | undefined, lostNet: boolean): Promise<void>;
2114
- addMessage(info: BMMessageInfo, isParticipantNotice: boolean): void;
2115
- notificationMessageList: lodash_es.DebouncedFunc<() => void>;
2116
- updateMessageListWatcher(messageList: Array<BMMessageInfo>): void;
2117
- /**
2118
- * 获取历史消息
2119
- */
2120
- getHistoryMessage(): Promise<BMMessageInfo[]>;
2121
- }
2122
-
2123
- interface BloudStreamEventState {
2124
- userId: string;
2125
- streamId: string;
2126
- isScreen: boolean;
2127
- video: boolean;
2128
- audio: boolean;
2129
- customInfo?: StreamCustomInfo;
2130
- }
2131
- interface BloudStreamState {
2132
- video: boolean;
2133
- audio: boolean;
2134
- isScreen: boolean;
2135
- customInfo?: StreamCustomInfo;
2136
- }
2137
-
2138
- declare class BMStreamModelVM {
2139
- streamModels: Map<string, BMStreamModel>;
2140
- /**
2141
- * 因为投屏码用户进来以后,他是不在小窗口展示的,所以要把投屏的用户过滤掉给业务的展示
2142
- */
2143
- streamModelsWatcher: BehaviorSubject<BMStreamModel[]>;
2144
- shareStreamModels: Map<string, BMStreamModel>;
2145
- shareStreamModelsWatcher: BehaviorSubject<BMStreamModel[]>;
2146
- localStreamErrorWatcher: Subject<string>;
2147
- localModel: BMStreamModel | null;
2148
- room: BMRoom | null;
2149
- bloudStream: BloudStream | null;
2150
- brtcStream: SingleLocalStream | undefined;
2151
- /**
2152
- * 后面打开摄像头存储的流,主要是关闭摄像头的时候得把它清除掉
2153
- */
2154
- videoStream: SingleLocalStream | null;
2155
- audioStream: SingleLocalStream | null;
2156
- audioStats: boolean;
2157
- videoStats: boolean;
2158
- /**
2159
- * 本地是否在屏幕共享
2160
- */
2161
- localIsShare: boolean;
2162
- isShareWatcher: Subject<boolean>;
2163
- _speaker_enable: boolean;
2164
- speakerEnableWatcher: BehaviorSubject<boolean>;
2165
- /**
2166
- * 混流
2167
- */
2168
- mixStreamModelWatcher: BehaviorSubject<BMStreamModel | null>;
2169
- canvasTimer: NodeJS.Timeout | null;
2170
- private _recorder;
2171
- private _isRecording;
2172
- private _slicingRecord;
2173
- isRecordingWatcher: BehaviorSubject<boolean>;
2174
- private _speaker;
2175
- private _speakerDetector;
2176
- private _speakers;
2177
- speakerWatcher: BehaviorSubject<BMUser | null>;
2178
- /**
2179
- * 窗口没有播放容器的错误处理
2180
- */
2181
- noContainerWatcher: Subject<BMStreamModel>;
2182
- /**
2183
- * 窗口没有大窗口播放容器的错误处理
2184
- */
2185
- noBigContainerWatcher: Subject<BMStreamModel>;
2186
- localStreamConnectErrorWatcher: Subject<BoomError>;
2187
- /**
2188
- * 共享屏幕相关错误
2189
- * 包括,共享客户端错误
2190
- * 共享屏幕流错误
2191
- */
2192
- localShareError: Subject<BoomError>;
2193
- /**
2194
- * 共享屏幕流是单独处理的逻辑,不是先创建streamModel然后在去查流,而是先去查流,在创建streamModel
2195
- */
2196
- shareBloudStateMap: Map<string, BloudStreamEventState>;
2197
- constructor();
2198
- private static filterStreamModels;
2199
- initWithRoom(room: BMRoom): this;
2200
- /**
2201
- * 设置扬声器是否打开
2202
- * @param enable
2203
- * @private
2204
- */
2205
- private setSpeakerEnable;
2206
- getStreamModels(): Array<BMStreamModel>;
2207
- /**
2208
- * 获取streamModel
2209
- * @param userId 用户Id
2210
- * @returns
2211
- */
2212
- getStreamModelByUId(userId: string): BMStreamModel | undefined;
2213
- getShareStreamModelByUId(userId: string): BMStreamModel | undefined;
2214
- getLocalStreamModel(): BMStreamModel | null;
2215
- createStreamModel(user: BMUser, stream?: SingleStream): BMStreamModel;
2216
- addStreamModel(streamModel: BMStreamModel): void;
2217
- addShareStreamModel(streamModel: BMStreamModel): void;
2218
- removeStreamModel(streamModel: BMStreamModel): void;
2219
- removeShareStreamModelByUId(uid: string): void;
2220
- removeShareStreamModel(streamModel: BMStreamModel): void;
2221
- /**`
2222
- * 通过用户id删除streamModel
2223
- * @param userId
2224
- * @returns
2225
- */
2226
- removeStreamModelByUId(userId: string): BMStreamModel | undefined;
2227
- remoteStreamPublished(stream: SingleRemoteStream): void;
2228
- /**
2229
- * 有人取消流触发,有人取消流之后brtc底层会把流销毁掉,除了流Id和userId,其他的信息都不稳定能取到
2230
- * @param stream
2231
- * @returns
2232
- */
2233
- remoteStreamUnpublished(stream: SingleRemoteStream): BMStreamModel | undefined;
2234
- sortStreamModels(): BMStreamModel[];
2235
- updateStreamModel(streamModel: BMStreamModel, stream: SingleStream): void;
2236
- updateShareStreamModel(streamModel: BMStreamModel, stream: SingleStream): void;
2237
- /**
2238
- * 开关本地摄像头
2239
- * @param status true:开,false:关
2240
- * @param videoTrack 开启美颜之后,需要传递这个参数,携带美颜之后的videoTrack
2241
- */
2242
- setLocalVideoEnable(status: boolean, videoTrack?: MediaStreamTrack): Promise<undefined>;
2243
- /**
2244
- * brtc流更新状态失败,这个时候重新推流
2245
- */
2246
- handleStreamUpdateFailed(): Promise<void>;
2247
- /**
2248
- * 开关本地麦克风
2249
- * @param status true:开,false:关
2250
- */
2251
- setLocalAudioEnable(status: boolean): Promise<undefined>;
2252
- /**
2253
- * 该方法只是在入会的时候,同时开启音频和视频的时候使用,其他时候禁止使用该方法
2254
- * 切换音频和视频状态请使用 setLocalAudioEnable 和 setLocalVideoEnable
2255
- * @param audio
2256
- * @param video
2257
- */
2258
- joinWithAudioAndAudio(audio: boolean, video: boolean): Promise<void>;
2259
- /**
2260
- * 切换扬声器
2261
- * @param device
2262
- * @param force 是否需要强制更新
2263
- */
2264
- changeSpeaker(device: Device, force?: boolean): Promise<void>;
2265
- /**
2266
- * 设置单个流的扬声器
2267
- * @param streamModel
2268
- */
2269
- changeSingleStreamSpeaker(streamModel: BMStreamModel): Promise<void>;
2270
- changeAudioInput(device: Device): Promise<boolean | undefined>;
2271
- changeVideoInput(device: Device): Promise<boolean | undefined>;
2272
- /**
2273
- * 是否静音扬声器
2274
- * @param enable
2275
- */
2276
- muteSpeaker(enable: boolean): Promise<undefined>;
2277
- /**
2278
- * 创建本地音频流
2279
- */
2280
- createLocalAudioStream(): Promise<void>;
2281
- /**
2282
- * 创建流并且发布
2283
- * @param audio 是否发布音频流
2284
- * @param video 是否发布视频流
2285
- * @param localModel 本地的streamModel
2286
- * @param videoTrack
2287
- * @private
2288
- */
2289
- private createStreamAndPublish;
2290
- publishBloudStream(audio: boolean, video: boolean): Promise<void>;
2291
- muteHandler(type: 'video' | 'audio'): void;
2292
- unpublishStream(): Promise<void>;
2293
- /**
2294
- * 更改音视频状态或者取消发布
2295
- * @param type 更改类型
2296
- * @param mute 是否取消发布
2297
- * @param localModel 本地的streamModel
2298
- * @private
2299
- */
2300
- private muteOrUnpublishStream;
2301
- toggleShareScreen(enable: boolean, opts: any, customShare?: Result): Promise<boolean>;
2302
- setShareScreenContentHint(contentHint: '' | 'motion' | 'detail' | 'text'): void;
2303
- updateModelSort: lodash_es.DebouncedFunc<() => void>;
2304
- handleNoContainer: (info: NoPlayerContainer) => void;
2305
- /**
2306
- * 创建canvas,目的是为了捕获空track流,给brtc使用
2307
- */
2308
- createCanvas(): void;
2309
- private canvasDisplay;
2310
- private static getCanvasStream;
2311
- private createVideoStream;
2312
- /**
2313
- * 启动录制
2314
- * @param {String} opts.filename - 录制文件名
2315
- * @param {Object} opts.capture - 采集属性
2316
- * @param {Number} opts.capture.width - 宽度
2317
- * @param {Number} opts.capture.height - 高度
2318
- * @param {Number} opts.capture.fps - 帧率
2319
- * @param {Number} opts.record - 编码属性
2320
- * @param {Number} opts.record.bitrate - 编码码率
2321
- * @param {String|undefined} opts.record.format - 编码格式
2322
- * @return {boolean}
2323
- */
2324
- startRecord(opts: any): Promise<boolean | undefined>;
2325
- /**
2326
- * 添加流对象到录制器,用于音频轨道录制
2327
- * @param stream
2328
- */
2329
- addToRecorder(stream: SingleStream): void;
2330
- /**
2331
- * 从录制器中删除流对象
2332
- * @param stream
2333
- */
2334
- removeFromRecorder(stream: any): void;
2335
- /**
2336
- * 停止录制
2337
- */
2338
- stopRecord(): Promise<void>;
2339
- /**
2340
- * 启用下一个录制分片
2341
- * @param filename - 下一分片文件名
2342
- */
2343
- sliceRecord(filename: string): Promise<boolean | undefined>;
2344
- /**
2345
- * 启动说话人检测器
2346
- */
2347
- startSpeakerDetector(): void;
2348
- addToDetector(speaker: BMSpeaker): void;
2349
- removeFromDetector(speakerId: string): void;
2350
- clearDetector(): void;
2351
- shareCustomMedia(enable: boolean, shareOptions: ShareMediaOptions): Promise<undefined>;
2352
- /**
2353
- * 根据videoElement 获取内部流数据
2354
- */
2355
- getHTMLMediaStream: typeof getHTMLMediaStreamOptions;
2356
- getMediaStream: typeof getMediaStreamInfo;
2357
- /**
2358
- * 更新流信息 会给服务端发送updateStream信令,会收到updateStream的广播
2359
- */
2360
- updateBloudStreamCustomStats(uid: string, streamId: string, streamInfo: StreamCustomInfo): Promise<any> | undefined;
2361
- /**
2362
- * 布局发生变化之后去调用一下这个方法去检测所有流的播放状态
2363
- * @param {string} status tag 用于区分是什么状态下调用的
2364
- */
2365
- checkStreamStats(status: string): void;
2366
- clearCache(): void;
2367
- }
2368
-
2369
- /**
2370
- * @name: BMStreamModel
2371
- * @author: yangliye
2372
- * @date: 2022-04-25 11:14
2373
- * @description:BMStreamModel
2374
- * @update: 2022-04-25 11:14
2375
- */
2376
- declare type StreamType = 'big' | 'small';
2377
- interface ConnectErrorMessage {
2378
- stream: BMStreamModel;
2379
- isLocal: boolean;
2380
- }
2381
- interface NoPlayerContainer {
2382
- type: 'share' | 'normal';
2383
- container: 'small' | 'big';
2384
- id: string;
2385
- }
2386
- /**
2387
- * 播放器状态
2388
- */
2389
- declare enum PlayerState {
2390
- NO_CONTAINER = 0,
2391
- NO_PLAYING = 1,
2392
- PLAYING = 2
2393
- }
2394
- declare class BMStreamModel {
2395
- private user;
2396
- private _stream;
2397
- bloudStream: BloudStreamState | undefined;
2398
- /**
2399
- * 流类型
2400
- */
2401
- streamType: number;
2402
- pullFailedNum: number;
2403
- _video_enable: boolean;
2404
- _audio_enable: boolean;
2405
- videoEnableWatcher: BehaviorSubject<boolean>;
2406
- audioEnableWatcher: BehaviorSubject<boolean>;
2407
- streamUpdateWatcher: Subject<boolean>;
2408
- isSubScribedWatcher: Subject<boolean>;
2409
- playStateChangeWatcher: Subject<BMStreamModel>;
2410
- /**
2411
- * 找不到播放器,说明当前的streamModel可能是销毁重建的,或者是业务上绑定失败的,这个时候给端上一个提示,让他重新绑定一下播放器
2412
- */
2413
- noContainerWatcher: Subject<boolean>;
2414
- noBigContainerWatcher: Subject<boolean>;
2415
- audioLevelWatcher: Subject<number>;
2416
- isCurrentDisplay: boolean;
2417
- /**
2418
- * 当前窗口是不是在展示中目标状态
2419
- */
2420
- isDisplay: boolean;
2421
- isDisplayObserve: Subject<boolean>;
2422
- isInBig: boolean;
2423
- isInBigObserve: Subject<boolean>;
2424
- _hasPulled: boolean;
2425
- playerId: string;
2426
- /**
2427
- * 手动拉流配置, 默认是false, 如果是走手动拉流,设置成true,说明拉他的流
2428
- * shouldPull 是否应该拉
2429
- */
2430
- shouldPull: boolean;
2431
- get hasPulled(): boolean;
2432
- set hasPulled(value: boolean);
2433
- /**
2434
- * 当前拉取的是大流还是小流
2435
- */
2436
- _pulledStreamType: StreamType;
2437
- get pulledStreamType(): StreamType;
2438
- set pulledStreamType(type: StreamType);
2439
- /**
2440
- * 要拉取的流的目标状态
2441
- */
2442
- pulledStreamGoal: StreamType;
2443
- bigPlayerId: string;
2444
- player: Player | undefined | null;
2445
- isPlayingBig: boolean;
2446
- /**
2447
- * 是否静音了扬声器,brtc不会处理业务上静音的逻辑,所以需要自己处理
2448
- * 如果静音了,就把所有的流都重新静音播放一遍
2449
- */
2450
- muted: boolean;
2451
- private checkVideoTimer;
2452
- checkCount: number;
2453
- private checkFailedCount;
2454
- /**
2455
- * streamModel的唯一标识,用来给业务绑定播放容器
2456
- */
2457
- get uuid(): string;
2458
- get isAudience(): boolean;
2459
- /**
2460
- * 因为直播模式中,观众默认是不展示的,只有开麦以后才会展示
2461
- * 所以这个地方要判断一下
2462
- */
2463
- get canShow(): boolean;
2464
- changeMute(mute: boolean): void;
2465
- handleSpeakerChange(): void;
2466
- /**
2467
- * 排序数字
2468
- * 窗口的排序使用二进制运算进行了优化,为了提高运行速度牺牲了一部分代码可读性
2469
- */
2470
- sortNum: number;
2471
- get isToupingma(): boolean;
2472
- get isMixer(): boolean;
2473
- get isSignal(): boolean;
2474
- /**
2475
- * 初始化展示的model
2476
- * @param user
2477
- * @param stream
2478
- */
2479
- constructor(user: BMUser, stream?: SingleStream);
2480
- /**
2481
- * 生成订阅信息
2482
- */
2483
- genReceiveSubMsg(): SubscribeOptions;
2484
- /**
2485
- * display属性改变调整
2486
- * @private
2487
- */
2488
- private handleDisplayChange;
2489
- /**
2490
- * 处理当前窗口是不是在大窗的逻辑
2491
- * @param display
2492
- * @private
2493
- */
2494
- private handleIsInBig;
2495
- /**
2496
- * 设置是否打开摄像头状态
2497
- * @param enable
2498
- * @private
2499
- */
2500
- setVideoEnable(enable: boolean): void;
2501
- /**
2502
- * 设置是否打开麦克风状态
2503
- * @param enable
2504
- * @private
2505
- */
2506
- setAudioEnable(enable: boolean): void;
2507
- /**
2508
- * 更新当前streamModel中的流
2509
- * @param stream
2510
- * @param needReProcess
2511
- * @param bmStreamVm
2512
- */
2513
- updateStream(stream: SingleStream | undefined, needReProcess: boolean | undefined, bmStreamVm: BMStreamModelVM): void;
2514
- /**
2515
- * 更新bloud的stream,设置流状态
2516
- * @param streamState
2517
- * @param bmStreamVM
2518
- * @param forceSearch
2519
- */
2520
- updateBloudStream(streamState: BloudStreamState | undefined, bmStreamVM: BMStreamModelVM, forceSearch?: boolean): void;
2521
- updateBloudCustomInfo(customInfo: StreamCustomInfo): void;
2522
- private onPlayerStateChange;
2523
- handleStreamConnectError: () => void;
2524
- /**
2525
- * 获取当前的streamId
2526
- */
2527
- get streamId(): string;
2528
- get bStreamId(): string;
2529
- /**
2530
- * 获取当前窗口绑定的用户id
2531
- */
2532
- get userId(): string;
2533
- /**
2534
- * 获取当前的流对象
2535
- */
2536
- get stream(): SingleStream | undefined;
2537
- /**
2538
- * 是否是本地流
2539
- */
2540
- get isLocal(): boolean;
2541
- /**
2542
- * 是否是屏幕共享的流
2543
- */
2544
- get isShare(): boolean;
2545
- get isWeb(): boolean;
2546
- /**
2547
- * 当前音频是否开启
2548
- */
2549
- get audioEnable(): boolean;
2550
- /**
2551
- * 当前视频是否开启
2552
- */
2553
- get videoEnable(): boolean;
2554
- private get brtcPlayerId();
2555
- private get selfPlayerId();
2556
- /**
2557
- * 获取当前流绑定的用户昵称
2558
- */
2559
- get nickname(): string;
2560
- /**
2561
- * 获取流的麦克风音量
2562
- */
2563
- get audioLevel(): number;
2564
- getUser(): BMUser;
2565
- /**
2566
- * 设置远端流的播放声音
2567
- * @param volume
2568
- */
2569
- setRemoteAudioLevel(volume: number): void;
2570
- /**
2571
- * 获取流的传输信息
2572
- */
2573
- getStats(): Promise<RemoteStreamStats> | Promise<LocalStreamStats> | undefined;
2574
- /**
2575
- * BIND_ELEMENT 事件
2576
- * @param eleId
2577
- */
2578
- bindElement: (eleId: string) => void;
2579
- bindBigElement: (eleId: string) => void;
2580
- sendMessage2Room: lodash_es.DebouncedFunc<() => void>;
2581
- emitBindElement: lodash_es.DebouncedFunc<() => void>;
2582
- emitBindBigElement: lodash_es.DebouncedFunc<() => void>;
2583
- /**
2584
- * 当前是不是正在播放
2585
- * @param containerId sdk绑定播放器容器id
2586
- * @param playerContainerId 播放器创建的容器id
2587
- */
2588
- currentIsPlaying: (containerId: string) => PlayerState;
2589
- /**
2590
- * 播放当前流
2591
- */
2592
- play: () => Promise<void>;
2593
- /**
2594
- * 在大窗口播放该流的时候调用这个方法
2595
- */
2596
- playInBig: () => Promise<void>;
2597
- private initBigPlayer;
2598
- /**
2599
- * 停止播放当前流
2600
- */
2601
- stop(): void;
2602
- /**
2603
- * 销毁当前流
2604
- */
2605
- destroy(): void;
2606
- /**
2607
- * 获取当前流是否正在播放
2608
- */
2609
- isPlaying(): boolean | undefined;
2610
- /**
2611
- * 重新播放
2612
- */
2613
- replay(): Promise<void> | undefined;
2614
- /**
2615
- * 恢复播放音视频
2616
- * 在某些版本浏览器上移动传入 play() 的 div 容器可能会导致音视频播放器进入 ‘PAUSED’ 状态,此时 需要调用该接口恢复播放。
2617
- * 由于浏览器自动播放策略的限制,在 play() 返回 PLAY_NOT_ALLOWED 错误后需要引导用户通过手势 调用该接口恢复播放
2618
- *
2619
- * @returns
2620
- */
2621
- resume(): void;
2622
- /**
2623
- * 是否有音频流
2624
- */
2625
- hasAudio(): boolean;
2626
- /**
2627
- * 是否有视频流
2628
- */
2629
- hasVideo(): boolean;
2630
- /**
2631
- * 更新当前model的用户信息
2632
- * @param user
2633
- */
2634
- updateUser(user: BMUser): void;
2635
- updateSortNum(force?: boolean): void;
2636
- setSortNum(sortNum: number, force: boolean): void;
2637
- getSortNum(): number;
2638
- /**
2639
- * 启动音频音量检测
2640
- */
2641
- collectAudioLevel: () => void;
2642
- private handleAudioLevel;
2643
- checkSmallVideo(): void;
2644
- checkBigVideo: lodash_es.DebouncedFunc<() => void>;
2645
- /**
2646
- * 播放黑窗处理,主要是做一个容错处理,又可能这股流拉下来或者存在订阅就出现问题的情况
2647
- * 播放时黑窗的,这个时候需要,检测,然后重新拉流
2648
- * @param videoContainer
2649
- */
2650
- private checkVideoDecodeFrame;
2651
- /**
2652
- * 发送订阅该流的请求
2653
- */
2654
- subscribeStream(): void;
2655
- unSubscribeStream(): void;
2656
- checkStreamIsPlaying: lodash_es.DebouncedFunc<() => void>;
2657
- /**
2658
- * 取消流的播放
2659
- * @param type big: 大窗口 small: 小窗口 all: 全部
2660
- */
2661
- unAttach(type: 'big' | 'small' | 'all'): void;
2662
- }
2663
-
2664
- declare type Operation = 'none' | 'getMaster' | 'getManager' | 'removeMaster' | 'getGuest' | 'removeGuest' | 'removeManager' | 'changeNickName' | 'speakerEnable' | 'changeShare' | 'updateUser' | 'raiseHandsVideo' | 'raiseHandsAudio' | 'audienceEnableSpeaking' | 'inBackground' | 'raiseHand';
2665
- interface IUserActionWatcher {
2666
- operation: Operation;
2667
- user: BMUser;
2668
- }
2669
- interface UserInfo {
2670
- avatar: string;
2671
- jointime: number;
2672
- nickname: string;
2673
- pos: string;
2674
- userId: string;
2675
- status?: {
2676
- audioRaiseHands: boolean;
2677
- videoRaiseHands: boolean;
2678
- };
2679
- }
2680
- declare class BMUser {
2681
- /**
2682
- * 用户id
2683
- */
2684
- userId: string;
2685
- /**
2686
- * 用户信息
2687
- */
2688
- userInfo: UserInfo;
2689
- nickName: string;
2690
- isMaster: boolean;
2691
- isManager: boolean;
2692
- mirror: boolean;
2693
- isLocal: boolean;
2694
- isToupingma: boolean;
2695
- hasMultiple: boolean;
2696
- isCreate: boolean;
2697
- hasShare: boolean;
2698
- audienceEnableSpeaking: boolean;
2699
- /** 头像 */
2700
- avatar: string;
2701
- private streamModels;
2702
- permission: any;
2703
- /**
2704
- * 监听器, 监听返回对象属性
2705
- * @property {string} operation
2706
- * 'getManager':获得管理员权限/成为联席主持人
2707
- * 'getMaster':成为主持人
2708
- * 'removeManager':取消管理员权限/取消联席主持人
2709
- * 'removeMaster':取消主持人
2710
- * 'changeNickName':改变昵称
2711
- * 'speakerEnable':扬声器开关状态改变
2712
- * 'changeShare': 是否在屏幕共享
2713
- * 'raiseHandsVideo': 是否视频举手
2714
- * 'raiseHandsAudio': 是否音频举手
2715
- * 'raiseHand':单纯的举手
2716
- * @property {BMUser} user
2717
- */
2718
- watcher: BehaviorSubject<IUserActionWatcher>;
2719
- /**
2720
- * 排序
2721
- */
2722
- sortNum: number;
2723
- /**
2724
- * 举手相关
2725
- */
2726
- raiseVideoHands: boolean;
2727
- raiseAudioHands: boolean;
2728
- raiseHand: boolean;
2729
- isAudience: boolean;
2730
- /**
2731
- * 是不是普通参会者
2732
- */
2733
- isCommonUser: boolean;
2734
- /**
2735
- * 如果改用户是移动端, 该值用于判断这个用户是否在后台
2736
- */
2737
- inBackground: boolean;
2738
- raiseHandTime: number;
2739
- /**
2740
- * 是不是web端入会
2741
- */
2742
- get isWeb(): boolean;
2743
- constructor(user: any, isLocal?: boolean);
2744
- setup(userId: string, userinfo: UserInfo, nickname: string): void;
2745
- getMainStreamModel(): BMStreamModel | undefined;
2746
- get nickname(): string;
2747
- getShareStreamModel(): BMStreamModel | undefined;
2748
- /**
2749
- * 获取用户麦克风开启状态
2750
- */
2751
- get audioEnable(): boolean;
2752
- get isMixer(): boolean;
2753
- /**
2754
- * 获取用户视频开启状态
2755
- */
2756
- get videoEnable(): boolean;
2757
- get isSharing(): boolean;
2758
- /**
2759
- * 是否是信号源
2760
- */
2761
- get isSignal(): boolean;
2762
- /**
2763
- * 检测当前用户是否有主持人权限
2764
- */
2765
- checkLocalHasMaster(): boolean;
2766
- /**
2767
- * 给用户添加流
2768
- * @param streamId
2769
- * @param stream 流
2770
- */
2771
- addStream(streamId: string, stream: BMStreamModel): void;
2772
- /**
2773
- * 删除流
2774
- * @param streamId
2775
- */
2776
- removeStream(streamId: string): void;
2777
- /**
2778
- * 获取用户id
2779
- */
2780
- getID(): string;
2781
- /**
2782
- * 获取用户昵称
2783
- */
2784
- getNickName(): string;
2785
- /**
2786
- * 获取用户信息
2787
- */
2788
- getUserInfo(): UserInfo;
2789
- /**
2790
- * 获取用户流信息
2791
- */
2792
- getStreams(): Map<string, BMStreamModel>;
2793
- /**
2794
- * updateUserInfo更新用户信息(除了isMaster,isMaster是通过change-master事件改变的)
2795
- * @param bcUser
2796
- * @param participant
2797
- * @param bmRoom
2798
- * @returns
2799
- */
2800
- updateUserInfo(bcUser: BCUser, participant: any, bmRoom: BMRoom): void;
2801
- /** 是否有管理权限, 是主持人或联席主持人之一 */
2802
- hasManager(): boolean;
2803
- /** 获取用户后面的身份标识 */
2804
- getNicknameSuffix(): string;
2805
- /**
2806
- * 更新当前用户的排序
2807
- */
2808
- updateSortNum(force?: boolean, shouldDelay?: boolean): void;
2809
- setSortNum(sortNum: number, force: boolean, shouldDelay: boolean): void;
2810
- }
2811
-
2812
- /**
2813
- * @name: BMRoomInfo
2814
- * @author: yangliye
2815
- * @date: 2022-05-18 13:52
2816
- * @description:BMRoomInfo
2817
- * @update: 2022-05-18 13:52
2818
- */
2819
-
2820
- interface OperationCustomStats {
2821
- /**
2822
- * 是否允许点赞 0 不可用 1可用
2823
- */
2824
- giveLikeEnable: 0 | 1;
2825
- /**
2826
- * 聊天是否可以用 0 不可用 1可用 2仅主持人 3嘉宾
2827
- */
2828
- chatEnable: 0 | 1 | 2 | 3;
2829
- /**
2830
- * 上传文档权限 设置-文档上传模式 0仅主持人 1 嘉宾 2 全员
2831
- */
2832
- fileUpdateModel: FilePermission;
2833
- /**
2834
- * 文档查看权限 设置-文档查看模式 0仅主持人 1 嘉宾 2 全员
2835
- */
2836
- fileUpdateLook: FilePermission;
2837
- /**
2838
- * 文档下载权限 设置-文档下载模式 0仅主持人 1 嘉宾 2 全员
2839
- */
2840
- fileUpdateDown: FilePermission;
2841
- /**
2842
- * 文档编辑权限 设置-文档编辑模式 0仅主持人 1 嘉宾 2 全员
2843
- */
2844
- fileUpdateEdit: FilePermission;
2845
- /**
2846
- * 共享屏幕权限 设置-屏幕共享模式 0仅主持人 1全员
2847
- */
2848
- screenShareModel: 0 | 1;
2849
- /**
2850
- * 是否仅一人共享 1:是 2:否
2851
- */
2852
- onlyOnePersonShare: 0 | 1;
2853
- /**
2854
- * 云录对象
2855
- * recordStatus 录制状态:0=暂未开始,1=录制中,2=申请中
2856
- * userId:开启人
2857
- */
2858
- cloudRecord: CloudRecord;
2859
- /**
2860
- * 入会时麦克风权限 0全员 1嘉宾 2主持人
2861
- */
2862
- joinAudioEnable: 0 | 1 | 2;
2863
- /**
2864
- * 入会时开启摄像头权限 0全员 1嘉宾 2主持人
2865
- */
2866
- joinVideoEnable: 0 | 1 | 2;
2867
- /**
2868
- * 参会者列表权限 0全员 1嘉宾 2主持人
2869
- */
2870
- userListEnable: 0 | 1 | 2;
2871
- /**
2872
- * 会议中是否允许开启麦克风 0全员 1嘉宾 2主持人
2873
- */
2874
- audioEnable: 0 | 1 | 2;
2875
- /**
2876
- * 会议中是否允许开启摄像头 0全员 1嘉宾 2主持人
2877
- */
2878
- videoEnable: 0 | 1 | 2;
2879
- /**
2880
- * 是否允许自行改名 0全员 1嘉宾
2881
- */
2882
- modifyNameEnable: 0 | 1;
2883
- /**
2884
- * 是否允许开启虚拟背景 0全员 1嘉宾 2主持人
2885
- */
2886
- backgroundAIEnable: 0 | 1 | 2;
2887
- /**
2888
- * 是否允许举手 0禁止全员 1允许嘉宾 2全员可举手
2889
- */
2890
- raiseHandEnable: 0 | 1 | 2;
2891
- /**
2892
- * 入会提示音设置
2893
- */
2894
- joinCueVoice: 0 | 1;
2895
- }
2896
- declare class BMRoomInfo {
2897
- private room;
2898
- /**
2899
- * 房间名
2900
- */
2901
- private _roomName;
2902
- /**
2903
- * 消息序列号
2904
- */
2905
- msgSeq: string;
2906
- /**
2907
- * 房间 号
2908
- */
2909
- roomID: string;
2910
- /**
2911
- * 是否全员静音(业务端用)
2912
- */
2913
- audioOff: boolean;
2914
- /**
2915
- * 是否可以自行开启(业务端用)
2916
- */
2917
- selfopenaudio: boolean;
2918
- /**
2919
- * 是否锁定
2920
- */
2921
- lock: boolean;
2922
- /**
2923
- * 离开提示
2924
- */
2925
- private leaveNotice;
2926
- /**
2927
- * 全员静音状态下是否允许打开麦克风
2928
- * @private
2929
- */
2930
- private openSelf;
2931
- /**
2932
- * 通知公告信息
2933
- */
2934
- chatNotice: string;
2935
- /**
2936
- * 通知公告信息富文本
2937
- */
2938
- chatNoticeRich: string;
2939
- /**
2940
- * 所有的音频举手人员
2941
- */
2942
- private raiseHandsList;
2943
- raiseHandsWatcher: BehaviorSubject<BMUser[]>;
2944
- /**
2945
- * 所有的视频举手的人员
2946
- */
2947
- private raiseVideoHandsList;
2948
- raiseVideoHandsWatcher: BehaviorSubject<BMUser[]>;
2949
- /**
2950
- * 所有的举手的人员
2951
- */
2952
- private raiseSimpleHandsList;
2953
- raiseSimpleHandsWatcher: BehaviorSubject<BMUser[]>;
2954
- operationPermission: OperationCustomStats | undefined;
2955
- operationPermissionWatcher: Subject<OperationCustomStats>;
2956
- chatNoticeWatcher: Subject<unknown>;
2957
- totalUserWatcher: BehaviorSubject<number>;
2958
- totalWaitRoomUserWatcher: BehaviorSubject<number>;
2959
- isOpenWaitRoom: Subject<boolean>;
2960
- constructor();
2961
- get roomName(): string;
2962
- /**
2963
- * 判断是不是大房间使用
2964
- */
2965
- get isBigRoom(): boolean;
2966
- setup(info: any): void;
2967
- bindRoom(room: BMRoom): void;
2968
- initCustomStats(customStats: any): void;
2969
- updateOperationPermission(stats: any): void;
2970
- private handleInitParams;
2971
- audioOffWatcher: Subject<audioOffWatcherValue>;
2972
- lockWatcher: BehaviorSubject<boolean>;
2973
- leaveNoticeWatcher: BehaviorSubject<boolean>;
2974
- openSelfWatcher: BehaviorSubject<boolean>;
2975
- /**
2976
- * 设置是否全员静音
2977
- * @param audioOff
2978
- * @param selfopenaudio 是否可以自行开启
2979
- */
2980
- setAudioOff(audioOff: boolean, selfopenaudio: boolean): void;
2981
- /**
2982
- * 设置是否锁定
2983
- * @param lock
2984
- */
2985
- setlock(lock: boolean): void;
2986
- setLeaveNotice(leaveNotice: boolean): void;
2987
- setRaiseHandsList(userList: BMUser[]): void;
2988
- /**
2989
- * 音频举手处理
2990
- * @param user
2991
- */
2992
- addRaiseHandUser(user: BMUser): void;
2993
- /**
2994
- * 取消音频举手处理
2995
- * @param userId
2996
- */
2997
- removeRaiseHandUser(userId: string): void;
2998
- /**
2999
- * 视频申请处理
3000
- * @param user
3001
- */
3002
- addVideoRaiseHandUser(user: BMUser): void;
3003
- /**
3004
- * 取消视频申请处理
3005
- * @param userId
3006
- */
3007
- removeVideoRaiseHandUser(userId: string): void;
3008
- /**
3009
- * 举手处理
3010
- * @param user
3011
- */
3012
- addSimpleRaiseHandUser(user: BMUser): void;
3013
- /**
3014
- * 取消举手处理
3015
- * @param userId
3016
- */
3017
- removeSimpleRaiseHandUser(userId: string): void;
3018
- private setRaiseHandsWatcherValue;
3019
- private setVideoRaiseHandsWatcherValue;
3020
- private setSimpleRaiseHandsWatcherValue;
3021
- }
3022
-
3023
- interface Tiles4 {
3024
- index: number;
3025
- nickname: string;
3026
- user: string;
3027
- stream: string;
3028
- isSubStream?: boolean;
3029
- }
3030
- interface HostLayout {
3031
- user: string;
3032
- layout: number;
3033
- activeSubtiles: boolean;
3034
- tiles: Tiles4[];
3035
- }
3036
-
3037
- /**
3038
- * 0 仅支持人 1 嘉宾 2 全员
3039
- */
3040
- declare type FilePermission = 0 | 1 | 2;
3041
- declare type giveLikeItem = {
3042
- userId: string | undefined;
3043
- nickName: string | undefined;
3044
- time: number;
3045
- type: number;
3046
- };
3047
- declare type CloudRecord = {
3048
- recordStatus: 0 | 1 | 2;
3049
- userId: string;
3050
- };
3051
- declare type SupportVideoProfile = '180p' | '240p' | '360p' | '480p' | '720p';
3052
- declare type SampleDeviceInfo = {
3053
- name: string;
3054
- };
3055
- interface DeviceList {
3056
- microphoneDeviceList: SampleDeviceInfo[];
3057
- speakerDeviceList: SampleDeviceInfo[];
3058
- videoDeviceList: SampleDeviceInfo[];
3059
- selectVideoDevice: SampleDeviceInfo;
3060
- selectMicrophoneDevice: SampleDeviceInfo;
3061
- selectSpeakerDevice: SampleDeviceInfo;
3062
- videoProfile: SupportVideoProfile;
3063
- echoCancellation: boolean;
3064
- noiseSuppression: boolean;
3065
- autoGainControl: boolean;
3066
- speakerVolume: number;
3067
- }
3068
- interface AudioProfileInfo {
3069
- /**
3070
- * 音频采集设备
3071
- */
3072
- microphoneDevice?: SampleDeviceInfo;
3073
- /**
3074
- * 音频输出设备
3075
- */
3076
- speakerDevice?: SampleDeviceInfo;
3077
- /**
3078
- * 回音消除
3079
- */
3080
- echoCancellation?: boolean;
3081
- /**
3082
- * 音频降噪
3083
- */
3084
- noiseSuppression?: boolean;
3085
- /**
3086
- * 声音增益
3087
- */
3088
- autoGainControl?: boolean;
3089
- /**
3090
- * 调整扬声器音量 0 - 100
3091
- */
3092
- speakerVolume?: number;
3093
- /**
3094
- * 调整麦克风音量 0 - 100
3095
- */
3096
- microVolume?: number;
3097
- }
3098
- declare class BMRoomVM {
3099
- roomInfo: BMRoomInfo;
3100
- boomCore: BCClient;
3101
- userVM: BMUserVM;
3102
- giveLikeListWatcher: Subject<Array<giveLikeItem>>;
3103
- giveLikeList: Array<giveLikeItem>;
3104
- private room;
3105
- tipQueueObj: any;
3106
- constructor(boomCore: BCClient, userVM: any, roomInfo: BMRoomInfo);
3107
- initWithRoom(room: BMRoom): void;
3108
- /**
3109
- * 踢出用户
3110
- * @param {String} userId 用户ID
3111
- * @param {boolean} withoutBlack
3112
- */
3113
- evictUser(userId: string, withoutBlack: boolean): Promise<any>;
3114
- /**
3115
- * 更新用户信息,端上会收到 participant-update 信令
3116
- * @param userId
3117
- * @param info
3118
- */
3119
- updateUser(userId: string, info: any): Promise<undefined>;
3120
- /**
3121
- * 改变主持人
3122
- * @param {String} userId 用户ID
3123
- * @param isKeep
3124
- */
3125
- changeMaster(userId: string, isKeep: boolean): Promise<any>;
3126
- updateManager(userId: string, status: boolean, hasS?: boolean): Promise<BMUser>;
3127
- /**
3128
- * 改变昵称 需要调用http请求
3129
- * @param {String} userId 用户ID
3130
- * @param {String} nickName 用户ID
3131
- */
3132
- changeNickName(userId: string, nickName: string): Promise<any>;
3133
- /**
3134
- * 主持人send-message
3135
- * @param message 发送的消息
3136
- * @param uid 指定的userId
3137
- */
3138
- sendMessageWithMaster(message: any, uid?: string): Promise<undefined>;
3139
- /**
3140
- * 开关对端麦克风-信令发送
3141
- * @param status true:开,false:关
3142
- * @param uid 用户id
3143
- * @param isNotCancelRootReport 当打开麦克风时, 是否不取消音频权限申请
3144
- */
3145
- setRemoteAudioEnable(status: boolean, uid: string, isNotCancelRootReport: boolean | undefined): Promise<void>;
3146
- /**
3147
- * 开关对端摄像头-信令发送
3148
- * @param status true:开,false:关
3149
- * @param uid 用户id
3150
- */
3151
- setRemoteVideoEnable(status: boolean, uid: string): Promise<void>;
3152
- /**
3153
- * 关闭对端共享屏幕
3154
- * @param uid 用户id
3155
- */
3156
- closeRemoteShare(uid: string): Promise<void>;
3157
- /**
3158
- * 提醒用户
3159
- * @param uid 用户id
3160
- * @param uid msg
3161
- */
3162
- tipUser(uid: string, msg: string, richMsg: object, time: any): Promise<void>;
3163
- /**
3164
- * 举手相关操作
3165
- * @param type 视频还是音频举手 audio/video
3166
- * @param raise 举手还是放下举手 true/false
3167
- */
3168
- raiseHands(type: 'audio' | 'video' | 'raiseHand', raise: boolean): Promise<void>;
3169
- /**
3170
- * 主持人处理举手操作
3171
- * @param raiseHandsType 0 音视频 1 音频 2 视频 3 单纯的举手
3172
- * @param raiseHands true 同意 false 拒绝
3173
- * @param uid 指定的用户Id
3174
- * @description 如果不指定用户ID就是广播处理所有的举手的人员
3175
- */
3176
- handleRaiseHands(raiseHandsType: 0 | 1 | 2 | 3, raiseHands: boolean, uid?: string): Promise<undefined>;
3177
- /**
3178
- * 更新自定义属性 updateCustomStats
3179
- * @param stats
3180
- * @param {boolean} replace 是否替换原数据
3181
- */
3182
- private updateCustomStats;
3183
- /**
3184
- * 发送聊天公告
3185
- * @param notice
3186
- */
3187
- sendChatNotice(notice: string, richNotice: object, showTipNotice: boolean): Promise<void>;
3188
- /**
3189
- * 是否允许点赞
3190
- * @param enable 0 不允许 1 允许
3191
- */
3192
- giveLikeEnable(enable: 0 | 1): Promise<void>;
3193
- /**
3194
- * 入会自动静音配置 0 关闭 1 开启自动静音 2 超过6个人入会自动静音
3195
- * @param enable
3196
- */
3197
- changeAutoMute(enable: 0 | 1 | 2): Promise<void>;
3198
- /**
3199
- * 允许成员接收进入/离开会议通知配置 0 关闭 1 开启自动静音
3200
- * @param enable
3201
- */
3202
- allUserReceiveJoinLeaveMessages(enable: 0 | 1): Promise<void>;
3203
- /**
3204
- * 成员入会时给主持人播放提示音配置 0 关闭 1 开启自动静音
3205
- * @param enable
3206
- */
3207
- userJoinMasterVoice(enable: 0 | 1): Promise<void>;
3208
- /**
3209
- * 观众点赞(走customMessage)
3210
- * @param type 1:点赞, 2:送花, 3:爱心, 4: 鼓掌, 5: 喝彩
3211
- */
3212
- userGiveLike(type: 1 | 2 | 3 | 4 | 5): Promise<void>;
3213
- /**
3214
- * 聊天是否可用
3215
- * @param enable 0 不允许 1 允许 2仅主持人 3嘉宾
3216
- */
3217
- chatEnable(enable: 0 | 1 | 2 | 3): Promise<void>;
3218
- /**
3219
- * 入会时是否允许开启麦克风
3220
- * @param enable 0全员 1嘉宾 2仅主持人 3全员禁止
3221
- */
3222
- joinAudioEnable(enable: 0 | 1 | 2 | 3): Promise<void>;
3223
- /**
3224
- * 入会时是否允许开启摄像头
3225
- * @param enable 0全员 1嘉宾 2仅主持人 3全员禁止
3226
- */
3227
- joinVideoEnable(enable: 0 | 1 | 2 | 3): Promise<void>;
3228
- /**
3229
- * 参会者列表权限
3230
- * @param enable 0全员 1嘉宾 2仅主持人
3231
- */
3232
- userListEnable(enable: 0 | 1 | 2): Promise<void>;
3233
- /**
3234
- * 会议中是否允许开麦克风
3235
- * @param enable 0全员 1嘉宾 2仅主持人
3236
- */
3237
- audioEnable(enable: 0 | 1 | 2): Promise<void>;
3238
- /**
3239
- * 会议中是否允许开启摄像头
3240
- * @param enable 0全员 1嘉宾 2仅主持人
3241
- */
3242
- videoEnable(enable: 0 | 1 | 2): Promise<void>;
3243
- /**
3244
- * 是否允许自行改名
3245
- * @param enable 0全员 1嘉宾
3246
- */
3247
- modifyNameEnable(enable: 0 | 1 | 2): Promise<void>;
3248
- /**
3249
- * 是否允许开启虚拟背景
3250
- * @param enable 0全员 1嘉宾 2仅主持人
3251
- */
3252
- backgroundAIEnable(enable: 0 | 1 | 2): Promise<void>;
3253
- /**
3254
- * 强制开启对方视频
3255
- * @param enable true开启 false关闭
3256
- */
3257
- forceOpenUserCamera(enable: true | false): Promise<void>;
3258
- /**
3259
- * 强制开启对方音频
3260
- * @param enable true开启 false关闭
3261
- */
3262
- forceOpenUserMic(enable: true | false): Promise<void>;
3263
- /**
3264
- * 入会提示音设置
3265
- * @param enable 0关闭 1开启
3266
- */
3267
- joinCueVoice(enable: 0 | 1): Promise<void>;
3268
- /**
3269
- * 是否全员可录制
3270
- * @param enable 0全员 1嘉宾 2仅主持人
3271
- */
3272
- recordEnable(enable: 0 | 1 | 2): Promise<void>;
3273
- /**
3274
- * 是否全员可录制
3275
- * @param enable 0禁止全员举手 1嘉宾可举手 2全员可举手
3276
- */
3277
- raiseHandEnable(enable: 0 | 1 | 2): Promise<void>;
3278
- /**
3279
- * 入会麦克风禁用
3280
- * @param enable 0全员禁止使用 1嘉宾和学员不可使用 2不开启
3281
- */
3282
- joinMicrophoneDisable(enable: 0 | 1 | 2): Promise<void>;
3283
- /**
3284
- * 入会摄像头禁用
3285
- * @param enable 0全员禁止使用 1嘉宾和学员不可使用 2不开启
3286
- */
3287
- joinCameraDisable(enable: 0 | 1 | 2): Promise<void>;
3288
- /**
3289
- * 上传文档权限
3290
- * @param permission 0 仅支持人 1 嘉宾 2 全员
3291
- */
3292
- changeFileUpdateModelPermission(permission: FilePermission): Promise<void>;
3293
- changeFileUpdateLookPermission(permission: FilePermission): Promise<void>;
3294
- changeFileUpdateDownPermission(permission: FilePermission): Promise<void>;
3295
- changeFileUpdateEditPermission(permission: FilePermission): Promise<void>;
3296
- /**
3297
- * 共享屏幕权限
3298
- * @param permission 0全员可共享 1允许嘉宾共享 2仅主持人可共享
3299
- */
3300
- changeScreenShareModelPermission(permission: 0 | 1 | 2): Promise<void>;
3301
- /**
3302
- * 是否仅一人共享权限
3303
- * @param permission 1: 是 2: 否
3304
- */
3305
- changeOnlyOnePersonSharePermission(permission: 0 | 1): Promise<void>;
3306
- /**
3307
- * 设为焦点主屏
3308
- * @param {string} userid 设为焦点主屏的userId
3309
- */
3310
- setForceOnUser(userid: string): Promise<void>;
3311
- /**
3312
- * 主持人上报布局状态
3313
- * @param layoutData
3314
- * @param replace
3315
- */
3316
- updateHostLayout(layoutData: HostLayout, replace?: boolean): Promise<void>;
3317
- checkDevices(userId: string): Promise<void>;
3318
- resp2CheckDevices(deviceList: DeviceList, userId: string): Promise<void>;
3319
- /**
3320
- * 调节对方的视频分辨率
3321
- * @param {SupportVideoProfile} videoInfo 调节对方视频信息
3322
- * @param {string} userId
3323
- */
3324
- changeRemoteVideoProfile(videoInfo: {
3325
- profile: SupportVideoProfile;
3326
- videoDevice: SampleDeviceInfo;
3327
- }, userId: string): Promise<any>;
3328
- /**
3329
- * 设置完本地的视频分辨率之后,给对方响应
3330
- * @param {boolean} status 设置是否成功
3331
- * @param {string} userId
3332
- */
3333
- resp2ChangeRemoteVideoProfile(status: boolean, userId: string, profile: string): Promise<any>;
3334
- /**
3335
- * 调节远端的音频参数
3336
- * @param {Object} profileInfo
3337
- * @param uid
3338
- */
3339
- changeRemoteAudioProfile(profileInfo: AudioProfileInfo, uid: string): Promise<any>;
3340
- /**
3341
- * 响应调节远端音频的结果
3342
- * @param status
3343
- * @param uid
3344
- */
3345
- resp2ChangeRemoteAudioProfile(status: boolean, uid: string): Promise<any>;
3346
- }
3347
-
3348
- /**
3349
- * @name: BMLiveVM.ts
3350
- * @author: yangliye
3351
- * @date: 2022-07-15 13:53
3352
- * @description:处理直播相关的流处理
3353
- * @update: 2022-07-15 13:53
3354
- */
3355
-
3356
- declare class BMLiveVM {
3357
- private room;
3358
- constructor(room: BMRoom);
3359
- private get localBMUser();
3360
- private get localIsAudience();
3361
- /**
3362
- * 拉流处理
3363
- * @param bmStreamModel
3364
- */
3365
- handlePull(bmStreamModel: BMStreamModel): Promise<void>;
3366
- /**
3367
- * 切换大小流处理
3368
- * @param bmStreamModel
3369
- */
3370
- handleChangeStreamType(bmStreamModel: BMStreamModel): Promise<void>;
3371
- handlePlay(bmStreamModel: BMStreamModel, noPlayChanged: boolean): Promise<void>;
3372
- /**
3373
- * 处理观众端举手发言完了,然后在禁止发言,这个时候,没有必要在拉所有人的流,把除了混流的人的流都取消订阅,然后播放混流的声音
3374
- */
3375
- handleAudienceDisable(): Promise<void>;
3376
- /**
3377
- * 观众允许发言,允许发言之后,要把所有的流都拉,然后混流静音
3378
- */
3379
- handleAudienceEnable(): Promise<void>;
3380
- }
3381
-
3382
- /**
3383
- * @name: AudioPlay.ts
3384
- * @author: yangliye
3385
- * @date: 2023-06-08 16:35
3386
- * @description:AudioPlay.ts
3387
- * @update: 2023-06-08 16:35
3388
- */
3389
-
3390
- declare class AudioPlay {
3391
- playMap: WeakSet<SingleStream>;
3392
- playerMap: Map<string, AudioPlayer>;
3393
- container: HTMLDivElement | undefined;
3394
- muted: boolean;
3395
- room: BMRoom;
3396
- playStateChangeWatcher: Subject<AudioPlayer>;
3397
- deviceId?: string;
3398
- constructor(containerId: string, room: BMRoom);
3399
- addStream(stream: SingleRemoteStream, force?: boolean): void;
3400
- removeStream(stream: SingleStream): void;
3401
- removeStreamByUid(uid: string): void;
3402
- play(stream: SingleRemoteStream): Promise<void>;
3403
- mute(mute: boolean): void;
3404
- setVolume(streamId: string, volume: number): void;
3405
- setDevice(deviceId: string, force?: boolean): Promise<void>;
3406
- addPlayerEvent(player: AudioPlayer): void;
3407
- clear(): void;
3408
- destroy(): void;
3409
- }
3410
-
3411
- interface BMRoomProps {
3412
- initDevices: boolean;
3413
- }
3414
- interface MediaPermission {
3415
- microphone: boolean;
3416
- camera: boolean;
3417
- screen: boolean;
3418
- }
3419
- declare class BMRoom {
3420
- roomVM: BMRoomVM | null;
3421
- userVM: BMUserVM;
3422
- chatVM: BMChatVM;
3423
- bmStreamVm: BMStreamModelVM;
3424
- observes: any;
3425
- boomCore: BCClient;
3426
- videoDevices: Device[];
3427
- audioDevices: Device[];
3428
- audioOutputDevices: Device[];
3429
- selectVideoDevice: Device | null;
3430
- selectAudioDevice: Device | null;
3431
- selectAudioOutputDevice: Device | null;
3432
- streamQueue: SingletonQueue;
3433
- /**
3434
- * 这个参数是和业务相关的功能,业务上的参会者列表是可以配置的,如果设置了只展示一列,那么所有的用户都要存储
3435
- * 在commonUserList中
3436
- */
3437
- userListColumns: number;
3438
- /**
3439
- * 排序规则 1 是标品排序, 2 是中移排序
3440
- */
3441
- sortType: number;
3442
- /**
3443
- * brtc断网重连的时候,所有的订阅和播放相关的处理,都不需要
3444
- */
3445
- BRTCConnectFailed: boolean;
3446
- /**
3447
- * 本端推流失败次数
3448
- */
3449
- pubFailedNum: number;
3450
- streamConnectedErrorQueue: Array<ConnectErrorMessage>;
3451
- /**
3452
- * 会议模式
3453
- * 1 会议
3454
- * 2 直播
3455
- */
3456
- conferenceMode: 1 | 2;
3457
- /**
3458
- * 是不是大房间
3459
- */
3460
- isBig: boolean;
3461
- selectVideoDeviceWatcher: BehaviorSubject<Device | null>;
3462
- selectAudioDeviceWatcher: BehaviorSubject<Device | null>;
3463
- selectAudioOutputDeviceWatcher: BehaviorSubject<Device | null>;
3464
- audioDevicesWatcher: Subject<Device[]>;
3465
- videoDevicesWatcher: Subject<Device[]>;
3466
- audioOutputDevicesWatcher: Subject<Device[]>;
3467
- raiseHandleRespWatcher: Subject<{
3468
- raiseHandsType: 0 | 1 | 2 | 3;
3469
- raiseHands: boolean;
3470
- }>;
3471
- enableAudienceSpeakingWatcher: Subject<boolean>;
3472
- mediaPermission: MediaPermission;
3473
- videoProfile: VideoProfile;
3474
- audioProfile: AudioProfileInfo | null;
3475
- voiceMode: AudioHint;
3476
- setVoiceMode(mode: AudioHint): void;
3477
- /**
3478
- * brtc断网重连要给端上事件响应,所有端上把流单独做处理的,需要在收到这个事件之后,重新处理所有的effect
3479
- */
3480
- streamWSReconnectWatcher: Subject<boolean>;
3481
- /**
3482
- * bloud断网重连的时候的提示
3483
- */
3484
- bloudWSReconnectWatcher: Subject<boolean>;
3485
- netConnecting: boolean;
3486
- netConnectingWatcher: Subject<boolean>;
3487
- hasSyncPermission: boolean;
3488
- /**
3489
- * 会控底层相关处理, 比如是否取消自动拉流
3490
- */
3491
- private meetingControlOptions;
3492
- forceId: string;
3493
- /**
3494
- * bloud brtc 断网重连的处理
3495
- * networkState 记录网络状态
3496
- * handleReconnectedStream 防抖函数,当双方有连接断网重连之后,会执行这个方法
3497
- *
3498
- * brtc 的sync-room 之后,本地会把所有的stream都销毁,清空,然后统一走一遍查询处理
3499
- * 绑定新的stream,这么做简单粗暴处理所有的brtc流,防止流重复问题i
3500
- */
3501
- networkState: {
3502
- bloud: boolean;
3503
- brtc: boolean;
3504
- };
3505
- brtcNetEnableWatcher: Subject<boolean>;
3506
- autoPlayAudio: boolean;
3507
- audioPlayer: AudioPlay;
3508
- private pubFailedTimer;
3509
- get isSingleColumns(): boolean;
3510
- /**
3511
- * 传递信息用的,主要是用于message信令往上层业务发送消息
3512
- */
3513
- messageWatcher: BehaviorSubject<any>;
3514
- roomInfo: BMRoomInfo;
3515
- localUser: BMUser;
3516
- bmLiveVM: BMLiveVM;
3517
- isInWaitRoom: boolean;
3518
- shouldPlayAudio: boolean;
3519
- constructor({ initDevices }?: BMRoomProps);
3520
- /**
3521
- * 是否自动播放声音
3522
- * @param value
3523
- */
3524
- setAutoPlayAudio(value: boolean): void;
3525
- setMediaPermission(permission: MediaPermission): void;
3526
- /**
3527
- * 是否应该播放声音
3528
- * @param value
3529
- */
3530
- setShouldPlayAudio(value: boolean): void;
3531
- handleReprocessStreamError: () => void;
3532
- initAudioPlayer(playerContainerId: string): void;
3533
- /**
3534
- * 初始化底层会控相关
3535
- * @param options
3536
- */
3537
- setupMeetingControlOptions(options: any): void;
3538
- /**
3539
- * 收到对某个流状态的订阅和取消状态
3540
- * @private
3541
- * @param event
3542
- */
3543
- private handleSubMessage;
3544
- /**
3545
- * 设置视频分辨率, 需要在入会之前调用
3546
- * @param profile 设置视频分辨率
3547
- */
3548
- setVideoProfile(profile: VideoProfile): void;
3549
- setUserListColumns(column: number): void;
3550
- setSortType(type: number): void;
3551
- /**
3552
- * 设置声音增益的属性,回音消除 音频降噪 声音增益等
3553
- * @param audioProfile
3554
- */
3555
- setAudioProfile(audioProfile: AudioProfileInfo): void;
3556
- /**
3557
- * 设置共享屏幕用户的brtc Sig
3558
- * @param sig
3559
- */
3560
- setSig(sig: string): void;
3561
- /**
3562
- * 初始化输入设备
3563
- */
3564
- initDevices(): Promise<{
3565
- videoDevices: Device[];
3566
- audioDevices: Device[];
3567
- audioOutputDevices: Device[];
3568
- selectVideoDevice: Device | null;
3569
- selectAudioDevice: Device | null;
3570
- selectAudioOutputDevice: Device | null;
3571
- }>;
3572
- /**
3573
- * 筛选出默认选中的设备,如果没有,选择第一个
3574
- * @param devices
3575
- */
3576
- private filterDevice;
3577
- /**
3578
- * 处理用户设备变化之后的逻辑
3579
- */
3580
- private handleMediaDevicesChange;
3581
- setSelectAudioDevice(device: Device): void;
3582
- setSelectVideoDevice(device: Device): void;
3583
- setSelectSpeakerDevice(device: Device): void;
3584
- /**
3585
- * 事件相关 observes执行subscribe, 即执行observes,并添加回调
3586
- * @param observeName observe名称
3587
- * @param subscribeParam subscribe的参数
3588
- */
3589
- observe(observeName: string, subscribeParam: any): any;
3590
- /**
3591
- * 加入一个音视频通话房间(初始化房间对象)
3592
- * 进房代表开始一个音视频通话会话,这时候 SDK 会监听远端用户进房退房情况,若有远端用户进房并且发布流,本地会收到 'stream-added' 事件。
3593
- * 进房后用户可以通过 publish() 发布本地流,本地流发布成功后远端用户就会收到相应 'stream-added' 事件通知从而完成一个双向的音视频通话连接。
3594
- *
3595
- * @param {Object} props room创建所需属性
3596
- * @param {String} props.roomId 房间号
3597
- * @param {Number} props.userId 用户id
3598
- * @param {String} props.host 会议内的请求地址
3599
- * @param {String} props.getProxiesUrl 获取ws请求地址的路径
3600
- * @param {String} props.secret 房间密码
3601
- * @param {Boolean} props.create 是否执行房间的创建, 默认为自适应, 有房间则创建, 没房间则不创建
3602
- * @param {String} props.customToken 用户token
3603
- * @param {Number} props.limit 人数最大值
3604
- * @param {Number} props.brtcAppId
3605
- * @param {String} props.collection 数据上报地址
3606
- * @param {Object} props.userinfo 用户信息
3607
- * @param {Number} props.userinfo.cver 客户端版本
3608
- * @param {String} props.userinfo.nickname 用户昵称
3609
- * @param {String} props.userinfo.avatar 用户头像
3610
- * @param {String} props.userinfo.pos 客户端类型
3611
- * @param {Number} props.type //1:单一模式, 2:混合模式
3612
- * @param {String} props.name //房间名
3613
- * @example
3614
- * {
3615
- room: '111111',//房间号
3616
- host: 'https://v3test.boom.cn',//会议内的请求地址
3617
- getProxiesUrl: '/api/conference/v1/auth/token',//获取ws地址的路径
3618
- secret: '',//房间密码
3619
- type: 1,
3620
- nickname: 'zzy',
3621
- collection: '',//数据上报地址
3622
- token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJsb2dpbiIsImlhdCI6MTY1MDA5ODkwMSwibmJmIjoxNjUwMDk4OTAxLCJqdGkiOiIiLCJzdWIiOjk4NSwicHJ2IjoiODdlN2UxYmVlMjcyMmJmMzk4NjQxN2IzMzUxZTVmMjYzODQwY2ExYyIsImF0dHIiOjAsImJkIjowfQ.b-J9TnmjOzaVUJeY83tY_d1rdu_ELAWx8iH3odBN5kE',//用户token
3623
- userinfo: {
3624
- userId: 985,//用户id
3625
- pos: 'web',
3626
- nickname: 'zzy',//用户昵称
3627
- avatar: '',//用户头像
3628
- }
3629
- }
3630
- */
3631
- join(props: any): Promise<undefined>;
3632
- /**
3633
- * 离开房间
3634
- * @returns
3635
- */
3636
- leave(): Promise<void>;
3637
- /**
3638
- * 释放房间,会议结束时调用
3639
- */
3640
- releaseRoom(): Promise<void>;
3641
- /**
3642
- * 启动录制
3643
- * @param {String} opts.filename - 录制文件名
3644
- * @param {Object} opts.capture - 采集属性
3645
- * @param {Number} opts.capture.width - 宽度
3646
- * @param {Number} opts.capture.height - 高度
3647
- * @param {Number} opts.capture.fps - 帧率
3648
- * @param {Number} opts.record - 编码属性
3649
- * @param {Number} opts.record.bitrate - 编码码率
3650
- * @param {String|undefined} opts.record.format - 编码格式
3651
- * @return {boolean}
3652
- */
3653
- startRecord(opts: any): Promise<boolean | undefined>;
3654
- /**
3655
- * 停止录制
3656
- */
3657
- stopRecord(): Promise<void>;
3658
- /**
3659
- * 启用下一个录制分片
3660
- * @param filename - 下一分片文件名
3661
- */
3662
- sliceRecord(filename: string): Promise<boolean | undefined>;
3663
- close(): void;
3664
- /**
3665
- * 开关对端摄像头
3666
- * @param status true:开,false:关
3667
- * @param uid 用户id
3668
- */
3669
- setRemoteVideoEnable(status: boolean, uid: string): Promise<void>;
3670
- /**
3671
- * 开关对端麦克风(现在还不知道怎么实现, 未找到实现逻辑)
3672
- * @param status true:开,false:关
3673
- * @param uid 用户id
3674
- * @param isNotCancelRootReport 当打开麦克风时, 是否不取消音频权限申请
3675
- */
3676
- setRemoteAudioEnable(status: boolean, uid: string, isNotCancelRootReport: boolean | undefined): Promise<void>;
3677
- /**
3678
- * 开关本地摄像头
3679
- * @param status true:开,false:关
3680
- * @param videoTrack
3681
- */
3682
- setLocalVideoEnable(status: boolean, videoTrack?: MediaStreamTrack): Promise<void>;
3683
- /**
3684
- * 开关本地麦克风
3685
- * @param status true:开,false:关
3686
- */
3687
- setLocalAudioEnable(status: boolean): Promise<void>;
3688
- /**
3689
- * 开关本地麦克风
3690
- * @param status true:开,false:关
3691
- */
3692
- setLocalSpeakerEnable(status: boolean): Promise<void>;
3693
- private _attachEvents;
3694
- /**
3695
- * 创建本地流
3696
- * @param options
3697
- * @param sid
3698
- */
3699
- createSingleLocalStream(options: {
3700
- video: boolean;
3701
- audio: boolean;
3702
- videoSource?: MediaStreamTrack | undefined;
3703
- audioSource?: MediaStreamTrack | undefined;
3704
- } | undefined, sid: string): Promise<SingleLocalStream>;
3705
- /**
3706
- * 这个方法只是为了生成brtc的流,目的是在用户只打开音频的情况下,然后在打开视频的时候,去创建一个只有视频的track的流
3707
- * @param options
3708
- * @param sid
3709
- * @returns
3710
- */
3711
- createPBSingleLocalStream(options?: {
3712
- video: boolean;
3713
- audio: boolean;
3714
- }, sid?: string): Promise<LocalStream>;
3715
- /**
3716
- * 枚举视频输入设备
3717
- *
3718
- * @returns 设备列表
3719
- */
3720
- enumVideoDevices: typeof BRTC.enumVideoDevices;
3721
- /**
3722
- * 枚举音频输入设备
3723
- *
3724
- * @returns 设备列表
3725
- */
3726
- enumAudioInputDevices: typeof BRTC.enumAudioInputDevices;
3727
- /**
3728
- * 枚举音频输出设备
3729
- *
3730
- * @returns 设备列表
3731
- */
3732
- enumAudioOutputDevices: typeof BRTC.enumAudioOutputDevices;
3733
- /**
3734
- * 检查音视频权限
3735
- */
3736
- getPermissions: typeof BRTC.getPermissions;
3737
- checkSystemSupport: typeof BRTC.checkSystemSupport;
3738
- createStream: typeof BRTC.createStream;
3739
- participantNotice: boolean;
3740
- /**
3741
- * 订阅远端流
3742
- * 可通过该订阅接口指明需要订阅音频、视频或者音视频流。
3743
- *
3744
- * @param remoteStream 需要订阅的远端流对象,由 ‘participant-published’ 事件获得
3745
- * @param options 订阅选项
3746
- * @returns
3747
- */
3748
- subscribe(remoteStream: SingleRemoteStream, options?: SubscribeOptions): Promise<any>;
3749
- /**
3750
- * 取消订阅远端流
3751
- *
3752
- * @param remoteStream 需要取消订阅的远端流对象
3753
- * @return
3754
- */
3755
- unsubscribe(remoteStream: SingleRemoteStream): Promise<any>;
3756
- /**
3757
- * 发布本地音视频流。
3758
- * 该方法需要在 join() 进房后调用,一次音视频会话中只能发布一个本地流。若想发布另外一个本地流,可先通过 unpublish() 取消发布当前本地流后再发布新的本地流。
3759
- * 在发布本地流后,可通过 removeTrack()、addTrack()、 replaceTrack() 来更新本地流中的某个音频或视频流。
3760
- * 发布本地流后远端会收到 ‘participant-published’ 事件通知。
3761
- *
3762
- * @param stream 创建的本地流对象
3763
- * @return
3764
- */
3765
- publish(stream: SingleLocalStream): Promise<unknown>;
3766
- /**
3767
- * 取消发布本地流。
3768
- * 取消发布本地流后远端会收到 'participant-unpublished' 事件通知。
3769
- * 请在 leave() 退房前取消已经发布的本地流。
3770
- *
3771
- * @param stream 取消发布的本地流对象
3772
- * @return
3773
- */
3774
- unpublish(stream: SingleLocalStream): Promise<any>;
3775
- /**
3776
- * 获取userList的用户对象
3777
- * @param userId
3778
- */
3779
- getUser(userId: string): BMUser | undefined;
3780
- /**
3781
- * 改变主持人,只有主持人权限和房间创建者可以改变主持人(房间创建者可以收回主持人)
3782
- * @param userId
3783
- * @param isKeep 是否保留转移人的联席主持人身份
3784
- */
3785
- changeMaster(userId: string, isKeep?: boolean): Promise<any>;
3786
- /**
3787
- * 改变联席主持人,返回设置为联席主持人的bmuser对象
3788
- * @param userId
3789
- * @param status true:设置成联席主持人 false:取消联席主持人身份
3790
- * @param hasS
3791
- */
3792
- updateManager(userId: string, status: boolean, hasS?: boolean): Promise<any>;
3793
- /**
3794
- * 获取房间主持人id
3795
- */
3796
- getMaster(): string;
3797
- /**
3798
- * 获取房间创建者
3799
- */
3800
- getCreator(): string;
3801
- /**
3802
- * 获取房间名称
3803
- */
3804
- getName(): string;
3805
- /**
3806
- * 踢出用户
3807
- * @param {String} userId 用户ID
3808
- * @param withoutBlack 是否拉进黑名单 true 可以再进来 false 进不来
3809
- */
3810
- evictUser(userId: string, withoutBlack: boolean): Promise<any>;
3811
- /**
3812
- * 更新用户信息
3813
- * @param {String} target - 目标用户id
3814
- * @param {String} info - 用户信息或者自定义的字段
3815
- */
3816
- updateUser(target: string, info: any): Promise<void>;
3817
- /**
3818
- * 获取最新消息序列号
3819
- */
3820
- getMsgSeq(): number;
3821
- /**
3822
- * 获取限制人数
3823
- */
3824
- getLimits(): number;
3825
- /**
3826
- * 是否允许房间加入成员
3827
- * @return {Boolean}
3828
- */
3829
- getSwitch(): Boolean;
3830
- /**
3831
- * 更新token
3832
- * @param {String} token
3833
- */
3834
- /**
3835
- * 同步房间信息,在事件 room-reconnected 触发后调用
3836
- * @return {Promise}
3837
- */
3838
- syncRoom(): Promise<any>;
3839
- /**
3840
- * 更新房间状态
3841
- * @param {Object} options - 更新房间信息参数
3842
- * @param {Boolean} options.audiooff - 房间是否开启全员静音,可选
3843
- * @param {Boolean} options.selfopenaudio - 房间是否允许成员自行开启语音
3844
- * @param {Boolean} options.videooff - 房间是否开启禁用摄像头,可选
3845
- * @param {Boolean} options.msgoff - 房间是否开启全员禁言,可选
3846
- * @param {Boolean} options.switch - 房间是否开启准入开关,可选
3847
- * @param {Boolean} options.lock - 房间是否锁定
3848
- * @param {Boolean} options.secret - 不为空时表示房间密码,为以`md5(${room}.${secret})`计算所得值为参数
3849
- * @param {Boolean} options.waitroom - 开关等候室 false 关闭
3850
- * @returns {Promise}
3851
- */
3852
- update(options: any): Promise<any>;
3853
- /**
3854
- * 获取用户列表
3855
- * @return {BMUser[]}
3856
- */
3857
- getUsers(): Map<string, BMUser>;
3858
- /**
3859
- * 获取用户总数
3860
- * @deprecated
3861
- * @return {Number}
3862
- */
3863
- getTotalUsers(): Number;
3864
- /**
3865
- * 发送消息,缓存至服务器,会生成序列号
3866
- * 端上会收到 new-message 信令
3867
- * @param {String} message - 待发送消息, 必须是 JSON 格式的字符串
3868
- * @param {String|undefined} to - 如果为空,则为广播消息,不为空,则为定向到to用户的私聊消息
3869
- */
3870
- sendMessage(message: string, to: string | undefined): Promise<any>;
3871
- /**
3872
- * 发送自定义消息 可绕过 W 权限
3873
- * @param {String} message - 待发送消息
3874
- * @param {String|undefined} to - 如果为空,则为广播消息,不为空,则定向到to用户的消息
3875
- */
3876
- customMessage(message: string, to: string | undefined): Promise<any>;
3877
- /**
3878
- * 获取指定消息列表
3879
- * @param {Number} startSeq - 起始序列号
3880
- * @param {Number} endSeq - 终止序列号
3881
- * @return {Promise<>}
3882
- */
3883
- getMessages(startSeq: number, endSeq: number): Promise<any>;
3884
- /**
3885
- * 获取本地用户对象
3886
- * @return {BMUser}
3887
- */
3888
- getLocalParticipant(): BMUser;
3889
- /**
3890
- * 是否开启全员静音
3891
- * @return {Boolean}
3892
- */
3893
- getAudioOff(): boolean;
3894
- /**
3895
- * 是否允许自行开启语音
3896
- */
3897
- getSelfOpenAudio(): boolean;
3898
- /**
3899
- * 是否开启全员禁用摄像头
3900
- * @return {Boolean}
3901
- */
3902
- getVideoOff(): boolean;
3903
- /**
3904
- * 是否开启全员禁言[禁止发送消息]
3905
- * @return {Boolean}
3906
- */
3907
- getMsgOff(): boolean;
3908
- /**
3909
- * 是否锁定房间
3910
- * @return {Boolean}
3911
- */
3912
- getLock(): boolean;
3913
- /**
3914
- * 获取房间信息
3915
- * @return {Object}
3916
- */
3917
- getRoomInfo(): BMRoomInfo;
3918
- /**
3919
- * 设置全员静音
3920
- * @param {Boolean} audiooff - 是否静音
3921
- * @param {Boolean} selfopenaudio - 是否允许自行开启
3922
- * @return {Promise}
3923
- */
3924
- setAudioOff(audiooff: boolean, selfopenaudio: boolean): Promise<any>;
3925
- /**
3926
- * 更新房间状态
3927
- * @param opts
3928
- */
3929
- updateRoom(opts: any): Promise<void>;
3930
- /**
3931
- * 设置全员禁用摄像头
3932
- * @param {Boolean} videooff - 是否禁用摄像头
3933
- * @return {Promise}
3934
- */
3935
- setVideoOff(videooff: boolean): Promise<any>;
3936
- /**
3937
- * 设置全员禁言
3938
- * @param {Boolean} msgoff - 是否禁言
3939
- * @return {Promise}
3940
- */
3941
- setMsgOff(msgoff: boolean): Promise<any>;
3942
- /**
3943
- * 设置是否允许加入成员
3944
- * @param {Boolean} switch_ - 是否开启
3945
- */
3946
- setSwitch(switch_: boolean): Promise<void>;
3947
- /**
3948
- * 设置是否锁定房间
3949
- * @param {Boolean} lock - 是否锁定
3950
- */
3951
- setLock(lock: boolean): Promise<boolean>;
3952
- /**
3953
- * 发送聊天室消息
3954
- * @param msg
3955
- * @param userId
3956
- * @param lostNet
3957
- */
3958
- sendChatMessage(msg: string, userId: string | undefined, lostNet: boolean): Promise<any>;
3959
- /**
3960
- * 获取聊天室消息
3961
- */
3962
- getChatMessage(): BMMessageInfo[];
3963
- /**
3964
- * 获取聊天室历史消息
3965
- */
3966
- getHistoryMessage(): Promise<BMMessageInfo[]>;
3967
- /**
3968
- * 更新房间自定义属性状态
3969
- * @param {Object} customStats - 更新自定义房间信息参数
3970
- * @param {Boolean} customStats.layoutMode - 0/1/2, // 默认为0,0:自由模式,可随时切换;1:是使用 defaultLayout,布局内可控;2:是使用 mainLayout,主会场同内容
3971
- * @returns {Promise}
3972
- */
3973
- updateCustomStats(customStats: any): Promise<any>;
3974
- /**
3975
- * 获取自定义属性
3976
- */
3977
- getCustomStats(): any;
3978
- /**
3979
- * 获取会议时间进度,返回秒数
3980
- */
3981
- getDuration(): number;
3982
- /**
3983
- * 检测目标用户是否有主持人权限
3984
- */
3985
- checkUserHasMaster(userId: string): boolean;
3986
- changeNickName(userId: string, nickName: string): Promise<any>;
3987
- /**
3988
- * boom-web-sdk中,会存在缓存的情况
3989
- * 所以可能会出现设置已经不存在的窗口的值,去拉不存在的窗口的流
3990
- * 增加一层逻辑判断去处理该情况
3991
- */
3992
- streamModelExits(streamModel: BMStreamModel): boolean;
3993
- handleQueueTask: (streamModel: BMStreamModel, noPlayChanged?: boolean) => Promise<void>;
3994
- handleStreamTask(streamModel: BMStreamModel, noPlayChanged?: boolean): Promise<void>;
3995
- /**
3996
- * 处理拉流的逻辑
3997
- * @param streamModel
3998
- */
3999
- handlePull(streamModel: BMStreamModel): Promise<void>;
4000
- /**
4001
- * 手动订阅流的处理
4002
- */
4003
- manualSubscribeStreamModel(streamModel: BMStreamModel): void;
4004
- /**
4005
- * 取消订阅流的处理
4006
- * @param streamModel
4007
- */
4008
- handleUnsubscribe(streamModel: BMStreamModel): void;
4009
- /**
4010
- * 处理streamModel绑定 element 只处理播放逻辑
4011
- * @param sm
4012
- */
4013
- handleStreamBindElement(sm: BMStreamModel): void;
4014
- /**
4015
- * 处理streamModel 绑定另一个播放器(主要是大窗口), 只处理播放逻辑
4016
- * @param sm
4017
- */
4018
- handleStreamBindBigElement(sm: BMStreamModel): void;
4019
- handleUnsubscribeStream(streamModel: BMStreamModel): Promise<void>;
4020
- handleSubscribeSteam(streamModel: BMStreamModel): Promise<void>;
4021
- /**
4022
- * 处理大小流切换
4023
- * @param streamModel
4024
- */
4025
- handleChangeStreamType(streamModel: BMStreamModel): Promise<void>;
4026
- /**
4027
- * 处理播放相关的逻辑
4028
- * @param streamModel
4029
- * @param noPlayChanged
4030
- * @param shouldPlayBig
4031
- */
4032
- handlePlay(streamModel: BMStreamModel, noPlayChanged: boolean, shouldPlayBig?: boolean): Promise<void>;
4033
- handlePlayInBIg(streamModel: BMStreamModel): Promise<void>;
4034
- /**
4035
- * 处理brtc订阅这股流失败的处理
4036
- * @param streamModel
4037
- */
4038
- private handlePulledFailed;
4039
- /**
4040
- * 处理流出现connect-error的逻辑,本地流需要重新推流,远端流需要重新拉流
4041
- * @param event
4042
- */
4043
- private handleStreamConnectError;
4044
- republishLocalStream: lodash_es.DebouncedFunc<(stream: SingleLocalStream) => Promise<void>>;
4045
- /**
4046
- * 设置用户禁止/允许发言
4047
- * @param bmUser
4048
- * @param status
4049
- */
4050
- toggleAudienceSpeaking(bmUser: BMUser, status: boolean): void;
4051
- /**
4052
- * 更新用户的嘉宾身份 true 设置为嘉宾 false 设置为普通参会者
4053
- * S -> permission
4054
- * 普通参会者缺少S权限,嘉宾有S权限
4055
- * @param user
4056
- * @param status
4057
- */
4058
- updateUserIsGuest(user: BMUser, status: boolean): Promise<void>;
4059
- /**
4060
- * 联席主持人设置嘉宾的操作
4061
- * @param userId
4062
- */
4063
- managerChangeToGuest(userId: string): void;
4064
- /**
4065
- * 将用户移动到等候室
4066
- * @param target 用户id
4067
- * @param toWait 是否移动到等候室
4068
- * @param autoJoin 是否自动准入
4069
- */
4070
- moveUserRoom(target: string, toWait?: boolean, autoJoin?: boolean): Promise<any>;
4071
- /**
4072
- * 获取业务端是否开启参会者进入/离开直播通知
4073
- * @param status
4074
- */
4075
- getParticipantNotice(status: boolean): void;
4076
- /**
4077
- *私有化部署url地址
4078
- * @param url
4079
- */
4080
- setCustomUrl(url: string): void;
4081
- /**
4082
- * 重推本地流,在收到brtc的code 4001 之后,说明本地掉线了
4083
- * 需要重新推本地流
4084
- */
4085
- handleRePushSelf(): Promise<void>;
4086
- /**
4087
- * 重拉远端流
4088
- */
4089
- handleResetOtherStreamStatus(): void;
4090
- addUser2Queue(pullItem: PullItem): Promise<void>;
4091
- processUser: (uIds: Map<string, PullItem>) => Promise<void>;
4092
- queueProcessor: lodash_es.DebouncedFunc<(uIds: Map<string, PullItem>) => Promise<void>>;
4093
- queryBrtcStreams(uids: string[]): Promise<RemoteStream[]>;
4094
- handleAddStreams(streams: SingleRemoteStream[]): void;
4095
- getForceUser(forceId: string): Promise<void>;
4096
- getVersion(): string;
4097
- }
4098
-
4099
- export { BMRoom as default };