larksr_websdk 3.2.340 → 3.2.342

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 (74) hide show
  1. package/dist/doc/config.md +222 -0
  2. package/dist/doc/event_codes.md +286 -0
  3. package/dist/doc/events.md +229 -0
  4. package/dist/doc/functions.md +603 -0
  5. package/dist/doc/index.md +83 -0
  6. package/dist/doc/member_variables.md +407 -0
  7. package/dist/doc/sdkid_encryption.md +40 -0
  8. package/dist/doc/update.md +447 -0
  9. package/dist/larksr-web-sdk.min.js +1 -1
  10. package/dist/types/api.d.ts +132 -0
  11. package/dist/types/appli_params.d.ts +298 -0
  12. package/dist/types/common/cmd.d.ts +28 -0
  13. package/dist/types/common/constant.d.ts +4 -0
  14. package/dist/types/common/interface.d.ts +30 -0
  15. package/dist/types/config.d.ts +59 -0
  16. package/dist/types/event/event_base.d.ts +11 -0
  17. package/dist/types/event/iframe_poster.d.ts +9 -0
  18. package/dist/types/index.d.ts +23 -0
  19. package/dist/types/lark/Worker.d.ts +0 -0
  20. package/dist/types/lark/application.d.ts +191 -0
  21. package/dist/types/lark/canvas_render.d.ts +28 -0
  22. package/dist/types/lark/custom.d.ts +7 -0
  23. package/dist/types/lark/ice_candiadate_parser.d.ts +24 -0
  24. package/dist/types/lark/lark_event_type.d.ts +114 -0
  25. package/dist/types/lark/media_share_interface.d.ts +46 -0
  26. package/dist/types/lark/message.d.ts +22 -0
  27. package/dist/types/lark/peer_connection.d.ts +191 -0
  28. package/dist/types/lark/peer_connection_media_share.d.ts +101 -0
  29. package/dist/types/lark/recoder.d.ts +55 -0
  30. package/dist/types/lark/sdp_util.d.ts +36 -0
  31. package/dist/types/lark/test_pixel_streaming.d.ts +54 -0
  32. package/dist/types/lark/websocket_channel.d.ts +57 -0
  33. package/dist/types/lark/websocket_proxy.d.ts +56 -0
  34. package/dist/types/larksr.d.ts +1231 -0
  35. package/dist/types/localization/base.d.ts +8 -0
  36. package/dist/types/localization/gesture_ins.d.ts +4 -0
  37. package/dist/types/localization/language.d.ts +6 -0
  38. package/dist/types/localization/loader.d.ts +14 -0
  39. package/dist/types/localization/message.d.ts +81 -0
  40. package/dist/types/localization/ui.d.ts +60 -0
  41. package/dist/types/operation/gamepad_handler.d.ts +67 -0
  42. package/dist/types/operation/gesture.d.ts +72 -0
  43. package/dist/types/operation/gesture_handler.d.ts +53 -0
  44. package/dist/types/operation/handler_base.d.ts +8 -0
  45. package/dist/types/operation/keyboard_handler.d.ts +21 -0
  46. package/dist/types/operation/keymap.d.ts +24 -0
  47. package/dist/types/operation/letter_keymap.d.ts +8 -0
  48. package/dist/types/operation/mouse_handler.d.ts +42 -0
  49. package/dist/types/operation/num_keymap.d.ts +12 -0
  50. package/dist/types/operation/operation.d.ts +97 -0
  51. package/dist/types/operation/pixel_streaming_input.d.ts +82 -0
  52. package/dist/types/operation/touch_handler.d.ts +11 -0
  53. package/dist/types/operation/utils.d.ts +18 -0
  54. package/dist/types/protobuf/cloudlark.d.ts +8221 -0
  55. package/dist/types/screen_state.d.ts +120 -0
  56. package/dist/types/utils/browser_type.d.ts +37 -0
  57. package/dist/types/utils/capabilities.d.ts +54 -0
  58. package/dist/types/utils/full_screen.d.ts +25 -0
  59. package/dist/types/utils/ios-inner-height.d.ts +4 -0
  60. package/dist/types/utils/lock_pointer.d.ts +23 -0
  61. package/dist/types/utils/log.d.ts +25 -0
  62. package/dist/types/utils/scale_mode.d.ts +26 -0
  63. package/dist/types/utils/unit.d.ts +148 -0
  64. package/package.json +1 -1
  65. package/types/lark/application.d.ts +5 -3
  66. package/types/lark/canvas_render.d.ts +28 -0
  67. package/types/lark/custom.d.ts +7 -0
  68. package/types/lark/media_share_interface.d.ts +2 -2
  69. package/types/lark/peer_connection.d.ts +5 -2
  70. package/types/lark/peer_connection_media_share.d.ts +3 -2
  71. package/types/larksr.d.ts +7 -2
  72. package/types/protobuf/cloudlark.d.ts +8221 -0
  73. package/types/screen_state.d.ts +2 -0
  74. package/types/utils/ios-inner-height.d.ts +4 -0
@@ -0,0 +1,603 @@
1
+ # LarkSR 对象成员方法
2
+
3
+ LarkSR 对象成员方法主要分为以下三类
4
+
5
+ ## 控制流程方法,包括启动,关闭,重启,注册授权码等。
6
+
7
+ ```typescript
8
+ /**
9
+ * 单独设置服务器地址,作用同 config 中的 serverAddress 字段
10
+ * 在进入应用之前都可以更新。
11
+ * @param serverAddress 服务器地址,如 http://192.168.0.55:8181/
12
+ */
13
+ updateServerAddress(serverAddress: string): void;
14
+ /**
15
+ *
16
+ * @param id sdk id 初始化sdkid
17
+ * @returns
18
+ */
19
+ initSDKAuthCode(id: string): Promise<void>;
20
+ /**
21
+ * 使用平行云托管平台时,使用 connectWithPxyHost 连接云端应用
22
+ * 托管平台 https://www.pingxingyun.com/console/#/
23
+ * @param params 同 connect 方法
24
+ * @return 同 connect 方法
25
+ */
26
+ connectWithPxyHost(params: {
27
+ appliId: string;
28
+ playerMode?: number;
29
+ userType?: number;
30
+ roomCode?: string;
31
+ taskId?: string;
32
+ regionId?: string;
33
+ groupId?: string;
34
+ }): Promise<void>;
35
+ /**
36
+ * 连接云端渲染资源
37
+ * @params appID 云端资源的 ID
38
+ * @returns Promise 调用接口并校验授权通过返回成功并自动开始连接
39
+ * Promise 返回的错误对象:
40
+ * {
41
+ // type 0 渲染资源不足导致的错误,1 其他错误, 可用 type == 0 判断是否是渲染资源不足类型的错误
42
+ type: 0,
43
+
44
+ // 渲染资源不足时的事件类型,其他情况可能不返回,比如网络错误
45
+ eventType?:LarkSRClientEvent.RESOURCE_NOT_ENOUGH,
46
+
47
+ // 服务端返回的错误码,服务端请求正确返回时存在。需要注意渲染资源不足类型的错误码。
48
+ // 可用 type == 0 判断是否是渲染资源不足类型的错误,再用 code 进行细节处理,或者只用 type == 0 进行处理。
49
+ // 813=当前应用的运行数量已达到最大值:{0},请稍后再试
50
+ // 814=同一appKey下的应用运行数量达到最大值:{0},请稍后再试
51
+ // 815=应用运行数量已达到最大授权并发数量,请稍后再试
52
+ // 816=VR应用运行数量已达到最大授权并发数量,请稍后再试
53
+ // 817=渲染资源不足,请稍后再试
54
+ // 820=暂无活跃的GPU节点
55
+ // 821=节点资源使用率已达到设置的阈值
56
+ // 823=单节点运行应用数量已达到单节点最大授权并发数量,请稍后再试
57
+ code?: 817,
58
+
59
+ // 错误信息
60
+ message:? "",
61
+ }
62
+ *
63
+ */
64
+ connect(params: {
65
+ appliId: string;
66
+ playerMode?: number;
67
+ userType?: number;
68
+ roomCode?: string;
69
+ taskId?: string;
70
+ clientMac?: string;
71
+ groupId?: string;
72
+ regionId?: string;
73
+ targetServerIp?: string;
74
+ appKey?: string;
75
+ timestamp?: string;
76
+ signature?: string;
77
+ } | any): Promise<void>;
78
+ /**
79
+ * 重新开始云渲染流程
80
+ */
81
+ restart(): void;
82
+ /**
83
+ * 重新启动云端应用
84
+ */
85
+ restartApp(): void;
86
+ /**
87
+ * 主动关闭连接
88
+ */
89
+ close(): void;
90
+ ```
91
+
92
+ ## 输入输出相关方法,包括鼠标,键盘,手柄,触摸
93
+
94
+ ```typescript
95
+ /**
96
+ * 切换当前操作者
97
+ * @param uid 用户id
98
+ */
99
+ changeOperater(uid: number): void;
100
+ /**
101
+ * 向云端应用发送文字。当云端应用出现输入框时,可以将本地文本填写进去.
102
+ * @param text 文字
103
+ */
104
+ inputText(text: string): void;
105
+ /**
106
+ * 操作相关事件
107
+ * 所有事件坐标相对于云端应用,不相对于网页
108
+ * CloudLark.IClientInput 是所有操作指令接口对象的合集
109
+ * 可以单独使用下面 moseMove 等接口
110
+ * @param input 操作指令
111
+ */
112
+ sendInput(input: CloudLark.IClientInput): void;
113
+ /**
114
+ * 向云端发送鼠标移动事件
115
+ * 事件坐标相对于云端应用,不相对于网页
116
+ * 计算方式可以参考 https://github.com/pingxingyun/lark_sr_websdk_demos 例子中 v_cursor.vue getVMouseTouchPosition 方法
117
+ * 原理是通过 LarkSR 对象的成员 screenState.operateScale 获取相对的缩放,
118
+ * 本地坐标 X larksr.screenState.operateScale.scaleX / scaleY 即可得到相对云端的坐标
119
+ *
120
+ * @param PosX 相对云端鼠标 X 点坐标
121
+ * @param PosY 相对云端鼠标 Y 点坐标
122
+ * @param DeltaX 相对云端鼠标 X 轴移动距离
123
+ * @param DeltaY 相对云端鼠标 X 轴移动距离
124
+ */
125
+ mouseMove(PosX: number, PosY: number, DeltaX: number, DeltaY: number): void;
126
+ /**
127
+ * 向云端发送鼠标移动事件
128
+ * 事件坐标相对于云端应用,不相对于网页
129
+ * 计算方式可以参考 https://github.com/pingxingyun/lark_sr_websdk_demos 例子中 v_cursor.vue getVMouseTouchPosition 方法
130
+ * 原理是通过 LarkSR 对象的成员 screenState.operateScale 获取相对的缩放,
131
+ * 本地坐标 X larksr.screenState.operateScale.scaleX / scaleY 即可得到相对云端的坐标
132
+ *
133
+ * @param PosX 相对云端鼠标 X 点坐标
134
+ * @param PosY 相对云端鼠标 Y 点坐标
135
+ * @param DeltaX 相对云端鼠标 X 轴移动距离
136
+ * @param DeltaY 相对云端鼠标 X 轴移动距离
137
+ */
138
+ moseMove(PosX: number, PosY: number, DeltaX: number, DeltaY: number): void;
139
+ /**
140
+ * 向云端发送鼠标单击事件
141
+ * X Y 坐标计算方式同 mouseMove
142
+ *
143
+ * @param PosX 相对云端鼠标 X 点坐标
144
+ * @param PosY 相对云端鼠标 Y 点坐标
145
+ * @param key LEFT = 0,RIGHT = 1, MIDDLE = 2
146
+ */
147
+ mouseTap(PosX: number, PosY: number, key: CloudLark.MouseKey): void;
148
+ /**
149
+ * 向云端发送鼠标按下事件
150
+ * X Y 坐标计算方式同 mouseMove
151
+ *
152
+ * @param PosX 相对云端鼠标 X 点坐标
153
+ * @param PosY 相对云端鼠标 Y 点坐标
154
+ * @param key LEFT = 0,RIGHT = 1, MIDDLE = 2
155
+ */
156
+ mouseDown(PosX: number, PosY: number, key: CloudLark.MouseKey): void;
157
+ /**
158
+ * 向云端发送鼠标抬起事件
159
+ * X Y 坐标计算方式同 mouseMove
160
+ *
161
+ * @param PosX 相对云端鼠标 X 点坐标
162
+ * @param PosY 相对云端鼠标 Y 点坐标
163
+ * @param key LEFT = 0,RIGHT = 1, MIDDLE = 2
164
+ */
165
+ mouseUp(PosX: number, PosY: number, key: CloudLark.MouseKey): void;
166
+ /**
167
+ * 向云端发送鼠标滚轮事件
168
+ * X Y 坐标计算方式同 mouseMove
169
+ *
170
+ * @param PosX 相对云端鼠标 X 点坐标
171
+ * @param PosY 相对云端鼠标 Y 点坐标
172
+ * @param Delata 120/-120 鼠标滚轮滚动的数值
173
+ */
174
+ mouseWheel(PosX: number, PosY: number, Delata: number): void;
175
+ /**
176
+ * 向云端发送键盘按键按下事件
177
+ * @param key KeyboardEvent.code 字段,具体内容参考 Chrome https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code/code_values
178
+ * @param isRepeat KeyboardEvent.repeat 字段,参考https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat
179
+ * @returns 是否发送成功,如果key参数传递错误可能发送失败
180
+ */
181
+ keyDown(key: string, isRepeat: boolean): void;
182
+ /**
183
+ * 向云端发送键盘按键抬起事件
184
+ * @param key KeyboardEvent.code 字段,具体内容参考 Chrome https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code/code_values
185
+ * @returns 是否发送成功,如果key参数传递错误可能发送失败
186
+ */
187
+ keyUp(key: string): void;
188
+ /**
189
+ * 手柄接口消息按照 windows xbox 360 手柄标准定义,即包含 xbox 360 手柄的功能,如按钮,摇杆,扳机键。windows 上最多支持4个手柄,
190
+ * 当前版本服务端只处理1个手柄,后续会放开多个手柄的支持。接口中发送的按键值为对应的 windows 中定义的按键值。
191
+ * 向云端发送手柄按钮按下事件
192
+ * 參考 js 中获取手柄事件,参考 https://developer.mozilla.org/zh-CN/docs/Web/API/Gamepad_API/Using_the_Gamepad_API
193
+ * @param userIndex 手柄的索引,硬件设备索引 0-3. 第一个连接的手柄为0,第二个为1,以此类推。
194
+ * @param button 按鍵 @see https://docs.microsoft.com/en-us/windows/win32/api/xinput/ns-xinput-xinput_gamepad
195
+ * export const enum XINPUT_BUTTONS {
196
+ * XINPUT_GAMEPAD_DPAD_UP = 0x0001,
197
+ * XINPUT_GAMEPAD_DPAD_DOWN = 0x0002,
198
+ * XINPUT_GAMEPAD_DPAD_LEFT = 0x0004,
199
+ * XINPUT_GAMEPAD_DPAD_RIGHT = 0x0008,
200
+ * XINPUT_GAMEPAD_START = 0x0010,
201
+ * XINPUT_GAMEPAD_BACK = 0x0020,
202
+ * XINPUT_GAMEPAD_LEFT_THUMB = 0x0040,
203
+ * XINPUT_GAMEPAD_RIGHT_THUMB = 0x0080,
204
+ * XINPUT_GAMEPAD_LEFT_SHOULDER = 0x0100,
205
+ * XINPUT_GAMEPAD_RIGHT_SHOULDER = 0x0200,
206
+ * XINPUT_GAMEPAD_A = 0x1000,
207
+ * XINPUT_GAMEPAD_B = 0x2000,
208
+ * XINPUT_GAMEPAD_X = 0x4000,
209
+ * XINPUT_GAMEPAD_Y = 0x8000,
210
+ * XINPUT_UNKNOWN = -1,
211
+ * }
212
+ * @param isRepeat 是否重复按下
213
+ * @returns
214
+ */
215
+ gamepadButtonDown(userIndex: number, button: number, isRepeat: boolean): void;
216
+ /**
217
+ * 向云端发送手柄按钮抬起事件
218
+ * 參考 https://developer.mozilla.org/zh-CN/docs/Web/API/Gamepad_API/Using_the_Gamepad_API
219
+ * @param userIndex 手柄的索引
220
+ * @param button 按鍵
221
+ * @returns
222
+ */
223
+ gamepadButtonUp(userIndex: number, button: number): void;
224
+ /**
225
+ * 向云端发送手柄按trigger键事件
226
+ * 參考 https://developer.mozilla.org/zh-CN/docs/Web/API/Gamepad_API/Using_the_Gamepad_API
227
+ * @param userIndex 手柄的索引
228
+ * @param isleft 是否是左trigger
229
+ * @param value trigger的值 扳机键的值 0-255
230
+ * @returns
231
+ */
232
+ gamepadTrigger(userIndex: number, isleft: boolean, value: number): void;
233
+ /**
234
+ * 向云端发送手柄按摇杆的值,即 axes 值
235
+ * win MAX
236
+ * |
237
+ * MIN-------------MAX
238
+ * |
239
+ * MIN
240
+ * js 中获取硬件手柄參考 https://developer.mozilla.org/zh-CN/docs/Web/API/Gamepad_API/Using_the_Gamepad_API
241
+ * @param userIndex 手柄的索引
242
+ * @param thumblx 左摇杆 X 值,-32767 到 32767
243
+ * @param thumbly 左摇杆 Y 值,-32767 到 32767
244
+ * @param thumbrx 右摇杆 X 值,-32767 到 32767
245
+ * @param thumbry 右摇杆 Y 值,-32767 到 32767
246
+ * @returns
247
+ */
248
+ joystick(userIndex: number, thumblx: number, thumbly: number, thumbrx: number, thumbry: number): void;
249
+ /**
250
+ * 向云端发送触摸按下事件
251
+ * 坐标位置与 mouseMove 相同,相对与云端的鼠标移动位置
252
+ * @param id 手指的id
253
+ * @param x 相对云端的x轴坐标
254
+ * @param y 相对云端的y轴坐标
255
+ * @returns
256
+ */
257
+ touchDown(id: number, x: number, y: number): void;
258
+ /**
259
+ * 向云端发送触摸移动事件
260
+ * 坐标位置与 mouseMove 相同,相对与云端的鼠标移动位置
261
+ * @param id 手指的id
262
+ * @param x 相对云端的x轴坐标
263
+ * @param y 相对云端的y轴坐标
264
+ * @returns
265
+ */
266
+ touchMove(id: number, x: number, y: number): void;
267
+ /**
268
+ * 向云端发送触摸抬起事件
269
+ * 坐标位置与 mouseMove 相同,相对与云端的鼠标移动位置
270
+ * @param id 手指的id
271
+ * @param x 相对云端的x轴坐标
272
+ * @param y 相对云端的y轴坐标
273
+ * @returns
274
+ */
275
+ touchUp(id: number, x: number, y: number): void;
276
+ /**
277
+ * 字符串转换为输入的鼠标按键值
278
+ * @param button 'left' | 'mid' | 'right'
279
+ * @returns LEFT = 0,RIGHT = 1,MIDDLE = 2
280
+ */
281
+ getMouseButtonType(button: 'left' | 'mid' | 'right'): CloudLark.MouseKey;
282
+ ```
283
+
284
+ ## 数据通道扩展,向云端应用数据通道发送数据
285
+
286
+ ```typescript
287
+ /**
288
+ * 发送文字消息给数据通道
289
+ * 注意 云端应用要继承数据通道功能
290
+ * > V3.2.314 版本对应服务器版本和数据通道版本为 3.2.5.1 及以上
291
+ * @param text 文字
292
+ */
293
+ sendTextToDataChannel(text: string): void;
294
+ /**
295
+ * 发送字节消息给数据通道
296
+ * 注意 云端应用要继承数据通道功能
297
+ * @param binary 字节消息
298
+ */
299
+ sendBinaryToDataChannel(binary: Uint8Array): void;
300
+ ```
301
+
302
+ ## 智能语音相关接口
303
+
304
+ ```typescript
305
+ /**
306
+ * 开始智能语音对话文本输入
307
+ * 应在只能语音为开始状态下开始输入
308
+ * @param text 输入的文本
309
+ * @returns 返回对话 ID
310
+ */
311
+ aiDmTextInput(text: string): number;
312
+ /**
313
+ * 开始智能语音对话语音输入,自动请求录音权限
314
+ * 应在只能语音为开始状态下开始输入
315
+ * @returns 成功返回对话id,失败返回异常
316
+ */
317
+ startAiDmVoiceInput(): Promise<number>;
318
+ /**
319
+ * 停止智能语音输入,通知语音引擎当前用户输入对话结束
320
+ * @returns 返回当前对话的id
321
+ */
322
+ stopAiDmVoiceInput(): number;
323
+ ```
324
+
325
+ LarkSR 添加如下事件来获取智能语音服务状态:
326
+
327
+ ```typescript
328
+ larksr.on('aivoicestatus', (e) => {
329
+ // 智能语音服务状态
330
+ });
331
+
332
+ larksr.on('aivoiceasrresult', (e) => {
333
+ // 智能语音转文字识别结果
334
+ });
335
+
336
+ larksr.on('aivoicedmresult', (e) => {
337
+ // 智能语音对话结果
338
+ });
339
+ ```
340
+
341
+ ## 麦克风输入接口
342
+
343
+ 客户端打开后云端应用可直接通过读取声卡上的麦克风接收到音频。
344
+
345
+ > 该功能匹配的服务端版本最低为 V3.2.51
346
+ > 使用该功能要注意在后台开启语音输入功能
347
+ > 注意要在连接成功之后打开媒体设备。即 `mediaPlayed` 之后调用才有效
348
+
349
+ ```typescript
350
+ /**
351
+ * 打开一个音频设备,要注意浏览器限制在 https 或者 localhost 下才能打开音频
352
+ * @param deviceId 音频设备id,如果不传将打开默认设备。@see getConnectedAudioinputDevices
353
+ * @returns
354
+ */
355
+ openAudio(deviceId?: string);
356
+ /**
357
+ * 关闭当前的音频设备
358
+ * @returns
359
+ */
360
+ closeAudio(): boolean | undefined;
361
+ /**
362
+ * 暂停发送音频
363
+ * @returns
364
+ */
365
+ pauseAudioSending(): any;
366
+ /**
367
+ * 恢复发送音频
368
+ * @returns
369
+ */
370
+ resumeAudioSending(): any;
371
+ /**
372
+ * 返回已连接的音频设备列表,设备列表中的设备的 deviceId 可用来打开某个音频设备
373
+ * @returns
374
+ */
375
+ getConnectedAudioinputDevices(): Promise<MediaDeviceInfo[] | undefined>;
376
+ /**
377
+ * 设置当前已开启的音频track是否启用状态
378
+ * @param enable 是否启用
379
+ * @returns
380
+ */
381
+ setAudioEnable(enable: boolean): void | undefined;
382
+
383
+ /**
384
+ * 请求浏览器打开媒体并且打开上传到服务器通道。
385
+ * 要注意的是在服务器连接成功之后请求打开
386
+ * @param constraints 参考 navigator.mediaDevices.getUserMedia(constraints)
387
+ * @param reset 是否重制媒体通道。true 的情况下重制整个 peerconnection
388
+ * @returns 打开的通道的绑定信息。管理媒体通道如关闭暂停或恢复使用。
389
+ */
390
+ openUserMedia(constraints?: MediaStreamConstraints, reset?: boolean): Promise<any>;
391
+ ```
392
+
393
+ larksr 配置项自动打开麦克风配置,在`new LarkSR({ ... 此处省略其他配置 ... audioInputAutoStart: true})` 时传入,
394
+
395
+ > 手动传入的 `audioInputAutoStart` 优先级高于后台配置
396
+
397
+ ```javascript
398
+ /**
399
+ * 当启用音频输入功能,是否自动连入音频设备。
400
+ * 默认关闭。
401
+ * 需要注意默认打开的是系统中默认的音频设备。
402
+ */
403
+ audioInputAutoStart?: boolean;
404
+ ```
405
+
406
+ 获取当前打开音频设备的状态, 如 `larksr.audioPaused`
407
+
408
+ ```javascript
409
+ /**
410
+ * 当前打开的音频设备 ID,如果打开时没指定为空
411
+ */
412
+ get audioDeviceId(): string | null | undefined;
413
+ /**
414
+ * 当前打开音频的track对象,未打开状态为空
415
+ */
416
+ get audioTrack(): MediaStreamTrack | null | undefined;
417
+ /**
418
+ * 音频通道是否暂停
419
+ */
420
+ get audioPaused(): boolean | undefined;
421
+ ```
422
+
423
+ ## 视频输入接口
424
+
425
+ 客户端打开后云端应用可直接通过读取服务端的摄像头读取视频数据。
426
+
427
+ > 该功能匹配的服务端版本最低为 V3.2.61
428
+ > 使用该功能要注意在后台应用管理中开启视频输入功能
429
+ > 注意要在连接成功之后打开媒体设备。即 `mediaPlayed` 之后调用才有效
430
+
431
+ ```typescript
432
+ /**
433
+ * 打开一个视频设备,要注意浏览器限制在 https 或者 localhost 下才能打开视频
434
+ * @param audio boolean 是否同时开启音频
435
+ * @param cameraId 视频设备id,如果不传将打开默认设备。@see getConnectedVideoinputDevices
436
+ * @param width 限制打开设备的宽
437
+ * @param height 限制打开设备的高
438
+ * @returns Promise
439
+ */
440
+ openVideo(audio?: boolean, cameraId?: string, width?: number, height?: number): Promise<any>;
441
+ /**
442
+ * 打开摄像头设备
443
+ * @param cameraId 摄像头设备ID,@see getConnectedVideoinputDevices
444
+ * @param minWidth 限制打开设备的宽
445
+ * @param minHeight 限制打开设备的高
446
+ * @returns @see openUserMedia
447
+ */
448
+ openCamera(cameraId: string, minWidth?: number, minHeight?: number): Promise<any>;
449
+ /**
450
+ * 打开默认媒体设备,要注意浏览器限制在 https 或者 localhost 下
451
+ * 如果需要指定特殊的媒体设备请单独使用 @see openAudio @see openVideo
452
+ * @param video 是否包含视频
453
+ * @param audio 是否包含音频
454
+ * @returns Promise
455
+ */
456
+ openDefaultMedia(video?: boolean, audio?: boolean)>;
457
+ /**
458
+ * 返回已连接的视频设备
459
+ * @returns Promise<MediaDeviceInfo[]>
460
+ */
461
+ getConnectedVideoinputDevices();
462
+ /**
463
+ * 设置当前已开启的视频track是否启用状态
464
+ * @param enable 是否启用
465
+ * @returns void
466
+ */
467
+ setVideoEnable(enable: boolean);
468
+
469
+ /**
470
+ * 暂停发送视频
471
+ * @returns
472
+ */
473
+ pauseVideoSending(): any;
474
+ /**
475
+ * 恢复发送视频
476
+ * @returns
477
+ */
478
+ resumeVideoSending(): any;
479
+
480
+ /**
481
+ * 关闭当前已打开的视频设备
482
+ * @returns
483
+ */
484
+ closeVideo(): any;
485
+ /**
486
+ * 关闭当前已打开的共享设备如共享的标签页等
487
+ * @returns
488
+ */
489
+ closeShare(): any;
490
+ /**
491
+ * 请求浏览器打开媒体并且打开上传到服务器通道。
492
+ * 要注意的是在服务器连接成功之后请求打开
493
+ * @param constraints 参考 navigator.mediaDevices.getUserMedia(constraints)
494
+ * @param reset 是否重制媒体通道。true 的情况下重制整个 peerconnection
495
+ * @returns 打开的通道的绑定信息。管理媒体通道如关闭暂停或恢复使用。
496
+ */
497
+ openUserMedia(constraints?: MediaStreamConstraints, reset?: boolean): Promise<any>;
498
+ ```
499
+
500
+ larksr 配置项自动打开视频输入配置,在`new LarkSR({ ... 此处省略其他配置 ... videoInputAutoStart: true})` 时传入
501
+
502
+ > 手动传入的 `videoInputAutoStart` 优先级高于后台配置
503
+
504
+ ```javascript
505
+ /**
506
+ * 当启用视频输入功能,是否自动连入视频设备。
507
+ * 默认关闭。
508
+ * 需要注意默认打开的是系统中默认的视频设备。
509
+ */
510
+ videoInputAutoStart?: boolean;
511
+ ```
512
+
513
+ 获取当前打开视频设备的状态,如 `larksr.videoPaused`
514
+
515
+ ```javascript
516
+ /**
517
+ * 当前打开视频设备 ID,如果打开时没指定特设备id为空
518
+ */
519
+ get videoDeviceId(): string | null | undefined;
520
+ /**
521
+ * 当前打开视频track对象,未打开状态为空
522
+ */
523
+ get videoTrack(): MediaStreamTrack | null | undefined;
524
+ /**
525
+ * 视频通道是否暂停
526
+ */
527
+ get videoPaused(): boolean | undefined;
528
+ ```
529
+
530
+ ## 云端直播推流功能
531
+
532
+ > 服务端 3.2.7.0 添加, 要注意使用云端直播推流功能要在后台应用管理中开启该功能
533
+
534
+ ```javascript
535
+ /**
536
+ * 启动云端推流功能
537
+ * @param params {
538
+ * // rtmp push url 必须填
539
+ * path: "",
540
+ * //rtmp push key
541
+ * key: "",
542
+ * // 推流的宽
543
+ * width: 1280,
544
+ * // 推流的高
545
+ * height: 720,
546
+ * framerate: 30,
547
+ * // kbps
548
+ * bitrate: 1024 * 2,
549
+ * // 是否支持断线重连
550
+ * reconnect: true,
551
+ * //最大重连次数
552
+ * reconnectRetries: 3,
553
+ * //是否串流麦克风(语音输入支持的情况)
554
+ * voice: audioInput,
555
+ * }
556
+ * @returns Promise
557
+ */
558
+ StartCloudLiveStreaming(params: CloudLark.IRtmp_Start): Promise<void> | undefined;
559
+ /**
560
+ * 关闭云端推流功能
561
+ * @returns
562
+ */
563
+ StopLiveStreaming(): void | undefined;
564
+ ```
565
+
566
+ 云端直播的相关状态参考 `RTMP_STREAM_STATE` 和 `RTMP_STREAM_ERROR` 两个事件
567
+
568
+ ```javascript
569
+ /**
570
+ * 服务端 3.2.7.0 添加
571
+ * rtmp 直播推流状态
572
+ */
573
+ RTMP_STREAM_STATE = "rtmpstreamstate",
574
+ /**
575
+ * 服务端 3.2.7.0 添加
576
+ * rtmp 直播推流出错
577
+ */
578
+ RTMP_STREAM_ERROR = "rtmpstreamerror"
579
+ ```
580
+
581
+ ## 其他
582
+
583
+ ```typescript
584
+ /**
585
+ * 采集一帧图像
586
+ * @params data: any 抛出采集事件时抛出的附加data,比如采集的时间戳
587
+ * @params option: { width: number, height: number } 截图的宽高,如果未设置则使用云端应用窗口的宽高
588
+ * @return { data: any, base64: base64string } 返回传入的 data 和采集的 base64 字符串
589
+ */
590
+ captrueFrame(data: any, option?: { width: number; height: number;})
591
+
592
+ /**
593
+ * 设置是否强制横屏显示内容.
594
+ * handelRootElementSize 必须设置为 true 才有作用。
595
+ * 要注意强制横屏模式下网页的坐标系xy和视觉上相反,如果通过外部输入 input 事件。要注意调整
596
+ * @param force 是否强制横屏
597
+ */
598
+ setMobileForceLandScape(force: boolean): void;
599
+ /**
600
+ * 从DOM种删除渲染组件,注意删除渲染组件之后将无法再次进入应用,所有状态将失效,不可恢复,只能重新new LarkSR
601
+ */
602
+ destroy(): void;
603
+ ```
@@ -0,0 +1,83 @@
1
+ #
2
+
3
+ ## 安装
4
+
5
+ 1. npm 方式
6
+
7
+ ```cmd
8
+ npm i larksr_websdk
9
+ ```
10
+
11
+ 2. 直接引入
12
+
13
+ ```html
14
+ <script src="larksr-web-sdk.min.js"></script>
15
+ ```
16
+
17
+ > 直接引入模式下 SDK 挂载为全局对象 larksr_websdk。
18
+
19
+ ## 使用
20
+
21
+ ### 注意
22
+
23
+ > V3.2.30 开始仅支持服务端 [V3.2.3.1](https://www.pingxingyun.com/devCenter.html) 以上版本。
24
+ > [老版本 SDK Demo 下载](https://github.com/pingxingyun/lark_sr_websdk_demos/releases/tag/V3.2.10)
25
+ > V3.2.314 版本对应服务器版本和数据通道版本为 3.2.5.1 及以上
26
+
27
+ ## 创建 LarkSR 实例
28
+
29
+ ```typescript
30
+ /**
31
+ * LarkSR 客户端。所有操作和事件通过该类传递
32
+ * @param config 本地配置, 优先级最高
33
+ */
34
+ constructor(config: ILarkSRConfig);
35
+ ```
36
+
37
+ example:
38
+
39
+ ```js
40
+ var client = new LarkSR({
41
+ // 设置挂载显示的元素
42
+ // 注意*不要*设置为 document.documentElement
43
+ rootElement: document.getElementById('container'),
44
+ // 服务器地址,实际使用中填写您的服务器地址
45
+ // 如:http://222.128.6.137:8181/
46
+ // 当使用平行云托管服务时服务器地址自动分配,可留空。
47
+ // larksr.connectWithPxyHost 进入应用
48
+ serverAddress: "Lark 服务器前台地址",
49
+ // SDK ID 也可在 initSDKAuthCode 设置
50
+ authCode: '您的 SDK ID',
51
+ // 测试载入背景图
52
+ // loadingBgUrl: 'https://home-obs.pingxingyun.com/homePage_4_0/bg.jpg',
53
+ });
54
+
55
+ // start connect;
56
+ // 使用平行云托管服务时,用 connectWithPxyHost 进入应用并自动分配服务器.
57
+ client.connect({
58
+ // 要使用的云端资源的应用 ID,从后云雀后台接口获取
59
+ // 参考查询应用一栏文档
60
+ // https://www.pingxingyun.com/online/api3_2.html?id=476
61
+ // 如 222.128.6.137:8181 系统下的 879408743551336448 应用
62
+ appliId: "应用ID"
63
+ })
64
+ .then(() => {
65
+ console.log('enter success');
66
+ })
67
+ .catch((e) => {
68
+ console.error(e);
69
+ });
70
+ // ...
71
+ // 主动关闭并清理资源
72
+ // client.close();
73
+ ```
74
+
75
+ ## 文档目录
76
+
77
+ ### [参数配置](./config.md)
78
+ ### [LarkSR 对象方法](./functions.md)
79
+ ### [LarkSR 事件](./events.md)
80
+ ### [LarkSR 事件码](./event_codes.md)
81
+ ### [LarkSR 对象成员](./member_variables.md)
82
+ ### [SDK ID 加密](./sdkid_encryption.md)
83
+ ### [SDK 更新](./update.md)