本地合图
startLocalVideoTranscoder
开始本地视频合图。
C++
virtual int startLocalVideoTranscoder(const LocalTranscoderConfiguration& config) = 0;
你可以调用该方法在本地将多个视频流合并为一个视频流,例如摄像头采集的视频流、屏幕共享、媒体播放器、远端视频、视频文件、图片等,并将混流后的视频流发布到频道中。 以下是实现人像画中画效果的典型用例:
- 调用 enableVirtualBackground,并将自定义背景图设置为
BACKGROUND_NONE,实现摄像头采集视频中人像与背景的分离。 - 调用
startScreenCapture开始采集屏幕共享视频流。 - 调用 startLocalVideoTranscoder,并将采集人像的视频源设置为参与本地视频合图的视频源之一,即可在合图视频中实现人像画中画效果。
信息
- 本地视频合图对设备性能要求较高,建议在高性能设备上使用。
- 若需混合本地采集的视频流,SDK 支持以下组合:
- Windows 平台:最多支持 4 路摄像头采集的视频流 + 4 路屏幕共享流。
- macOS 平台:最多支持 4 路摄像头采集的视频流 + 1 路屏幕共享流。
- Android 和 iOS 平台:最多支持 2 路摄像头采集的视频流(需设备支持双摄或外接摄像头)+ 1 路屏幕共享流。
- 配置本地视频混流时,需确保采集人像的视频流的图层编号大于屏幕共享流的图层编号,否则人像会被屏幕共享遮挡,无法在最终合图视频中显示。
适用场景
适用于远程会议、直播、在线教育等场景,便于用户查看和管理多个视频流,并支持人像画中画等功能。
调用时机
- 若需混合本地采集的视频流,需在调用 startCameraCapture 或
startScreenCapture后调用本方法。 - 若希望将合图后的视频流发布到频道中,需在调用
joinChannel或 updateChannelMediaOptions 时,将 ChannelMediaOptions 中的publishTranscodedVideoTrack设置为 true。
相关回调
调用该方法失败时,SDK 会触发 onLocalVideoTranscoderError 回调报告失败原因。
参数
- config
- 本地视频合图的配置,详见 LocalTranscoderConfiguration。信息
- 参与本地视频合图的每路视频流的最大分辨率为 4096 × 2160,超出该限制将导致合图失败。
- 合图后的视频流最大分辨率为 4096 × 2160。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
stopLocalVideoTranscoder
停止本地合图。
C++
virtual int stopLocalVideoTranscoder() = 0;
调用 startLocalVideoTranscoder 后,如果你希望停止本地合图,可以调用该方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
updateLocalTranscoderConfiguration
更新本地合图配置。
C++
virtual int updateLocalTranscoderConfiguration(const LocalTranscoderConfiguration& config) = 0;
调用 startLocalVideoTranscoder 后,如果你需要更新本地合图配置,可以调用该方法。
信息
如果你需要更新用于本地合图的视频源类型,例如添加第二个摄像头或屏幕进行视频采集,需要在调用 startCameraCapture 或
startScreenCapture 后调用该方法。参数
- config
- 本地合图配置。详见 LocalTranscoderConfiguration。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
onLocalVideoTranscoderError
本地视频合图过程中发生错误的回调。
C++
virtual void onLocalVideoTranscoderError(const TranscodingVideoStream& stream, VIDEO_TRANSCODER_ERROR error)
当调用 startLocalVideoTranscoder 或 updateLocalTranscoderConfiguration 失败时,SDK 会触发该回调报告失败原因。
参数
- stream
- 在视频合图过程中无法被合图的视频流。详见 TranscodingVideoStream。
- error
- 本地视频合图失败的原因。详见 VIDEO_TRANSCODER_ERROR。