发起屏幕共享
功能介绍
在视频会议、在线课堂等场景中,可将本端屏幕、窗口或浏览器标签页画面分享给房间内其他成员观看。
浏览器环境下,调用 CRVideo_StartScreenShare 后由系统弹出采集选择框;用户选定共享源后 SDK 完成采屏、编码与推送。
注意:
须在成功进入房间后,方可发起屏幕共享。
同一房间内,同一时间仅允许一人开启屏幕共享。
共享端请勿在正在共享的屏幕区域内再显示本端「屏幕共享观看组件」,也不要在共享端运行观看端页面,否则可能出现画面无限嵌套。
移动端浏览器不支持屏幕共享
1. 配置共享参数(可选)
开始共享前,可通过 CRVideo_SetScreenShareCfg 设置帧率、码率等;通过 CRVideo_GetScreenShareCfg 查询当前配置。采集源由浏览器 getDisplayMedia 弹窗后用户手动选择,SDK无法预先枚举显示器或窗口列表。
CRVideo_ScreenShareCfg 常用字段:
| 参数 | 类型 | 说明 |
|---|---|---|
| maxFPS | Number | 最大帧率 |
| maxKbps | Number | 最大码率(kbps) |
| catchRect | Object | 共享区域,如 { left, top, width, height };不共享区域时可不传或传 null |
示例:
CRVideo_SetScreenShareCfg({
maxFPS: 15,
maxKbps: 2000,
});
2. 开始共享
CRVideo_StartScreenShare();
调用后浏览器弹出共享源选择;用户确认后开始推流。结果通过 CRVideo_StartScreenShareRslt 回调:
CRVideo_StartScreenShareRslt.callback = function (sdkErr) {
if (sdkErr == 0) {
// 开启成功
} else if (sdkErr == 700) {
// 房间内已有人在共享
} else if (sdkErr == 8002) {
// 用户拒绝或未授予采集权限
} else if (sdkErr == 8004) {
// 浏览器不支持 getDisplayMedia API
}
};
相关 API 请参考:
- CRVideo_SetScreenShareCfg
- CRVideo_GetScreenShareCfg
- CRVideo_StartScreenShare
- CRVideo_StartScreenShareRslt
3. 停止共享
CRVideo_StopScreenShare();
结果通过 CRVideo_StopScreenShareRslt 回调。用户也可在浏览器自带的「停止共享」控件中结束采集,SDK 会同步处理。
CRVideo_StopScreenShareRslt.callback = function (sdkErr) {
if (sdkErr == 0) {
// 停止成功
}
};
相关 API 请参考: