屏幕采集
queryScreenCaptureCapability
查询设备在屏幕共享时支持的最高帧率。
Objective-C
- (AgoraScreenCaptureFrameRateCapability)queryScreenCaptureCapability NS_SWIFT_NAME(queryScreenCaptureCapability());
自从
自 v4.2.0 版本新增。
适用场景
为确保屏幕共享的最佳性能,特别是在启用如 60 fps 的高帧率时,建议你在共享前使用该方法查询设备支持的最高帧率。
调用时机
你可以在开始屏幕共享前调用该方法,查询设备支持的最高帧率,以确保屏幕共享的最佳性能,特别是在启用如 60 fps 的高帧率时。如果设备不支持高帧率,你可以相应地降低屏幕共享流的帧率,以避免影响共享质量,确保共享效果符合预期。
返回值
- 方法调用成功,返回设备支持的最高帧率。详见 AgoraScreenCaptureFrameRateCapability。
- 方法调用失败,返回 nil。
setScreenCaptureScenario:
设置屏幕共享场景。
Objective-C
- (int)setScreenCaptureScenario:(AgoraScreenScenarioType)scenarioType NS_SWIFT_NAME(setScreenCaptureScenario(_:));
调用该方法设置屏幕共享场景。SDK 会根据设置的场景优化共享的视频质量和用户体验。
信息
声网建议你在加入频道前调用此方法。
参数
- scenarioType
- 屏幕共享场景。详见 AgoraScreenScenarioType。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
startScreenCapture:
开始屏幕采集。
Objective-C
- (int)startScreenCapture:(AgoraScreenCaptureParameters2* _Nullable)parameters NS_SWIFT_NAME(startScreenCapture(_:));
你可以调用该方法开始采集屏幕视频流。
信息
- 在 iOS 平台,屏幕共享仅支持 iOS 12.0 及以上版本。
- 如果你使用自定义音频源而非 SDK 采集音频,声网建议你在应用中添加保活处理逻辑,以避免应用进入后台后屏幕共享中断。
- 此功能对设备性能要求较高,声网建议在 iPhone X 及以上机型上使用。
- 此方法依赖 iOS 屏幕共享动态库
AgoraReplayKitExtension.xcframework。如果该动态库被删除,将无法正常启用屏幕共享。 - 为避免屏幕共享时系统音频采集失败,声网建议你在加入频道前通过 setAudioScenario: 方法将音频应用场景设置为
AgoraAudioScenarioGameStreaming。 - 屏幕共享流的计费基于 AgoraScreenVideoParameters 中的
dimensions:- 如果未传入该值,声网按 1280 × 720 计费。
- 如果传入该值,声网按传入的值计费。
适用场景
在屏幕共享场景中。
调用时机
你可以在加入频道前或加入频道后调用此方法,具体区别如下:
- 先调用此方法,再调用
joinChannelByToken加入频道,并将publishScreenCaptureVideo设置为 YES,即可开始屏幕共享。 - 加入频道后调用此方法,再调用
updateChannelWithMediaOptions并将publishScreenCaptureVideo设置为 YES,即可开始屏幕共享。
相关回调
当屏幕共享扩展进程的状态发生变化时,SDK 会触发 rtcEngine:localVideoStateChangedOfState:reason:sourceType: 回调。当 sourceType 的类型为 AgoraVideoSourceTypeScreen 时,state 参数表示屏幕共享的状态。
参数
- parameters
- 屏幕共享的编码参数。详见
AgoraScreenCaptureParameters2。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
- -2:参数为 nil。
stopScreenCapture
停止屏幕采集。
Objective-C
- (int)stopScreenCapture NS_SWIFT_NAME(stopScreenCapture());
适用场景
适用于以下场景:
- iOS:如果你通过调用
startScreenCapture:开始屏幕采集,则需要调用此方法停止屏幕采集。 - macOS:如果你通过调用
startScreenCaptureByWindowId:regionRect:captureParams:或startScreenCaptureByDisplayId:regionRect:captureParams:开始屏幕采集,则需要调用此方法停止屏幕采集。
调用时机
你可以在加入频道前或后调用此方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。