ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IOS开发实现录音功能

2020-12-08 23:03:23  阅读:191  来源: 互联网

标签:audioRecorder 文件 button IOS 录音 NSString 开发 path 100


导入框架:

#import <AVFoundation/AVFoundation.h>

声明全局变量:

@interface ViewController ()<AVAudioRecorderDelegate>
{
   AVAudioRecorder *audioRecorder;
}
@end

在ViewDidLoad中:

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];

按钮的触发事件:

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);

代理方法:

- ( 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);
   
}

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:196800191,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

原文作者:复杂化
原文地址:https://blog.csdn.net/m0_46110288/article/details/110572498?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160743835219725211951213%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160743835219725211951213&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-6-110572498.pc_search_result_cache&utm_term=iOS%E5%BC%80%E5%8F%91

标签:audioRecorder,文件,button,IOS,录音,NSString,开发,path,100
来源: https://www.cnblogs.com/fadaijun/p/14106177.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有