• 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];
    }
    
  • 相关阅读:
    setAnimationTransition:forView:cache: 运行动画时背景色问题
    架构师速成4.6-软技能和硬技能
    Java获取某年某周的第一天
    openssl之BIO系列之12---文件描写叙述符(fd)类型BIO
    centos 使用 CP 命令 不提示 覆盖
    [3 Jun 2015 ~ 9 Jun 2015] Deep Learning in arxiv
    P1314 聪明的质监员
    P2858 [USACO06FEB]奶牛零食Treats for the Cows
    1163 访问艺术馆
    P1352 没有上司的舞会
  • 原文地址:https://www.cnblogs.com/lm3515/p/1981381.html
Copyright © 2020-2023  润新知