
声网 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 旁路推流地址获取方法就讲到这里。如果还有其他问题,可以再交流。

