音视频通话

屏幕共享标注

功能介绍

屏幕共享进行中,可开启房间内标注:在共享画面上绘制笔迹,数据由 SDK 同步,共享者与观看者均能看到。标注绘制在屏幕共享 UI 组件自带的 canvas 层上,用户在该层按下鼠标拖动即可画线,无需业务层自行封装发送接口。

开启标注后,房间内成员在已创建且允许标注的 CRVideo_ScreenShareObj 上均可参与绘制(是否允许他人标注可由服务端/会议侧策略控制)。

注意:

须在成功进入房间后,方可使用屏幕共享标注;且须房间内已有人开启屏幕共享。

须已创建屏幕共享 UI 组件并完成 setVideo,再通过 setMark 开启本端绘制能力。

1. 开启与停止标注

CRVideo_StartScreenMark();
CRVideo_StopScreenMark();

结果分别通过 CRVideo_StartScreenMarkRsltCRVideo_StopScreenMarkRslt 回调。停止标注时 SDK 会清空房间内标注数据。

CRVideo_StartScreenMarkRslt.callback = function (sdkErr) {
  if (sdkErr == 0) {
    // 标注模式已开启
  }
};

CRVideo_StopScreenMarkRslt.callback = function (sdkErr) {
  if (sdkErr == 0) {
    // 标注模式已停止
  }
};

房间内标注状态变化通知:

CRVideo_NotifyScreenMarkStarted.callback = function (UID) {
  // UID:开启标注的操作者
};

CRVideo_NotifyScreenMarkStopped.callback = function (UID) {
  // UID:停止标注的操作者
};

相关 API 请参考:

2. 配置本端绘制

在屏幕共享 UI 组件上调用 setMark,传入 CRVideo_MarkOptions

参数 类型 说明
allowMark Boolean 是否允许在本组件上绘制,默认 false
type Number 画笔类型,默认 1(铅笔)
strokeStyle String 颜色,如 "#ff0000"
lineWidth Number 线宽(px)
cursor String 鼠标样式,如自定义画笔图标

示例:标注模式开启后,允许用户在观看组件上绘制:

screenShareObj.setMark({
  allowMark: true,
  type: 1,
  strokeStyle: "#ff0000",
  lineWidth: 3,
});

标注模式开启后,SDK 会显示组件内 canvas 层;在 allowMarktrue 的组件上按住鼠标拖动即可画线,松开后自动同步至房间内其他端。

若业务层调整了屏幕共享组件外层容器尺寸,可在尺寸变化后调用组件的 markResize(),使标注层重新适配容器。

相关 API 请参考:

相关文档