# 实现屏幕共享

# 简介

屏幕共享可以让您和频道中的其他成员一起分享设备里的精彩内容,您可以在频道中利用屏幕共享的功能进行文档演示、在线教育演示、视频会议以及游戏过程分享等。

# 适用场景

应用行业 场景说明
在线教育 教学PPT等文档展示
视频会议 会议中文件共享
社交娱乐 游戏画面及过程分享

# 前提条件

  • Android设备

    • 集成服务器音视频录制功能前,请确保您已经集成了基础的多方音视频通话功能。

    • 发起屏幕共享需要 Android 5.0 及以上。

  • IOS设备

    • 集成服务器音视频录制功能前,请确保您已经集成了基础的多方音视频通话功能。

    • 发起屏幕共享需要 iOS 11.0 及以上。目前 iOS 只支持应用内的屏幕共享。

WARNING

如果用户在 Android 10 或以上版本上共享屏幕,为避免 Android 系统触发 SecurityException( Android 原生回调),需要在 AndroidManifest.xml 文件中添加下面的声明否则高版本的 Android 终端将无法使用屏幕共享功能。

另外SDK 不支持模拟器运行,请使用真机。

# 集成步骤

# 开启/关闭屏幕共享

您可以调用 enableScreenShare (opens new window) 方法开启屏幕共,并设置享采集属性,包括采集的高度、宽度和帧速率。

  • enable:boolean类型 开启/关闭屏幕分享

  • screenShareParam

    • bitrat:int类型 屏幕分享码率,单位为 kbps,默认值 0 表示使用媒体引擎的默认值

    • frameRate:int类型 屏幕分享帧率 默认值 0 表示使用媒体引擎的默认值

    • resolution int类型 屏幕分享分辨率


this.JRTCEngine.enableScreenShare(enable,screenShareParam);

# 请求屏幕共享的视频流

如果频道中有成员开启了屏幕共享,其他成员将收到 CHANNEL_UPDATE (opens new window) 的回调,您可以通过 上报上来的 screenUserId 属性获得发起屏幕共享的用户标识。 如果screenUserId不为空的话,将JCScreenShareVideoCanvas组件渲染出来就行。

/**
 * 请求屏幕共享的视频流
 * 当 pictureSize 为 JCMediaChannelPictureSizeNone 表示关闭请求
 *
 * @param screenUri     屏幕分享uri
 * @param pictureSize   视频请求尺寸类型
 * @return              返回 true 表示正常执行调用流程,false 表示调用异常
 * @see JCMediaChannel.PictureSize
 */
public abstract boolean requestScreenVideo(String screenUri, @PictureSize int pictureSize);

# 示例代码

// 开启或关闭屏幕共享
public void customEnableScreenShare(){
  String selfUserId = mClient.getUserId();
  String screenUserId = mMediaChannel.getScreenUserId();
  if (TextUtils.equals(selfUserId, screenUserId)){
    mMediaChannel.enableScreenShare(false);
  }else{
    mMediaChannel.enableScreenShare(true);
  }
}

// 请求屏幕共享的视频流
@Override
public void onMediaChannelPropertyChange(JCMediaChannel.PropChangeParam propChangeParam) {
  if (propChangeParam.screenShare && mMediaChannel.getScreenUserId() != null) {
    // 请求视频流
    mMediaChannel.startScreenShareVideo(RENDER_FULL_SCREEN, PICTURESIZE_SMALL);
    mMediaChannel.requestScreenVideo(mMediaChannel.getScreenRenderId(),JCMediaChannel.PICTURESIZE_LARGE);
  }
}
最后更新时间: 2023/11/23 15:08:55