iphone之AVAudioRecorder

来源:互联网 发布:像堆糖一样的软件 编辑:程序博客网 时间:2024/06/04 23:30
//获取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];
}
一个setting的设置

- (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
0 0
原创粉丝点击