屏幕采集
queryScreenCaptureCapability
setScreenCaptureScenario
设置屏幕共享的场景。
public abstract int setScreenCaptureScenario(Constants.ScreenScenarioType screenScenario);
开启屏幕共享或窗口共享时,你可以调用该方法设置屏幕共享的场景,SDK 会根据你设置的场景调整共享画面的画质。
注: 声网建议你在加入频道前调用该方法。
参数
参数名 | 描述 |
---|---|
screenScenario | 屏幕共享的场景,详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
startScreenCapture
开始屏幕采集。
public abstract int startScreenCapture(ScreenCaptureParameters screenCaptureParameters);
开启屏幕共享有如下两种方案,你可以根据实际场景进行选择:
-
在加入频道前调用该方法,然后调用
joinChannel [2/2]
加入频道并设置publishScreenCaptureVideo
为true
,即可开始屏幕共享。 -
在加入频道后调用该方法,然后调用
updateChannelMediaOptions
设置publishScreenCaptureVideo
为true
,即可开始屏幕共享。
注意:
-
在 Android 平台上,请确保用户已授予 app 屏幕采集权限。
-
请确保 Android API 级别不低于 21,否则 SDK 会报告错误码
和ERR_SCREEN_CAPTURE_PERMISSION_DENIED
(16)
。ERR_SCREEN_CAPTURE_SYSTEM_NOT_SUPPORTED
(2) -
如需在屏幕共享时采集系统音频,你还需确保 Android API 级别不低于 29,否则 SDK 会报告错误码
。ERR_SCREEN_CAPTURE_SYSTEM_AUDIO_NOT_SUPPORTED
(3) -
在 Android 9 及之后版本上,为避免应用退后台后被系统杀死,建议你在
/app/Manifests/AndroidManifest.xml
文件中添加前台服务权限:android.permission.FOREGROUND_SERVICE
。 -
因 Android 性能限制,屏幕共享不支持 Android TV。
-
因 Android 系统限制,使用华为手机进行屏幕共享时,为避免崩溃,请不要在共享过程中调节屏幕共享流的视频编码分辨率。
-
因 Android 系统限制,部分小米手机不支持屏幕共享时采集系统音频。
-
为提高屏幕共享时采集系统音频的成功率,建议你在加入频道前通过
setAudioScenario
方法设置音频场景为AUDIO_SCENARIO_GAME_STREAMING
。
参数
参数名 | 描述 |
---|---|
screenCaptureParameters | 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2,073,600 像素。该像素值为计费标准。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败
-
-2: 参数为空。
-
stopScreenCapture
updateScreenCaptureParameters
更新屏幕采集的参数配置。
public abstract int updateScreenCaptureParameters(
ScreenCaptureParameters screenCaptureParameters);
注意:
- 请在开启屏幕共享或窗口共享后调用该方法。
参数
参数名 | 描述 |
---|---|
screenCaptureParameters | 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2073600 像素。该像素值为计费标准。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。
-
-2:传入的参数无效。
-
-8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用
stopScreenCapture
停止当前共享,再重新开始共享屏幕。
-