Skip to main content
合成流(program)是频道级的音视频流:由服务端 MCU 程序把频道内所有人合成为一路,所有订阅者收到的画面和声音完全一致。 典型用途:
  • 不发言的观众只订一路流,省带宽也省解码开销
  • 旁路录制 / 转推直播

保留标识

合成流不属于任何普通用户,它挂在一个系统身份下。头文件里已把这三个保留常量开放出来:

发布(MCU 程序侧)

发布合成流必须以 MCU 身份接入:服务端签发的 Token 里 uid 必须是 __mcu__,否则发布接口返回 RTC_ERROR

rtc_publish_mcu_video_track

发布视频合成流。与 rtc_publish_local_track 的区别只有两点:内部强制使用保留 trackId(不可自定义),以及要求 MCU 身份。track_handle 须用视频 codec 创建,optionsdesc / width / height / fps

rtc_publish_mcu_audio_track

发布音频合成流(混音流),语义同上。track_handle 须用音频 codec 创建,optionsdesc / sample_rate / channel_count 返回值(两个接口相同)

示例


订阅(观众侧)

C 接口没有 RemoteTrack 句柄,所以合成流不另设订阅接口 —— 用通用的订阅接口配合保留常量即可:

什么时候不该用合成流

参与会话的人想”听全场”,不要订阅音频合成流。 合成流里包含你自己的声音,订了就会有回声。正确做法是 rtc_set_auto_subscribe(rtc, 1, 0) 自动订阅所有人的音频,各路数据从 track_sample 回调进来后由业务侧自行混音(混的时候把自己那一路排除掉)。合成流是给不发声的观众录制/转推用的。