Ohos

更新时间: 2025-06-18 14:20:47

通过阅读本文,您可以了解到屏幕分享的使用方法。

注意

1)从应用安全考虑,移动端默认未开通屏幕共享功能。如果您想开通移动端屏幕共享功能,请提交工单申请

2)申请需要提供:1. 阿里云UID 2.需要开通移动端屏幕共享的RTC的AppId (请用公司正式账号申请)

发布端

启动屏幕分享。

// 配置屏幕分享推流
//获取DingRtcEngine实例
let dingRtc = DingRtcSDK.create(context);
let ret = dingRtc.startScreenShare(DingRtcConstants.RtcScreenShareMode.RtcScreenShareAll);
.....
  1. 推流后通过回调判断屏幕共享是否发布成功。

      onScreenSharePublishStateChanged(oldState: DingRtcConstants.RtcEnginePublishState, newState: DingRtcConstants.RtcEnginePublishState,
                                        elapseSinceLastState: number, channel: string): void {};

    参数

    类型

    描述

    oldState

    RtcEnginePublishState

    之前的发布状态。

    newState

    RtcEnginePublishState

    当前的发布状态。

    elapseSinceLastState

    number

    状态变更时间间隔。单位:毫秒。

    channel

    String

    当前频道ID。

  2. 停止屏幕分享。

    let ret = dingRtc.stopScreenShare();;
  3. 停止屏幕共享后通过回调判断屏幕共享是否取消发布成功。

      onScreenSharePublishStateChanged(oldState: DingRtcConstants.RtcEnginePublishState, newState: DingRtcConstants.RtcEnginePublishState,
                                        elapseSinceLastState: number, channel: string): void {};

    参数

    类型

    描述

    oldState

    RtcEnginePublishState

    之前的发布状态。

    newState

    RtcEnginePublishState

    当前的发布状态。

    elapseSinceLastState

    int

    状态变更时间间隔。单位:毫秒。

    channel

    String

    当前频道ID。

  4. 异常状态监听,通过实现onOccurError 回调,兼容屏幕共享过程中发生的错误

    onOccurError(error: number, msg: string): void {
          Prompt.showToast({ duration: 2000, message: 'onOccurError: ' + error + " ," + msg });
          if (error == DingRtcConstants.ErrorCode.ScreenShareNoPermission) {
            Prompt.showToast({ duration: 2000, message: '录屏权限未开启' });
            this.local.isScreenOn = false;
            this.chat.pubScreen(this.local.isScreenOn, this.local.screenMode);
          } else if (error == DingRtcConstants.ErrorCode.ScreenShareStopByUser) {
            Prompt.showToast({ duration: 2000, message: '录屏被用户手动关闭' });
            this.local.isScreenOn = false;
            this.chat.pubScreen(this.local.isScreenOn, this.local.screenMode);
          } else if (error == DingRtcConstants.ErrorCode.ScreenShareStopByOther) {
            Prompt.showToast({ duration: 2000, message: '录屏被系统关闭' });
            this.local.isScreenOn = false;
            this.chat.pubScreen(this.local.isScreenOn, this.local.screenMode);
          }};

订阅端

订阅端用户可通过自动或手动方式订阅发布端屏幕分享视频流,并设置对应View显示,详情请参见DingRtcEngine接口

上一篇: Web 下一篇: 分组讨论
阿里云首页 音视频通信 相关技术圈