armcloud-rtc 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,178 @@
1
+ import type { CustomDefinition } from "./type";
2
+ declare class WebRTC {
3
+ private initDomId;
4
+ private initDomWidth;
5
+ private initDomHeight;
6
+ private videoDomId;
7
+ private remoteVideoContainerId;
8
+ private remoteVideoId;
9
+ private remoteAudioStream;
10
+ private remoteVideoStream;
11
+ private hasPushDown;
12
+ private refreshUiMsgNumber;
13
+ private getFirstFrame;
14
+ private errorInfo;
15
+ private remoteResolution;
16
+ private roomMessage;
17
+ private options;
18
+ private socket;
19
+ private retryCount;
20
+ private retryCountBackup;
21
+ private retryTime;
22
+ private remotePc;
23
+ private dataChannel;
24
+ private remoteUserId;
25
+ private inputElement;
26
+ autoRecoveryTimer: any;
27
+ runInfoTimer: any;
28
+ private touchConfig;
29
+ /**
30
+ * 安卓对应回车值
31
+ * go:前往 2
32
+ * search:搜索 3
33
+ * send:发送 4
34
+ * next:下一个 5
35
+ * done:完成 6
36
+ * previous:上一个 7
37
+ */
38
+ enterkeyhintObj: {
39
+ 2: string;
40
+ 3: string;
41
+ 4: string;
42
+ 5: string;
43
+ 6: string;
44
+ 7: string;
45
+ };
46
+ private socketParams;
47
+ callbacks: any;
48
+ audioStream: any;
49
+ audioSender: any;
50
+ logTime: any;
51
+ constructor(viewId: string, params: any, callbacks: any, logTime: any);
52
+ setLogTime(key: any): void;
53
+ sendEventReport(operation: any): void;
54
+ getMsgTemplate(touchType: string, content: object): string;
55
+ /** 获取应用信息 */
56
+ getEquipmentInfo(type: "app" | "attr"): void;
57
+ /** 应用卸载 */
58
+ appUnInstall(pkgNames: Array<string>): void;
59
+ addReportInfo(info: any): void;
60
+ /**
61
+ * AES 解密方法
62
+ * @param {*} encryptData 加密数据
63
+ * @param {*} key 秘钥
64
+ * @returns 解密后数据
65
+ */
66
+ decryptAES(encryptData: string, key: string): any;
67
+ pauseAudioMedia(): void;
68
+ captureAndSendAudio(): Promise<void>;
69
+ /** 初始化ws */
70
+ initWebSocket(): void;
71
+ startPlay(): void;
72
+ /** 加入房间 */
73
+ start(): void;
74
+ /** 发送offer */
75
+ sendOffer(): Promise<void>;
76
+ /** 接收webrtc offer */
77
+ receiveOffer(offer: any): Promise<void>;
78
+ /** 接收webrtc answer */
79
+ receiveAnswer(answer: any): Promise<void>;
80
+ /** 发送webrtc answer */
81
+ sendAnswer(): Promise<void>;
82
+ isFirstFrameSuccess(): boolean;
83
+ /**
84
+ * 控制轨道声音
85
+ * @param streams
86
+ * @param status
87
+ */
88
+ controlTrackVoice(streams: any, type?: string, status?: boolean): void;
89
+ /** 第一帧加载完成 */
90
+ renderedFirstFrame(): void;
91
+ /** 等待视频首帧画面被渲染 */
92
+ waitForFirstFrameRendered(video: any): void;
93
+ /** 销毁引擎 */
94
+ destroyEngine(): void;
95
+ stop(describe: any): void;
96
+ /** 定期获取统计信息的函数 */
97
+ getStats(): Promise<void>;
98
+ /** 浏览器是否支持 */
99
+ isSupported(): boolean;
100
+ /** 触发无操作回收回调函数 */
101
+ triggerRecoveryTimeCallback(): void;
102
+ /** 发送消息 */
103
+ sendUserMessage(message: string): Promise<void>;
104
+ /** 监听广播消息 */
105
+ onRoomMessageReceived(): void;
106
+ /**
107
+ * 将字符串发送到云手机的粘贴板中
108
+ * @param inputStr 需要发送的字符串
109
+ */
110
+ sendInputClipper(inputStr: string): Promise<void>;
111
+ /**
112
+ * 当云手机处于输入状态时,将字符串直接发送到云手机,完成输入
113
+ * @param inputStr 需要发送的字符串
114
+ */
115
+ sendInputString(inputStr: string): Promise<void>;
116
+ /**
117
+ * 发送摇一摇信息
118
+ */
119
+ sendShakeInfo(time: any): void;
120
+ /** 清晰度切换 */
121
+ setStreamConfig(config: CustomDefinition): void;
122
+ handleSendData(options: any): string;
123
+ /**
124
+ * 暂停接收来自远端的媒体流
125
+ * 该方法仅暂停远端流的接收,并不影响远端流的采集和发送。
126
+ * @param mediaType 1 只控制音频; 2 只控制视频; 3 同时控制音频和视频
127
+ */
128
+ pauseAllSubscribedStream(mediaType?: number): void;
129
+ /**
130
+ * 恢复接收来自远端的媒体流
131
+ * 该方法仅恢复远端流的接收,并不影响远端流的采集和发送。
132
+ * @param mediaType 1 只控制音频; 2 只控制视频; 3 同时控制音频和视频
133
+ */
134
+ resumeAllSubscribedStream(mediaType?: number): void;
135
+ /** 截图-保存到本地 */
136
+ saveScreenShotToLocal(): Promise<unknown>;
137
+ /** 截图-保存到云机 */
138
+ saveScreenShotToRemote(): void;
139
+ /**
140
+ * 手动横竖屏
141
+ * 对标百度API
142
+ */
143
+ setPhoneRotation(type: number): void;
144
+ rotateScreen(degree: number): void;
145
+ /** 手动定位 */
146
+ setGPS(longitude: number, latitude: number): void;
147
+ /** 云机/本地键盘切换(false-云机键盘,true-本地键盘) */
148
+ setKeyboardStyle(keyBoardType: string): void;
149
+ /** 查询输入状态 */
150
+ onCheckInputState(): Promise<void>;
151
+ /** 添加input输入框 */
152
+ addInputElement(): void;
153
+ /**
154
+ * 设置无操作回收时间
155
+ * @param second 秒 默认300s,最大7200s
156
+ */
157
+ setAutoRecycleTime(second: number): void;
158
+ /** 获取无操作回收时间 */
159
+ getAutoRecycleTime(): any;
160
+ /** 底部栏操作按键 */
161
+ sendCommand(command: string): void;
162
+ /** 返回按键事件 */
163
+ goAppUpPage(): void;
164
+ /** 主页按键事件 */
165
+ goAppHome(): void;
166
+ /** 菜单按键事件 */
167
+ goAppMenu(): void;
168
+ /** 音量增加按键事件 */
169
+ increaseVolume(): void;
170
+ /** 音量减少按键事件 */
171
+ decreaseVolume(): void;
172
+ /**
173
+ * 是否接收粘贴板内容回调
174
+ * @param flag true:接收 false:不接收
175
+ */
176
+ saveCloudClipboard(flag: boolean): void;
177
+ }
178
+ export default WebRTC;
@@ -0,0 +1,88 @@
1
+ /**
2
+ * 火山云RTC初始化参数
3
+ * @param appId
4
+ * @param roomCode rtc房间code
5
+ * @param roomToken rtc房间token
6
+ * @param clientId 远程云机id
7
+ * @param userId 用户id
8
+ * @param expirationTime 无操作回收时间 秒
9
+ * @param selfAdaption 渲染模式 1:自适应屏幕 2:填充屏幕
10
+ * @param mediaType 媒体流类型,1:只控制音频 2:只控制视频 3:同时控制音频和视频
11
+ * @param rotateType 旋转屏幕 type 1:横屏;2:竖屏
12
+ * @param definition 设置清晰度 1:标清 2:高清 3:超清
13
+ * @param useLocalKeyboard 是否启用本地输入法
14
+ * @param allowCopyRemoteToLocal 允许云机复制到真机
15
+ */
16
+ export interface CloudCoreConfig {
17
+ appId: string;
18
+ roomCode: string;
19
+ roomToken: string;
20
+ clientId: string;
21
+ userId: string;
22
+ expirationTime?: number;
23
+ selfAdaption?: string | number;
24
+ mediaType?: string | number;
25
+ rotateType?: number;
26
+ definition?: string | number;
27
+ useLocalKeyboard?: boolean;
28
+ allowCopyRemoteToLocal?: boolean;
29
+ }
30
+ /**
31
+ * 手指触摸配置参数
32
+ * @action 0 按下 1 抬起 2 触摸中
33
+ * @widthPixels 画布宽度
34
+ * @heightPixels 画布高度
35
+ * @pointCount 操作手指数量
36
+ * @touchType touchType: 'gesture'写死
37
+ * @properties 同时操控手指数组 手指id: 自定义;toolType: 1写死
38
+ * @coords 操作坐标 pressure: 1.0, size: 1.0,写死 x: x坐标;y:y坐标
39
+ */
40
+ interface PropertiesInfo {
41
+ id: number;
42
+ toolType: number;
43
+ }
44
+ interface CoordsInfo {
45
+ mPackedAxisValues?: any;
46
+ pressure: number;
47
+ size: number;
48
+ x: number;
49
+ y: number;
50
+ }
51
+ export interface TouchConfig {
52
+ action: number | string;
53
+ widthPixels: number;
54
+ heightPixels: number;
55
+ pointCount: number;
56
+ touchType: string;
57
+ properties: PropertiesInfo[];
58
+ coords: CoordsInfo[];
59
+ }
60
+ /**
61
+ * 自定义清晰度
62
+ * @definitionId 分辨率 7:144*256;8:216*384;9:288*512;10:360*640;11:480*848;12:540*960;13:600*1024;14:480*1280;15:720*1280;16:720*1920;17:1080*1920;18:1440*1920;19:1600*2560;20:2880*1080
63
+ * @framerateId 帧率 1:20fps;2:25fps;3:30fps;4:60fps;5:1fps;6:5fps;7:10fps;8:15fps;9:2fps
64
+ * @bitrateId 码率 1:1Mbps;2:1.5Mbps;3:2Mbps;4:2.5Mbps;5:3Mbps;6:3.5Mbps;7:4Mbps;8:5Mbps;9:6Mbps;10:8Mbps;11:10Mbps;12:12Mbps;13:200kbps;14:400kbps;15:600kbps
65
+ */
66
+ export interface CustomDefinition {
67
+ definitionId: number | null;
68
+ framerateId: number | null;
69
+ bitrateId: number | null;
70
+ }
71
+ /**
72
+ * 定位信息
73
+ * @accuracy 精度
74
+ * @altitude 海拔高度
75
+ * @latitude 纬度
76
+ * @longitude 经度
77
+ * @speed 速度
78
+ * @time 时间
79
+ */
80
+ export interface PositionOption {
81
+ accuracy?: number | null;
82
+ altitude?: number | null;
83
+ latitude: number | null;
84
+ longitude: number | null;
85
+ speed?: number | null;
86
+ time?: number | null;
87
+ }
88
+ export {};
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "armcloud-rtc",
3
+ "version": "1.0.0",
4
+ "main": "dist/index.cjs.js",
5
+ "module": "./dist/index.es.js",
6
+ "types": "dist/types/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "directories": {
11
+ "lib": "lib"
12
+ },
13
+ "scripts": {
14
+ "build": "rollup --config rollup.config.ts --configPlugin typescript"
15
+ },
16
+ "author": "ask",
17
+ "license": "ISC",
18
+ "description": "",
19
+ "dependencies": {
20
+ "@volcengine/rtc": "^4.61.2",
21
+ "axios": "^1.7.3",
22
+ "crypto-js": "^4.2.0",
23
+ "webrtc-adapter": "^9.0.1"
24
+ },
25
+ "devDependencies": {
26
+ "@babel/core": "^7.25.2",
27
+ "@babel/preset-env": "^7.25.3",
28
+ "@rollup/plugin-babel": "^6.0.4",
29
+ "@rollup/plugin-commonjs": "^26.0.1",
30
+ "@rollup/plugin-json": "^6.1.0",
31
+ "@rollup/plugin-node-resolve": "^15.2.3",
32
+ "@rollup/plugin-terser": "^0.4.4",
33
+ "@rollup/plugin-typescript": "^11.1.6",
34
+ "tslib": "^2.6.3"
35
+ }
36
+ }