实时语音
  • iOS
  • Android : Java
  • Windows
  • 概述
  • 限制说明
  • SDK 下载
  • 快速开始
  • 进阶功能
  • API 文档
  • 常见错误码
  • 语音通话
  • 语音直播
  • 游戏语音
  • 文档中心
  • 实时语音
  • 快速开始
  • 手动发布直播

手动发布直播

更新时间:2021-04-25 20:25

1 简介

登录房间成功后,有两种发布直播的方式:

  1. 手动发布直播。登录成功后,SDK 不会自动开始推流,需要用户手动触发。
  2. 自动发布直播。登录成功后,SDK 会自动开始推流

本文主要讲述手动发布直播的实现过程。

2 步骤

2.1 初始化 SDK

参考文档:快速开始-初始化

2.2 设置手动发布直播

调用如下 API 设置手动发布直播

/**
 * 设置登录房间成功后,是否手动发布直播。
 *
 * @param manual true:手动发布直播,false:自动发布直播,默认为自动发布直播
 */
public void setManualPublish(boolean manual);

2.3 设置发布代理对象

调用如下 API 设置 ZegoAudioLivePublisherDelegate 代理对象。设置代理对象失败,会导致 App 收不到相关回调

/**
 * 设置 ZegoAudioLivePublisher 代理对象。
 * 推流前务必要设置代理对象, 否则会收不到相关回调
 *
 * @param publisherDelegate 实现 ZegoAudioLivePublisherDelegate 接口的对象实例
 */
 public void setAudioPublisherDelegate(ZegoAudioLivePublisherDelegate publisherDelegate);

2.4 登录房间

调用如下 API 登录房间

/**
 * 登录房间。
 *
 * @param roomID 房间 ID,App 需保证其唯一性
 * @param completionCallback 登录完成回调该实例的 onLoginCompletion 方法
 * 
 * @return true:登录成功,false:登录失败
 */
public boolean loginRoom(String roomID, ZegoLoginAudioRoomCallback completionCallback);

常见登录错误码参考如下:

错误码 错误原因
stateCode = 0 登录成功
stateCode = 1042 网络连不上。请检查当前网络是否正常
stateCode = 1048677 测试环境或者正式环境设置错误。如果使用测试环境,
请确保在 initWithAppId 之前设置 setUseTestEnv(true)
stateCode = 268435457 超出房间能容纳的最大连接数

2.5 发布直播

调用如下 API 发布直播,该方法只有在 ZegoAudioRoom#setManualPublish(true) 时调用才有效。手动发布直播模式下,用户需要手动发布直播

/**
 * 开始直播。
 * 该方法只有在 #setManualPublish(boolean) 为 true 时调用才有效
 *
 * @return true:调用成功; false:调用失败(失败原因:当前直播流已达上限、已经开播等) 
 */
public boolean startPublish();

2.6 处理发布状态回调

手动发布开始后,开发者可在如下通知中处理发布状态和信息

/**
 * 推流状态更新。
 * 注意调用 #setAudioPublisherDelegate(ZegoAudioLivePublisherDelegate) 设置代理对象成功后,客户端才能收到此通知
 *
 * @param stateCode 状态码,0 表示推流成功
 * @param streamID 流 ID
 * @param info 流信息
 */
public void onPublishStateUpdate(int stateCode, String streamID, HashMap<String, Object> streamInfo);

常见发布错误码参考如下:

错误码 错误原因
stateCode = 0 直播成功
stateCode = 3 直播遇到严重错误。stateCode=1,2,3 这三个基本不会出现
stateCode = 4 创建直播流失败。请确认 userid,username 是否为空
stateCode = 5 获取流信息失败
stateCode = 6 流不存在。请检查:(1) AppID 是否相同,要保证一致; (2) 是否同时开启测试环境或同时在正式环境下
stateCode = 7 媒体服务器连接失败。请确认推流端是否正常推流、正式环境和测试环境是否设置都是同一个、网络是否正常
stateCode = 8 DNS 解析失败
stateCode = 9 未 loginRoom 就直接 play/publish
stateCode = 10 逻辑服务器网络错误(网络断开约 3 分钟时会返回该错误)

2.7 停止直播

调用如下 API 停止直播,该方法只有在 ZegoAudioRoom#setManualPublish(true) 时调用才有效。

手动发布直播模式下,用户需要手动发布直播。停止直播后不会直接退出房间,用户依然可以在此房间中再次发布直播。

/**
 * 停止直播。
 * 该方法只有在 ZegoAudioRoomApi#setManualPublish(boolean) 为 true 时调用才有效
 */
public void stopPublish();

2.8 退出房间

调用如下 API 退出房间。退出房间成功会停止所有的推流

/**
 * 退出房间。
 * 退出房间成功会停止所有的推拉流
 *
 * @return true:成功,false:失败 
 */
public boolean logoutRoom();

3 API 调用时序图

手动推流的 API 调用时序图如下所示:

本篇目录