Appearance
当前版本:V2.0.72 苏州必捷网络有限公司
1 概述
1.1 目的
用于指导使用必捷SDK开发Windows发送端应用程序。
1.2 读者对象
本文档适用于使用C/C++语言开发Windows发送端应用程序的人员和测试人员。
1.3 缩略语定义
缩写名称 | 英文 | 中文 |
---|---|---|
BJCast | 必捷无线投屏协议 |
2 范围
2.1 功能
本SDK为BJCast发射端SDK,和BJCast接收端SDK配合进行无线投屏。 本SDK为标准的windows动态库模块,提供C接口供应用集成。
2.2 SDK框架
总体框架分为两层:
- SDK层:SDK为bjcast_sendr_itf.lib为接口库的一系列库合集。
- 应用层:开发的demo应用部分,我司交付的是demo命令行应用程序,可参考demo源码进行针对性的集成和二次开发工作。
2.3 SDK交付物
- SDK库
- DEMO APP源代码,Demo APP基于最新SDK,作为参考实现提供给客户
- SDK接口文档
2.4 版本要求
- 支持的操作系统:Windows10 1507及以上版本,支持扩展屏投屏的版本为Windows10 1809及以上版本。
3 接口
3.1 初始化SDK接口
C
CONTROLMANAGER_WRAPPER_API ControlManagerIntfHandle
BJCastCreateControlManagerIntfEx(const ControlManagerInitPara *initPara);
描述
设置SDK的初始化参数,在启动时调用。
参数
名称 | 描述 |
---|---|
initPara | SDK初始化参数 |
ControlManagerInitPara
结构体说明如下:
C
typedef struct
{
ControlManagerIntfListener *listener;
const char *log_directory;
const char *user_name;
const char *sender_id;
const char *mac_addr;
const char *custom_info;
bool enable_weak_network_ft;
int ctrl_heartbeat_interval;
int ctrl_heartbeat_lost_warn_times;
int ctrl_heartbeat_lost_max_times;
const char* encode_scene_conf;
const char* encoder_ext_conf;
BJCastReverseListener *reverse_listener;
} ControlManagerInitPara;
名称 | 描述 |
---|---|
listener | ControlManagerIntfListener对象指针,ControlManagerIntfListener为SDK回调接口结构体,用户需要自行实现其中的回调接口函数 |
log_directory | SDK日志保存位置 |
user_name | APP名称 |
sender_id | APP唯一的UUID,用户需要保证其唯一性 |
mac_addr | App运行的设备的mac地址,默认填空字符串 |
custom_info | 用户自定义信息,默认填空字符串 |
enable_weak_network_ft | 弱网优化机制开关,true表示启用,false表示关闭 |
ctrl_heartbeat_interval | 心跳间隔周期,单位为秒, 默认2s |
ctrl_heartbeat_lost_warn_times | 心跳丢失告警门限,丢失多少次通知应用层, 默认值2 |
ctrl_heartbeat_lost_max_times | 心跳丢失最大告警次数,丢失最大次数自动断开投屏,应该大于ctrl_heartbeat_lost_warn_times ,默认值15 |
encode_scene_conf | encoder编码场景常规参数配置,参考典型配置文件encoder_sence_conf.json,如果用户不需设置请设置为null |
encoder_ext_conf | encoder的额外编码参数设置,参照ffpmeg的参数选项,组织格式参照encoder_ext_conf.json |
reverse_listener | 用于接收端反向控制发射端投屏,默认设置为NULL |
返回值:
ControlManagerIntfHandle
为SDK接口类对象实例句柄。如果成功将返回一个有效的ControlManagerIntfHandle对象,失败则返回0值。
3.2 销毁SDK接口
C
CONTROLMANAGER_WRAPPER_API void BJCastDestoryControlManagerIntf(ControlManagerIntfHandle handle);
描述
销毁SDK操作类对象实例。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
参考样例
C
ControlManagerIntfHandle handle=BJCastCreateControlManagerIntfEx(initParams);
...//投屏操作
BJCastDestoryControlManagerIntf(handle);
注意事项
在调用该接口销毁SDK前,需要确保结束投屏操作。
3.3 弱网优化机制开启/关闭接口
C
CONTROLMANAGER_WRAPPER_API void BJCastEnableWeakNetworkFt(ControlManagerIntfHandle handle, bool enable);
描述
用于开启/关闭弱网优化机制。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象句柄 |
enable | 开关标志位,true:启动弱网优化,false:关闭弱网优化 |
注意事项
该接口应该在投屏流程发起前设置。
3.4 投屏设备自发现服务启动接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastStartServerDetecting(ControlManagerIntfHandle handle);
描述
启动自发现服务扫描局域网内可用的投屏设备。设备信息将由ControlManagerIntfListener
的onServerDetected
接口返回给应用层。该流程是异步的。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
注意事项 自发现服务基于mDNS消息,请确保接入的局域网没有禁止mDNS消息。
3.5 投屏设备自发现服务停止接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastStopServerDetecting(ControlManagerIntfHandle handle);
描述
停止自发现服务。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
注意事项
该接口应该和BJCastStartServerDetecting
接口在同一线程中调用。
3.6 建立信令会话接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastLogin(ControlManagerIntfHandle handle, const S8 *ip, U16 port,
const S8 *pin = "", const S8 *user_name = "", const S8 *user_info = "",const BJCastReceiverPara* para = nullptr);
描述
启动与接收端建立信令连接会话。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
ip | 接收端IP地址 |
port | 接收端监听端口,默认为8190 |
pin | 投屏密码,接收端提供 |
user_name | 使用者名称,默认为空字符串 |
user_info | 使用者信息,默认为空字符串 |
para | 由应用层probe机制或者自发现服务获取到的接受端信息,如果启动自发现服务或者没有实现probe机制,传入空值即可 |
BJCastReceiverPara
结构体定义如下:
C
typedef struct {
int remote_ft;
int remote_max_resolution;
}BJCastReceiverPara;
名称 | 描述 |
---|---|
remote_ft | 接收端能力集,有关该字段的详细信息请参照BJCastFtFlags 枚举定义 |
remote_max_resolution | 接收端支持的最大投屏分辨率,有关该字段的详细信息请参照相关宏定义 |
remote_ft
能力集枚举值如下:
typedef enum
{
BJCAST_SUPPORT_CTRL_HEARTBEAT = (0x01),
BJCAST_SUPPORT_CTRL_IFAMEREQ = (0x02),
BJCAST_SUPPORT_VIDEO_WEAKNETWORK_FTV1 = (0x04),
BJCAST_SUPPORT_CTRL_TRAN_FTV1 = (0x08),
BJCAST_SUPPORT_VIDEO_NEG = (0x10)
}BJCastFtFlags;
名称 | 描述 |
---|---|
BJCAST_SUPPORT_CTRL_HEARTBEAT | 接收端信令通道支持心跳保活机制 |
BJCAST_SUPPORT_CTRL_IFAMEREQ | 接受端支持关键帧请求机制 |
BJCAST_SUPPORT_VIDEO_WEAKNETWORK_FTV1 | 接收端视频媒体传输通道支持弱网优化机制 |
BJCAST_SUPPORT_CTRL_TRAN_FTV1 | 接收端信令传输通道支持弱网优化机制 |
BJCAST_SUPPORT_VIDEO_NEG | 接收端支持视频参数协商机制 |
remote_max_resolution
定义如下:
名称 | 描述 |
---|---|
BJCAST_MAX_RESOLUTION_1080P | 1080P 该宏定义值为0 |
BJCAST_MAX_RESOLUTION_720P | 720P 该宏定义值为1 |
BJCAST_MAX_RESOLUTION_2560X1600 | 2K 该宏定义值为2 |
BJCAST_MAX_RESOLUTION_4K | 4K 该宏定义值为3 |
返回值
如果成功,返回值为0,失败返回非0值。创建信令会话结果将会由ControlManagerIntfListener
的OnCreateSessionRes
接口通知应用层,具体请参照相关回调接口说明。
注意事项
只有该接口返回成功后才可进行下一步投屏操作。
3.7 选择投屏模式接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastSetMirrorMode(ControlManagerIntfHandle handle, MirrorMode mode);
描述
设置投屏模式。该接口应在建立信令会话接口调用前调用。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
mode | 投屏模式,有关投屏模式的定义参照MirrorMode 说明 |
MirrorMode
的定义如下:
C
typedef enum
{
CMMM_Screensharing,
CMMM_Windowsharing
}MirrorMode;
名称 | 描述 |
---|---|
CMMM_Screensharing | 桌面投屏 |
CMMM_Windowsharing | 窗口投屏 |
返回值 成功返回0值,失败返回-1。
3.8 获取屏幕数量接口
C
CONTROLMANAGER_WRAPPER_API S32
BJCastScreenCount(ControlManagerIntfHandle handle);
描述
获取屏幕数量,该接口应在调用选择投屏模式接口后调用。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
返回值
成功则返回目前投屏电脑的屏幕数量。
注意事项
屏幕数量不仅和实际接入的活跃的物理屏幕有关,还和显示模式有关。处于复制模式下,屏幕数量只有1。
3.9 设置投屏屏幕接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastSetScreen(ControlManagerIntfHandle handle,
S32 screen);
描述
设置投屏屏幕,screen为投屏屏幕的编号,主屏幕为0,其余屏幕依次递增。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
screen | 屏幕编号 |
返回值
成功返回0值,失败返回非0值。
注意事项
该接口需要在建立信令会话接口调用前调用。
3.10 获取音频设备数量接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastMicphoneCount(ControlManagerIntfHandle handle);
描述
获取音频设备数量。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
返回值
返回目前投屏电脑的活跃的音频设备数量。
3.11 选择投屏音频设备接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastSelectMicphone(ControlManagerIntfHandle handle,
S32 index);
描述
选择投屏音频设备。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
index | 音频设备编号,默认为-3(回环设备) |
返回值
成功返回0值,失败返回非0值。
注意事项
该接口需要在建立信令会话接口调用前调用。
3.12 开始投屏接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastStartMirror(ControlManagerIntfHandle handle);
描述
启动投屏。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
返回值
成功返回0值,失败返回非0值。
注意事项
该接口需要在信令会话接口调用成功,且onEncoderReady
接口被触发后调用。
参考样例
C
...//等待onEncoderReady被触发
if(!BJCastLogin(...)){
BJCastStartMirror();
}
3.13 结束投屏接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastStopMirror(ControlManagerIntfHandle handle);
描述
停止投屏。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
返回值
返回0值。
3.14 请求全屏接口
CONTROLMANAGER_WRAPPER_API S32 BJCastRequestFullscreen(ControlManagerIntfHandle handle);
描述
投屏过程中请求接收端全屏显示投屏画面。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
返回值
成功返回0值,失败返回非0值,失败原因一般是发送请求信令失败。
3.15 退出全屏显示接口
CONTROLMANAGER_WRAPPER_API S32 BJCastRequestFullscreen(ControlManagerIntfHandle handle);
描述
投屏过程中请求接收端退出全屏显示投屏画面。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
返回值
成功返回0值,失败返回非0值,失败原因一般是发送请求信令失败。
3.16 初始化反控拉流模块接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastInitReverse(ControlManagerIntfHandle handle, const char *device_id,
const char *device_name);
描述
初始化反控及接收端收藏拉流模块。接收端收藏拉流功能仅BJ72支持。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
device_id | 发射端设备ID,用户自定义但需要具备唯一性 |
device_name | 发射端设备名称,用户自定义 |
返回值
成功返回0值,失败返回非0值。
注意事项
该接口需在建立投屏信令会话前调用。
3.17 打开反控及收藏拉流模块接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastOpenReverse(ControlManagerIntfHandle handle);
描述
打开反控和收藏拉流通道。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
返回值
成功返回0值,失败返回非0值。失败时请检查8192端口占用情况。
3.18 注册发射端接口
C
CONTROLMANAGER_WRAPPER_API void BJCastRegisterToReceiver(ControlManagerIntfHandle handle, const char *ip);
描述
向支持收藏拉流功能的接收端注册发射端信息。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
ip | 接收端IP地址 |
3.19 关闭反控及收藏拉流模块接口
C
CONTROLMANAGER_WRAPPER_API void BJCastCloseReverse(ControlManagerIntfHandle handle);
描述
关闭反控和收藏拉流通道。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
3.20 重置发射端设备名称接口
C
CONTROLMANAGER_WRAPPER_API void BJCastSetDeviceName(ControlManagerIntfHandle handle, const char *device_name);
描述
重置发射端APP中的设备名称。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
device_name | 设备名称 |
注意事项
该接口需要在建立投屏信令会话前调用。
3.21 异步获取应用窗口信息列表接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastasyncWindowList(ControlManagerIntfHandle handle);
描述
异步请求应用程序窗口信息列表。窗口信息列表将通过onWindowList
回调返回给应用层。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
返回值
返回0值。
3.22 选择投屏窗口接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastSelectWindow(ControlManagerIntfHandle handle, S32 window);
描述
根据onWindowList
回调返回的窗口新系列选择投屏窗口。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
window | 窗口ID值 |
返回值
成功返回0值,失败返回-1。
3.23 更改编码场景配置接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastSetEncodeSceneConfig(ControlManagerIntfHandle handle, const char* scene_def);
描述
修改编码场景配置。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
scene_def | 编码场景配置json字符串, 参考encoder_sence_conf.json |
返回值
成功返回0,失败返回-1。
注意事项 当选择的应用窗口被关闭时,onTargetWindowNotExist
回调将会被触发,此时应终止投屏流程的推进。
3.24 投屏信令会话重授权接口
C
CONTROLMANAGER_WRAPPER_API void BJCastReAuth(ControlManagerIntfHandle handle, const char *pin);
描述
接收端存在投屏密码的场景下,当通过login发起的建立投屏会话因投屏密码缺失导致会话建立失败时,输入投屏密码重新建立投屏信令会话。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
pin | 投屏密码,接受度提供 |
3.25 检测虚拟扩展屏是否存在接口
C
CONTROLMANAGER_WRAPPER_API int BJCastHasVirtualMonitor(ControlManagerIntfHandle handle);
描述
检测虚拟扩展屏是否存在。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
返回值
如果虚拟扩展屏存在返回1,否则返回0。
3.26 设置自定义信息接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastSetCustomInfo(ControlManagerIntfHandle handle, const char *custom_info);
描述
修改用户自定义文本信息。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
custom_info | 用户自定义文本信息,不超过256个字符 |
返回值 成功返回0,失败返回负值。
3.27 设置发射端MAC地址接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastSetMachineMACAddr(ControlManagerIntfHandle handle, const char *mac_addr);
描述
修改发射端APP MAC地址。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
mac_addr | 发射端的MAC地址 |
返回值
成功返回0,失败返回负值。其中如果MAC地址格式非法返回-2。
3.28 设置本地音频播放静音接口
C
CONTROLMANAGER_WRAPPER_API S32 BJCastSetLocalPlayDeviceMute(ControlManagerIntfHandle handle, int status);
描述
设置本地音频播放器禁音。
参数
名称 | 描述 |
---|---|
handle | SDK接口类对象实例句柄,该句柄由初始化接口返回 |
status | 1:禁音,0:解除禁音 |
返回值
成功返回0值,失败返回负值。
3.29 虚拟扩展屏操作接口
该部分包含虚拟屏驱动相关接口。
3.29.1 打开虚拟扩展驱动
apl
CONTROLMANAGER_WRAPPER_API bool BJCastOpenVM();
描述
打开虚拟驱动。在调用虚拟扩展屏相关接口前需要确定该接口调用成功。
参数
无。
返回值
0:失败。
1:成功。
3.29.2 关闭虚拟扩展驱动
apl
CONTROLMANAGER_WRAPPER_API void BJCastCloseVM();
描述
关闭虚拟驱动。
参数
无。
返回值
无。
3.29.3 添加虚拟屏幕
apl
CONTROLMANAGER_WRAPPER_API bool BJCastNewMonitor();
描述
添加虚拟屏幕。
参数
无。
返回值
true:添加虚拟屏成功。
false:添加虚拟屏失败。
3.29.4 移除虚拟屏幕及驱动
apl
CONTROLMANAGER_WRAPPER_API bool BJCastDelMonitor();
描述
移除虚拟屏幕及驱动。
参数
无。
返回值
true: 删除成功
false: 删除失败
注意
removeVirtualMonitor需要在虚拟屏存在的情况下调用,否则会导致驱动异常。
3.29.5 设置扩展屏幕模式
apl
CONTROLMANAGER_WRAPPER_API S32 BJCastForceExtendMonitor();
描述
设置当前系统投影为扩展模式,即win+P设置扩展屏模式。
参数
无。
返回值
0:成功
1:失败
3.29.6 设置仅电脑屏幕模式
apl
CONTROLMANAGER_WRAPPER_API S32 BJCastForceRestoreMonitor();
描述
设置当前系统投影为仅电脑屏幕模式,即win+P设置仅电脑屏幕。
参数
无。
返回值
0:成功
1:失败
3.29.7 设置当前系统投影为复制模式
apl
CONTROLMANAGER_WRAPPER_API S32 BJCastForceCloneMonitor();
描述
设置当前系统投影为复制模式,即win+P设置仅电脑屏幕。
参数
无。
返回值
0:成功
1:失败
3.30 回调接口说明
3.30.1 自发现设备回调接口
C
void (*onServerDetected)(ServerInfo *info, int add_rmv_flag)
描述
将自发现服务发现的接收端设备信息通知应用层。
参数
名称 | 描述 |
---|---|
add_rmv_flag | 添加/删除设备信息标志位 1:添加 0:删除 |
info | 设备信息,详情请参照ServerInfo 说明 |
ServerInfo
定义说明:
C
typedef struct ServerInfo
{
S8 serial[64];
S8 ip[16];
U16 port;
S8 name[128];
U32 version;
U32 mask;
U32 max_resolution;
U32 max_fps; // device maximum framerate
} ServerInfo;
名称 | 描述 |
---|---|
serial | 接收端序列号 |
ip | 接收端IP |
port | 接收端投屏信令会话监听端口 |
name | 接收端名称 |
version | 接收端版本号 |
mask | 接收端能力集 |
max_resolution | 接受端支持的最大投屏分辨率 |
max_fps | 接收端支持的最大投屏帧率 |
3.30.2 投屏会话结束回调接口
C
void (*onCallEnd)(const Reason)
描述
通知应用层投屏会话结束。
参数
名称 | 描述 |
---|---|
Reason | 会话结束原因 |
Reson相关宏定义如下:
const Result E_OK = 0;
const Result E_FAILURE = -1;
const Result E_NULL_POINTER = -2;
const Result E_NOT_INITIALIZED = -3;
const Result E_ALREADY_INITIALIZED = -4;
const Result E_NOT_IMPLEMENTED = -5;
const Result E_NETWORK_FAILURE = -6;
const Result E_TIMEOUT = -7;
const Result E_INVALID_PARAMETER = -8;
const Result E_AUTHENTICATION_REQUIRED = -9;
const Result E_AUTHENTICATION_FAILED = -10;
const Result E_DECODE_MESSAGE_FAILURE = -11;
const Result E_ENCODE_MESSAGE_FAILURE = -12;
const Result E_CALL_NOT_FOUND = -13;
const Result E_CALL_REJECTED = -14;
const Result E_CALL_NO_SCREEN_RESOURCE = -15;
const Result E_AUTH_FAILED = -16;
const Result E_HEARTBAET_LOST = -17;
const Result E_CONNECT_FAILED = -18;
const Result E_ENCOER_PARAM_INVALID = -19;
const Result E_NO_WINDOW_MEDIA_STREAM = -20;
const Result E_TARGET_WINDOW_NOT_EXIST = -30;
const Result E_HEARTBAET_REJECT = -31;
const Result E_CLIENT_NO_SCREEN_RESOURCE = -32;
//media部分错误
const Result E_MEDIA_OPEN_ERR = -51;
// success case
const Result E_CALL_ACCEPTED = E_OK + 1;
const Result E_CALL_HANGUP = E_OK + 2;
const Result E_LIMIT_USED = -10000;
名称 | 描述 |
---|---|
E_OK | 正常流程结束 |
E_NETWORK_FAILURE | 网络异常断开 |
E_TIMEOUT | 网络连接超时没有回应 |
E_INVALID_PARAMETER | 非法参数 |
E_CALL_REJECTED | 接收端拒绝会话连接 |
E_CALL_NO_SCREEN_RESOURCE | 接收端投屏路数达到上限 |
E_AUTH_FAILED | 接收端会话授权失败,没有通过投屏密码校验 |
E_HEARTBAET_LOST | 信令会话心跳丢失 |
E_TARGET_WINDOW_NOT_EXIST | 窗口投屏目标窗口不存在 |
E_NO_WINDOW_MEDIA_STREAM | 窗口视频媒体流不存在 |
E_HEARTBAET_REJECT | 心跳拒绝,接收端重启可能导致此类错误 |
E_CONNECT_FAILED | 创建投屏信令会话失败 |
E_CALL_HANGUP | 接收端主动结束会话 |
3.30.3 全屏/退出全屏回调接口
C
void (*onCallUpdate)(bool)
描述
通知应用层接收端投屏画面全屏显示/退出全屏显示。
参数
名称 | 描述 |
---|---|
flag | 1:全屏 0:推出全屏 |
3.30.4 锁屏通知回调接口
C
void (*onCallSCreenLock)(bool) ;
描述
通知应用层系统锁屏。
参数
名称 | 描述 |
---|---|
flag | 1:锁屏 |
3.30.5 系统休眠回调接口
C
void (*onSystemHangUp)() ;
描述
通知应用层系统休眠。
3.30.6 视频编码器加载完成回调接口
C
void (*onEncoderReady)() ;
描述
通知应用层视频编码器加载完成。
3.30.7 目标投屏窗口不存在回调接口
C
void (*onTargetWindowNotExist)() ;
描述
通知应用层投屏目标应用程序窗口不存在。
3.30.8 投屏会话心跳丢失警告回调接口
C
int (*onSessionHeartbeatLost)(int hb_loss_count);
描述
通知应用层投屏信令会话出现心跳丢失。
参数
名称 | 描述 |
---|---|
hb_loss_count | 心跳丢失次数 |
返回值
如果应用层认为需要结束投屏,返回值设为1,否则设为0。
3.30.9 投屏会话心跳恢复回调接口
C
void (*onSessionHeartbeatRecovered)();
描述
通知应用层投屏信令会话恢复正常。
3.30.10 创建信令会话结果回调接口
C
void (*OnCreateSessionRes)(int res) ;
描述
通知应用层投屏信令会话创建结果。
参数
名称 | 描述 |
---|---|
res | 创建成功该值为0。如果创建失败,返回错误码,详情参考onCallEnd 回调错误码 |
3.30.11 窗口信息列表回调接口
C
void (*onWindowList)(WindowInfo inf[], int &windowCnt)
描述
将获取到的应用程序窗口信息通知应用层。
参数
名称 | 描述 |
---|---|
windowCnt | 窗口个数 |
inf | 窗口信息列表数组 |
WindowInfo
定义如下:
C
typedef struct{
intptr_t id;
char title[128];
uint8_t icon[307200];
int iconSize;
void *hIcon;
}WindowInfo;
名称 | 描述 |
---|---|
id | 窗口ID |
title | 窗口名称 |
icon | 窗口图标 |
iconSize | 窗口图标大小 |
hIcon | 窗口图标句柄 |
3.30.12 收藏拉流接收端信息通知回调接口
C
void (*onReverseCastNotify)(const char *receiver_ip1, const char *receiver_ip2, const char *target_name,
const char *target_pincode) = 0;
描述
通知应用层接收端信息。仅BJ72使用,非BJ72接收端仅须实现一个空的函数即可。
参数
名称 | 描述 |
---|---|
receiver_ip1 | 接收端IP |
receiver_ip2 | 接收端IP |
target_name | 投屏目标接收端名称 |
target_pincode | 接收端投屏密码 |
4 如何使用SDK
4.1 集成简要说明
步骤一 引入库文件
MSVC工程正确引入bjcast_sender_wrapper.lib和头文件。
步骤二 调用SDK接口
在代码中使用SDK提供的接口发进行投屏等相关操作,具体实现请参考bjcast_demo相关示例代码。