音訊的錄製與播放元件SYAudio
阿新 • • 發佈:2018-12-25
音訊的錄製
- 錄製後會進行壓縮更小的檔案,並以mp3格式輸出
- 錄製過程中,可以監測音量的變化
- 可以設定錄音時間長
音訊的播放
- 本地的檔案播放
- 網路檔案播放
- 播放狀態監測
- 播放時間監測
- 檔案播放總時間
- 當前播放進度時間
效果圖
使用注意:
- 新增AVFoundation.framework、AudioToolbox.framework
- 音訊處理包括:開始錄音、停止錄音、播放音訊、停止音訊播放
- 音訊處理是通過按鈕進行互動,通常採用三種狀態互動方式
- UIControlEventTouchDown狀態時,開始錄音
- UIControlEventTouchUpInside狀態時,停止錄音,並進行類似音訊檔案儲存的操作
- UIControlEventTouchDragExit狀態時,與UIControlEventTouchUpInside狀態進行相同的操作
- 播放網路音訊檔案時,http協議的適配
- 在plist檔案設定屬性:App Transport Security Settings-Allow Arbitrary Loads-YES
- 設定Enable Bitcode屬性為NO
使用介紹
- 自動匯入:使用命令
pod 'SYAudio'
匯入到專案中 - 手動匯入:或下載原始碼後,將原始碼新增到專案中
使用示例
匯入標頭檔案
#import "SYAudio.h"
音量圖示顯示YES,或不顯示NO
// 顯示
[SYAudio shareAudio].audioRecorder.monitorVoice = YES;
// 不顯示
[SYAudio shareAudio].audioRecorder.monitorVoice = NO;
音訊處理方法-開始錄音
NSString *filePath = xxxxx;
[[SYAudio shareAudio].audioRecorder recorderStart:filePath complete:^(BOOL isFailed) {
}];
音訊處理方法-停止錄音
[[SYAudio shareAudio].audioRecorder recorderStop];
音訊處理方法-播放音訊(本地音訊檔案,或網路音訊檔案均可播放)
NSString *filePath = xxxxx;
[[SYAudio shareAudio].audioPlayer playerStart:filePath complete:^(BOOL isFailed) {
}];
音訊處理方法-停止音訊播放
[[SYAudio shareAudio].audioPlayer playerPause];
代理、協議SYAudioDelegate,及實現協議方法
[SYAudio shareAudio].audioPlayer.delegate = self;
實現協議方法
錄音
/// 開始錄音
- (void)recordBegined
{
}
/// 停止錄音
- (void)recordFinshed
{
}
/// 正在錄音中,錄音音量監測
- (void)recordingUpdateVoice:(double)lowPassResults
{
}
/// 正中錄音中,是否錄音倒計時、錄音剩餘時長
- (void)recordingWithResidualTime:(NSTimeInterval)time timer:(BOOL)isTimer
{
}
壓縮
/// 開始壓縮錄音
- (void)recordBeginConvert
{
}
/// 結束壓縮錄音
- (void)recordFinshConvert:(NSString *)filePath
{
}
播放
/// 開始播放音訊
- (void)audioPlayBegined:(AVPlayerItemStatus)state
{
}
/// 正在播放音訊(總時長,當前時長)
- (void)audioPlaying:(NSTimeInterval)totalTime time:(NSTimeInterval)currentTime
{
}
/// 結束播放音訊
- (void)audioPlayFinished
{
}