iOS音频本地录制(音视频SDK高级功能七)

1、功能简介

音频录制是指,SDK 将录制的音频数据,传递给 App,App 根据自身需求,对音频数据进行处理(例如存储等)。开发者可按需选择是否使用音频录制。

本篇文章介绍即构科技音视频SDK高级功能第七篇,ZegoLiveRoom SDK 为开发者提供了音频录制的功能。关于如何使用SDK,请参照《SDK集成指引》。

2、步骤

音频录制的使用流程如下:

  • App 启用音频录制

  • App 设置音频录制代理对象

  • App 在回调中获取录制的音频数据并处理

2.1 启用音频录制

以下两个 API 均可启用音频录制,区别详见接口说明。

ZegoLiveRoomApi-Player.h

/**
 音频录制开关

 @param enable 开启音频录制。true 开启,false 关闭。默认 false
 @return true 成功,false 失败
 @discussion 初始化 SDK 后调用。开启音频录制后,调用方需要设置音频录制回调代理对象,并通过 [ZegoLiveRoomApi (Player) -onAudioRecord:sampleRate:numOfChannels:bitDepth:type:] 获取 SDK 录制的数据。使用此接口开启音频录制,相当于调用 enableSelectedAudioRecord:(ZegoAPIAudioRecordConfig)config,且 config 中的参数默认值为:ZEGO_AUDIO_RECORD_MIX、44100、单声道。
 */
- (bool)enableAudioRecord:(BOOL)enable;

/**
 音频录制开关

 @param config 配置信息, 参考 ZegoAPIAudioRecordConfig
 @return true 成功,false 失败
 @discussion 初始化 SDK 后调用。开启音频录制后,调用方需要设置音频录制回调代理对象,并通过 [ZegoLiveRoomApi (Player) -onAudioRecord:sampleRate:numOfChannels:bitDepth:type:] 获取 SDK 录制的数据
 */
-(bool)enableSelectedAudioRecord:(ZegoAPIAudioRecordConfig)config;

其中,调用者可通过 mask 指定何种音频录制方式,mask 含义如下:

enum ZegoAPIAudioRecordMask
{
    ZEGOAPI_AUDIO_RECORD_NONE      = 0x0,  ///< 关闭音频录制
    ZEGOAPI_AUDIO_RECORD_CAP       = 0x01, ///< 打开采集录制,即录制推流端音频
    ZEGOAPI_AUDIO_RECORD_RENDER    = 0x02, ///< 打开渲染录制,即录制拉流端音频
    ZEGOAPI_AUDIO_RECORD_MIX       = 0x04  ///< 打开采集和渲染混音结果录制,即录制推流和拉流端混音音频
};

2.2 设置音频录制代理对象

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

ZegoLiveRoomApi-Player.h

/**
 设置音频录制回调代理对象

 @param audioRecordDelegate 遵循 ZegoLiveApiAudioRecordDelegate 协议的代理对象
 @attention 开启音频录制功能,需要设置代理对象
 @note 未设置代理对象,或对象设置错误,可能导致无法正常收到相关回调
 */
- (void)setAudioRecordDelegate:(id<ZegoLiveApiAudioRecordDelegate>)audioRecordDelegate;

2.3 获取音频数据并处理

设置音频录制代理成功后,App 在此回调中获取 SDK 录制的音频数据。

ZegoLiveRoomApi-Player.h

/**
 音频录制回调

 @param audioData SDK 录制的音频源数据
 @param sampleRate 采样率,与 enableSelectedAudioRecord 中设置的值一致
 @param numOfChannels 通道数量,单通道
 @param bitDepth 位深度,16 bit
 @param type 音源类型,参考 ZegoAPIAudioRecordMask
 @attention 开启音频录制并设置成功代理对象后,用户调用此 API 获取 SDK 录制的音频数据。用户可自行对数据进行处理,例如:存储等
 @note SDK 发送音频数据的周期为 10ms
 @note 存储数据时注意取 sampleRate、numOfChannels、bitDepth 参数写包头信息
 @note 退出房间后或停止录制后,该回调不再被调用
 */
- (void)onAudioRecord:(NSData *)audioData sampleRate:(int)sampleRate numOfChannels:(int)numOfChannels bitDepth:(int)bitDepth type:(unsigned int)type;

请注意,开发者需要按照各自的需求特点,对录制的音频数据做处理。

猜你喜欢

转载自blog.csdn.net/sinat_20146421/article/details/84191295