首页 > 系统 > iOS > 正文

IOS开发实现录音功能

2020-07-26 03:26:00
字体:
来源:转载
供稿:网友

导入框架:

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

按钮的触发事件

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

代理方法:

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表