畅直播
  • iOS
  • Android : Java
  • macOS
  • Windows
  • Web
  • Flutter
  • 产品简介
    • 概述
    • 发布日志
    • 基本概念
    • 产品优势
    • 应用场景
    • 限制说明
    • 升级指南
  • 计费说明
  • 下载
  • 快速开始
  • 直播推流
  • 直播拉流
  • 基础功能
  • 进阶功能
  • 最佳实践
  • 常用错误码
  • 服务端 API
  • 客户端 API
  • 常见问题

RTMP 推流到 ZEGO 服务器

更新时间:2022-11-30 15:30

1 功能简介

在直播场景下,主播可以通过 RTMP 推流工具将音视频流推送到 ZEGO 服务器,实现低延迟的效果。观众可以使用 ZEGO Express SDK 拉流。

RTMP 推流工具指的是通过 RTMP 地址进行推流的第三方工具,主要包括硬件推流设备、软件 OBS 等。

2 前提条件

  • 准备 RTMP 推流工具,例如 OBS。

3 使用步骤

3.1 获取 RTMP 推流地址

请联系 ZEGO 技术支持开通服务,通过 RTMP 推流调度 服务端接口获取 RTMP 推流地址。

3.2 使用 RTMP 工具推流

下文以 OBS 为例介绍 RTMP 工具的推流操作。

3.2.1 设置推流地址

  1. 打开 OBS 工具,在底部工具栏的“控件”页签单击“设置”进入设置界面。

  1. 单击 “推流” 进入流设置页签,选择服务类型为“自定义流媒体服务器”。

  2. 将获取到的 RTMP 推流地址填写到“服务器”和“串流密码”字段中。

  • 服务器:对应 RTMP 推流地址,即 rtmp://hosts/AppName/。
  • 串流密码:对应 RTMP 推流流名,即 “streamID”。

  1. 单击“确定”保存以上设置信息。

3.2.2 设置推流引导

  1. 在底部工具栏的“来源”页签单击 “+” 按钮。

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

3.2.2 使用 OBS 推流

  1. 在底部工具栏的“控件”页签单击“开始推流”,即可将音视频流推送到所设置的推流地址,底部出现绿灯,则表示推流成功。
  2. 若需停止推流,单击“控件”页签的“停止推流”即可。

使用 RTMP 工具推流后,用户无法通过 onRoomStreamUpdate 回调来收到音视频流新增或删除的通知,可以通过以下两种方式获取:

  • 使用 RTMP 工具推流后,业务服务器通过业务信令下发第三方推流 “streamID” 给房间内的其他用户,通知房间内的其他用户有流新增或删除。
  • 可以使用 ZEGO 服务端的 增加房间流 接口或 删除房间流 接口向指定房间增加或删除一路流信息,将 “streamID” 信息下发给房间内的其他用户,此时其他用户可以就通过 onRoomStreamUpdate 回调收到音视频流新增或删除的通知。

3.3 使用 SDK 拉流/停止拉流

调用 startPlayingStream 接口,传入 RTMP 推流的 “streamID” (即 3.2.1 章节中设置的“串流密码”)进行拉流播放。

// 开始拉流,设置远端拉流渲染视图,视图模式采用 SDK 默认的模式,等比缩放填充整个 View
// 如下 playView 为 UI 界面上 View.
ZegoCanvas playCanvas = new ZegoCanvas(playView);
engine.startPlayingStream("streamID", playCanvas);

调用 stopPlayingStream 接口,传入 RTMP 推流的 “streamID”(即 3.2.1 章节中设置的“串流密码”)停止拉取远端推送的音视频流。

// 停止拉流
engine.stopPlayingStream("streamID");

4 常见问题

1. 业务服务器如何知道 RTMP 推流工具是否已开始推流或停止推流?

ZEGO 提供了 publish_start 开始推流和 publish_stop 停止推流回调通知,如有需要请联系 ZEGO 技术支持配置。