当你使用 RTC 实现实时音视频通信时,RTC 会使用默认的音视频模块进行视频采集和渲染。在一些场景下,你可能会发现默认模块无法满足需求,比如:

在这些场景下,你可以参考本文,将自定义设备采集的视频源,交由 RTC 进行编码和传输。

前提条件

你已经集成了 3.33 及以上版本的 RTC SDK,实现了基本的音视频通话。

功能实现

使用 setVideoSourceType 指定自定义视频源。你需要使用自采集模块驱动采集设备对视频进行采集,采集的视频帧通过 pushExternalVideoFrame 发送给 SDK。
自定义视频采集的数据流转如下图:

image.png

API 调用

API 调用时序可以参考下图:

alt

集成步骤
  • 以下代码基于 3.33+,此版本下,视频封装类为 VideoFrame。
  • 3.32 到 3.18 版本中,视频封装类为 RtcVideoFrame,和 VideoFrame 的差别仅在于名称不同。
  • 对于 3.18 以下的版本,视频封装类为 ExtVideoFrame,和 VideoFrame 的差别仅在于:ExtVideoFrame 中不包含 buffer_type。
1. 指定自定义视频源

通过调用 setVideoSourceType 指定自定义视频源。

2. 构建视频采集器

你可以参考以下示例项目中,Advance_Demo 中自定义采集工具类,创建你的视频采集模块。

3. 配置视频帧参数

你可以使用 pushExternalVideoFrame 中的 VideoFrame 参数,对采集到的视频数据进行编码前处理。比如,设置 VideoFrame 参数中的 rotation 为 180,即可使视频帧顺时针旋转 180 度。当然,你也可以加入自行实现的其它前处理逻辑。

你必须根据自采集视频编码数据格式,使用对应的 VideoFrame 参数。

4. 推送外部视频帧

调用 pushExternalVideoFrame 将采集到的视频帧,交由 RTC 进行编码和传输。

API 参考

以下是各个平台的相关 API 参考:

相关文档