屏幕共享
queryScreenCaptureCapability
查询设备在屏幕共享时支持的最高帧率。
abstract queryScreenCaptureCapability(): number;
详情
适用场景
在屏幕共享场景下,如果你想启用高帧率(如 60 fps)、但不确定设备是否支持时,可以先调用该方法查询设备支持的最高帧率。如果设备不支持高帧率,你可以在开启屏幕共享时适当调低屏幕共享流的帧率,以确保共享场景的效果符合预期。
返回值
- 方法调用成功时,返回设备支持的最高帧率。详见 ScreenCaptureFramerateCapability。
- <0:方法调用失败。
setScreenCaptureContentHint
设置屏幕共享内容类型。
abstract setScreenCaptureContentHint(contentHint: VideoContentHint): number;
详情
SDK 会根据不同的内容类型,使用不同的算法对共享效果进行优化。如果不调用该方法,SDK 会将屏幕共享的内容默认为 ContentHintNone,即无指定的内容类型。
注意: 该方法在开始屏幕共享前后都能调用。
参数
- contentHint
- 屏幕共享的内容类型。详见 VideoContentHint。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。
setScreenCaptureScenario
设置屏幕共享的场景。
abstract setScreenCaptureScenario(screenScenario: ScreenScenarioType): number;
详情
开启屏幕共享或窗口共享时,你可以调用该方法设置屏幕共享的场景,SDK 会根据你设置的场景调整共享画面的画质。
注: 声网建议你在加入频道前调用该方法。
参数
- screenScenario
- 屏幕共享的场景,详见 ScreenScenarioType。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
startScreenCapture
开始屏幕采集。
abstract startScreenCapture(captureParams: ScreenCaptureParameters2): number;
详情
注意:
- 该方法仅适用于 Android 和 iOS 平台。
- 在 iOS 平台上,屏幕共享仅适用于 iOS 12.0 及以上。
- 屏幕共享流的计费以 ScreenVideoParameters 中的 dimensions 值为准:当你未传值时,以 1280 × 720 计费;当你传值时,以你传入的值计费。详细的计费规则请参考计费说明。
- 在 iOS 平台上,如果你使用音频自采集而非 SDK 采集音频,为避免应用退后台后屏幕共享停止,建议你对应用添加保活处理逻辑。
- 在 iOS 平台上,该功能对设备性能要求较高,建议你在 iPhone X 及之后机型上使用。
- 在 iOS 平台上,该方法依赖于屏幕共享动态库
AgoraReplayKitExtension.xcframework
,如果删除该动态库会导致无法正常开启屏幕共享。 - 在 Android 平台上,请确保用户已授予 app 屏幕采集权限。
- 在 Android 9 及之后版本上,为避免应用退后台后被系统杀死,建议你在
/app/Manifests/AndroidManifest.xml
文件中添加前台服务权限:android.permission.FOREGROUND_SERVICE
。 - 因 Android 性能限制,屏幕共享不支持 Android TV。
- 因 Android 系统限制,使用华为手机进行屏幕共享时,为避免崩溃,请不要在共享过程中调节屏幕共享流的视频编码分辨率。
- 因 Android 系统限制,部分小米手机不支持屏幕共享时采集系统音频。
- 为提高屏幕共享时采集系统音频的成功率,建议你在加入频道前通过 setAudioScenario 方法设置音频场景为 AudioScenarioGameStreaming。
参数
- captureParams
- 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2,073,600 像素。该像素值为计费标准。详见 ScreenCaptureParameters2。
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
- -2: 参数为空。
stopScreenCapture
停止屏幕采集。
abstract stopScreenCapture(): number;
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
updateScreenCapture
更新屏幕采集的参数配置。
abstract updateScreenCapture(captureParams: ScreenCaptureParameters2): number;
详情
如果在开启屏幕共享时未采集系统音频、然后想要更新参数配置、发布系统音频,可参考以下步骤:
- 调用该方法并设置 captureAudio 为
true
。 - 调用 updateChannelMediaOptions 设置 publishScreenCaptureAudio 为
true
,即可发布屏幕采集的音频。
注意:
- 该方法仅适用于 Android 和 iOS 平台。
- 在 iOS 平台上,屏幕共享仅适用于 iOS 12.0 及以上。
参数
- captureParams
- 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2073600 像素。该像素值为计费标准。详见 ScreenCaptureParameters2。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。
updateScreenCaptureParameters
更新屏幕采集的参数配置。
abstract updateScreenCaptureParameters( captureParams: ScreenCaptureParameters ): number;
详情
注意:
- 请在开启屏幕共享或窗口共享后调用该方法。
参数
- captureParams
- 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2073600 像素。该像素值为计费标准。详见 。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。
updateScreenCaptureRegion
更新屏幕采集的区域。
abstract updateScreenCaptureRegion(regionRect: Rectangle): number;
详情
注意: 请在开启屏幕共享或窗口共享后调用该方法。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。