larksr_websdk 3.2.1 → 3.2.6

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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # LarkSR WebClient 接入 SDK
2
2
 
3
- SDK 适用于自定义 LarkSR 云渲 Web 客户端的二次开发,自定义 UI 和操作逻辑等。有较高的灵活性。
3
+ SDK 适用于自定义 LarkSR 云渲 Web 客户端或者自定义 VR 监控画面客户端的二次开发,自定义 UI 和操作逻辑等。有较高的灵活性。
4
4
 
5
5
  对于不需要二次开发,或者简单修改,可以参照使用 iframe 的接入方式,将标准 Web 客户端网页嵌入到系统中去。
6
6
 
@@ -12,6 +12,15 @@ SDK 适用于自定义 LarkSR 云渲 Web 客户端的二次开发,自定义 UI
12
12
 
13
13
  [即刻体验](https://www.pingxingyun.com/experience/experience.html)
14
14
 
15
+ SDK 功能包括:
16
+
17
+ * 处理后台请求和接口
18
+ * 云渲染视频拉取显示
19
+ * 输入方式包括鼠标,键盘,手柄,触摸, 并提供输入接口和控制内部输入方式开启接口
20
+ * 显示和缩放模式,默认以浏览器视口为容器大小, 视频窗口保留宽高比并且不会拉伸完全显示。并可配置
21
+ * 处理全屏模式,并可配置
22
+ * 自动处理横屏模式,手机端强制横屏模式,并可配置
23
+
15
24
  ## 快速接入
16
25
 
17
26
  ### 安装
@@ -30,22 +39,32 @@ npm i larksr_websdk
30
39
 
31
40
  ### 使用
32
41
 
42
+ 使用前应准备好
43
+
44
+ 1. Lark 服务器前台可访问的地址, 如:http://222.128.6.137:8181/
45
+ 2. SDK 授权码,联系 business@pingxingyun.com 获取,注意是 SDK 本身的授权码,不是服务器上的授权
46
+ 3. 系统中获取的应用 ID,如 http://222.128.6.137:8181/ 系统下的 879408743551336448
47
+
33
48
  ```javascript
34
49
  var client;
35
50
  // 直接调用进入应用接口创建实例,自动配置连接云端资源
36
- larksr_websdk.LarkSR.CreateLarkSRClientFromeAPI({
37
- // 设置挂在显示的元素
51
+ larksr_websdk.CreateLarkSRClientFromeAPI({
52
+ // 设置挂载显示的元素
53
+ // 注意*不要*设置为 document.documentElement
38
54
  rootElement: document.getElementById('container'),
39
- // 服务器地址
40
- serverAddress: "http://222.128.6.137:8181/",
55
+ // 服务器地址,实际使用中填写您的服务器地址
56
+ // 如:http://222.128.6.137:8181/
57
+ serverAddress: "Lark 服务器前台地址",
41
58
  // 授权码
42
59
  authCode: '您的 SDK 授权码',
43
- loadingBgUrl: 'https://home-obs.pingxingyun.com/homePage_4_0/bg.jpg',
60
+ // 测试载入背景图
61
+ // loadingBgUrl: 'https://home-obs.pingxingyun.com/homePage_4_0/bg.jpg',
44
62
  }, {
45
63
  // 要使用的云端资源的应用 ID,从后云雀后台接口获取
46
64
  // 参考查询应用一栏文档
47
65
  // https://www.pingxingyun.com/online/api3_2.html?id=476
48
- appliId: "879408743551336448"
66
+ // 如 222.128.6.137:8181 系统下的 879408743551336448 应用
67
+ appliId: "应用ID"
49
68
  })
50
69
  .then((res) => {
51
70
  console.log('enter appli success', res);
@@ -60,18 +79,16 @@ larksr_websdk.LarkSR.CreateLarkSRClientFromeAPI({
60
79
  });
61
80
  ```
62
81
 
63
- SDK 加载成功之后,导出接口在全局对象 larksr_websdk 下。
82
+ SDK 加载成功之后,非模块模式下,SDK 挂载为全局对象 larksr_websdk
64
83
 
65
84
  连接云端资源,管理生命周期和事件等主要在 LarkSR 对象下。通过调用 CreateLarkSRClientFromeAPI 配置后台请求参数,创建 LarkSR 对象实例。
66
85
 
67
86
  > 默认情况下自动连接云端资源,将容器设置为浏览器视口高度,并配置网页 100% 宽高显示。SDK 内部自动处理按键输入输出。
68
87
 
69
- > SDK 只包含loading,内部不包含其他 UI。主要目的时二次开发云渲染客户端自定义 UI 使用。
70
-
88
+ > SDK 只包含 loading,内部不包含其他 UI。主要目的时二次开发云渲染客户端自定义 UI 使用。
71
89
 
72
90
  ## 参考 DEMO 和文档
73
91
 
74
- 更多使用方式和 API 文档可以参考下面项目和 .d.ts 中的注释
92
+ 更多使用方式和 API 文档可以参考下面项目和 doc 文件夹下的详细文档
75
93
 
76
94
  [Demos](https://github.com/pingxingyun/lark_sr_websdk_demos)
77
-
package/dist/dist.zip ADDED
Binary file
@@ -0,0 +1,108 @@
1
+ # LarkSR 对象参数
2
+
3
+ 创建 LarkSR 对象参数如下
4
+
5
+ ```typescript
6
+ /**
7
+ * 构造 LarkSR 参数
8
+ */
9
+ interface ILarkSRConfig {
10
+ /**
11
+ * 必选项 根元素。组件会挂载到跟元素下面
12
+ * 注意*不要*设置为 document.documentElement
13
+ * 默认模式下会通过旋转根元素实现强制横屏模式。
14
+ * @see handelRootElementSize
15
+ * @see scaleMode
16
+ */
17
+ rootElement: HTMLElement;
18
+ /**
19
+ * 必选项 服务器地址. LarkServer 前台访问的地址
20
+ * 如: http://192.168.0.55:8181/
21
+ */
22
+ serverAddress: string;
23
+ /**
24
+ * 可选项。 sdk 授权码。如果不在此处填,则必须在后续的实例里调用 initSDKAuthCode 初始化。
25
+ */
26
+ authCode?: string;
27
+ /**
28
+ * 可选项,授权是否成功
29
+ */
30
+ authCodeCallback?: (isSuccess: boolean, e: any) => void;
31
+ /**
32
+ * 可选项,载入时的背景图片 url
33
+ */
34
+ loadingBgUrl?: string;
35
+ /**
36
+ * 可选项,是否同步传入根的组件的大小样式。
37
+ * 默认开启,将跟组件大小设置为浏览器视口大小
38
+ * 如果关闭,内部组件将按照传入的根元素大小去显示
39
+ * 注意,当关闭时不会自动填充根元素,如果根元素高度为 0 将显示不出来。
40
+ * 注意,当关闭时 mobileForceLandscape 将失去作用。
41
+ */
42
+ handelRootElementSize?: boolean;
43
+ /**
44
+ * 是否在sdk内部监听鼠标键盘等输入事件
45
+ * 如果关闭需要手动发送输入事件
46
+ * 注意关闭时全屏模式和锁定模式将失效,需要在sdk外部触发
47
+ * @see fullScreenMode
48
+ */
49
+ handlInput?: boolean;
50
+ /**
51
+ * 当视频播自动放失败时是否尝试静音播放,静音播放时将抛出事件
52
+ * 静音播放当用户操作屏幕时将尝试播放声音
53
+ */
54
+ mutePlayWhenFiled?: boolean;
55
+ /**
56
+ * 可选项,是否是 vr 监控类型。
57
+ */
58
+ isMonitor?: boolean;
59
+ /**
60
+ * 可选项,码率
61
+ */
62
+ codeRate?: number;
63
+ /**
64
+ * 可选项,帧率
65
+ */
66
+ frameRate?: number;
67
+ /**
68
+ * 可选项,音频帧率
69
+ */
70
+ audioCodeRate?: number;
71
+ /**
72
+ * 可选项,日志级别。默认为 warn
73
+ */
74
+ logLevel?: 'info' | 'warn' | 'error';
75
+ /**
76
+ * 可选项,载入超时时间. 默认为 60s。超过该事件停止载入
77
+ */
78
+ loadingTimeout?: number;
79
+ /**
80
+ * 可选项,是否自动同步剪贴板数据
81
+ */
82
+ syncLocalToCloudClipboard?: boolean;
83
+ /**
84
+ * 可选项,优选选择的视频编码格式
85
+ */
86
+ perferDecoder?: 'auto' | 'vp8' | 'vp9' | 'h264' | 'av1x';
87
+ /**
88
+ * 可选项,视频在容器中的缩放模式
89
+ *
90
+ */
91
+ scaleMode?: ScaleMode;
92
+ /**
93
+ * 全屏模式
94
+ * 0 -》 用户手动触发
95
+ * 1 -》 首次点击进入触发
96
+ * 2 -》 每次点击触发
97
+ */
98
+ fullScreenMode?: number;
99
+ /**
100
+ * 可选项,手机端的全屏模式,值同 fullScreenMode
101
+ */
102
+ mobileFullScreenMode?: number;
103
+ /**
104
+ * 可选项,手机端是否强制横屏
105
+ */
106
+ mobileForceLandscape?: boolean;
107
+ }
108
+ ```
@@ -0,0 +1,129 @@
1
+ # LarkSR 事件系统
2
+
3
+ 在 LarkSR 整个生命周期内会抛出多种事件通知。使用方法类似:
4
+
5
+ ```javascript
6
+ var larksr;
7
+
8
+ // create code
9
+ ...
10
+
11
+ // 监听连接成功事件
12
+ larksr.on('connect', function(e) {
13
+ console.log("LarkSRClientEvent CONNECT", e);
14
+ });
15
+ ```
16
+
17
+ ## 完整事件定义
18
+
19
+ ```javascript
20
+ /**
21
+ * LarkSR 实例完整事件定义
22
+ */
23
+ declare const enum LarkSRClientEvent {
24
+ /**
25
+ * 连接渲染服务器成功 .
26
+ */
27
+ CONNECT = "connect",
28
+ /**
29
+ * 登录成功时触发,会返回当前用户id .
30
+ */
31
+ LOGIN_SUCCESS = "loginsuccess",
32
+ /**
33
+ * 无操作超时时触发 .
34
+ */
35
+ NO_OPERATION_TIMEOUT = "operatetimeout",
36
+ /**
37
+ * 连接关闭.
38
+ */
39
+ CLOSE = "close",
40
+ /**
41
+ * 云端应用关闭,但连接未关闭
42
+ */
43
+ APP_CLOSE = "appclose",
44
+ /**
45
+ * 获取到远端视频流 .
46
+ */
47
+ GOT_REMOTE_STREAM = "gotremotesteam",
48
+ /**
49
+ * 视频加载成功,等待播放 .
50
+ */
51
+ MEDIA_LOADED = "meidaloaded",
52
+ /**
53
+ * 视频自动播放成功 .
54
+ */
55
+ MEDIA_PLAY_SUCCESS = "mediaplaysuccess",
56
+ /**
57
+ * 视频自动播放失败 .
58
+ */
59
+ MEDIA_PLAY_FAILED = "mediaplayfailed",
60
+ /**
61
+ * 自动播放声音失败,以静音模式播放 .
62
+ */
63
+ MEDIA_PLAY_MUTE = "meidaplaymute",
64
+ /**
65
+ * 云渲染连接状态改变 .
66
+ */
67
+ APPSTATE_CHANGE = "appstatechange",
68
+ /**
69
+ * 云端应用大小变化 .
70
+ */
71
+ APP_RESIZE = "appresize",
72
+ /**
73
+ * 云端应用鼠标模式变化时触发 .
74
+ */
75
+ APP_MOUSE_MODE = "appmousemode",
76
+ /**
77
+ * 云端应用鼠标状态变化 .
78
+ */
79
+ APP_CURSOR_MODE = "appcursormode",
80
+ /**
81
+ * 玩家列表 .
82
+ */
83
+ PLAYER_LIST = "playerlist",
84
+ /**
85
+ * 视频连接状态
86
+ */
87
+ PEERSTATUS_REPORT = "peerstatusreport",
88
+ /**
89
+ * 云端应用请求输入文字 .
90
+ */
91
+ APP_REQUEST_INPUT = "apprequestinput",
92
+ /**
93
+ * 云端应用请求手柄震动
94
+ */
95
+ APP_REQUEST_GAMEPAD_OUPUT = "apprequestgamepadoutput",
96
+ /**
97
+ * 截图成功.
98
+ */
99
+ CAPTURE_FRAME = "captureframe",
100
+ /**
101
+ * 数据通道打开 .
102
+ */
103
+ DATACHANNEL_OPEN = "datachannelopen",
104
+ /**
105
+ * 数据通道关闭 .
106
+ */
107
+ DATACHANNEL_CLOSE = "datachannelclose",
108
+ /**
109
+ * 数据通达收到文字消息 .
110
+ */
111
+ DATACHANNEL_TEXT = "datachanneltext",
112
+ /**
113
+ * 数据通道收到字节消息 .
114
+ */
115
+ DATACHANNEL_BINARY = "datachannelbinary",
116
+ /**
117
+ * 更详细的事件状态,主要用于向iframe外部抛出 .
118
+ */
119
+ LarkEvent = "larkevent",
120
+ /**
121
+ * 发生错误时抛出
122
+ */
123
+ ERROR = "error",
124
+ /**
125
+ * 一般信息提示
126
+ */
127
+ INFO = "info"
128
+ }
129
+ ```
@@ -0,0 +1,65 @@
1
+ # LarkSR 对象成员方法
2
+
3
+ LarkSR 对象成员方法主要分为以下三类
4
+
5
+ ## 控制流程方法,包括启动,关闭,重启,注册授权码等。
6
+
7
+ ```typescript
8
+ /**
9
+ *
10
+ * @param id sdk id 初始化sdkid
11
+ * @returns
12
+ */
13
+ initSDKAuthCode(id: string): Promise<void>;
14
+ /**
15
+ * 开始云渲染流程
16
+ * @returns 是否成功。主要校验授权码是否成功
17
+ */
18
+ start(): Promise<void>;
19
+ /**
20
+ * 重新开始云渲染流程
21
+ */
22
+ restart(): void;
23
+ /**
24
+ * 重新启动云端应用
25
+ */
26
+ restartApp(): void;
27
+ ```
28
+
29
+ ## 输入输出相关方法,包括鼠标,键盘,手柄,触摸
30
+
31
+ ```typescript
32
+ /**
33
+ * 切换当前操作者
34
+ * @param uid 用户id
35
+ */
36
+ changeOperater(uid: number): void;
37
+ /**
38
+ * 向云端应用发送文字。当云端应用出现输入框时,可以将本地文本填写进去.
39
+ * @param text 文字
40
+ */
41
+ inputText(text: string): void;
42
+ /**
43
+ * 操作相关事件
44
+ * 所有事件坐标相对于云端应用,不相对于网页
45
+ * @param input 操作指令
46
+ */
47
+ sendInput(input: CloudLark.IClientInput): void;
48
+ ```
49
+
50
+ ## 数据通道扩展,向云端应用数据通道发送数据
51
+
52
+ ```typescript
53
+ /**
54
+ * 发送文字消息给数据通道
55
+ * 注意 云端应用要继承数据通道功能
56
+ * @param text 文字
57
+ */
58
+ sendTextToDataChannel(text: string): void;
59
+ /**
60
+ * 发送字节消息给数据通道
61
+ * 注意 云端应用要继承数据通道功能
62
+ * @param binary 字节消息
63
+ */
64
+ sendBinaryToDataChannel(binary: Uint8Array): void;
65
+ ```
@@ -0,0 +1,65 @@
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
+ 主要使用 LarkSR 对象实例,所有基本操作和事件通过该实例实现。创建该对象一般通过 `CreateLarkSRClientFromeAPI` 和 `CreateLarkSRClientFromeUrl` 函数创建 LarkSR 实例。
22
+
23
+ ```typescript
24
+ /**
25
+ * 通过调用后台接口获取云端应用参数
26
+ * @param config 传入 config @see ILarkSRConfig
27
+ * @param params 进入应用接口参数。appliId 为必填项
28
+ * @returns Promise 创建 larksr client 是否成功
29
+ */
30
+ export declare function CreateLarkSRClientFromeAPI(config: ILarkSRConfig, params: {
31
+ appliId: string;
32
+ playerMode?: number;
33
+ userType?: number;
34
+ roomCode?: string;
35
+ taskId?: string;
36
+ }): Promise<LarkSR>;
37
+
38
+ /**
39
+ * 通过从url参数中获取云端应用相关参数
40
+ * @param config 传入 config @see ILarkSRConfig
41
+ * @returns Promise 创建 larksr client 是否成功
42
+ */
43
+ export declare function CreateLarkSRClientFromeUrl(config: ILarkSRConfig): Promise<LarkSR>;
44
+ ```
45
+
46
+ ## 手动创建
47
+
48
+ > 注意,如果手动创建该类,要清楚参数的意义,一般只有调试等特殊情况才手动创建该类
49
+
50
+ ```typescript
51
+ /**
52
+ * LarkSR 客户端。所有操作和事件通过该类传递
53
+ * 注意,如果手动创建该类,要清楚参数的意义,一般只有调试等特殊情况才手动创建该类
54
+ * @see CreateLarkSRClientFromeAPI, CreateLarkSRClientFromeUrl
55
+ * @param config 本地配置,如果有 IAppliParams 相同的配置项,优先级最高
56
+ * @param params 云端应用参数等,通过后台接口或者url参数获取。
57
+ */
58
+ constructor(config: ILarkSRConfig, params: IAppliParams);
59
+ ```
60
+
61
+ ## 文档目录
62
+
63
+ ### [参数配置](./config.md)
64
+ ### [LarkSR 对象方法](./functons.md)
65
+ ### [LarkSR 事件](./functons.md)
@@ -0,0 +1,148 @@
1
+ # LarkSR 对象成员变量
2
+
3
+ LarkSR 对象成员变量,注意以下划线开头的变量为内部使用私有变量或只读成员变量,不建议修改直接使用。
4
+
5
+ > 以下代码中 larksr 为创建好的 LarkSR 对象实例。省略创建过程。
6
+
7
+ ```javascript
8
+ let larksr;
9
+
10
+ ...// create code.
11
+ ```
12
+
13
+ ## 视频组件
14
+
15
+ 1. `videoComponent` 视频组件
16
+
17
+ ```javascript
18
+ // 获取播放的 <video /> 视频元素
19
+ larksr.videoComponent.getVideo();
20
+ // 播放视频,async 方法播放失败抛出异常
21
+ larksr.videoComponent.playVideo();
22
+ // 停止视频播放
23
+ larksr.videoComponent.stopVideo();
24
+ // 播放视频声音,取消静音播放
25
+ larksr.videoComponent.sountPlayout();
26
+ // 截取一帧,返回 base64,并抛出截图成功事件
27
+ larksr.videoComponent.captrueFrame(data);
28
+ ```
29
+
30
+ 2. `videoElement` html `video` 视频元素本身
31
+
32
+ ```javascript
33
+ larksr.videoElement;
34
+ ```
35
+
36
+ ## 配置参数
37
+
38
+ ```javascript
39
+ // `config` IAppliParams传入的 ILarkSRConfig 对象
40
+ larksr.config;
41
+ // `params` 构造函数中传入的 IAppliParams 对象
42
+ larksr.params;
43
+ ```
44
+
45
+ ## 用户模式
46
+
47
+ ```javascript
48
+ // `playerModeType` 当前的玩家模式;
49
+ larksr.playerModeType;
50
+ // `userType` 当前用户类型;
51
+ larksr.userType;
52
+ // 当前是否是交互模式,交互默认即可以操作的模式
53
+ larksr.isInteractiveMode;
54
+ // 是否是观看者模式
55
+ larksr.isObMode;
56
+ ```
57
+
58
+ ## 当前 app 的状态
59
+
60
+ ```javascript
61
+ larksr.appState;
62
+ ```
63
+
64
+ 具体状态值如下:
65
+
66
+ ```javascript
67
+ export enum APP_STATE {
68
+ BEFORE_CREATE = 0,
69
+ INITED,
70
+ WEBSOCKET_CHANNEL_OPEN,
71
+ LOGIN_SUCCESS,
72
+ RTC_CONNECTED,
73
+ MEDIA_LOADED,
74
+ MEDIA_PLAED,
75
+ RTC_RETRY,
76
+ APP_RETRY,
77
+ BEFORE_DESTORY,
78
+ WEBSOCKET_CLOSED,
79
+ RTC_CLOSED,
80
+ DESTROYED,
81
+ }
82
+ ```
83
+
84
+ ```javascript
85
+ // 云端画面是否准备好,准备好后才可以发送输入事件
86
+ larksr.remoteScreenReady
87
+ ```
88
+
89
+ ## 当前的屏幕状态
90
+
91
+ ```javascript
92
+ // 通知视口改变或者需要重新计算显示属性
93
+ larksr.screenState.resize();
94
+ // 当前云端 APP 的大小
95
+ larksr.screenState.appSize;
96
+ // 当前云端 APP 的鼠标状态
97
+ larksr.screenState.appMouseMode;
98
+ // 当前渲染容器的大小
99
+ larksr.screenState.viewPort;
100
+ // 强制横屏模式
101
+ larksr.screenState.screenOrientation;
102
+ // 缩放模式
103
+ larksr.screenState.scaleMode;
104
+ // 是否全屏状态
105
+ larksr.screenState.isFullScreen;
106
+ // 是否锁定鼠标状态
107
+ larksr.screenState.isLockMouse;
108
+ // 云端应用的鼠标样式
109
+ larksr.screenState.cursorStyle;
110
+ // 初始化鼠标模式
111
+ larksr.screenState.initCursorMode;
112
+ // 是否是手机模式
113
+ larksr.screenState.isMobile;
114
+ // 是否渲染本地鼠标
115
+ larksr.screenState.isLocalRenderMouse;
116
+ // 是否锁定鼠标
117
+ larksr.screenState.isLockMosue;
118
+ ```
119
+
120
+ ## 操作类实例
121
+
122
+ ```javascript
123
+ // 开始监听,默认情况下自动开始
124
+ larksr.op.startListening();
125
+ // 结束监听输入事件.
126
+ larksr.op.stopListenling();
127
+ // 开启或关闭鼠标输入事件
128
+ larksr.op.setMouseEnable(enable: boolean);
129
+ // 开启或关闭键盘输入事件
130
+ larksr.op.setKeyboardEnable(enable: boolean);
131
+ // 开启或关闭手柄输入事件
132
+ larksr.op.setGamepadEnable(enable: boolean);
133
+ // 开启或关闭触摸屏幕输入事件
134
+ larksr.op.setTouchEnable(enable: boolean);
135
+ ```
136
+
137
+ ## 全屏锁屏
138
+
139
+ ```javascript
140
+ // 进入全屏模式
141
+ larksr.fullScreen.launchFullScreen();
142
+ // 退出全屏模式
143
+ larksr.fullScreen.exitFullscreen();
144
+ // 锁定鼠标
145
+ larksr.lockPointer.lockPointer();
146
+ // 释放鼠标
147
+ larksr.lockPointer.exitPointerLock();
148
+ ```