屏幕采集
queryScreenCaptureCapability
查询设备在屏幕共享时支持的最高帧率。
- (AgoraScreenCaptureFrameRateCapability)queryScreenCaptureCapability NS_SWIFT_NAME(queryScreenCaptureCapability());
v4.2.0
返回值
-
方法调用成功时,返回设备支持的最高帧率。详见
AgoraScreenCaptureFrameRateCapability
。 -
方法调用失败时,返回
nil
。
setScreenCaptureScenario
设置屏幕共享的场景。
- (int)setScreenCaptureScenario:(AgoraScreenScenarioType)scenarioType
NS_SWIFT_NAME(setScreenCaptureScenario(_:));
开启屏幕共享或窗口共享时,你可以调用该方法设置屏幕共享的场景,SDK 会根据你设置的场景调整共享画面的画质。
注: 声网建议你在加入频道前调用该方法。
参数
参数名 | 描述 |
---|---|
scenarioType | 屏幕共享的场景,详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
startScreenCapture
开始屏幕采集。
- (int)startScreenCapture:(AgoraScreenCaptureParameters2* _Nullable)parameters NS_SWIFT_NAME(startScreenCapture(_:));
开启屏幕共享有如下两种方案,你可以根据实际场景进行选择:
-
在加入频道前调用该方法,然后调用
joinChannelByToken [2/4]
加入频道并设置publishScreenCaptureVideo
为YES
,即可开始屏幕共享。 -
在加入频道后调用该方法,然后调用
updateChannelWithMediaOptions
设置publishScreenCaptureVideo
为YES
,即可开始屏幕共享。
屏幕共享 Extension 进程状态发生改变时,SDK 会相应地触发 localVideoStateChangedOfState
回调,当 sourceType
的类型为 AgoraVideoSourceTypeScreen
时,state
参数表示屏幕共享的状态。
注意:
-
在 iOS 平台上,屏幕共享仅适用于 iOS 12.0 及以上。
-
屏幕共享流的计费以
AgoraScreenVideoParameters
中的dimensions
值为准:当你未传值时,以 1280 × 720 计费;当你传值时,以你传入的值计费。详细的计费规则请参考计费说明
。 -
在 iOS 平台上,如果你使用音频自采集而非 SDK 采集音频,为避免应用退后台后屏幕共享停止,建议你对应用添加保活处理逻辑。
-
在 iOS 平台上,该功能对设备性能要求较高,建议你在 iPhone X 及之后机型上使用。
-
在 iOS 平台上,该方法依赖于屏幕共享动态库
AgoraReplayKitExtension.xcframework
,如果删除该动态库会导致无法正常开启屏幕共享。
参数
参数名 | 描述 |
---|---|
parameters | 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2,073,600 像素。该像素值为计费标准。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败
-
-2: 参数为空。
-
stopScreenCapture
updateScreenCapture
更新屏幕采集的参数配置。
- (int)updateScreenCapture:(AgoraScreenCaptureParameters2* _Nonnull)parameters NS_SWIFT_NAME(updateScreenCapture(_:));
如果在开启屏幕共享时未采集系统音频、然后想要更新参数配置、发布系统音频,可参考以下步骤:
-
调用该方法并设置
captureAudio
为YES
。 -
调用
updateChannelWithMediaOptions
设置publishScreenCaptureAudio
为YES
,即可发布屏幕采集的音频。
注意:
- 在 iOS 平台上,屏幕共享仅适用于 iOS 12.0 及以上。
参数
参数名 | 描述 |
---|---|
parameters | 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2073600 像素。该像素值为计费标准。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。
-
-2:传入的参数无效。
-
-8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用
stopScreenCapture
停止当前共享,再重新开始共享屏幕。
-