• 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);
       
    }
  • 相关阅读:
    09、自学——Linux的学习进度与任务【目录文件的操作】
    08、自学——Linux的学习进度与任务【文件管理类命令—操作】
    07、自学——Linux的学习进度与任务【文件管理类命令—查看】
    06、自学——Linux的学习进度与任务【FHS】
    05、自学——Linux的学习进度与任务【shell中bash的特性】
    04、自学——Linux的学习进度与任务【时间日期管理类的命令】
    vue中computed、methods、watched比较
    vue中props组件传值
    vue中component组件使用——模块化开发和全局组件
    vue项目启动配置
  • 原文地址:https://www.cnblogs.com/isItOk/p/5914638.html
Copyright © 2020-2023  润新知