天天看點

産品百科 | RTC Windows 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);      
// 配置螢幕分享推流
pEngine->configLocalScreenPublish(true);
// 啟動推流
pEngine->publish();      

說明 設定分享源到啟動推流過程中,如果指定的分享視窗發送變化(被關閉 / 不可見)導緻無法分享,推流将會發生失敗,業務方調用時需要關注推流結果是否成功;分享過程中,如果分享視窗被最小化,同樣會導緻 SDK 無法抓取資料,分享内容異常。

// 配置螢幕分享停止
pEngine->configLocalScreenPublish(false);
// 啟動停推
pEngine->publish();      

訂閱端

訂閱端使用者可通過自動或手動方式訂閱推流端螢幕分享視訊流,并設定對應 View 顯示,詳情請參見

AliRtcEngine 接口

「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。
産品百科 | RTC Windows SDK 如何調用螢幕分享接口