我是採用的AVAudioRecorder這個架構來進行錄音
這個錄音跟官方網站上的speakHere有些區別,最大的區別是,這個必須要錄製完成才能處理檔案,而speakhere樣本是可以實現邊錄製邊上傳的效果。
#import <AVFoundation/AVFoundation.h>
#import <CoreAudio/CoreAudioTypes.h> 引入架構,這是使用錄音功能的基本配備
先說明一點,預設AVAudioRecorder錄製後的格式是.caf,而大部分的播放器都是不支援這個格式的,下面一段設定是可以讓錄製格式是wav的格式
NSDictionary *recordSetting = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithFloat: 44100.0],AVSampleRateKey, //採樣率
[NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey,
[NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,//採樣位元 預設 16
[NSNumber numberWithInt: 2], AVNumberOfChannelsKey,//通道的數目
[NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,//大端還是小端 是記憶體的組織方式
[NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,nil];//採樣訊號是整數還是浮點數
NSURL *recordedTmpFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent: [NSString stringWithFormat: @"%.0f.%@", [NSDate timeIntervalSinceReferenceDate] * 1000.0, @"wav"]]]; //檔案名稱的設定
//Setup the recorder to use this file and record to it.
AVAudioRecorder *recorder = [[ AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSetting error:&error];
[recorder prepareToRecord];
[recorder record];
下面代碼應該是當前.m檔案載入時候就設定
AVAudioSession * audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error: &error]; //設定音頻類別,這裡表示當應用啟動,停掉後台其他音頻
[audioSession setActive:YES error: &error];//設定當前應用音頻活躍性