• IOS开发实现录音功能


    导入框架:

    1
    #import <AVFoundation/AVFoundation.h>

    声明全局变量:

    1
    2
    3
    4
    5
    @interface ViewController ()<AVAudioRecorderDelegate>
    {
      AVAudioRecorder *audioRecorder;
    }
    @end


    在ViewDidLoad中:

    1
    2
    3
    4
    5
    6
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
     button.frame = CGRectMake(100, 100, 100, 100);
     [button setTitle:@"TICK" forState:UIControlStateNormal];
     button.backgroundColor = [UIColor brownColor];
     [button addTarget:self action:@selector(startAudioRecoder:) forControlEvents:UIControlEventTouchUpInside];
     [self.view addSubview:button];

    按钮的触发事件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    - (void)startAudioRecoder:(UIButton *)sender{
      sender.selected = !sender.selected;
      if (sender.selected != YES) {
        [audioRecorder stop];
        return;
      }
       
      //  URL是本地的URL AVAudioRecorder需要一个存储的路径
      NSString *name = [NSString stringWithFormat:@"%d.aiff",(int)[NSDate date].timeIntervalSince1970];
       
      NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:name];
      NSError *error;
      //  录音机 初始化
      audioRecorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:path] settings:@{AVNumberOfChannelsKey:@2,AVSampleRateKey:@44100,AVLinearPCMBitDepthKey:@32,AVEncoderAudioQualityKey:@(AVAudioQualityMax),AVEncoderBitRateKey:@128000} error:&error];
      [audioRecorder prepareToRecord];
      [audioRecorder record];
      audioRecorder.delegate = self;
      /*
       1.AVNumberOfChannelsKey 通道数 通常为双声道 值2
       2.AVSampleRateKey 采样率 单位HZ 通常设置成44100 也就是44.1k
       3.AVLinearPCMBitDepthKey 比特率 8 16 24 32
       4.AVEncoderAudioQualityKey 声音质量
           ① AVAudioQualityMin  = 0, 最小的质量
           ② AVAudioQualityLow  = 0x20, 比较低的质量
           ③ AVAudioQualityMedium = 0x40, 中间的质量
           ④ AVAudioQualityHigh  = 0x60,高的质量
           ⑤ AVAudioQualityMax  = 0x7F 最好的质量
       5.AVEncoderBitRateKey 音频编码的比特率 单位Kbps 传输的速率 一般设置128000 也就是128kbps
        
       */
       
       
       
      NSLog(@"%@",path);
     
    }

    代理方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    - (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag{
      NSLog(@"录音结束");
    //  文件操作的类
     NSFileManager *manger = [NSFileManager defaultManager];
     
      NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    //  获得当前文件的所有子文件subpathsAtPath
      NSArray *pathlList = [manger subpathsAtPath:path];
     
    //  需要只获得录音文件
      NSMutableArray *audioPathList = [NSMutableArray array];
    //  遍历所有这个文件夹下的子文件
      for (NSString *audioPath in pathlList) {
    //    通过对比文件的延展名(扩展名 尾缀) 来区分是不是录音文件
        if ([audioPath.pathExtension isEqualToString:@"aiff"]) {
    //      把筛选出来的文件放到数组中
          [audioPathList addObject:audioPath];
        }
      }
       
      NSLog(@"%@",audioPathList);
       
    }
  • 相关阅读:
    java多线程开发容易犯的错误
    个性化推荐系统(九)--- 电商商品个性化推荐系统
    servlet的生命周期
    Servlet的执行过程
    Tomcat发布项目的几种方式
    xml文件解析
    linux执行wget url时提示“无法建立 SSL 连接”
    Linux使用yum install 安装程序时,提示“另外一个程序锁定了 yum;等待它退出……”
    线程状态
    单例模式和多线程
  • 原文地址:https://www.cnblogs.com/isItOk/p/5914638.html
Copyright © 2020-2023  润新知