屏幕采集
queryScreenCaptureCapability
查询设备在屏幕共享时支持的最高帧率。
Java
public abstract int queryScreenCaptureCapability();
详情
自从
v4.2.0
适用场景
在屏幕共享场景下,如果你想启用高帧率(如 60 fps)、但不确定设备是否支持时,可以先调用该方法查询设备支持的最高帧率。如果设备不支持高帧率,你可以在开启屏幕共享时适当调低屏幕共享流的帧率,以确保共享场景的效果符合预期。
返回值
- 方法调用成功时,返回设备支持的最高帧率。
- 0:最高支持 15 fps。
- 1:最高支持 30 fps。
- 2:最高支持 60 fps。
- <0:方法调用失败。详见错误码了解详情和解决建议。
setScreenCaptureScenario
startScreenCapture
开始屏幕采集。
Java
public abstract int startScreenCapture(ScreenCaptureParameters screenCaptureParameters);
注意
- 屏幕共享流的计费标准以 VideoCaptureParameters 中的 dimensions 值为准:
- 当你未传值时,以 1280 × 720 计费。
- 当你传值时,以你传入的值计费。
适用场景
在屏幕共享场景下,你需要调用该方法开始采集屏幕视频流。有关屏幕共享的实现方法,详见屏幕共享。
调用时机
该方法在加入频道前后均可调用,区别如下:
- 如果在加入频道前调用该方法,然后调用 joinChannel [2/2] 加入频道,并设置 publishScreenCaptureVideo 为
true
,即可开始屏幕共享。 - 如果在加入频道后调用该方法,然后调用 updateChannelMediaOptions 更新频道媒体选项,并设置 publishScreenCaptureVideo 为
true
,即可开始屏幕共享。
调用限制
- 在 Android 平台上,如果用户未授予 App 屏幕采集权限,SDK 会上报 onPermissionError
(2)
回调。 - 在 Android 9 及之后版本上,为避免应用退后台后被系统杀死,建议你在
/app/Manifests/AndroidManifest.xml
文件中添加前台服务权限:android.permission.FOREGROUND_SERVICE
。 - 因 Android 性能限制,屏幕共享不支持 Android TV。
- 因 Android 系统限制,使用华为手机进行屏幕共享时,为避免崩溃,请不要在共享过程中调节屏幕共享流的视频编码分辨率。
- 因 Android 系统限制,部分小米手机不支持屏幕共享时采集系统音频。
- 为提高屏幕共享时采集系统音频的成功率,建议你在加入频道前通过 setAudioScenario 方法设置音频场景为 AUDIO_SCENARIO_GAME_STREAMING。
参数
- screenCaptureParameters
- 屏幕共享的编码参数配置。详见 ScreenCaptureParameters。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2 (Anroid 平台): 系统版本过低,请确保 Android API 级别不低于 21。
- -3 (Anroid 平台): 无法采集系统音频,请确保 Android API 级别不低于 29。
stopScreenCapture
停止屏幕采集。
Java
public abstract int stopScreenCapture();
适用场景
如果你调用了 startScreenCapture 开启屏幕采集,则停止屏幕采集时需要调用该方法。
调用时机
该方法在加入频道前后均可调用。
调用限制
无。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
updateScreenCaptureParameters
更新屏幕采集的参数配置。
Java
public abstract int updateScreenCaptureParameters(
ScreenCaptureParameters screenCaptureParameters);
详情
注意
- 请在开启屏幕共享或窗口共享后调用该方法。
参数
- screenCaptureParameters
- 屏幕共享的编码参数配置。详见 ScreenCaptureParameters。注意屏幕共享流的视频属性只需通过该参数设置,与 setVideoEncoderConfiguration 无关。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。