zoukankan      html  css  js  c++  java
  • IPhone之AVAudioRecorder

    #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];
      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];
    }
    
  • 相关阅读:
    BZOJ1036 [ZJOI2008]树的统计Count 树链剖分
    SPOJ-QTREE Query on a tree 树链剖分
    BZOJ3224 洛谷3369 Tyvj 1728 普通平衡树 splay
    BZOJ1008 [HNOI2008]越狱 快速幂
    HDU4686 Arc of Dream 矩阵
    POJ2065 SETI 高斯消元
    POJ1487 Single-Player Games 高斯消元
    HDU3306 Another kind of Fibonacci 矩阵
    Hadoop基本操作
    Hadoop命令大全
  • 原文地址:https://www.cnblogs.com/lm3515/p/1981381.html
Copyright © 2011-2022 走看看