产品百科 | RTC Windows SDK 如何调用屏幕分享接口

简介: 阿里云 RTC SDK 为您提供屏幕分享使用的接口方法,通过本文档您可以了解实现的具体调用流程。

阿里云 RTC SDK 为您提供屏幕分享使用的接口方法,通过本文档您可以了解实现的具体调用流程。

背景信息

目前 Windows SDK 屏幕分享功能支持屏幕分享和窗口分享两种类型,其中屏幕分享还支持指定区域进行分享,应用侧可根据业务场景设置分享内容并推流。

说明 本文将推流端的操作分为屏幕分享和窗口分享两种类型。

屏幕分享

  1. 推流端创建 SDK 实例后,通过接口 getScreenShareSourceInfo 可以获取当前屏幕分享源,其中参数 source_type 指定 AliRtcScreenShareDesktop,然后 SDK 通过 source_list 参数返回当前设备所有显示器设备。
AliRtcEngine *pEngine = AliRtcEngine::sharedInstance(this, "");
// 获取屏幕分享source
AliRtcScreenSourceList sourceList;
pEngine->getScreenShareSourceInfo(AliRtcScreenShareDesktop, sourceList);
// 遍历所有支持屏幕
for (int i = 0; i < sourceList.sourceNum; i++) {
}


说明 屏幕分享只有在当前设备接入显示器超过 1 个时,会返回多个 source。


  1. 通过接口 setScreenShareSource 设置屏幕分享 source,其中 source 参数中的 sourceId 设置为需要分享的屏幕 source id(上一步骤中获取),同时如果业务需要只分享屏幕中的部分区域,则设置 source 参数中的 isShareByRegion 字段为 true,同时将要分享区域的左上角坐标和宽高,赋值给 source 参数中的 shareRegion 变量。
// 设置屏幕分享源为屏幕分享,并指定分享屏幕source id
AliRtcScreenSource source;
source.eType = AliRtcScreenShareDesktop;
source.sourceId = sourceId;
// 如果需要按区域分享,则设置isShareByRegion为true,并指定分享区域,如分享屏幕左上角100 x 100的区域
source.isShareByRegion = true;
source.shareRegion.originX = 0.f;
source.shareRegion.originY = 0.f;
source.shareRegion.width = 100.f;
source.shareRegion.height = 100.f;
// 设置分享内容
pEngine->setScreenShareSource(source);


说明 按区域分享时,设置分享区域最小分辨率为 16x16,设置区域小于最小分辨率时重置为最小分辨率;按区域分享时,设置分享区域超过实际桌面分辨率时,将按照完整桌面分辨率分享,桌面分辨率可通过接口 getDesktopResolution 接口获取,用于分享区域设置校验。


  1. 配置分享内容完成后,启动屏幕共享推流。
// 配置屏幕分享推流
pEngine->configLocalScreenPublish(true);
// 启动推流
pEngine->publish();
  1. 结束分享时,配置屏幕共享流停推。
// 配置屏幕分享停止
pEngine->configLocalScreenPublish(false);
// 启动停推
pEngine->publish();

窗口分享

  1. 推流端创建 SDK 实例后,通过接口 getScreenShareSourceInfo 可以获取当前屏幕分享源,其中参数 source_type 指定 AliRtcScreenShareWindow,然后 SDK 通过 source_list 参数返回当前电脑上所有可见窗口的 source id 和 source title。
AliRtcEngine *pEngine = AliRtcEngine::sharedInstance(this, "");
// 获取屏幕分享source
AliRtcScreenSourceList sourceList;
pEngine->getScreenShareSourceInfo(AliRtcScreenShareWindow, sourceList);
// 遍历所有支持分享窗口
for (int i = 0; i < sourceList.sourceNum; i++) {
}


说明 SDK 只会返回所有当前可见(没有最小化且 Size 不为 0)的窗口作为分享源。


  1. 通过接口 setScreenShareSource 设置屏幕分享 source,其中 source 参数的 sourceId 设置为需要分享窗口 id(上一步骤中获取)。
// 设置屏幕分享源为屏幕分享,并指定分享屏幕source id
AliRtcScreenSource source;
source.eType = AliRtcScreenShareWindow;
source.sourceId = sourceId;
// 设置分享内容
pEngine->setScreenShareSource(source);
  1. 配置分享内容完成后,启动屏幕共享推流。
// 配置屏幕分享推流
pEngine->configLocalScreenPublish(true);
// 启动推流
pEngine->publish();


说明 设置分享源到启动推流过程中,如果指定的分享窗口发送变化(被关闭 / 不可见)导致无法分享,推流将会发生失败,业务方调用时需要关注推流结果是否成功;分享过程中,如果分享窗口被最小化,同样会导致 SDK 无法抓取数据,分享内容异常。


  1. 结束分享时,配置屏幕共享流停推。
// 配置屏幕分享停止
pEngine->configLocalScreenPublish(false);
// 启动停推
pEngine->publish();

订阅端

订阅端用户可通过自动或手动方式订阅推流端屏幕分享视频流,并设置对应 View 显示,详情请参见 AliRtcEngine 接口


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

image.png

相关文章
|
2月前
|
API 开发工具 C#
神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?
本文将介绍,ClkLog针对神策不支持全埋点的客户端实现用户访问基础统计分析 1。
神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?
|
2月前
|
API 开发工具 UED
在 UWP 中使用 Windows App SDK
【10月更文挑战第17天】在UWP中使用Windows App SDK可增强应用功能和性能。首先了解SDK特性,接着安装Visual Studio 2022及以上版本,并从微软官网下载安装SDK。配置项目时,确保目标版本支持SDK,添加SDK引用后即可使用新API提升应用体验。开发过程中应充分利用调试工具进行测试,确保应用的兼容性和稳定性。
|
4月前
|
编解码 开发工具 Android开发
Windows平台RTMP推送|轻量级RTSP服务如何实现摄像头叠加到屏幕输出
大牛直播SDK采用先进的图层概念实现视频叠加,如将摄像头画面实时叠加到屏幕输出,以C#为例展示了具体的配置方法。用户可在推送RTMP或启动RTSP服务前选择“摄像头叠加到屏幕”的选项,并调整位置。SDK还支持摄像头的开启与关闭、水平垂直翻转及旋转等功能。此外,该SDK提供了丰富的特性,包括但不限于视频和音频采集处理、硬编码与软编码支持、多实例推送、水印添加、网络适应性调整等,几乎涵盖了RTMP推送的所有常规需求,并能与播放器协同工作达到毫秒级的低延迟,非常适合无纸化同屏、智慧教室等应用场景。
|
4月前
|
编解码 开发工具 数据安全/隐私保护
如何快速实现Windows平台屏幕摄像头采集并推送RTMP|轻量级RTSP服务能力?
一个好的推送模块,除了实现高效率的编码传输外,还要有好的音视频采集机制和灵活的架构支持,便于后期功能扩展,比如实时快照、预览、实时录像等。除此之外,还要有好的交互机制(比如envent callback)、低延迟和长期运行稳定的性能。
|
4月前
|
编解码 开发工具 C#
[大牛直播SDK]Windows平台RTMP直播推送模块功能设计
大牛直播SDK采用全自研框架,具备高度可扩展性与自适应算法,显著降低延迟并提高采集编码效率。SDK以模块化设计,支持RTMP推流及多种音视频编码格式(如AAC、SPEEX、H.264、H.265),并能与播放器SDK组合实现丰富功能,包括流媒体转发、内置RTSP服务等。提供了详尽的参数配置选项,支持多摄像头、屏幕采集与水印叠加,并兼容Windows 7及以上操作系统。该SDK以C++/C#双接口形式提供,集成简便,同时包含调试与发布版本库,便于开发者快速上手。此外,支持断网重连、实时预览及多种编码前后的数据对接需求。
|
4月前
|
移动开发 JavaScript Java
windows7下安装配置phonegap3.0 (cordavo)开发环境 (涉及android sdk配置)
windows7下安装配置phonegap3.0 (cordavo)开发环境 (涉及android sdk配置)
|
7月前
|
Windows
LabVIEW启用/禁用Windows屏幕保护程序
LabVIEW启用/禁用Windows屏幕保护程序
71 4
LabVIEW启用/禁用Windows屏幕保护程序
|
7月前
|
前端开发 Java Maven
java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot
java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot
1082 0
|
数据采集 开发工具 图形学
Windows平台实现Unity下窗体|摄像头|屏幕采集推送
随着Unity3D的应用范围越来越广,越来越多的行业开始基于Unity3D开发产品,如传统行业中虚拟仿真教育、航空工业、室内设计、城市规划、工业仿真等领域。
109 0
|
7月前
|
Dart Shell 开发工具
解决windows安装Flutter时出现Unknown operating system. Cannot install Dart SDK.问题
解决windows安装Flutter时出现Unknown operating system. Cannot install Dart SDK.问题
210 0

热门文章

最新文章