BRTC 支持屏幕分享,即将当前系统的屏幕内容通过 BRTC SDK 分享给房间里的其他用户。屏幕分享不但支持“辅路分享”, 也支持使用”主视频流“进行分享。使用主路视频流屏幕分享时,摄像头的采集建议先停止,否则会相互冲突。 屏幕共享功能需要在加入房间后,再调用相应函数启动或者关闭。
百家云 SDK 的屏幕共享特性可提供以下功能,适用于各种场景下的屏幕共享。
将你的整个屏幕进行共享,包括屏幕中的所有信息,该功能支持同时采集两块屏幕的信息并共享。
共享应用窗口
如果你不希望将整个屏幕内容分享给其他用户,可以只共享一个应用程序窗口画面。
共享指定区域
如果你只希望共享屏幕或应用程序窗口中的一部分,可以在开启屏幕共享时设置一个共享区域,只有该区域内的画面会被分享。
调用 getScreenCaptureSources,获取可共享的屏幕和窗口的对象列表,列表中包含窗口 ID 和屏幕 ID 等重要信息。方便用户通过列表中的缩略图选择共享某个显示器的屏幕或某个窗口。
// 获取指定的可共享窗口或屏幕的信息。 BRTCScreenCaptureSourceList* wndInfoList = m_pBrtc->getScreenCaptureSources(SIZE{120, 70}, SIZE{20, 20}); for (size_t i = 0; i < wndInfoList->getCount(); i++) { // 返回可共享窗口或屏幕的信息 BRTCScreenCaptureSourceInfo info = wndInfoList->getSourceInfo(static_cast<uint32_t>(i)); } wndInfoList->release();
根据实际应用场景,在以下 3 种屏幕共享方式中任选一种。
// 指定共享整个屏幕,rect 设为 { 0, 0, 0, 0 } m_pBrtc->selectScreenCaptureTarget(BRTCScreenCaptureSourceTypeScreen, info.sourceId, rect, property); m_pBrtc->startScreenCapture(nullptr, BRTCVideoStreamTypeSub, nullptr);
// 指定共享整个屏幕的指定区域,rect 设为 { 10, 20, 300, 300 } m_pBrtc->selectScreenCaptureTarget(BRTCScreenCaptureSourceTypeScreen, info.sourceId, rect, property); m_pBrtc->startScreenCapture(nullptr, BRTCVideoStreamTypeSub, nullptr);
// 指定共享的 app 窗口,rect 设为 { 0, 0, 0, 0 } m_pBrtc->selectScreenCaptureTarget(BRTCScreenCaptureSourceTypeWindow, info.sourceId, rect, property); m_pBrtc->startScreenCapture(nullptr, BRTCVideoStreamTypeSub, nullptr);
在房间内,你可以调用如下方法动态更新屏幕共享区域或参数。
// 指定共享窗口的指定区域,rect 设为 { 10, 10, 100, 200 } m_pBrtc->selectScreenCaptureTarget(BRTCScreenCaptureSourceTypeWindow, info.sourceId, rect, property);
在房间内,你可以修改参数值对共享区域或者窗口描边。 将 BRTCScreenCaptureProperty 中的 enableHighLight 设置为 true,并同时设置 highLightColor 和 highLightWidth 来指定描边的颜色和宽度。
enableHighLight
BRTCScreenCaptureProperty property = uiShareSelect.getProperty(); property.enableHighLight = true; property.highLightColor = 0xFFFF0000; property.highLightWidth = 15; // 指定共享 app 窗口的指定区域,rect 设为 { 10, 10, 100, 200 } m_pBrtc->selectScreenCaptureTarget(BRTCScreenCaptureSourceTypeWindow, info.sourceId, rect, property);
调用 stopScreenCapture 停止屏幕共享。
// 停止屏幕共享 m_pBrtc->stopScreenCapture();
通过设置 startScreenCapture 中的参数 encParams ,您可以指定屏幕分享的编码质量。如果您指定 encParams 为 null,SDK 会自动选择最佳的编码参数,我们推荐的参数设定如下:
encParams
当推流端使用 startScreenCapture 接口开启屏幕分享后,存在以下一些情况:
BRTCVideoStreamTypeBig
BRTCVideoStreamTypeSub
屏幕分享
BRTC 支持屏幕分享,即将当前系统的屏幕内容通过 BRTC SDK 分享给房间里的其他用户。
屏幕分享不但支持“辅路分享”, 也支持使用”主视频流“进行分享。使用主路视频流屏幕分享时,摄像头的采集建议先停止,否则会相互冲突。 屏幕共享功能需要在加入房间后,再调用相应函数启动或者关闭。
百家云 SDK 的屏幕共享特性可提供以下功能,适用于各种场景下的屏幕共享。
将你的整个屏幕进行共享,包括屏幕中的所有信息,该功能支持同时采集两块屏幕的信息并共享。
共享应用窗口
如果你不希望将整个屏幕内容分享给其他用户,可以只共享一个应用程序窗口画面。
共享指定区域
如果你只希望共享屏幕或应用程序窗口中的一部分,可以在开启屏幕共享时设置一个共享区域,只有该区域内的画面会被分享。
获取资源列表
调用 getScreenCaptureSources,获取可共享的屏幕和窗口的对象列表,列表中包含窗口 ID 和屏幕 ID 等重要信息。方便用户通过列表中的缩略图选择共享某个显示器的屏幕或某个窗口。
开启屏幕分享
根据实际应用场景,在以下 3 种屏幕共享方式中任选一种。
更新共享区域或参数
在房间内,你可以调用如下方法动态更新屏幕共享区域或参数。
对屏幕描边
在房间内,你可以修改参数值对共享区域或者窗口描边。 将 BRTCScreenCaptureProperty 中的
enableHighLight设置为 true,并同时设置 highLightColor 和 highLightWidth 来指定描边的颜色和宽度。停止屏幕共享
调用 stopScreenCapture 停止屏幕共享。
设定视频编码参数
通过设置 startScreenCapture 中的参数
encParams,您可以指定屏幕分享的编码质量。如果您指定encParams为 null,SDK 会自动选择最佳的编码参数,我们推荐的参数设定如下:观看屏幕分享
当推流端使用 startScreenCapture 接口开启屏幕分享后,存在以下一些情况:
BRTCVideoStreamTypeBig:BRTCVideoStreamTypeSub: