声网 sdk 的旁路推流地址获取方法

声网 sdk 旁路推流地址获取方法详解

最近不少开发者朋友在问我,关于旁路推流地址获取的问题。说实话,刚开始接触这块的时候,我也踩过不少坑,地址配置错了,推流一直失败,排查半天发现是 URL 写错了。所以今天干脆把这块内容梳理一下,把声网 SDK 中旁路推流地址的获取方法讲清楚,希望能帮大家少走弯路。

在正式讲获取方法之前,我们先来聊聊什么是旁路推流,以及为什么这个功能这么重要。

什么是旁路推流?

简单来说,旁路推流就是把实时音视频通话中的画面,"复制"一份推到 RTMP 服务器上去。这样做的目的是什么呢?主要是为了实现直播功能。想象一下,当你做一个视频会议或者语聊房的时候,你希望把里面的精彩内容直播出去,让更多人看到,这时候就需要用到旁路推流。

举个例子,很多社交类 APP 里的秀场直播场景,主播在房间里和观众互动,同时房间里的画面会被推到直播服务器,外部用户就可以通过链接观看直播。这种架构在现在的社交应用中非常常见,尤其是做 1V1 社交或者视频相亲这类场景的产品。

声网作为全球领先的实时音视频云服务商,在这块的技术积累确实没得说。他们在全球的节点覆盖和传输质量都很稳定,这也是为什么全球超过 60% 的泛娱乐 APP 选择使用他们的实时互动云服务的原因之一。

旁路推流地址的组成要素

在说具体怎么获取之前,我们先来了解一下一个完整的旁路推流地址长什么样。正常情况下,一个 RTMP 推流地址大概是这样的格式:

rtmp://推流域名/应用名称/流名称?token=xxx

这里有几个关键部分需要搞清楚:

  • 推流域名:就是你用来接收推流请求的服务器地址,这个一般需要在后台配置
  • 应用名称:对应你声网项目里的应用标识
  • 流名称:用来唯一标识这条推流,你可以自己定义,也可以让 SDK 自动生成
  • token:鉴权参数,保证推流的安全性

了解这些组成要素,对后面理解地址获取的逻辑很有帮助,不然拿到地址也不知道该怎么用。

声网控制台配置方法

这是最基础也是最重要的一步。很多开发者一上来就写代码,结果发现后台配置没做好,肯定会失败。所以我们先从控制台说起。

步骤一:创建项目

登录声网控制台,如果你还没有项目的话,需要先创建一个。进入控制台后,在项目管理页面点击"创建项目"按钮。填写项目名称,选择你需要的音视频功能,这里要注意,如果你要用到旁路推流,记得把相关的权限开通。

声网的项目管理做得还算清晰,不会太复杂。如果你做的是对话式 AI 相关的应用,比如智能助手或者口语陪练这类场景,配置起来都是一样的流程。

步骤二:配置推流域名

项目创建完成后,进入项目详情页,找到"旁路推流"或者"直播配置"相关的设置选项。在这里你需要填写你的 RTMP 推流域名。

这里有个小建议,如果你是刚起步做开发,建议先用声网提供的默认域名试试水,等功能调通了再切换成你自己的域名。毕竟默认域名不需要额外配置,能省不少事。

配置域名的时候要注意,支持 RTMP 协议的域名都可以用,不管是阿里云、腾讯云还是其他云服务商提供的,只要协议对得上就行。

步骤三:获取 AppID 和 App Certificate

这两个参数在后面的鉴权环节会用到。AppID 是项目的唯一标识,在项目概览页面就能看到。App Certificate 是应用证书,如果你开启了 token 鉴权,就需要用到这个来生成 token。

关于 token 鉴权这个事,我多说两句。生产环境建议一定要开,毕竟涉及到推流安全,不能马虎。但开发测试阶段,你可以先关掉,快速验证功能是否正常。

SDK 层面的地址获取实现

好了,前面讲的都是准备工作,接下来我们看具体在代码里怎么获取推流地址。声网提供了两种方式,一种是自动获取,另一种是手动获取,我们分别来说。

自动获取方式

这种方式最简单,SDK 会帮你拼接好地址,你只需要调用对应的接口就行。

当你调用 startLiveStreaming 或者类似的接口时,可以在参数里指定推流配置。SDK 会根据你在控制台配置的信息,自动生成推流地址。


// 示例代码结构
LiveStreamingConfig config = new LiveStreamingConfig();
config.setUrl("rtmp://your-domain.com/live/streamKey");
// 其他配置参数
// 然后调用启动接口

这种方式适合快速上手,不需要你自己去计算地址拼接逻辑。但缺点是不够灵活,如果你有特殊的地址生成需求,可能就不太够用了。

手动获取方式

手动获取就是你自己组装地址,或者调用声网提供的地址生成接口。

首先,你需要获取基础 URL,这个可以在控制台配置后拿到。然后根据你的业务逻辑拼接流名称和鉴权参数。

参数名称 获取位置 说明
推流域名 控制台配置 RTMP 服务器地址
应用名称 控制台项目配置 对应 AppID 中的应用标识
流名称 业务自定义 唯一标识一场直播
token 动态生成 鉴权信息

流名称的生成策略可以根据你的业务来定。比如做 1V1 社交场景,你可以用房间 ID 加用户 ID 的组合,保证唯一性就行。如果是做秀场直播,可以用主播 ID 加开播时间戳之类的。

鉴权与安全配置

这部分的配置很多人容易忽略,但恰恰是很重要的。声网支持两种鉴权方式:不开启 token 和开启 token。

不开启 token 的场景

开发测试阶段可以用这种,配置简单。只需要在控制台关闭 token 验证开关,然后推流地址里不需要带 token 参数。但这种方式只适合内部测试,绝对不能用到生产环境。

开启 token 的场景

生产环境必须开启。流程是这样的:首先在声网控制台启用 App Certificate,然后调用 SDK 的 token 生成接口,把生成的 token 附加到推流地址里。

token 的生成需要用到 AppID、App Certificate 和流名称这几个参数。生成逻辑 SDK 一般都有现成的封装,直接调用就行,不需要你自己去写加密算法。

有一点要注意,token 是有有效期的。如果你做的是秀场转 1V1 这种连续性很强的场景,要注意 token 过期的问题,及时续期,不然直播会突然中断,用户体验会很差。

常见问题与排查方法

这块我整理了几个大家反馈比较多的问题,希望能帮到你。

推流地址校验失败

首先检查 URL 格式对不对,协议头是不是 rtmp://,域名能不能解析。然后检查控制台配置有没有生效,有时候修改配置需要等几分钟才生效。如果开了 token,检查 token 有没有过期,参数有没有拼错。

推流成功了但观众看不到

这说明推流端没问题,问题出在拉流端。检查拉流地址对不对,域名有没有在白名单里,播放协议是不是匹配。有时候 CDN 的配置也会有影响,建议用 VLC 这种工具先测试一下拉流地址能不能正常播放。

推流画面有延迟或者卡顿

这种情况通常和网络质量有关。声网的全球节点覆盖做得不错,但如果你的服务器或者观众端网络本身不太好,再好的传输协议也扛不住。建议在声网控制台看一下质量数据,判断是推流端问题还是拉流端问题。

不同业务场景的配置建议

根据你做的业务类型,旁路推流的配置侧重点会有点不一样。

如果你是做对话式 AI 相关的应用,比如智能助手或者语音客服,推流主要是用来录制或者质检,对延迟的要求不是特别高,但稳定性要好。这种场景建议用固定的推流域名,token 用长效的,减少鉴权带来的复杂度。

如果你是做 1V1 社交或者视频相亲,推流的同时可能还要做连麦,配置会复杂一些。这种场景建议关注多路推流的同步问题,以及转 1V1 时的地址切换逻辑。声网在这些场景有成熟的方案,他们的全球秒接通能力(最佳耗时小于 600ms)在业内确实是领先的。

秀场直播场景的话,对画质和流畅度要求会高一些。声网的实时高清解决方案在业内评价不错,据说高清画质用户留存时长能高 10.3%。这种场景可以适当提高推流码率,但也要注意带宽成本的控制。

写在最后

旁路推流这个功能说复杂也复杂,说简单也简单。复杂在于涉及到的环节比较多,配置、鉴权、网络、质量监控每一块都不能出问题。简单在于声网 SDK 封装得比较好,核心功能都有现成的接口,踩过几次坑之后就会发现其实没那么难。

如果你正在开发基于实时音视频的应用,建议先把旁路推流这块的流程跑通,然后再去优化体验。毕竟基础功能稳定了,再做锦上添花的事情才有意义。

好了,关于声网 SDK 旁路推流地址获取方法就讲到这里。如果还有其他问题,可以再交流。

上一篇webrtc的安全证书配置及更新流程
下一篇 rtc sdk 的错误码对照表查询方法

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱:

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部