屏幕采集
getScreenCaptureSourcesWithThumbSize:iconSize:includeScreen:
获取可共享的屏幕和窗口对象列表。
- (NSArray<AgoraScreenCaptureSourceInfo*>* _Nullable)getScreenCaptureSourcesWithThumbSize:(NSSize)thumbSize iconSize:(NSSize)iconSize includeScreen:(BOOL)includeScreen;
详情
屏幕共享或窗口共享前,你可以调用该方法获取可共享的屏幕和窗口的对象列表,方便用户通过列表中的缩略图选择共享某个显示器的屏幕或某个窗口。列表中包含窗口 ID 和屏幕 ID 等重要信息,你可以获取到 ID 后再调用 startScreenCaptureByWindowId:regionRect:captureParams: 或 startScreenCaptureByDisplayId:regionRect:captureParams: 开启共享。
参数
- thumbSize
- 屏幕或窗口的缩略图的目标尺寸(宽高单位为像素)。SDK 会在保证原图不变形的前提下,缩放原图,使图片最长边和目标尺寸的最长边的长度一致。例如,原图宽高为 400 × 300,thumbSize 为 100 x 100,缩略图实际尺寸为 100 × 75。如果目标尺寸大于原图尺寸,缩略图即为原图,SDK 不进行缩放操作。
- iconSize
- 程序所对应的图标的目标尺寸(宽高单位为像素)。SDK 会在保证原图不变形的前提下,缩放原图,使图片最长边和目标尺寸的最长边的长度一致。例如,原图宽高为 400 × 300,iconSize 为 100 × 100,图标实际尺寸为 100 × 75。如果目标尺寸大于原图尺寸,图标即为原图,SDK 不进行缩放操作。
- includeScreen
- 除了窗口信息外,SDK 是否返回屏幕信息:
YES
:SDK 返回屏幕和窗口信息。NO
:SDK 仅返回窗口信息。
返回值
所属接口类setScreenCaptureScenario:
设置屏幕共享的场景。
- (int)setScreenCaptureScenario:(AgoraScreenScenarioType)scenarioType
NS_SWIFT_NAME(setScreenCaptureScenario(_:));
详情
开启屏幕共享或窗口共享时,你可以调用该方法设置屏幕共享的场景,SDK 会根据你设置的场景调整共享画面的画质。
参数
- scenarioType
- 屏幕共享的场景,详见 AgoraScreenScenarioType。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
startScreenCaptureByDisplayId:regionRect:captureParams:
开始采集指定屏幕的视频流。
- (int)startScreenCaptureByDisplayId:(UInt32)displayId
regionRect:(CGRect)regionRect
captureParams:(AgoraScreenCaptureParameters *_Nonnull)captureParams;
采集一个屏幕或该屏幕部分区域的视频流。
适用场景
在屏幕共享场景下,你需要调用该方法开始采集屏幕视频流。有关屏幕共享的实现方法,详见屏幕共享。
调用时机
- 如果在加入频道前调用该方法,然后调用 joinChannelByToken:channelId:uid:mediaOptions:joinSuccess: 加入频道,并设置 publishScreenTrack 或 publishSecondaryScreenTrack 为
YES
,即可开始屏幕共享。 - 如果在加入频道后调用该方法,然后调用 updateChannelWithMediaOptions: 更新频道媒体选项,并设置 publishScreenTrack 或 publishSecondaryScreenTrack 为
YES
,即可开始屏幕共享。
调用限制
无。
参数
- displayId
- 指定待共享的屏幕 ID。
- captureParams
- 屏幕共享的参数配置。默认的视频编码分辨率为 1920 × 1080,即 2073600 像素。该像素值为计费标准。详见 AgoraScreenCaptureParameters。注意屏幕共享流的视频属性只需通过该参数设置,与 setVideoEncoderConfiguration: 无关。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。
startScreenCaptureByWindowId:regionRect:captureParams:
开始采集指定窗口的视频流。
- (int)startScreenCaptureByWindowId:(UInt32)windowId
regionRect:(CGRect)regionRect
captureParams:(AgoraScreenCaptureParameters *_Nonnull)captureParams;
共享一个窗口或该窗口的部分区域。用户需要在该方法中指定想要共享的窗口 ID。
适用场景
在屏幕共享场景下,你需要调用该方法开始采集屏幕视频流。有关屏幕共享的实现方法,详见屏幕共享。
调用时机
- 如果在加入频道前调用该方法,然后调用 joinChannelByToken:channelId:uid:mediaOptions:joinSuccess: 加入频道,并设置 publishScreenTrack 或 publishSecondaryScreenTrack 为
YES
,即可开始屏幕共享。 - 如果在加入频道后调用该方法,然后调用 updateChannelWithMediaOptions: 更新频道媒体选项,并设置 publishScreenTrack 或 publishSecondaryScreenTrack 为
YES
,即可开始屏幕共享。
调用限制
无。
参数
- windowId
- 指定待共享的窗口 ID。
- regionRect
- (可选)待共享区域相对于整个窗口的位置。如不填,则表示共享整个窗口。由如下参数组成:
- x:左上角的横向偏移。
- y:左上角的纵向偏移。
- width:待共享区域的宽。
- height:待共享区域的高。
如果设置的共享区域超出了窗口的边界,则只共享窗口内的内容;如果宽或高设为 0,则共享整个窗口。
- captureParams
- 屏幕共享的参数配置。默认的分辨率为 1920 x 1080,即 2073600 像素。该像素值为计费标准。详见 AgoraScreenCaptureParameters。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。
stopScreenCapture
停止屏幕采集。
- (int)stopScreenCapture NS_SWIFT_NAME(stopScreenCapture());
适用场景
如果你调用了 startScreenCaptureByWindowId:regionRect:captureParams: 或 startScreenCaptureByDisplayId:regionRect:captureParams: 开启屏幕采集,则停止屏幕采集时需要调用该方法。
调用时机
该方法在加入频道前后均可调用。
调用限制
无。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
stopScreenCapture:
停止对指定的视频源进行屏幕采集。
- (int)stopScreenCapture:(AgoraVideoSourceType)sourceType NS_SWIFT_NAME(stopScreenCapture(_:));
适用场景
如果你调用了 startScreenCapture:config: 开启一路或多路屏幕采集,则停止屏幕采集时需要调用该方法,并通过 sourceType 参数指定屏幕。
调用时机
该方法在加入频道前后均可调用。
调用限制
无。
参数
- sourceType
- 视频源的类型,详见 AgoraVideoSourceType。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
updateScreenCaptureParameters:
更新屏幕采集的参数配置。
- (int)updateScreenCaptureParameters:(AgoraScreenCaptureParameters * _Nonnull)captureParams;
详情
- 请在开启屏幕共享或窗口共享后调用该方法。
参数
- captureParams
- 屏幕共享的编码参数配置。详见 AgoraScreenCaptureParameters。注意屏幕共享流的视频属性只需通过该参数设置,与 setVideoEncoderConfiguration: 无关。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2:传入的参数无效。
- -8:屏幕共享状态无效。可能因为你已经共享了其他屏幕或窗口。尝试调用 stopScreenCapture 停止当前共享,再重新开始共享屏幕。