//获取document目录的路径
- (NSString*) documentsPath {
if
(! _documentsPath) {
NSArray *searchPaths =
NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
_documentsPath = [searchPaths objectAtIndex: 0];
[_documentsPath retain];
}
return
_documentsPath;
}
//(document目录的路径)
NSString *destinationString = [[self documentsPath]
stringByAppendingPathComponent:filenameField.text];
NSURL *destinationURL = [NSURL fileURLWithPath: destinationString];
//初始化AVAudioRecorder
NSError *recorderSetupError = nil;
AVAudioRecorder audioRecorder = [[AVAudioRecorder alloc] initWithURL:destinationURL
settings:recordSettings error:&recorderSetupError];
[recordSettings release];
第二个参数 settings是一个容纳键值对的NSDictionary有四种一般的键
1:一般的音频设置
2:线性PCM设置
3:编码器设置
4:采样率转换设置
NSMutableDictionary 需要加入五个设置值(线性PCM)
NSMutableDictionary *recordSettings =
[[NSMutableDictionary alloc] initWithCapacity:10];
//1 ID号
[recordSettings setObject:
[NSNumber numberWithInt: kAudioFormatLinearPCM] forKey: AVFormatIDKey];
float
sampleRate =
[pcmSettingsViewController.sampleRateField.text floatValue];
//2 采样率
[recordSettings setObject:
[NSNumber numberWithFloat:sampleRate] forKey: AVSampleRateKey];
//3 通道的数目
[recordSettings setObject:
[NSNumber numberWithInt:
(pcmSettingsViewController.stereoSwitch.
on
? 2 : 1)]
forKey:AVNumberOfChannelsKey];
int
bitDepth =
[pcmSettingsViewController.sampleDepthField.text intValue];
//4 采样位数 默认 16
[recordSettings setObject:
[NSNumber numberWithInt:bitDepth] forKey:AVLinearPCMBitDepthKey];
//5
[recordSettings setObject:
[NSNumber numberWithBool:
pcmSettingsViewController.bigEndianSwitch.
on
]
forKey:AVLinearPCMIsBigEndianKey];
//6 采样信号是整数还是浮点数
[recordSettings setObject:
[NSNumber numberWithBool:
pcmSettingsViewController.floatingSamplesSwitch.
on
]
forKey:AVLinearPCMIsFloatKey];
AVAudioRecorder成功创建后,使用他非常直接.它的三个基本方法如下
-(
void
) startRecording {
[audioRecorder record];
}
-(
void
) pauseRecording {
[audioRecorder pause];
recordPauseButton.selected = NO;
}
-(
void
) stopRecording {
[audioRecorder stop];
}
- (NSDictionary *) audioRecordingSettings
{
NSDictionary *result = nil;
NSMutableDictionary *settings = [[NSMutableDictionaryalloc] init];
[settings
setValue:[NSNumbernumberWithInteger:AVAudioQualityMin]forKey:AVEncoderAudioQualityKey];
[settings
setValue:[NSNumbernumberWithFloat:MP3_SAMPLERATE]forKey:AVSampleRateKey];//44100.0f
[settings
setValue:[NSNumbernumberWithInteger:2]forKey:AVNumberOfChannelsKey];
[settings
setValue:[NSNumbernumberWithInteger:16]forKey:AVEncoderBitRateKey];
result = [NSDictionarydictionaryWithDictionary:settings];
return result;
}
#define MP3_SAMPLERATE 16000.0f
本文转载自:http://www.cnblogs.com/lm3515/archive/2011/03/11/1981381.html