IPhone之AVAudioRecorder

来源:互联网 发布:怎么查看linux内存大小 编辑:程序博客网 时间:2024/06/05 15:10
转载来源于:http://www.cnblogs.com/lm3515/archive/2011/03/16/1985666.html
#import <AVFoundation/AVFoundation.h>  需要引入
   
//获取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];
  floatsampleRate =
   [pcmSettingsViewController.sampleRateField.text floatValue];
  //2 采样率
  [recordSettings setObject:
   [NSNumber numberWithFloat:sampleRate] forKey: AVSampleRateKey];
    
  //3 通道的数目
  [recordSettings setObject:
   [NSNumber numberWithInt:
    (pcmSettingsViewController.stereoSwitch.on ? 2 : 1)]
   forKey:AVNumberOfChannelsKey];
  intbitDepth =
   [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]; 




原创粉丝点击