屏幕共享
简介
Pano SDK 桌面和浏览器版本支持将屏幕画面分享给其他用户。
Pano 的屏幕共享可以和视频画面同时发送/接收。
各端 SDK 相关接口,请查看下列介绍:
Windows (C++)
屏幕共享事件通知
通过继承 RtcEngine::Callback
类,重写回调接口来处理 Pano SDK 返回的通知。
和屏幕共享有关的事件通知如:
onUserScreenStart
其他用户开启屏幕共享onUserScreenStop
其他用户关闭屏幕共享onUserScreenMute
其他用户暂停屏幕共享onUserScreenUnmute
其他用户恢复屏幕共享onUserScreenSubscribe
订阅其他用户屏幕共享的结果onFirstScreenDataReceived
收到其他用户的第一个屏幕共享数据包
屏幕共享源管理
通过 RtcEngine::getScreenSourceManager
方法获取屏幕共享源管理器(ScreenSourceManager
),相关方法如:
ScreenSourceManager::enumerateDisplays
枚举显示屏幕ScreenSourceManager::enumerateApplications
枚举显示应用ScreenSourceManager::enableFilterSelfApp
设置是否过滤自己的进程(设置后当前进程的画面不会被共享出去)ScreenSourceManager::setScreenOptimization
设置屏幕共享模式(通常无需设置,默认forMotion
为false
,适用于大多数场景)ScreenSourceManager::setScreenSource
设置屏幕共享源
以下为屏幕共享源管理高级接口(适用于特殊场景,通常不需要使用):
ScreenSourceManager::beginConfiguration
开始配置,调用此接口后,才可以调用下列其他接口ScreenSourceManager::selectSharedDisplay
选择需要共享的显示器ScreenSourceManager::addSharedScreenSource
添加屏幕共享源ScreenSourceManager::removeSharedScreenSource
移除指定的屏幕共享源ScreenSourceManager::addUnsharedScreenSource
添加不希望被共享的屏幕源ScreenSourceManager::removeUnsharedScreenSource
移除指定的不被共享的屏幕源ScreenSourceManager::commitConfiguration
提交配置
开启屏幕共享
通过 RtcEngine::startScreen
方法开启屏幕共享。
请在加入频道成功后再调用此接口。
停止屏幕共享
通过 RtcEngine::stopScreen
方法停止屏幕共享。
暂停与恢复屏幕共享
通过 RtcEngine::muteScreen
方法暂停屏幕共享,RtcEngine::unmuteScreen
方法恢复屏幕共享。
订阅其他用户的屏幕共享
通过 RtcEngine::subscribeScreen
方法订阅其他用户的屏幕共享。
subscribeScreen
有两个重载方法,参数类型不同,一个传入数据接收漕,一个传入显示渲染窗口。
请在收到 其他用户开启屏幕共享 通知后再订阅该用户的屏幕共享。
取消订阅屏幕共享
通过 RtcEngine::unsubscribeScreen
方法取消订阅其他用户的屏幕共享。
其他高级功能
以下高级接口用于接收方设置显示效果:
RtcEngine::updateScreenScalingRatio
更新整个屏幕共享的缩放比例(绝对缩放)RtcEngine::updateScreenScalingRatioWithFocus
基于特定坐标点更新屏幕共享的缩放比例(相对缩放,例如,基于某个坐标点操作双指缩放)RtcEngine::updateScreenMovingDistance
移动屏幕共享的显示位置
macOS (Objective-C)
屏幕共享事件通知
通过实现 PanoRtcEngineDelegate
协议的回调方法来处理 Pano SDK 返回的通知。
和屏幕共享有关的事件通知如:
- onUserScreenStart:
其他用户开启屏幕共享- onUserScreenStop:
其他用户关闭屏幕共享- onUserScreenMute:
其他用户暂停屏幕共享- onUserScreenUnmute:
其他用户恢复屏幕共享- onUserScreenSubscribe:withResult:
订阅其他用户屏幕共享的结果- onFirstScreenDataReceived:
收到其他用户的第一个屏幕共享数据包- onScreenSendStats:
开启屏幕共享的统计- onScreenRecvStats:
接收屏幕共享的统计
屏幕共享源管理
PanoRtcEngineKit
的屏幕共享源管理相关方法如:
- enumerateScreenSources:
枚举屏幕共享源(通过PanoScreenSourceType
参数指定屏幕共享源类型:屏幕或应用,窗口暂未支持)- enableSreenFilterSelfApp:
设置是否过滤自己的进程(设置后当前进程的画面不会被共享出去)- setScreenOptimization:
设置屏幕共享模式(通常无需设置,默认forMotion
为false
,适用于大多数场景)- setScreenSource:withType:
设置屏幕共享源
以下为屏幕共享源管理高级接口(适用于特殊场景,通常不需要使用):
- beginScreenConfiguration:
开始配置,调用此接口后,才可以调用下列其他接口- selectSharedScreen:
选择需要共享的屏幕- addSharedScreenSource:withType:
添加屏幕共享源- removeSharedScreenSource:withType:
移除指定的屏幕共享源- addUnsharedScreenSource:withType:
添加不希望被共享的屏幕源- removeUnsharedScreenSource:withType:
移除指定的不被共享的屏幕源- commitScreenConfiguration
提交配置
开启屏幕共享
通过 PanoRtcEngineKit
的 - startScreen
方法开启屏幕共享。
请在加入频道成功后再调用此接口。
停止屏幕共享
通过 PanoRtcEngineKit
的 - stopScreen
方法停止屏幕共享。
暂停与恢复屏幕共享
通过 PanoRtcEngineKit
的 - muteScreen
方法暂停屏幕共享,- unmuteScreen
方法恢复屏幕共享。
订阅其他用户的屏幕共享
通过 PanoRtcEngineKit
的 - subscribeScreen:withView:
或 - subscribeScreen:withDelegate:
方法订阅其他用户的屏幕共享。
前者附带渲染视图,后者附带外置渲染器。
请在收到 其他用户开启屏幕共享 通知后再订阅该用户的屏幕共享。
取消订阅屏幕共享
通过 PanoRtcEngineKit
的 - unsubscribeScreen:
方法取消订阅其他用户的屏幕共享。
其他高级功能
PanoRtcEngineKit
的以下高级接口用于接收方设置显示效果:
- updateScreenScaling:withRatio:
更新整个屏幕共享的缩放比例(绝对缩放)- updateScreenScaling:withRatio:focus:
基于特定坐标点更新屏幕共享的缩放比例(相对缩放,例如,基于某个坐标点操作双指缩放)- updateScreenMoving:withDistance:
移动屏幕共享的显示位置
Web
屏幕共享事件通知
通过 RtcEngine 实例的 on
方法注册回调通知。
和屏幕共享有关的事件通知如:
getLocalScreen
获取本地屏幕共享成功,会返回videoTag
用于 UI 展示getScreenMediaFailed
获取本地屏幕共享失败(未授权或取消了共享)startScreenTimeout
开启屏幕共享超时localScreenEnded
SDK已停止本地屏幕共享(例如用户关闭了共享的应用程序)userScreenStart
其他用户开启屏幕共享userScreenStop
其他用户关闭屏幕共享userScreenMute
其他用户暂停屏幕共享userScreenUnmute
其他用户恢复屏幕共享userScreenReceived
收到其他用户的屏幕共享数据,会返回videoTag
用于 UI 展示failedToSubscribeScreen
订阅其他用户的共享屏幕失败
开启屏幕共享
通过 RtcEngine
的 startScreen
方法开启屏幕共享。
- 请在加入频道成功后再调用此接口。
- 开启屏幕共享可能失败,请注意处理
getScreenMediaFailed
、startScreenTimeout
通知。- 如需在本地显示屏幕共享,请处理
getLocalScreen
通知。
停止屏幕共享
通过 RtcEngine
的 stopScreen
方法停止屏幕共享。
暂停与恢复屏幕共享
通过 RtcEngine
的 muteScreen
方法暂停屏幕共享,unmuteScreen
方法恢复屏幕共享。
订阅其他用户的屏幕共享
通过 RtcEngine
的 subscribeScreen
方法订阅其他用户的屏幕共享。
请在收到 其他用户开启屏幕共享 通知后再订阅该用户的屏幕共享。
取消订阅屏幕共享
通过 RtcEngine
的 unsubscribeScreen
方法取消订阅其他用户的屏幕共享。