首页 > 代码库 > IOS开发实现录音功能
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); } |
IOS开发实现录音功能
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。