实时语音
  • 平台类型
  • 框架 / 引擎

自动发布直播

更新时间:2020-05-19 15:57

1 简介

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

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

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

2 步骤

2.1 初始化 SDK

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

2.2 设置发布代理对象

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

ZegoAudioRoomApi-Publisher.h

/**
 设置 ZegoAudioLivePublisher 代理对象

 @param publisherDelegate 遵循 ZegoAudioLivePublisherDelegate 协议的对象
 @attention 推流前务必要设置代理对象
 @note 设置代理对象失败,会导致 App 收不到相关回调
 */
- (void)setAudioPublisherDelegate:(id<ZegoAudioLivePublisherDelegate>)publisherDelegate

2.3 登录房间

调用如下 API 登录房间。在自动发布直播的模式下,登录房间后,SDK 会自动触发推流,无需用户手动推流。

ZegoAudioRoomApi.h

/**
 登录房间

 @param roomID 房间 ID,App 需保证其唯一性,长度不可超过 255 bytes
 @param block 登录完成回调 block
 @return true:登录成功,false:登录失败
 */
- (bool)loginRoom:(NSString *)roomID completionBlock:(ZegoAudioRoomBlock)block;

登录失败请查看 登录房间错误码

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

2.4 处理发布状态回调

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

ZegoAudioRoomApi-Publisher.h

/**
 推流状态更新

 @param stateCode 状态码,0 表示推流成功
 @param streamID 流 ID
 @param info 流信息
 @note 注意调用 [ZegoAudioRoomApi (Publisher) -setAudioPublisherDelegate] 设置代理对象成功后,客户端才能收到此通知
 */
- (void)onPublishStateUpdate:(int)stateCode streamID:(NSString *)streamID streamInfo:(NSDictionary *)info;

推流失败请查看 推流错误码

2.5 退出房间

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

ZegoAudioRoomApi.h

/**
 退出房间

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

3 API 调用时序图

自动推流的 API 调用时序图如下所示,请开发者参考。