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

播放直播

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

1 简介

登录房间成功后,SDK 会自动拉流播放直播。用户无需手动触发拉流

但如果想获取播放流状态,需要进行回调对象指针的设置。

2 步骤

2.1 初始化 SDK

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

2.2 设置播放回调对象指针

调用如下 API 设置播放回调对象指针。设置回调对象指针失败,会导致 App 收不到相关回调。

AudioRoom-Player.h

/**
 设置直播观众相关信息通知的回调

 @param pCB 回调对象指针
 @return true 成功,false 失败
 */
 bool SetAudioLivePlayerCallback(IAudioLivePlayerCallback *pCB);

2.3 登录房间

调用如下 API 登录房间。无论是手动/自动发布直播模式,登录房间后,SDK 均会自动拉流,无需用户手动操作

AudioRoom.h

/**
 登录房间

 @param pszRoomID 房间 ID,App 需保证其唯一性,长度不可超过 255 byte
 @return true:登录成功,false:登录失败
 @attention 登录房间后,等待 IAudioRoomCallback::OnLoginRoom 回调
 */
 bool LoginRoom(const char* pszRoomID);
AudioRoomCallback.h

/**
 登录房间成功回调

 @param errorCode 错误码,0 表示无错误
 @param pszRoomID 房间 ID
 */
 virtual void OnLoginRoom(int errorCode, const char *pszRoomID) = 0;

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

错误码 说明
stateCode = 0 登录成功
stateCode = -1 没有配置为测试环境,请调用 SetUseTestEnv(true)
stateCode = -2 调用次数太频繁,超出后台限制。请调整调用次数,每分钟最多 30 次
stateCode = 1042 网络连不上,请检查当前网络是否正常
stateCode = 4131 网络连接失败,一般由于网络波动或其他异常导致,请检查当前网络是否正常
stateCode = 1048677 测试环境或正式环境设置错误。如果使用测试环境,
请确保在初始化 SDK 之前调用 SetUseTestEnv(true)
stateCode = 1048680 房间不存在,请检查房间是否存在

请注意,参数 pszRoomID,是由 App 业务端定义、实现并传入的。开发者在定义 pszRoomID 时需要确保在同一时刻是唯一的。

2.4 处理播放状态回调

自动播放开始后,开发者需在如下回调中处理播放状态和流信息

AudioRoom-Player.h

/**
 播放状态更新回调

 @param stateCode 状态码
 @param pStreamInfo 流信息
 @note 调用 SetAudioLivePlayerCallback 设置回调对象指针成功后,客户端才能收到此回调
 */
 virtual void OnPlayStateUpdate(int stateCode, const ZegoStreamInfo& pStreamInfo) = 0;

常见播放错误码参考如下:

错误码 说明
stateCode = 0 拉流成功
stateCode = 3 直播遇到严重错误。(如出现,请联系 ZEGO 技术支持)
stateCode = 5 获取流信息失败。请检查:1.推流方是否推流成功。2.延迟重试
stateCode = 6 流不存在。请检查:1.AppID 是否相同,要保证一致。2.是否同时开启测试环境或同时在正式环境下
stateCode = 7 媒体服务器连接失败。请检查:1.推流端是否正常推流。2.正式环境和测试环境是否设置都是同一个。
3.网络是否正常
stateCode = 8 DNS 解析失败。请检查网络是否正常
stateCode = 9 未 loginRoom 就直接 play/publish。请确认推流前已 loginRoom
stateCode = 10 逻辑服务器网络错误(网络断开约 3 分钟时会返回该错误)。请检查网络是否正常

2.5 退出房间

调用如下 API 退出房间。无论是手动/自动发布直播模式,退出房间后,会停止所有的拉流,无需用户手动停止拉流

AudioRoom.h

/**
 退出房间

 @return 成功,false 失败
 @attention 退出登录后,等待 IAudioRoomCallback::OnLogoutRoom 回调
 @note 退出房间会停止所有的推拉流
 */
 bool LogoutRoom();
AudioRoomCallback.h

/**
 退出房间回调

 @param errorCode 错误码,0 表示无错误
 @param pszRoomID 房间 ID
 */
 virtual void OnLogoutRoom(int errorCode, const char *pszRoomID) {}
本篇目录