屏幕共享
提示
屏幕共享功能要求 RTCLib 版本 ≥ 5.1.8。音视频通话场景暂不支持该功能,即集成 CallKit 或 CallLib 的应用暂不支持。
RTCLib 支持屏幕共享。在音视频会议和直播时,可单独抓取屏幕视频数据,并将该视频流发送到房间中。参与会议或直播的其他用户可以拉取该视频流,观看当前共享屏幕的内容。
屏幕共享主流程
- 共享屏幕的一方(发布端)通过
RCRTCEngine
的getScreenShareVideoStream()
获取屏幕共享流 RCRTCScreenShareOutputStream 实例。该接口类封装了操作屏幕共享相关方法。 - 获取屏幕共享流对象后,调用
RCRTCScreenShareOutputStream
实例的startCaptureScreen
方法开始抓取屏幕。 - 根据当前房间模式(会议或直播),选择合适的方法将抓取的屏幕共享视频流发布到房间中。
- 参与会议或直播的用户拉取屏幕共享流。注意:直播模式下,观众角色通常订阅合流,融云服务端会自动在合流中加入屏幕共享流,观众无需单独订阅屏幕共享流。
若 RTCLib 版本 ≥ 5.1.15,可同时捕获第三方应用音频数据,并通过混音接口将捕获的音频数据发送到对端的,无需额外发布音频流。详见第三方应用音频捕获。
前置条件
-
在
AndroidManifest.xml
中添加如下 Activity:xml<activity android:name="cn.rongcloud.rtc.api.stream.RCRTCScreenShareActivity" />
-
在
AndroidManifest.xml
中添加如下 Service:xml<service
android:name="cn.rongcloud.rtc.api.stream.RCRTCScreenShareService"
android:enabled="true"
android:foregroundServiceType="mediaProjection" /> -
在
AndroidManifest.xml
中添加 如下前台服务权限:xml<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
步骤 1:开启屏幕抓取
-
通过
RCRTCEngine.getInstance().getScreenShareVideoStream()
获取用于屏幕共享的视频流,调用屏幕共享视频流对象的方法设置视频编码参数(帧率、分辨率、最大码率等)。提示默认屏幕共享流分辨率为 720×960,帧率为 15 fps。
JavaRCRTCVideoStreamConfig.Builder builder = Builder.create();
// 设置帧率
builder.setVideoFps(RCRTCVideoFps.Fps_15);
// 设置分辨率
builder.setVideoResolution(RCRTCVideoResolution.RESOLUTION_720_1280);
// 设置最大码率(kbps)
builder.setMaxRate(2500);
RCRTCEngine.getInstance().getScreenShareVideoStream().setVideoConfig(builder.build());