RTMP 推流到 ZEGO 服务器
功能简介
在直播场景下,主播可以通过 RTMP 推流工具将音视频流推送到 ZEGO 服务器,实现低延迟的效果。观众可以使用 ZEGO Express SDK 拉流。
RTMP 推流工具指的是通过 RTMP 地址进行推流的第三方工具,主要包括硬件推流设备、软件 OBS 等。

前提条件
- 已联系 ZEGO 技术支持,开通 RTMP 工具推流到 ZEGO 服务器的相关权限。
- 准备 RTMP 推流工具,例如 OBS。
使用步骤
获取 RTMP 推流地址
请联系 ZEGO 技术支持开通服务,通过 RTMP 推流调度 服务端接口获取 RTMP 推流地址。
使用 RTMP 工具推流
下文以 OBS 为例介绍 RTMP 工具的推流操作。
设置推流地址
- 打开 OBS 工具,在底部工具栏的“控件”页签单击“设置”进入设置界面。

-
单击 “推流” 进入流设置页签,选择服务类型为“自定义流媒体服务器”。
-
将获取到的 RTMP 推流地址填写到“服务器”和“串流密码”字段中。
-
服务器:对应 RTMP 推流地址,即
rtmp://hosts/AppName/
请注意,RTMP 推流地址 URL,与 CDN 推流鉴权 中的推流地址 URL 不同,不可混用,使用时请您注意区分。
-
串流密码:对应 RTMP 推流流名,即 “streamID”。

- 单击“确定”保存以上设置信息。
设置推流引导
- 在底部工具栏的“来源”页签单击 “+” 按钮。

- 按需选择输入源,例如“显示器捕获”。

使用 OBS 推流
- 在底部工具栏的“控件”页签单击“开始推流”,即可将音视频流推送到所设置的推流地址,底部出现绿灯,则表示推流成功。

- 若需停止推流,单击“控件”页签的“停止推流”即可。
使用 RTMP 工具推流后,用户无法通过 roomStreamUpdate 回调来收到音视频流新增或删除的通知,可以通过以下两种方式获取:
- 使用 RTMP 工具推流后,业务服务器通过业务信令下发第三方推流 “streamID” 给房间内的其他用户,通知房间内的其他用户有流新增或删除。
- 可以使用 ZEGO 服务端的 增加房间流 与 删除房间流 接口向指定房间增加或删除一路流信息,将 “streamID” 信息下发给房间内的其他用户,此时其他用户可以就通过 roomStreamUpdate 回调收到音视频流新增或删除的通知。
使用 SDK 拉流/停止拉流
调用 startPlayingStream 接口,传入 RTMP 推流的 “streamID” (即 3.2.1 章节中设置的“串流密码”)进行拉流播放。
import { findNodeHandle } from 'react-native';
// 取一个react 的 ref
let remoteViewRef = findNodeHandle(this.refs.zego_play_view);
// 开始拉流
ZegoExpressEngine.instance().startPlayingStream("streamID", {
'reactTag': remoteViewRef,
'viewMode': 0,
'backgroundColor': 0
});
// react render
render() {
return (
<View>
<ZegoTextureView ref='zego_play_view'/>
</view>
)
}
调用 stopPlayingStream 接口,传入 RTMP 推流的 “streamID”(即 3.2.1 章节中设置的“串流密码”)停止拉取远端推送的音视频流。
// 停止拉流
ZegoExpressEngine.instance().stopPublishingStream();
常见问题
1. 业务服务器如何知道 RTMP 推流工具是否已开始推流或停止推流?
ZEGO 提供了 publish_start
开始推流和 publish_stop
停止推流回调通知,如有需要请联系 ZEGO 技术支持配置。