什么是旁路直播?旁路直播怎么实现

什么是旁路直播

旁路直播是区别于主路的一个概念,尤其是使用实时音视频(RTC)的场景中,需要旁路直播来降低直播成本。将实时音视频流转换成标准直播流,观众看到不是多个主播的流,而是把多个主播的流混合在一起的一个画面,即便观众没有安装客户端需要通过小程序、网页观看,也能通过旁路直播来实现。这个时候主播和主播之间是实时的,主播和观众之间的延时大概还有3-5秒。

即构科技(ZEGO)旁路直播称为旁路推流或转推 CDN,指的是将 RTC 实时音视频流从 ZEGO 实时音视频云”旁路”转推至 CDN(内容分发网络),让海量观众通过标准协议(RTMP / HLS / FLV)使用任意播放器观看直播。

“旁路”的含义在于:主播仍在走 RTC 通道进行实时互动,ZEGO 服务端同时在”旁路”将这路流同步转推给 CDN,两条路径互不干扰,互动与分发并行进行。

旁路直播的典型场景

连麦互动 + 大规模观看

主播与嘉宾通过 RTC 连麦互动,延迟控制在毫秒级;同时,数十万普通观众通过 CDN 拉流观看,无需任何特殊客户端。这是旁路直播核心的使用场景。

秀场直播

主播一路推流至 ZEGO 实时音视频云,ZEGO 自动同步转推至 CDN,观众使用任意播放器收看,整个过程对主播完全透明。

赛事 / 活动直播

多路摄像头的 RTC 流上云后,经过混流合并成一路,再旁路推至 CDN 进行全球分发,满足高并发大规模观看需求。

ZEGO 支持的三种转推 CDN 方式

ZEGO Express SDK(实时音视频 SDK) 支持以下三种将流转推至 CDN 的方式:

转推方式说明支持的 CDN
默认转推 CDN推流到 ZEGO 音视频云后自动转推,无需额外配置仅 ZEGO 自有 CDN
旁路转推 CDN开发者自定义指定转推目标 URL,灵活可控ZEGO 自有 CDN + 第三方 CDN
混流转推 CDN多路流混合成一路后再转推至 CDNZEGO 自有 CDN + 第三方 CDN

说明:除转推 CDN 外,ZEGO 还支持「直推 CDN」方式,即绕过 ZEGO 实时音视频云直接将流推往 CDN。两者的区别详见第四节。

旁路直播的实现原理

整体架构

主播端(ZEGO Express SDK)
↓ RTC 推流(超低延迟)
ZEGO 实时音视频云
├─→ RTC 拉流 ──────→ 连麦观众(毫秒级延迟)
└─→ 旁路转推 ──→ CDN ──→ 海量普通观众
(RTMP / HLS / FLV,标准播放器)

主播只需一次推流,ZEGO 实时音视频云自动完成分叉:一路保持 RTC 低延迟互动,另一路旁路推送至 CDN 供大规模观众观看。

转推 CDN vs 直推 CDN

这两种方式都能让观众通过 CDN 观看直播,但实现路径和适用场景有所不同:

功能说明使用场景
转推 CDN (推荐)推流先经过 ZEGO 实时音视频云,再由 ZEGO 实时音视频云转推向 CDN。可使用 ZEGO 提供的实时音视频服务,可用于需要连麦互动的场景。开发者与第三方 CDN 有业务合作,想要使用原有的第三方 CDN 流媒体网络的分发服务的同时又想使用 ZEGO Express SDK 进行实时连麦互动。适用于有连麦互动要求的业务场景,例如秀场直播、语聊房等。
直推 CDN推流不经过 ZEGO 实时音视频云,直接推向 CDN。无法使用 ZEGO 提供的实时音视频服务,适用于单直播场景(无需互动)。适用于开发者无需使用实时连麦互动等服务的情况,例如电商直播、游戏直播、大班课等。

旁路直播的实现步骤(客户端 SDK 方式)

前提条件

  • 已在 ZEGO 控制台 创建项目,获取有效的 AppID 和 AppSign
  • 已集成 ZEGO Express SDK,并实现基本的音视频推拉流功能
  • 已在 ZEGO 控制台开通 CDN 服务(路径:项目管理 → 服务配置 → CDN)

注意:CDN 直播功能不是默认开启的,使用前需自助开通或联系 ZEGO 技术支持。

步骤一:初始化引擎并登录房间

请参考快速开始 – 实现流程的 “创建引擎”、“登录房间”。

步骤二:开始推流

// Android 示例
engine.startPublishingStream("STREAM_ID");

步骤三:添加旁路转推 CDN 地址

推流成功后,调用 addPublishCdnUrl 接口,将已成功推向 ZEGO 实时云的流动态转推至指定 CDN 地址。支持的转推地址格式为 RTMP。

// Android 示例
String streamID = "STREAM_ID";
// 转推目标地址,格式:rtmp://推流域名/接入点/streamID
String cdnUrl = "rtmp://your-cdn-domain/live/STREAM_ID";

engine.addPublishCdnUrl(streamID, cdnUrl, errorCode -> {
    if (errorCode == 0) {
        // 转推成功,观众现在可以通过 CDN 拉流观看
    } else {
        // 转推失败,检查网络或 CDN 地址配置
    }
});

说明addPublishCdnUrl 支持动态调用,可随时向一路流添加多个 CDN 转推目标,实现多 CDN 并发分发。

步骤四:停止旁路转推

当不再需要将流转推至 CDN 时,调用 removePublishCdnUrl 停止转推:

// Android 示例
engine.removePublishCdnUrl(streamID, cdnUrl, errorCode -> {
    if (errorCode == 0) {
        // 停止转推成功
    } else {
        // 停止转推失败,可能由于网络原因请求发送失败
    }
});

更多详细细节可访问开发者文档:使用 CDN 直播

进阶:混流 + 旁路直播

在多主播连麦场景下,观众通常只需看到合并后的一路完整画面,而不是多路独立的画面。此时需要先混流,再旁路推 CDN。

多人连麦旁路直播架构

主播 A 推流 ─┐
主播 B 推流 ─┤→ ZEGO 混流服务 → 合流输出 → 旁路转推 → CDN → 观众
嘉宾 C 推流 ─┘

混流服务将多路流按照开发者配置的布局(画中画、并排等)合并成一路,再转推至 CDN,观众只需拉取这一路混流地址即可。

多码率输出方案

在需要同时支持 H.265 和 H.264 设备的场景下,有两种方案:

方案一(推荐):混流服务直接输出多码率

混流服务同时输出一路 H.265 混流和一路 H.264 混流,将两路流都推至 CDN。

  • 优点:只需在混流时转码一次,清晰度更高,CDN 费用更低
  • 观众根据自身设备是否支持 H.265 解码,自行选择拉取对应码率

方案二:混流推 CDN 后再转码

混流服务输出一路 H.265,由 CDN 的转码能力再转出一路 H.264。

  • 缺点:需要 CDN 额外转码,费用更高,清晰度相对较低
  • 使用此方案需联系 ZEGO 技术支持开通 CDN 转码功能

常见问题

Q1:旁路直播功能是否默认开启?

不是。CDN 直播功能需要在 ZEGO 控制台中自助开通(路径:项目管理 → 服务配置 → CDN),或联系 ZEGO 技术支持开通后方可使用。

Q2:enablePublishDirectToCDN(直推 CDN)和 addPublishCdnUrl(旁路转推)能同时使用吗?

不能。调用 enablePublishDirectToCDN 开启直推 CDN 后,addPublishCdnUrlremovePublishCdnUrl 将不再生效。原因是直推 CDN 的流不经过 ZEGO 实时音视频云,因此 ZEGO 实时云无法对该路流进行动态转推操作。

Q3:出现错误码 1000038 该如何排查?

调用 enablePublishDirectToCDN 时出现 1000038 错误码,可能原因包括:

  • CDN 推流域名配置错误
  • 媒体网络异常
  • 媒体网络链接为空

请检查 CDN 域名配置是否正确,或联系 ZEGO 技术支持协助排查。

Q4:旁路转推是否支持第三方 CDN?

支持。旁路转推 CDN 和混流转推 CDN 均支持 ZEGO 自有 CDN 和第三方 CDN;默认转推 CDN 仅支持 ZEGO 自有 CDN。

原创文章,作者:ZEGO即构科技,如若转载,请注明出处:https://market-blogs.zego.im/reports-baike/3315/

(0)
上一篇 1天前
下一篇 4月 28, 2023 7:21 上午

相关推荐

发表回复

登录后才能评论