屏幕采集
- Electron
更新时间不可用
getScreenCaptureSources
获取可共享的屏幕和窗口对象列表。
abstract getScreenCaptureSources(
thumbSize: Size,
iconSize: Size,
includeScreen: boolean
): ScreenCaptureSourceInfo[];屏幕共享或窗口共享前,你可以调用该方法获取可共享的屏幕和窗口的对象列表,方便用户通过列表中的缩略图选择共享某个显示器的屏幕或某个窗口。列表中包含窗口 ID 和屏幕 ID 等重要信息,你可以获取到 ID 后再调用 startScreenCaptureByWindowId 或 startScreenCaptureByDisplayId 开启共享。
参数
| 参数名 | 描述 |
|---|---|
thumbSize | |
iconSize | |
includeScreen |
返回值
所属接口类
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: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
startScreenCaptureBySourceType
开始屏幕采集并指定视频源。
abstract startScreenCaptureBySourceType(
sourceType: VideoSourceType,
config: ScreenCaptureConfiguration
): number;注: 该方法仅适用于 macOS 和 Windows 平台。
- 如果调用该方法开始屏幕采集,则停止屏幕采集时需要调用 stopScreenCaptureBySourceType。
- 在 Windows 平台上,最多支持 4 路屏幕采集的视频流。
- 在 macOS 平台上,最多支持 1 路屏幕采集的视频流。
适用场景
在屏幕共享场景下,你需要调用该方法开始采集屏幕视频流。 SDK 支持一系列开启屏幕采集的方法,它们之间存在以下区别,请根据实际场景选用:
startScreenCaptureByDisplayId/startScreenCaptureByWindowId:仅支持采集单个屏幕或窗口,适合仅共享单个屏幕的场景。startScreenCaptureBySourceType:支持指定多个视频源,以采集多路屏幕共享流,用于本地合图或者多频道发布场景。
调用时机
该方法在加入频道前后均可调用,区别如下:
- 如果在加入频道前调用该方法,然后调用 joinChannel 加入频道,并设置
publishScreenCaptureVideo为 true,即可开始屏幕共享。 - 如果在加入频道后调用该方法,然后调用 updateChannelMediaOptions 更新频道媒体选项,并设置
publishScreenCaptureVideo为 true,即可开始屏幕共享。
参数
| 参数名 | 描述 |
|---|---|
sourceType | |
config | 屏幕采集配置。详见 ScreenCaptureConfiguration。 |
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
startScreenCaptureByDisplayId
开始采集指定屏幕的视频流。
abstract startScreenCaptureByDisplayId(
displayId: number,
regionRect: Rectangle,
captureParams: ScreenCaptureParameters
): number;采集一个屏幕或该屏幕部分区域的视频流。
适用场景
在屏幕共享场景下,你需要调用该方法开始采集屏幕视频流。有关屏幕共享的实现方法,详见屏幕共享。
调用时机
该方法在加入频道前后均可调用,区别如下:
- 如果在加入频道前调用该方法,然后调用 joinChannel 加入频道,并设置
publishScreenTrack或publishSecondaryScreenTrack为 true,即可开始屏幕共享。 - 如果在加入频道后调用该方法,然后调用 updateChannelMediaOptions 更新频道媒体选项,并设置
publishScreenTrack或publishSecondaryScreenTrack为 true,即可开始屏幕共享。
参数
| 参数名 | 描述 |
|---|---|
displayId | |
regionRect | |
captureParams | 屏幕共享的参数配置。默认的视频编码分辨率为 1920 × 1080,即 2073600 像素。该像素值为计费标准。详见 ScreenCaptureParameters。 注: 屏幕共享流的视频属性只需通过该参数设置,与 setVideoEncoderConfiguration 无关。 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。
所属接口类
startScreenCaptureByScreenRect
开始采集指定屏幕区域的视频流。
abstract startScreenCaptureByScreenRect(
screenRect: Rectangle,
regionRect: Rectangle,
captureParams: ScreenCaptureParameters
): number;废弃
弃用: 该方法已废弃。请改用 startScreenCaptureByDisplayId。如果你需要在设备外接其他显示屏的情况下开启屏幕共享,强烈建议你使用 startScreenCaptureByDisplayId。
共享一个屏幕或该屏幕的部分区域。你需要在该方法中指定想要共享的屏幕区域。 该方法在加入频道前后均可调用,区别如下:
- 如果在加入频道前调用该方法,然后调用 joinChannel 加入频道,并设置
publishScreenTrack或publishSecondaryScreenTrack为 true,即可开始屏幕共享。 - 如果在加入频道后调用该方法,然后调用 updateChannelMediaOptions 更新频道媒体选项,并设置
publishScreenTrack或publishSecondaryScreenTrack为 true,即可开始屏幕共享。
注: 该方法仅适用于 Windows 平台。
参数
| 参数名 | 描述 |
|---|---|
screenRect | |
regionRect | 指定待共享区域相对于整个屏幕的位置。如不填,则表示共享整个屏幕。详见 Rectangle。如果设置的共享区域超出了屏幕的边界,则只共享屏幕内的内容;如果将 width 或 height 设为 0 ,则共享整个屏幕。 |
captureParams | 屏幕共享的编码参数配置。默认的分辨率为 1920 x 1080,即 2073600 像素。该像素值为计费标准。详见 ScreenCaptureParameters。 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。
所属接口类
startScreenCaptureByWindowId
开始采集指定窗口的视频流。
abstract startScreenCaptureByWindowId(
windowId: any,
regionRect: Rectangle,
captureParams: ScreenCaptureParameters
): number;共享一个窗口或该窗口的部分区域。用户需要在该方法中指定想要共享的窗口 ID。 该方法支持共享通用 Windows 平台(UWP)应用窗口。声网使用最新版 SDK 对主流的 UWP 应用进行了测试,结果如下:
| 系统版本 | 软件名称 | 兼容版本 | 是否支持 |
|---|---|---|---|
| Windows 10 | Chrome | 76.0.3809.100 | 否 |
| Office Word | 18.1903.1152.0 | 是 | |
| Office Excel | 18.1903.1152.0 | 否 | |
| Office PPT | 18.1903.1152.0 | 是 | |
| WPS Word | 11.1.0.9145 | 是 | |
| WPS Excel | 11.1.0.9145 | 是 | |
| WPS PPT | 11.1.0.9145 | 是 | |
| 系统自带的 Media Player | 所有版本 | 是 | |
| Windows 8 | Chrome | 所有版本 | 是 |
| Office Word | 所有版本 | 是 | |
| Office Excel | 所有版本 | 是 | |
| Office PPT | 所有版本 | 是 | |
| WPS Word | 11.1.0.9098 | 是 | |
| WPS Excel | 11.1.0.9098 | 是 | |
| WPS PPT | 11.1.0.9098 | 是 | |
| 系统自带的 Media Player | 所有版本 | 是 | |
| Windows 7 | Chrome | 73.0.3683.103 | 否 |
| Office Word | 所有版本 | 是 | |
| Office Excel | 所有版本 | 是 | |
| Office PPT | 所有版本 | 是 | |
| WPS Word | 11.1.0.9098 | 否 | |
| WPS Excel | 11.1.0.9098 | 否 | |
| WPS PPT | 11.1.0.9098 | 是 | |
| 系统自带的 Media Player | 所有版本 | 否 |
注: 该方法仅适用于 macOS 和 Windows 平台。
SDK 的窗口共享功能依赖于 WGC(Windows Graphics Capture)或 GDI(Graphics Device Interface)采集,WGC 在早于 Windows 10 2004 的系统上无法设置关闭鼠标采集,因此,当你在搭载早于 Windows 10 2004 系统的设备上进行窗口共享时,可能出现 captureMouseCursor(false) 不生效的现象。详见 ScreenCaptureParameters。
适用场景
在屏幕共享场景下,你需要调用该方法开始采集屏幕视频流。有关屏幕共享的实现方法,详见屏幕共享。
调用时机
该方法在加入频道前后均可调用,区别如下:
- 如果在加入频道前调用该方法,然后调用 joinChannel 加入频道,并设置
publishScreenTrack或publishSecondaryScreenTrack为 true,即可开始屏幕共享。 - 如果在加入频道后调用该方法,然后调用 updateChannelMediaOptions 更新频道媒体选项,并设置
publishScreenTrack或publishSecondaryScreenTrack为 true,即可开始屏幕共享。
参数
| 参数名 | 描述 |
|---|---|
windowId | |
regionRect | (可选)指定待共享区域相对于整个屏幕的位置。如不填,则表示共享整个屏幕。详见 Rectangle。如果设置的共享区域超出了窗口的边界,则只共享窗口内的内容;如果宽或高为 0,则共享整个窗口。 注: Electron for 统信 OS SDK 暂不支持该参数。 |
captureParams | 屏幕共享的参数配置。默认的分辨率为 1920 x 1080,即 2073600 像素。该像素值为计费标准。详见 ScreenCaptureParameters。 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。
所属接口类
stopScreenCapture
停止屏幕采集。
abstract stopScreenCapture(): number;适用场景
如果你调用了 startScreenCaptureBySourceType、startScreenCaptureByWindowId 或 startScreenCaptureByDisplayId 开启屏幕采集,则停止屏幕采集时需要调用该方法。
调用时机
该方法在加入频道前后均可调用。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
stopScreenCaptureBySourceType
停止对指定的视频源进行屏幕采集。
abstract stopScreenCaptureBySourceType(sourceType: VideoSourceType): number;适用场景
如果你调用了 startScreenCaptureBySourceType 开启一路或多路屏幕采集,则停止屏幕采集时需要调用该方法,并通过 sourceType 参数指定屏幕。
调用时机
该方法在加入频道前后均可调用。
参数
| 参数名 | 描述 |
|---|---|
sourceType | 视频源的类型,详见 VideoSourceType。 |
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
updateScreenCaptureParameters
更新屏幕采集的参数配置。
abstract updateScreenCaptureParameters(
captureParams: ScreenCaptureParameters
): number;注:
- 请在开启屏幕共享或窗口共享后调用该方法。
参数
| 参数名 | 描述 |
|---|---|
captureParams |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。
所属接口类
updateScreenCaptureRegion
更新屏幕采集的区域。
abstract updateScreenCaptureRegion(regionRect: Rectangle): number;注: 请在开启屏幕共享或窗口共享后调用该方法。
参数
| 参数名 | 描述 |
|---|---|
regionRect | 待共享区域相对于整个屏幕或窗口的位置,如不填,则表示共享整个屏幕或窗口。详见 Rectangle。如果设置的共享区域超出了屏幕或窗口的边界,则只共享屏幕或窗口内的内容;如果将 width 或 height 设为 0,则共享整个屏幕或窗口。 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。