本文介绍如何使用无影云手机的Windows SDK。
接口说明
1. AspClient类
1.1. create
static AspClient* create(AspTicket& ticket, IAspClientCallback* callback);
接口说明:创建云电脑或云手机实例
参数:
AspTicktet& ticket:请求连接的参数
IAspClientCallback* callback:Client的回调接口
1.2. AspTicktet结构
struct AspTicket {
std::string ticket; //获取云电脑或云手机的ticket字符串
std::string id; //桌面id
std::string user; //用户名
std::string uuid; //本机uuid,请求ticket的时候使用的uuid
std::string systemType; // 云电脑类型
uint8_t partner; //合作方
bool isThumbnailEnable = false; //是否是缩略图模式
};
1.3. IAspClientCallback接口
void onThumbnailUpdate(void* buffer, uint32_t width, uint32_t height, AspImageFormat format);
接口说明:缩略图更新的回调
参数:
buffer: 存储缩略图数据的内存地址;
width:缩略图的宽
height:缩略图的高
format:数据格式(YUV420P、RGBA、ARGB、NV12)等,具体参照AspImageFormat结构体的定义
void onConnectEvent(ConnectEvent &event);
接口说明:连接事件的回调
参数:
event:ConnectEvent类型的事件描述结构体
struct ConnectEvent {
ConnectEventType type; //连接成功、连接失败等事件类型
int reason; //事件触发的原因
};
1.4. destory
static void destroy(AspClient* client);
接口说明:销毁云电脑或云手机实例,需在close之后调用
参数:
client:由create创建出来的实例
1.5. open
void open();
接口说明:打开云电脑或云手机
1.6. reopen
void reopen(std::string& ticket);
接口说明:重新打开云电脑或云手机
参数:
ticket:云电脑或云手机的ticket字符串
1.7. close
void close();
接口说明:关闭云电脑或云手机
1.8. pause
void pause();
接口说明:暂停云电脑或云手机推流
1.9. resume
void resume();
接口说明:恢复云电脑或云手机推流
1.10. setVolume
void setVolume(int volumeValue);
接口说明:设置云端的音量
参数:
volumeValue:音量值
1.11. addDisplay
AspDisplay* addDisplay(IAspDisplayCallback *display);
接口说明:增加一个画面显示的画布,单屏模式下只添加一个
参数:
display:用于传递画面显示数据的回调
返回值:
画面显示窗口的实例
1.12. removeDisplay
void removeDisplay(AspDisplay *display);
接口说明:移除一个画面显示的画布
参数:
display:需要删除的显示画布
1.13. setThumbnailDisplay
void setThumbnailDisplay(uint32_t width, uint32_t height, int32_t fps);
接口说明:设置缩略图显示参数
参数:
width:缩略图宽
height:缩略图高
fps:缩略图帧率
1.14. resumeThumbnailDisplay
void resumeThumbnailDisplay();
接口说明:恢复缩略图更新
1.15. suspendThumbnailDisplay
void suspendThumbnailDisplay();
接口说明:暂停缩略图更新
1.16. setGraphicsQuality
void setGraphicsQuality(AspImageQuality quality);
接口说明:设置画质等级
参数:
quality:画质等级(无损、高、中、低、自动)
1.17. setGraphicsFps
void setGraphicsFps(int fps);
接口说明:设置画面的最大帧率
参数:
fps:帧率
1.18. setGraphicsBitrate
void setGraphicsBitrate(int32_t bps);
接口说明:设置最大码率
参数:
bps:码率
1.19. setAspPlayer
void setAspPlayer(AspPlayer *player);
接口说明:设置自定义的解码器,如不设置将使用ASP自带的解码器(不建议设置)
参数:
player:用户自定义的解码器
1.20. setAspAudio
void setAspAudio(AspAudio *audio);
接口说明:设置语音渲染的实例
参数:
audio:语音渲染的实例
1.21. setOutputImageFormat
void setOutputImageFormat(AspImageFormat format);
接口说明:设置输出图形的格式
参数:
format:图像数据的格式(YUV420P、RGBA、ARGB、NV12)等,具体参照AspImageFormat结构体的定义
2. AspDisplay类
2.1. IAspDisplayCallback接口
void onImageFrameReady(AspImageFrame &frame);
接口说明:图像帧的数据回调
参数:
frame:图像帧数据
2.2. AspImageFrame结构
struct AspImageFrame {
uint32_t frameId; //帧ID
void* buffer; //帧数据的buffer
uint32_t width; //帧的宽
uint32_t height; //帧的高
AspImageFormat format; //帧的图像存储格式
ReleaseBuffer releaseBuffer; //帧数据的buffer释放函数,当buffer使用完之后需要调用
};
2.3. setResolution
void setResolution(int32_t x, int32_t y, uint32_t width, uint32_t height);
接口说明:设置窗口分辨率
2.4. getResolution
AspResolution& getResolution();
接口说明:获取当前窗口的分辨率
2.5. setDpi
void setDpi(uint16_t dpi);
接口说明:设置dpi
2.6. sendMouseMove
void sendMouseMove(uint32_t x, uint32_t y, uint32_t buttonState);
接口说明:发送鼠标移动事件
参数:
x,y:鼠标移动目标点的坐标
buttonState:鼠标按钮的状态
2.7. sendMouseMoveDelta
void sendMouseMoveDelta(int32_t dx, int32_t dy, uint32_t button_state);
接口说明:发送鼠标移动事件(相对坐标)
参数:
dx,dy:鼠标移动的向量
button_state:鼠标按钮的状态(AspMouseButtonMask类型)
2.8. sendMouseClick
void sendMouseClick(AspAction action, uint32_t button, uint32_t buttonState);
接口说明:发送鼠标点击事件
参数:
action:up/down
button:鼠标点击的按钮(AspMouseButton类型)
buttonState:鼠标按钮的状态(AspMouseButtonMask类型)
2.9. sendMouseWheel
void sendMouseWheel(int32_t deltaX, int32_t deltaY, uint32_t buttonState);
接口说明:发送鼠标滚轮事件
参数:
deltaX:X方向的滚动距离
deltaY:Y方向的滚动距离
buttonState:鼠标按钮的状态(AspMouseButtonMask类型)
2.10. sendKeyEvent
void sendKeyEvent(AspAction action, int scancode);
接口说明:发送按键事件
参数:
action:up/down
scancode:按键码
2.11. sendTouchEvent
void sendTouchEvent(std::vector<AspTouchEvent>& events);
接口说明:发送触摸屏的touch事件
参数: events:触摸点的数组
3. AspAudio类
3.1. onAudioFrameRender
void onAudioFrameRender(AspAudioFrame &frame);
接口说明:音频帧渲染的回调接口,当采用PUSH方式时,会通过该接口回调音频帧数据
参数:
frame:音频帧的数据结构
3.2. AspAudioFrame结构
struct AspAudioFrame {
int sample; //采样率
int channels; //通道
int size; //数据大小
uint8_t *data; //数据地址
ReleaseBuffer releaseBuffer; //data释放函数,在data使用完之后必须调用
};
3.3. onAudioVolumeUpdate
void onAudioVolumeUpdate(uint32_t volume);
接口说明:音量变化的接口回调
参数:
volume:音量大小
3.4. onAudioMuteUpdate
void onAudioMuteUpdate(bool isMute);
接口说明:是否静音的接口回调
参数:
isMute:是否静音
3.5. onAudioPlaybackUpdate
void onAudioPlaybackUpdate(AspAudioPlayback &playback);
接口说明:音频流更新的回调接口,当音频发生变化时会回调
参数:
playback:音频流的信息
3.6. AspAudioPlayback结构
struct AspAudioPlayback {
AspAudioReadType readType; //音频数据获取方式,包括PUSH和PULL两种方式
AspAudioMode mode; //PCM or OPUS
uint32_t channels; //通道数
uint32_t frequency; //采样率
AspAudioFormat format; //RAW or OPUS
AudioReader audioReader; //PULL读取方式时,数据读取的函数,请参照demo的实现
};
3.7. onAudioPlaybackStart
void onAudioPlaybackStart();
接口说明:音频流开始播放
3.8. onAudioPlaybackStop
void onAudioPlaybackStop();
接口说明:音频流停止播放
4. AspLogSink类
4.1. setLogSink
static void setLogSink(AspLogSink *sink);
接口说明:将SDK的日志进行重定向,便于问题排查
获取SDK
请单击链接获取Windows SDK:asp-client-sdk-20250115.zip。