基于 ZEGO SDK 实现微信小程序直播连麦

基于 ZEGO SDK 实现微信小程序直播连麦

💡 原文中文,约11700字,阅读约需28分钟。
📝

内容提要

本文介绍基于ZEGO Express SDK实现微信小程序直播连麦的完整方案。核心链路为:主播RTC推流→ZEGO云→混流服务→CDN分发→海量观众。文章详细讲解了架构设计、Token鉴权、主播推流、观众拉流、上麦信令流程、混流配置及CDN转推,并强调连麦仅需loginRoom、startPublishingStream、startPlayingStream三个API,混流和CDN是规模化后的优化手段。

🔎

延伸解读

连麦与混流:先分清主次

文章明确指出,连麦的核心是RTC房间内多人互推互拉流,仅需loginRoom、startPublishingStream、startPlayingStream三个API即可实现。混流并非连麦的前置条件,而是当连麦者增多或观众规模扩大时,为降低终端解码压力和带宽成本而采用的优化手段。因此,在开发初期或小规模场景下,无需急于引入混流,应先确保基础连麦功能稳定。

小程序性能与带宽的权衡

当连麦者达到3人以上,观众端需同时拉取多路RTC流,这会对中低端机型造成性能压力,并导致带宽成本成倍增加。文章建议通过云端混流将多路流合成一路,观众只需拉取单路流,从而降低终端负载和带宽消耗。同时,混流输出码率建议控制在800-1500kbps,以在弱网环境下获得更稳定的分发效果。

CDN转推的适用场景与注意事项

CDN转推适用于观众规模超过百人的场景,可将混流后的单路流分发至海量观众。文章特别提醒,生产环境应优先使用服务端API控制CDN转推,而非客户端调用,因为客户端方式无法保证转推成功且依赖客户端在线状态。此外,建议在控制台开启CDN推流鉴权,防止盗用带宽。

延迟控制:连麦体验的关键

连麦双方走RTC通道,延迟可控制在200ms内;观众走混流+CDN链路,延迟约1-3秒。为优化体验,可调整live-player的mode为RTC(小规模场景),或调节minPlayStreamBufferLength参数在卡顿与延迟间取舍。混流输出码率不宜过高,否则弱网下CDN分发易卡顿。

Q&A

如何用ZEGO SDK实现微信小程序的直播连麦?

使用ZEGO Express SDK,通过loginRoom进入房间,startPublishingStream推流,startPlayingStream拉流,即可实现主播和连麦者之间的实时互动。连麦本身只需这三个API,混流和CDN转推是规模扩大后的优化手段。

微信小程序直播连麦中,RTC、混流和CDN分别起什么作用?

RTC负责实时互动,延迟低于200ms;混流将多路RTC流合成一路,减少观众端拉流数量;CDN负责将混流后的单路流分发到海量观众,支撑高并发。

在ZEGO方案中,Token是如何生成和使用的?

Token由服务端使用ServerSecret生成,客户端从服务端获取后传入loginRoom。服务端使用AES-GCM加密token payload,生成Token04格式的Token。客户端绝不能拼接ServerSecret。

观众如何上麦成为连麦者?

观众通过发送上麦申请(如使用sendBroadcastMessage),主播同意后,观众调用startPublishingStream推流,其他端通过roomStreamUpdate回调感知新流并拉流渲染。

什么时候需要使用混流?如何配置混流?

当连麦者较多(如1个主播+3个连麦者)或观众端性能压力大时,使用混流将多路流合成一路。配置混流需构造输入流列表(包含各流ID和布局),设置输出参数,调用startMixerTask启动混流任务。

如何将直播流转推到CDN以支持大规模观众?

使用addPublishCdnUrl将混流输出转推到CDN,观众通过CDN播放地址拉流。建议使用服务端API控制CDN转推,并开启CDN推流鉴权防止盗用。

直播连麦的延迟情况如何?如何优化?

连麦双方走RTC通道延迟低于200ms,观众看混流+CDN链路延迟1-3s。优化方向包括控制混流输出码率(800-1500kbps)、连麦场景使用RTC模式、调整minPlayStreamBufferLength参数等。

🏷️

标签

➡️

继续阅读