IOS开发之录音

         为什么要把录音单独拿出来写呢,只是因为这个比较简单,但是就是因为他比较简单,导致我好长一段时间把它给忽视了,但是等到我回想起来的时候,忽然忘记了我到底有没有学过这个东西 ,在此,实在是想想都有点脸红。。。。-。-!;

录音:

   相关类介绍:

    (1)AVaudioPlayer

    (2)setting

          <1>AVNumberOfChannelsKey     通道数

          <2>AVSampleRateKey           采样率 44100

          <3>AVLinearPCMBitDepthKey    比特lv 16 32

          <4>AVEncoderAudioQualityKey  质量

          <5>AVEncoderBitRateKey       比特采样lv 128000

    (3)使用

        1、初始化

        2、开始录音

        3.停止录音

 

废话不多说,我们直接上代码;

 

 

 

 

//录音的方法

-(void)startAudioRecoder:(UIButton *)sender{

    /**

     URL:是本地的一个URL,recodeer需要一个存储的路径

     */

    sender.selected = !sender.selected;

    if (sender.selected!=YES) {

        [recorder stop];

        return;

    }

    

    NSString * name = [NSString stringWithFormat:@"%d.aiff",(int)[NSDate date].timeIntervalSince1970];

    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:name] ;

    NSError *error;

    recorder = [[AVAudioRecorder alloc]initWithURL:[NSURL URLWithString:path] settings:@{AVNumberOfChannelsKey:@2,AVSampleRateKey:@44100,AVLinearPCMBitDepthKey:@32,AVEncoderAudioQualityKey:@(AVAudioQualityMax),AVEncoderBitRateKey:@128000}  error:&error];

    /**

     *  AVNumberOfChannelsKey 声道数   通常为双声道2

     *  AVSampleRateKey       采样率   赫兹-》44100

     *  AVLinearPCMBitDepthKey比特率   8  16  24  32

     *  AVEncoderAudioQualityKey声音的质量  需要的是一个枚举

                  AVAudioQualityMin    = 0,

                  AVAudioQualityLow    = 0x20,

                  AVAudioQualityMedium = 0x40,

                  AVAudioQualityHigh   = 0x60,

                  AVAudioQualityMax    = 0x7F

     *  AVEncoderBitRateKey   音频编码的比特率 BPS传输速率  128000bps

     */

    [recorder prepareToRecord];

    [recorder record];

    NSLog(@"%@",path);

    

    

}

 

//录音结束的时候调用

- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag{

//    存储文件的位置

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];

//    这里我门引用文件操作的类

    NSFileManager *manager = [NSFileManager defaultManager];

//    获得所有路径下的文件

    NSArray *pathList = [manager subpathsAtPath:path];

    NSMutableArray *audiopathList = [NSMutableArray  array];

    for (NSString *audioPath in pathList) {

//        通过对比延展名来区分是不是所需要的文件

        if ([audioPath.pathExtension isEqualToString:@"aiff" ]) {

//            把筛选出来的文件放到数组中

            [audiopathList addObject:audioPath];

        }

    }

    NSLog(@"%@",audiopathList);

    

    

    

    

    

}

 //一定要记住 、我是学过录音的,不能学过之后和没学过一样,实在是罪过罪古;;;;;;;;;

 

posted @ 2016-03-22 21:06  Biaoac  阅读(413)  评论(0编辑  收藏  举报