本地合图
StartLocalVideoTranscoder
开启本地合图。
C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
int StartLocalVideoTranscoder(const FLocalTranscoderConfiguration& config);
调用该方法后,你可以在本地将多路视频流合并为一路视频流。例如:将摄像头采集的视频流、屏幕共享流、媒体播放器中的视频流、远端视频流、视频文件、图片等合并为一路视频流,然后将已合图的视频流发布到频道中。
适用场景
你可以在远程会议、直播、在线教育等场景下开启本地合图功能,可以让用户更加方便地查看和管理多个视频画面,同时支持人像画中画等功能。
以下是一个实现人像画中画的典型场景:
- 调用 EnableVirtualBackground,并将自定义背景图设置为 BACKGROUND_NONE,即:在摄像头采集的视频中将人像和背景分割。
- 调用 StartScreenCaptureBySourceType,开始采集屏幕共享视频流。
- 调用该方法,并将采集人像的视频源设置为参与本地合图的视频源之一,即可在合图后的视频中实现人像画中画。
调用时机
- 如果你需要对本地采集的视频流进行合图,需要在 StartCameraCapture 或 StartScreenCaptureBySourceType 之后调用该方法。
- 如果你要将合图后的视频流发布到频道中,需要在调用 JoinChannelWithOptions 或 UpdateChannelMediaOptions 时,将 FChannelMediaOptions 中的 publishTranscodedVideoTrack 设置为
true
。
调用限制
- 本地合图对 CPU 的消耗较高,声网建议你在性能较高的设备上开启该功能。
- 如果你需要对本地采集的视频流进行合图,SDK 支持如下采集组合:
- 在 Windows 平台上,最多支持 4 路摄像头采集的视频流 + 4 路屏幕共享流合图。
- 在 macOS 平台上,最多支持 4 路摄像头采集的视频流 + 1 路屏幕共享流合图。
- 在 Android 和 iOS 平台上,最多支持 2 路摄像头采集的视频流(需要设备本身支持双摄或支持外接摄像头)+ 1 路屏幕共享合图。
- 在进行合图配置时,需确保采集人像的摄像头视频流在合图中的图层编号大于屏幕共享流的图层编号,否则人像会被屏幕共享覆盖、无法显示在最终合图的视频流中。
相关回调
当你调用该方法失败时,SDK 会触发 OnLocalVideoTranscoderError 回调,报告合图失败的原因。
参数
- config
- 本地合图的配置,详见 FLocalTranscoderConfiguration。注意
- 参与本地合图的每一路视频流的分辨率最大为 4096 × 2160,如果超出此限制,会导致合图不生效。
- 合图后的视频流最大分辨率为 4096 × 2160。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
StopLocalVideoTranscoder
停止本地合图。
C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
int StopLocalVideoTranscoder();
详情
调用 StartLocalVideoTranscoder 后, 如果你希望停止本地合图,请调用该方法。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
UpdateLocalTranscoderConfiguration
更新本地合图配置。
C++
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
int UpdateLocalTranscoderConfiguration(const FLocalTranscoderConfiguration& config);
详情
调用 StartLocalVideoTranscoder 后,如果你希望更新本地合图配置,请调用该方法。
信息
如果你想要更新用于合图的的本地采集视频源类型,比如:增加第二路摄像头或者屏幕采集的视频,需要在 StartCameraCapture 或 StartScreenCaptureBySourceType 之后调用该方法。
参数
- config
- 本地合图的配置,详见 FLocalTranscoderConfiguration。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
OnLocalVideoTranscoderError
本地合图发生错误回调。
C++
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
void OnLocalVideoTranscoderError(const FTranscodingVideoStream& stream, EVIDEO_TRANSCODER_ERROR error);
详情
当你调用 StartLocalVideoTranscoder 或 UpdateLocalTranscoderConfiguration 失败时,SDK 会触发该回调,报告合图失败的原因。
参数
- stream
- 合图失败的视频流。详见 FTranscodingVideoStream。
- error
- 本地合图出错原因。详见 EVIDEO_TRANSCODER_ERROR。