You need to enable JavaScript to run this app.
文档中心
实时音视频

实时音视频

复制全文
下载 pdf
视频管理
自定义视频编解码
复制全文
下载 pdf
自定义视频编解码
当你使用 RTC 实现实时音视频通信时,RTC 默认使用内部的编解码模块进行视频编解码。然而在一些场景下,你可能会发现内部编解码模块无法满足需求,比如:音视频应用中已实现了视频编解码模块,此时 RTC 再进行二次编解码有可能会产生延时和视频质量的损耗。​
你可以参考本文,将自定义编码后的视频源,交由 RTC 进行传输,或对 RTC 拉取到的远端编码后视频源进行自定义解码渲染。​
前提条件​
你已经集成 v3.29 或更高版本的 RTC SDK。​
自定义视频编码​
集成步骤和时序图中的接口以 Windows 平台为例,参考对应平台的 API 文档获取更多信息。​
自定义编码的流程如下图所示。​
​Image​​
集成步骤​
  1. 在加入音视频房间前,通过调用 setVideoSourceType 指定自定义编码视频源,你需要设置 VideoSourceType 为 kVideoSourceTypeEncodedWithoutAutoSimulcast = 3。​
  1. 调用 setExternalVideoEncoderEventHandler 注册自定义编码帧推送事件回调。​
  1. (可选)调用 setVideoEncoderConfig 设置每路视频流的参数。​
  1. 你必须自行实现视频编码逻辑。出于节约本端编码性能消耗的考虑,推荐你根据 onActiveVideoLayer,按需编码。​
  1. 编码完成后,你需要在收到 onStart 回调通知后调用 pushExternalEncodedVideoFrame 将编码后的视频帧推送至 RTC SDK 进行传输。你必须根据实际编码时使用的参数来设置 pushExternalEncodedVideoFrame 中的 IEncodedVideoFrame。​
注意​
  • 外部编码器推送给 SDK 的帧必须是完整的一帧,且只支持 IDR 帧和 P 帧,不支持推送多个帧拼接。​
  • 在收到 IExternalVideoEncoderEventHandler 回调的 onRequestKeyFrame 时,必须重新编码一个 I 帧发送,否则订阅端会因为收不到 I 帧导致解码失败。​
API 调用时序​
​Image​​
API 参考​
​
自定义视频解码​
集成步骤和时序图中的接口以 Windows 平台为例,参考对应平台的 API 参考获取更多信息。​
自定义解码的流程如下图所示。​
​Image​​
集成步骤​
  1. 在加入音视频房间前,通过调用 registerRemoteEncodedVideoFrameObserver 注册远端编码后视频帧回调。​
  1. 调用 joinRoom 加入房间,将订阅模式指定为手动订阅。​
  1. 通过 onUserPublishStreamAudio 或 onUserPublishStreamVideo 获取到远端流信息后,调用 setVideoDecoderConfig 将远端视频数据解码方式设置为自定义解码。​
  1. 调用 subscribeStreamVideo 或 subscribeStreamAudio 订阅远端流。​
  1. 当 SDK 监测到远端编码后视频数据时触发 onRemoteEncodedVideoFrame,你需要自行实现视频解码逻辑。​
  1. 自定义解码失败时,调用 requestRemoteVideoKeyFrame 向远端请求关键帧。​
API 调用时序​
​Image​​
API 参考​
​
功能变更日志​
  1. 自客户端版本 v3.29 起,支持自定义视频编码功能。​
  1. 自客户端版本 v3.56 起,发送端可以根据 onActiveVideoLayer,按需编码。​
相关文档​
​
最近更新时间:2026.09.21 16:24:28
这个页面对您有帮助吗?
有用
有用
无用
无用