App内嵌视频通话屏幕共享功能实现

App内嵌视频通话屏幕共享是一项常见功能,所谓屏幕共享是指在视频通话或互动直播过程中将屏幕内容以视频的方式分享给其他的观众,以增强互动体验,提高沟通效率。本文以 iOS 平台为例,分享如何基于即构实时音视频SDK(ZEGO Express SDK)实现屏幕共享功能。

App内嵌视频通话屏幕共享功能实现

前提条件

在实现屏幕共享功能之前,请确保:

  • 支持 iOS 12.0 或以上版本且支持音视频的 iOS 设备或模拟器(推荐使用真机)。
  • 该功能对设备性能要求较高,推荐在 iPhone X 及之后机型上使用。
  • 注册 ZEGO 账户,在控制台创建项目,并申请有效的 AppID 和 AppSign,详情请参考 控制台 – 项目信息
  • 已在项目中集成 ZEGO Express SDK,并实现了基本的音视频推拉流功能,详情请参考 快速开始 – 集成 和 快速开始 – 实现流程

实现流程

iOS 平台是基于苹果的 Replaykit 框架实现屏幕录制,能够分享整个系统的屏幕内容。但需要当前 App (主 App 进程)额外提供一个 Extension 扩展组件(Extension 进程),用于录制屏幕,再结合 ZEGO Express SDK 相关 API 来实现屏幕共享功能。

实现屏幕共享的主要流程如下:

  1. 切换采集源为屏幕共享源
  2. 开始屏幕共享(应用内共享)
  3. 登录房间推流
  4. 观看远端共享屏幕
  5. 停止屏幕共享

详细的操作请参考下文。

1. 在主 App 设置采集源为屏幕共享源

设置采集源为屏幕共享源,则需要对视频源和音频源进行设置。

SDK 推流的“视频源”默认为摄像头源,如果需要推屏幕共享源,需要通过 setVideoSource 进行切换为屏幕共享。

[ZegoExpressEngine.shareEnigne setVideoSource:ZegoVideoSourceScreenCapture channel:ZegoPublishChannelMain];

SDK 推流的“音频源”默认为麦克风源,如果需要推屏幕共享源,需要通过 setAudioSource 进行切换为屏幕共享。

[ZegoExpressEngine.shareEnigne setAudioSource:ZegoAudioSourceTypeScreenCapture channel:ZegoPublishChannelMain];

2. 开始屏幕共享

有两种屏幕共享方式,分别为“应用内屏幕共享”和“跨应用屏幕共享”。这里以前者为例:

若用户只在应用内共享画面与声音,可以调用 startScreenCaptureInApp 接口开启屏幕共享。也可调用 broadcastFinished 接口回调屏幕共享结束通知,若屏幕采集失败可接收到失败的原因。

代码如下:

ZegoScreenCaptureConfig *config = [[ZegoScreenCaptureConfig alloc] init];
config.captureVideo = true;
config.captureAudio = true;
// 可选参数,设置视频的采集区域,必须在原始的视频数据之内,单位为像素(px)
config.cropRect = CGRectMake(x, y, width, height);
[ZegoExpressEngine.sharedEngine startScreenCaptureInApp:config];

3. 登录房间推流

完成上述屏幕共享源的采集过程后,将采集到的数据源 startPublishingStream 推送到云服务器。(推送数据源的通道必须与设置采集源的通道保持一致)示例代码如下:

[ZegoExpressEngine.sharedEngine startPublishingStream:streamID channel:ZegoPublishChannelMain];

4. 观看远端屏幕共享

完成以上步骤后,其他用户可以使用 startPlayingStream 接口拉取屏幕共享流。示例代码如下:

// 拉流播放,需传入发起屏幕共享的用户推流时所用的 streamID
[[ZegoExpressEngine sharedEngine] startPlayingStream:streamID canvas:[ZegoCanvas canvasWithView:self.playView]];

5. 停止屏幕共享

用户可以调用 stopScreenCapture 接口停止共享。

[ZegoExpressEngine.sharedEngine stopScreenCapture];

通过以上步骤即可在iOS APP内集成视频通话共享屏幕功能。如需在 Android 端实现可参考文章《Android实现屏幕共享功能》。

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/yinshipin/63545.html

(0)

相关推荐

发表回复

登录后才能评论