类型:class
兼容性检测,判断浏览器是否支持从云机拉流。
类型
() => Promise<boolean>
示例
await vePhoneSDK.isSupported()
实例化方法,通过 new vePhoneSDK(config) 调用
类型
constructor(options: CloudCoreConfig)
参数
示例
let config = {"userId":"your_user_id",...}; let vePlayer = new vePhoneSDK(config);
启动云手机服务
启动云手机,需要在初始化成功之后调用。请确认云手机业务 ID 等信息正确。
类型
(options: CoreStartConfig) => Promise<{ width: number; height: number; }>
参数
返回值
类型:Promise<{ width: number; height: number; }>
示例
vePhone.start(options).then((info) => { console.log('start successfully',info) }).catch((error) => { console.error('start failed', error) });
参考
停止云手机服务
停止从云机拉流,并且退出,但不会回收客户端本地资源。
类型
() => Promise<void>
返回值
类型:Promise<void>
销毁实例
销毁客户端实例,释放资源。
类型
() => Promise<void>
返回值
类型:Promise<void>
暂停拉取音视频流
() => void
恢复已经暂停的音视频流
() => void
自动播放失败的情况下,提示和引导用户与页面进行交互来恢复播放
类型
(reload?: boolean) => Promise<void>
参数
booleanfalse返回值
类型:Promise<void>
示例
当检测到自动播放失败的报错后,在页面上动态显示一个按钮让用户点击:
vePlayer.start(options).then(() => { console.log('start successfully') }).catch((e) => { if (e.errorCode === 10008) { // 弹出引导用户点击继续的 UI 界面提示 showBtnUI(); } }); btn.onclick = () => { vePlayer.playByInteraction(); };
清晰度切换
在云手机运行过程中,通过指定清晰度档位 ID,切换视频流的清晰度。
类型
(id: number) => any
参数
number返回值
类型:any
客户端发送消息到云机实例。
类型
({ message, needAck, timeout, destUserId, }: { message: ArrayBuffer | string; needAck?: boolean; timeout?: number; destUserId?: string;}) => Promise<number>
参数
{ message: ArrayBuffer | string; needAck?: boolean | undefined; timeout?: number | undefined; destUserId?: string | undefined; }成员
名称 | 类型 | 描述 |
|---|---|---|
message |
| 消息内容 |
needAck |
| 发送的消息否需要应答 |
timeout |
| 应答消息的超时时间,单位 ms |
destUserId |
| 云机应用初始化 veMessageChannelClient 时填入的目标用户 ID(如果 Message Channel 连接通道超过1条,必须指定 destUserId) |
返回值
类型:Promise<number> 分别返回发送「成功/失败」的状态
示例
vePhone.sendMessage({ message: 'message', needAck: true, timeout: 5 * 1000, destUserId: 'appname' })
发送客户端本地剪贴板消息到云机。
类型
(text: string) => Promise<void>
参数
string返回值
类型:Promise<void>
启动云机应用
类型
(id: string) => void
参数
string云机应用切换到前台
类型
(packageName?: string) => Promise<void>
参数
string | undefined返回值
类型:Promise<void>
关闭云机应用
类型
(id: string) => void
参数
string获取已切换到后台的云机应用列表
类型
() => Promise<string[]>
返回值
类型:Promise<string[]>
示例
vePlayer.getRemoteBackgroundAppList();
关闭/开启播放声音
在调用 start() 接口之后才可调用。
类型
(mute: boolean) => void
参数
boolean媒体流静音开关
媒体流静音开关,在调用 start() 接口之后才可调用。
类型
(mute: boolean) => void
参数
boolean检查媒体流静音状态
类型
() => boolean
返回值
类型:boolean
媒体流视频开关
类型
(mute: boolean) => void
参数
boolean检查媒体流视频播放状态
检查当前视频流是否处在停止播放状态。
类型
() => boolean
返回值
类型:boolean
获取客户端本地播放音量
类型
() => number
返回值
类型:number 音量大小
设置客户端本地播放音量
类型
(volume: number) => void
参数
number返回值
-调节成功返回0,调节失败返回-1
调高音量
类型
() => void
返回值
void
调低音量
类型
() => void
返回值
void
获取音频播放设备列表
类型
() => Promise<MediaDeviceInfo[]>
返回值
类型:Promise<MediaDeviceInfo[]>
参考
获取当前音频播放设备
类型
() => string
返回值
类型:string
参考
获取音频采集设备列表
类型
() => Promise<MediaDeviceInfo[]>
返回值
类型:Promise<MediaDeviceInfo[]>
参考
获取当前音频采集设备
类型
() => string
返回值
类型:string
参考
设置音频播放设备
类型
(deviceId: string) => void
参数
string设置音频采集设备
类型
(deviceId: string) => Promise<void>
参数
string采集并发送音频数据
开启采集麦克风音频数据后发送给云机实例。注意: 需要开启麦克风使用权限。
类型
() => Promise<{ success: boolean; }>
返回值
类型:Promise<{ success: boolean; }>
关闭音频数据发送
关闭音频数据发送,并且不进行音频采集。
() => void
开启视频采集
获取本地摄像头权限后,采集并发送摄像头视频数据。
类型
() => Promise<{ success: boolean; }>
返回值
类型:Promise<{ success: boolean; }>
设置视频采集设备列表
类型
() => Promise<MediaDeviceInfo[]>
返回值
类型:Promise<MediaDeviceInfo[]>
获取当前视频采集设备信息
类型
() => string
返回值
类型:string
设置视频采集设备
类型
(deviceId: string) => Promise<void>
参数
string返回值
类型:Promise<void>
参考
停止视频采集
关闭视频数据发送,并且不进行视频采集。
类型
() => Promise<void>
返回值
类型:Promise<number>
设置本地视频画面布局
类型
(options: { streamIndex: number; videoPlayerOption: Partial<VideoPlayerOption>;}) => HTMLVideoElement | undefined
参数
{ streamIndex: number; videoPlayerOption: VideoPlayerOption; }成员
名称 | 类型 | 描述 |
|---|---|---|
streamIndex |
| 可选枚举值及说明如下: |
videoPlayerOption |
|
返回值
类型:HTMLVideoElement | undefined
参考
镜像翻转本地摄像头画面
使用“前置摄像头”采集时,是否开启镜像翻转本地摄像头画面
类型
(mirrorType: number) => void
参数
number获取是否开启镜像翻转本地摄像头画面
使用“前置摄像头”采集时,获取是否开启镜像翻转本地摄像头画面
类型
() => number
返回值
类型:number
设置视频渲染模式
类型
(videoRenderMode: number) => void
参数
number1 VIDEO_RENDER_MODE.FILL: 非等比拉伸视频画面并充满整个容器
2 VIDEO_RENDER_MODE.COVER: 根据视频画面分辨率长边做裁剪
开启视频外部采集
需要先调用 setVideoSourceType,将采集模式设置为外部采集。
类型
(streamIndex: number, mediaStreamTrack: MediaStreamTrack) => Promise<void>
参数
numberMediaStreamTrack返回值
类型:Promise<void>
关闭视频外部采集
关闭视频的外部采集(需要先调用 setVideoSourceType,将采集模式设置为外部采集)。
类型
() => Promise<void>
返回值
类型:Promise<void>
开启音频外部采集
开启音频的外部采集(需要先调用 setAudioSourceType,将采集模式设置为外部采集)。
类型
(streamIndex: number, mediaStreamTrack: MediaStreamTrack) => Promise<void>
参数
numberMediaStreamTrack返回值
类型:Promise<void>
关闭音频外部采集
关闭音频的外部采集(需要先调用 setAudioSourceType,将采集模式设置为外部采集)。
类型
() => Promise<void>
返回值
类型:Promise<void>
发送触控事件
类型
(touchMessage: { action: number; pointerId: number; x: number; y: number;}) => void
参数
{ action: number; pointerId: number; x: number; y: number; }成员
名称 | 类型 | 描述 |
|---|---|---|
action |
| 触控动作,可选 ACTION.TOUCH_START、ACTION.TOUCH_END、ACTION.TOUCH_MOVE(见 ACTION) |
pointerId |
| 触控ID,用于标识单个手指 |
x |
| 取值范围 [0,1] 。云手机画面的 x 轴相对坐标,可根据 DOM 的宽高比以及 start 接口返回的云机实例宽高比进行计算 |
y |
| 取值范围 [0,1] 。云手机画面的 y 轴相对坐标,可根据 DOM 的宽高比以及 start 接口返回的云机实例宽高比进行计算 |
返回值
分别返回发送「成功/失败」的状态
发送按键事件
类型
(keycodeMessage: { keycode: number; action: number;}) => Promise<void>
参数
返回值
类型:Promise<void> 分别返回发送「成功/失败」的状态
发送鼠标事件
类型
(mouseMessage: { button?: number; action: number; wheel?: number; x: number; y: number;}) => void
参数
{ button?: number | undefined; action: number; wheel?: number | undefined; x: number; y: number; }成员
名称 | 类型 | 描述 |
|---|---|---|
button |
| 鼠标按键标示,MOUSE_BUTTON.LEFT、MOUSE_BUTTON.RIGHT、MOUSE_BUTTON.CENTER。action 为 DOWN、UP、MOVE 时有效 (见 MOUSE_BUTTON) |
action |
| 鼠标动作,可选 ACTION.DOWN、ACTION.UP、ACTION.MOVE、ACTION.WHEEL(见 ACTION) |
wheel |
| 滚轮值,action 为 WHEEL 时有效 |
x |
| 相对屏幕位置 x 轴 0.00000 - 1.00000 |
y |
| 相对屏幕位置 y 轴 0.00000 - 1.00000 |
设置远端位置信息
设置远端经纬度信息
类型
(location: { latitude: number; longitude: number;}) => Promise<{ latitude: number; longitude: number; }>
参数
{ latitude: number; longitude: number; }成员
名称 | 类型 | 描述 |
|---|---|---|
latitude |
| 纬度 |
longitude |
| 经度 |
返回值
类型:Promise<{ latitude: number; longitude: number; }>
示例
vePlayer.setRemoteLocationMock({ latitude: 39.916527, longitude: 116.397128 })
设置远端请求位置信息的模式
类型
(mode: number) => void
参数
number返回值
void
设置保活时间
在应用中动态设置客户端切后台之后,云机应用服务的保活时间(如不设置,则使用默认保活时长300秒)
注意
当客户端切后台时开始计时。如用户在设置的保活时间到达时未切回前台,服务端将断开应用连接。
类型
(time: number) => Promise<void>
参数
number返回值
类型:Promise<void> Promise
获取保活时间
在应用中动态设置客户端切后台之后,云机应用服务的保活时间(如不设置,则使用默认保活时长300秒)
注意
当客户端切后台时开始计时。如用户在设置的保活时间到达时未切回前台,服务端将断开应用连接。
类型
() => Promise<number>
返回值
类型:Promise<number> Promise
设置无操作回收服务时间
该接口用于设定一个时长,如果在这个时长内客户端没有任何操作,云手机实例将停止推流并自动退出。
如不设置或设置为0,则使用默认时长 300 秒。
注意
如果已在启动云应用时通过 [autoRecycleTime] 参数设置,动态设置的时长优先级高。
类型
(duration: number) => Promise<void>
参数
number返回值
类型:Promise<void> promise
屏幕UI方向旋转
UI 旋转操作时,并配合调用该方法进行坐标旋转,保证点击/触控坐标计算准确
类型
(degree: number, isPodRotate?: boolean) => void
参数
numberboolean | undefined坐标旋转
当使用 CSS transform 的 rotate/rotate3d 进行 UI 旋转操作时,需要配合调用该方法进行坐标旋转,保证点击/触控坐标计算准确。
类型
(degree: number) => void
参数
number云手机画面截图
注意
截图文件保存和清理逻辑如下:
类型
(isSavedOnPod: boolean) => Promise<{ result: number; savePath: string; errorCode?: number; message: string; downloadUrl?: string;}>
参数
boolean返回值
类型:Promise<{ result: number; savePath: string; errorCode?: number; message: string; downloadUrl?: string; }>
开始云手机画面录屏
对当前云手机画面进行录屏
类型
(duration: number, isSavedOnPod?: boolean) => Promise<void>
参数
numberboolean | undefined返回值
类型:Promise<void>
停止画面录屏
主动停止对当前云手机画面进行录屏
注意
在以下情况下,云手机画面录屏也将停止:
类型
() => Promise<void>
返回值
类型:Promise<void> Promise
查询屏幕当前焦点窗口应用
查询屏幕当前的焦点窗口应用名称
() => void
获取导航栏开关状态
类型
() => Promise<{ status: number; reason?: number;}>
返回值
类型:Promise<{status: number, reason?: number}> status
设置导航栏开关状态
类型
(status: number) => Promise<void>
参数
number返回值
类型:Promise<void>
大文件传输-推送文件
启动客户端向云机实例推送文件
注意:该功能需配合 2025 年 7 月 8 日之后发布的公共镜像版本使用。
类型
(file: File, { folder, name, }: { folder: string; name: string;}) => void
参数
File{ folder: string; name: string; }成员:
名称 | 类型 | 描述 |
|---|---|---|
folder |
| 文件推送的路径 |
name |
| 文件推送的文件名 |
示例
第二个参数可以不传 vePhone.startPushFile(file); vePhone.startPushFile(file, { folder: '/sdcard/Download', name: 'demo.png', })
大文件传输-停止推送文件
类型
() => void
示例
vePhone.stopPushFile();
大文件传输-拉取文件
客户端主动拉取云机实例上的文件
注意:该功能需配合 2025 年 7 月 8 日之后发布的公共镜像版本使用。
类型
({ folder, name, returnUrl, }: { folder: string; name: string; returnUrl?: boolean; expires?: number;}) => void
参数
{ folder: string; name: string; returnUrl?: boolean | undefined; expires?: number | undefined; }成员:
名称 | 类型 | 描述 |
|---|---|---|
folder |
| 云机文件路径 |
name |
| 云机文件名 |
returnUrl |
| 文件下载 URL 是否为火山引擎对象存储的下载地址 |
示例
vePhone.startPullFile({ folder: '/sdcard/Download', name: '1.mp4', });
大文件传输-停止拉取文件
客户端停止拉取云机实例上的文件
类型
() => void
示例
vePhone.stopPullFile()
摇一摇协议
用于触发云机应用摇一摇,适配摇一摇场景。
类型
(duration: number) => Promise<void>
参数
number返回值
类型:Promise<void>
获取连接状态
获取音视频流连接状态。
类型
() => string
返回值
类型:string
获取实时运行状态
获取云手机服务实时运行状态,包含延时、丢包率、帧率等。
类型
() => Promise<{ accessDelay: number; videoReceivedPacketsLostRate: number; videoReceivedBitrate: number; videoReceivedFrameRate: number; videoReceivedResolutionHeight: number; videoReceivedResolutionWidth: number; }>
返回值
类型:Promise<{ accessDelay: number; videoReceivedPacketsLostRate: number; videoReceivedBitrate: number; videoReceivedFrameRate: number; videoReceivedResolutionHeight: number; videoReceivedResolutionWidth: number; }>
检测是否系统是否支持webTC
类型
() => boolean
返回值
类型:boolean
获取版本
类型
() => string
返回值
类型:string string
更改/设置options配置项
类型
(options: CloudCoreConfig) => void
参数
返回值
void
获取已设置的无操作回收服务时间
类型
() => Promise<{ time: number; }> | undefined
返回值
类型:Promise<{ time: number; }> | undefined 无操作回收时间
是否开启定位信息同步
类型
(enable: boolean) => void
参数
boolean返回值
void
获取已开启定位信息同步
类型
() => boolean
返回值
类型:boolean void
获取远端请求位置信息的模式
类型
() => number
返回值
类型:number
启动本地麦克风接口
类型
() => Promise<void>
返回值
类型:Promise<void>
关闭本地麦克风接口
类型
() => Promise<void>
返回值
类型:Promise<void>
获取当前清晰度
类型
() => any
返回值
类型:any
本地麦克风模块 开始
类型
(streamType: number, audioSourceType: number) => Promise<void>
参数
numbernumber返回值
类型:Promise<void>
本地相机 模块
类型
(streamType: number, videoSourceType: number) => Promise<void>
参数
numbernumber返回值
类型:Promise<void>
配置本地视频编码质量策略
根据客户端的网络情况以及接收端的网络情况以及订阅方式,配置本地视频编码质量参数。
类型
(config: { width: number; height: number; frameRate: number; maxKbps: number;}) => Promise<void>
参数
{ width: number; height: number; frameRate: number; maxKbps: number; }成员
名称 | 类型 | 描述 |
|---|---|---|
width |
| 宽度 |
height |
| 高度 |
frameRate |
| 帧率 |
maxKbps |
| 最大码率 |
返回值
类型:Promise<void>
本地相机 模块 结束
类型
(time: number) => void
参数
number大文件传输-设置是否返回文件下载地址
类型
(bool?: boolean) => void
参数
boolean | undefined开启视频文件播放
类型
(cameraFilePath: string, mode: number) => Promise<void>
参数
stringnumber返回值
类型:Promise<void>
停止视频文件播放
类型
() => Promise<void>
返回值
类型:Promise<void>
获取当前视频源状态
类型
() => Promise<{ status: number; error: number; path?: string;}>
返回值
类型:Promise<{ status: number; error: number; path?: string; }>
设置指定用户是否具有云手机操控权(每个新用户连接云手机时默认具备操控权,可以通过本接口动态关闭控制权)。
类型
(userId: string, enable: boolean) => Promise<ControlEventResult>
参数
stringboolean返回值
类型:Promise<ControlEventResult> code 为 0 代表成功,code 为 -1 代表失败,失败原因参考 msg 字段
异步查询指定用户是否具有云手机操控权。
类型
(userId: string) => Promise<ControlEventResult>
参数
string返回值
类型:Promise<ControlEventResult> code 为 0 代表成功,code 为 -1 代表失败,失败原因参考 msg 字段
异步查询全部用户的操控权详情。
类型
() => Promise<Omit<ControlEventResult, "data"> & { data?: ControlState[] | undefined; }>
返回值
类型:Promise<Omit<ControlEventResult, "data"> & { data?: ControlState[] | undefined; }> code 为 0 代表成功,code 为 -1 代表失败,失败原因参考 msg 字段
拉流过程中,切换本地/云机输入法类型
local:本地输入法
pod:云机虚拟输入法
类型
(keyboard: string) => Promise<{ action: number; type: number;}>
参数
string返回值
类型:Promise<{ action: number; type: number; }>
查询当前使用的本地/云机输入法类型
类型
() => Promise<{ action: number; type: number; callUserId: string;}>
返回值
类型:Promise<{ action: number; type: number; callUserId: string; }>
设置全面屏开关
类型
(enable: boolean) => Promise<{width:number, height: number, callUserId?:string}>
参数
boolean返回值
类型:Promise<{width:number, height: number, callUserId?:string}> width 当前pod宽度,height 当前pod高度,callUserId 设置云机实例全面屏状态的用户ID
开启/关闭音频注入功能
类型
(enable: boolean) => Promise<void>
参数
boolean返回值
类型:Promise<void> Promise
获取音频注入开关状态
类型
() => Promise<{ enable: boolean; code: number; msg?: string;}>
返回值
类型:Promise<{enable:boolean, code: number, msg?:string}> state 当前音频注入打开状态
设置视频注入开关
类型
(enable: boolean) => Promise<void>
参数
boolean返回值
类型:Promise<void> Promise
获取视频注入开关状态
类型
() => Promise<{ enable: boolean; code: number; msg?: string;}>
返回值
类型:Promise<{enable:boolean, code: number, msg?:string}> state 当前视频注入打开状态
拉流过程中动态更新拉流过期时间。
若启动拉流时限定了拉流有效期,拉流到期前 30s 时会收 WARNING_TOKEN_WILL_EXPIRE(34001) 警告,提示拉流即将过期,期间可调用本接口更新拉流到期时间,延长拉流时间。若未更新,则到期后将自动断开与云手机实例的连接。
类型
(token: STSToken, expireTime: number) => Promise<void>
参数
number返回值
类型:Promise<void> Promise
对当前云手机画面进行本地快速截图。
区别于 ScreenShot 接口,本接口的截图过程在客户端完成。
类型
(autoDownload?: boolean) => void
参数
返回值
类型:Promise<void>
输入自定义文本。当云机输入框获取到焦点时,可以调用此方法向云机输入框输入自定义文本内容。
类型
(text: string) => void
返回值
类型:void
清除输入框文本。当云机输入框获取到焦点时,可以调用此方法清除或覆盖云机输入框已有的内容。
类型
(text: string) => void
返回值
类型:void
示例
vePhoneSDKInstance.coverCurrentEditText('');