提交工单
咨询集成、功能及报价等问题
登录房间成功后,有两种发布直播的方式:
本文主要讲述手动发布直播的实现过程。
参考文档:快速开始-初始化
调用如下 API 设置手动发布直播
AudioRoom.h
/**
设置登录房间成功后,是否手动发布直播
@param manual true:手动发布直播,false:自动发布直播,默认为自动发布直播
*/
void SetManualPublish(bool bManual);
调用如下 API 设置发布回调对象指针。设置回调对象指针失败,会导致 App 收不到相关回调。
AudioRoom-Publisher.h
/**
设置直播主播相关信息通知的回调
@param pCB 回调对象指针
@return true 成功,false 失败
*/
bool SetAudioLivePublisherCallback(IAudioLivePublisherCallback *pCB);
调用如下 API 登录房间
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 时需要确保在同一时刻是唯一的。
调用如下 API 发布直播,该方法只有在 SetManualPublish(true) 时调用才有效。手动发布直播模式下,用户需要手动发布直播。
AudioRoom-Publisher.h
/**
开始直播
@return true:调用成功; false:调用失败(失败原因:当前直播流已达上限、已经开播等)
@note 该方法只有在 SetManualPublish(true) 时调用才有效
*/
bool StartPublish();
手动发布开始后,开发者可在如下通知中处理发布状态和信息
AudioRoomCallback-Publisher.h
/**
推流状态更新
@param stateCode 状态码
@param pszStreamID 流 ID
@param oStreamInfo 推流信息
@note 注意调用 SetAudioLivePublisherCallback 设置回调对象指针成功后,客户端才能收到此回调
*/
virtual void OnPublishStateUpdate(int stateCode, const char *pszStreamID, const ZegoPublishingStreamInfo& oStreamInfo) = 0;
常见发布错误码参考如下:
错误码 | 说明 |
---|---|
stateCode = 0 | 推流成功 |
stateCode = 3 | 直播遇到严重错误。(如出现,请联系 ZEGO 技术支持) |
stateCode = 4 | 创建直播流失败。请确认 userId,userName 是否为空 |
stateCode = 6 | 流不存在。请检查:1.AppID 是否相同,要保证一致。2.是否同时开启测试环境或同时在正式环境下 |
stateCode = 7 | 媒体服务器连接失败。请检查:1.推流端是否正常推流。2.正式环境和测试环境是否设置都是同一个。 3.网络是否正常 |
stateCode = 8 | DNS 解析失败。请检查网络是否正常 |
stateCode = 9 | 未 loginRoom 就直接 play/publish。请确认推流前已 loginRoom |
stateCode = 10 | 逻辑服务器网络错误(网络断开约 3 分钟时会返回该错误)。请检查网络是否正常 |
stateCode = 105 | 推流名称错误 |
调用如下 API 停止直播,该方法只有在 SetManualPublish(true) 时调用才有效。
手动发布直播模式下,用户需要手动发布直播。停止直播后不会直接退出房间,用户依然可以在此房间中再次发布直播。
AudioRoom-Publisher.h
/**
停止直播
@note 该方法只有在 SetManualPublish(true) 时调用才有效
*/
void StopPublish();
调用如下 API 退出房间。退出房间成功会停止所有的推流
AudioRoom.h
/**
退出房间
@return true:成功,false:失败
@attention 退出登录后,等待 IAudioRoomCallback::OnLogoutRoom 回调
@note 退出房间成功会停止所有的推拉流
*/
bool LogoutRoom();
AudioRoomCallback.h
/**
退出房间回调
@param errorCode 错误码,0 表示无错误
@param pszRoomID 房间 ID
*/
virtual void OnLogoutRoom(int errorCode, const char *pszRoomID) {}
手动推流的 API 调用时序图如下所示,请开发者参考。
联系我们
文档反馈