最近公司集成了一個(gè)語音聊天功能, 就是簡(jiǎn)單的錄音發(fā)送和接收播放功能, 這里對(duì)聲音處理的部分封裝了一下, 分享給大家.
1. 準(zhǔn)備
由于工具類是單例設(shè)計(jì), 大家集成工具類后直接用類方法獲取工具類對(duì)象, 并設(shè)置對(duì)象的代理屬性即可.
/**
* 獲取單例
*/
+ (nonnull __kindof WGVoiceManager *)manager;
/** 代理 */
@property (nonatomic, weak, nullable) id<WGVoiceManagerDelegate> delegate;
2. 錄音
工具類提供了4個(gè)關(guān)于錄音最基本的方法.
/**
* 開始錄音
*/
- (void)recordStart;
/**
* 停止錄音
*/
- (void)recordStop;
/**
* 取消錄音
*/
- (void)recordCancel;
/**
* 檢查錄音狀態(tài)
* 返回 是否正在錄音
*/
- (BOOL)isRecording;
3. 播放
工具類提供了2個(gè)關(guān)于播放最基本的方法.
/**
* 播放語音
* 參數(shù) base64String 要播放的聲音文件的base64字符串
*/
- (void)playWithBase64String:(nonnull NSString *)base64String;
/**
* 檢查播放狀態(tài)
* 返回 是否正在播放
*/
- (BOOL)isPlaying;
4. 監(jiān)聽
另外還提供了3個(gè)代理方法, 分別用來監(jiān)聽錄音音量變化, 錄音完成和播放完成.
@protocol WGVoiceManagerDelegate <NSObject>
@optional
/**
* 代理方法1 監(jiān)聽錄音音量改變
* 參數(shù) manager 本單例
* 參數(shù) volumn 音量值
*/
- (void)manager:(nonnull __kindof WGVoiceManager *)manager gotVolume:(float)volume;
/**
* 代理方法2 監(jiān)聽錄音完成
* 參數(shù) manager 本單例
* 返回 base64String 錄音文件base64字符串
*/
- (void)manager:(nonnull __kindof WGVoiceManager *)manager didRecordByBase64String:(nonnull NSString *)base64String;
/**
* 代理方法3 監(jiān)聽播放完成
* 參數(shù) manager 本單例
*/
- (void)didPlayWithManager:(nonnull __kindof WGVoiceManager *)manager;
另外如有其它屬性需要設(shè)置(比如錄音的比特率等等)的可以進(jìn) .m 文件內(nèi)進(jìn)行設(shè)置.
最后附上github地址
https://github.com/Veeco/WGVoiceManager