屏幕共享
更新时间: 2024/09/06 14:40:05功能介绍
在视频会话中为了提高沟通效率,可以将自己的屏幕内容分享给其他参与方观看。还支持在屏幕上进行标注,以及授权其他参与方进行远程控制。当屏幕共享者开启标注后,组件就进入标注模式。此时,房间内所有用户都可以进行标注,并观看他人标注的内容。
使用场景如下:
- 视频会议场景中,屏幕共享可以将讲话者本地的文件、数据、网页、PPT 等画面分享给其他与会人;
- 在线课堂场景中,屏幕共享可以将老师的课件、笔记、讲课内容等画面展示给学生观看。
注意:
注意:同一个房间中,不支持多人同时开启屏幕共享。
共享端
1.权限声明
使用uni-app启动屏幕共享必须进行如下配置,如果uni-app仅作为观看端可不配置
- 安卓平台,在uni-app项目根目录下,创建
AndroidManifest.xml
文件,复制下面的配置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
package="io.dcloud.nativeresouce">
<application>
<activity
android:name="com.rtc.screencapture.PermissionActivity"
android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation"
android:launchMode="singleTop"
android:screenOrientation="sensor" >
</activity>
<service android:name="com.rtc.screencapture.ScreenCaptureService"
android:exported="false"
android:enabled="true"
android:foregroundServiceType="mediaProjection" />
</application>
</manifest>
- iOS平台,如果需要屏幕共享共享功能,请配置
rtcsdk-plugin
目录下的ios-extension.json
文件,具体配置如下
{
"ScreenShareUpload.appex": {
"identifier": "主工程bundleId.ScreenShareUpload",
"profile": "自己开发者账号创建的配置文件名,例如iosRTCSDKUniPluginScreenShareUploadadhoc.mobileprovision",
"frameworks": ["CloudroomReplayKitExt.framework","libc++.tbd”, “ReplayKit.framework"],
"plists": {"CFBundleDisplayName”: “这里可配置录制进程名称,默认为ScreenShareUpload"},
"entitlements": {
"com.apple.security.application-groups": "group.主工程bundleId"
}
}
}
2.创建屏幕共享观看组件
使用可视化UI组件进行屏幕共享显示和操作
- 使用组件
<rtcsdk-screen-view style="width: 750rpx;height:300rpx" />
相关API请参考:
3.开始共享
- 接口调用:
//设置屏幕共享参数:帧率8,其他採用系統默认參數
const cfg = RTCSDK.getScreenShareCfg();
// 共享帧率
cfg.maxFps = 8;
// 共享码率
cfg.maxBps = 2000 * 1000;
// 配置共享参数
RTCSDK.setScreenShareCfg(cfg);
// 开始共享
RTCSDK.startScreenShare({
title: "uni-app Demo",// 通知标题文字
contentText: "正在进行屏幕共享" // 通知内容
});
- 回调通知:
// 开启结果
RTCSDK.on("startScreenShareRslt", ({ sdkErr }) => {
if (sdkErr == 0){
//开启屏幕共享成功
} else {
//开启屏幕共享失败
}
})
相关API请参考:
4.停止共享
- 接口调用:
//主动停止屏幕共享
RTCSDK.stopScreenShare();
- 回调通知:
//主动停止屏幕共享的结果
RTCSDK.on("stopScreenShareRslt", ({ sdkErr }) => {
if(sdkErr === 0) {
//结束屏幕共享成功
}
})
相关API请参考:
观看端
1.创建屏幕共享观看组件
使用可视化UI组件进行屏幕共享显示和操作
- 使用组件
<rtcsdk-screen-view v-if="isMediaLayout" style="width: 750rpx;height:300rpx" />
相关API请参考:
2.通知开始共享
- 回调通知:
//收到屏幕共享开启通知的处理,显示屏幕共享组件
RTCSDK.on("notifyScreenShareStarted", ({ userID }) => {
this.isMediaLayout = true;
})
//收到屏幕共享结束通知的处理,销毁屏幕共享组件
RTCSDK.on("notifyScreenShareStopped", ({ userID }) => {
this.isMediaLayout = false;
})
//收到屏幕共享标注开启通知
RTCSDK.on("notifyScreenMarkStarted", () => {
})
//收到屏幕共享标注结束通知
RTCSDK.on("notifyScreenMarkStopped", () => {
})
相关API请参考: