前言:本篇介绍录音。
内容大纲:
1、录音应用场景。
2、录音功能实现。
3、概念补充。
4、开发经验。
正文:
1、录音应用场景
① 语言聊天:在即时通讯APP中,例如即时通讯APP中,例如微信、QQ等等,都有语音发送功能。
②语音备忘录:录一段音频,来记录某件事情。
2、录音功能实现
①导入AVFoundation框架
一些多媒体的处理,基本都使用这个框架。
②使用AVAudioRecorder进行录音
<1>创建录音文件存放路径
<2>设置录音附件设置项(#import <AVFoundation/AVAudioSettings.h>)
2-1、 NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] init];
2-2、设置编码格式:
[recordSettings setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey: AVFormatIDKey];
2-3、采样率:
[recordSettings setValue :[NSNumber numberWithFloat:11025.0] forKey: AVSampleRateKey];
2-4、通道数:
[recordSettings setValue :[NSNumber numberWithInt:2] forKey: AVNumberOfChannelsKey];
2-5、音频质量,采样质量:
[recordSettings setValue:[NSNumber numberWithInt:AVAudioQualityMin] forKey:AVEncoderAudioQualityKey];
<3>根据路径以及设置项,创建录音对象
_audioRecorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:nil];
<4>准备录音
[self.audioRecorder prepareToRecord];
<5>开始录音
[self.audioRecorder record];
<6>暂停录音
[self.audioRecorder pause];
<7>停止录音
[self.audioRecorder stop];
③代码实现:
<1>首先在storyboard上简单实现三个按钮监听:
<2>实现的代码:
1 #import "ViewController.h" 2 #import <AVFoundation/AVFoundation.h> 3 4 @interface ViewController () 5 6 /** 录音对象*/ 7 @property(nonatomic ,strong) AVAudioRecorder *recorder; 8 9 @end 10 11 @implementation ViewController 12 13 -(void)viewDidLoad{ 14 [self createRecord]; 15 } 16 17 - (void)createRecord{ 18 // 0.1 创建录音文件存放路径 19 NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"test.caf"]; 20 NSLog(@"%@", path); 21 NSURL *url = [NSURL URLWithString:path]; 22 23 // 0.2 创建录音设置 24 NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] init]; 25 // 设置编码格式 26 [recordSettings setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey: AVFormatIDKey]; 27 // 采样率 28 [recordSettings setValue :[NSNumber numberWithFloat:11025.0] forKey: AVSampleRateKey]; 29 // 通道数 30 [recordSettings setValue :[NSNumber numberWithInt:2] forKey: AVNumberOfChannelsKey]; 31 //音频质量,采样质量 32 [recordSettings setValue:[NSNumber numberWithInt:AVAudioQualityMin] forKey:AVEncoderAudioQualityKey]; 33 34 35 // 1. 创建录音对象 36 self.recorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:nil]; 37 38 39 // 2. 准备录音(系统会分配一些录音资源) 40 [self.recorder prepareToRecord]; 41 } 42 43 - (IBAction)beginRecord 44 { 45 NSLog(@"开始录音"); 46 [self.recorder record]; // 直接录音, 需要手动停止 47 // [self.recorder recordForDuration:3]; // 从当前执行这行代码开始录音, 录音5秒 48 // [recorder recordAtTime:recorder.deviceCurrentTime + 2]; // 2s, 需要手动停止 49 // [self.recorder recordAtTime:self.recorder.deviceCurrentTime + 2 forDuration:3]; // 2s 3s 50 } 51 52 - (IBAction)pauseRecord:(id)sender { 53 NSLog(@"暂停录音"); 54 [self.recorder pause]; 55 } 56 57 - (IBAction)stopRecord { 58 NSLog(@"停止录音"); 59 [self.recorder stop]; 60 } 61 62 @end
<3>通知录音之后,可以通过打印出来的路径,然后找到对应的录音文件,可以自己试听测试一下。
3、概念补充
①编码
概念: 编码是信息从一种形式转换为另一种形式的过程。
编码格式:
> PCM : 脉冲编码调制,是一种非压缩音频数字化技术,是一种未压缩的原音重现, 数字模式下, 音频的初始信号是PCM
> MP3
> AAC: AAC其实是“高级音频编码(advanced audio coding)”的缩写,它是被设计用来取代MP3格式的。
> HE-AAC: HE-AAC是AAC的一个超集,这个“HE”代表的是“High efficiency”。 HE-AAC是专门为低比特率所优化的一种音频编码格式
> AMR: AMR全称是“Adaptive Multi-Rate”,它也是另一个专门为“说话(speech)”所优化的编码格式,也是适合低比特率环境下采用
> ALAC: 它全称是“Apple Lossless”,这是一种没有任何质量损失的音频编码方式,也就是我们说的无损压缩
> IMA4: 这是一个在16-bit音频文件下按照4:1的压缩比来进行压缩的格式。
②文件格式(不同的文件格式,可保存不同的编码格式编码的文件)
>WAV
特点: 音质最好的格式, 对应PCM编码。
适用: 多媒体开发、保存音乐和音效素材。
>MP3
特点: 音质好,压缩比比较高,被大量软件和硬件支持。
适用: 适合用于比较高要求的音乐欣赏。
>caf
特点: 适用于几乎iOS中所有的编码格式。
③参考资料地址:
转载注明出处:http://www.cnblogs.com/goodboy-heyang/p/5374322.html ,尊重劳动成功。
4、开发经验
caf 文件格式, 因为某些编码设置, 文件有可能会很大, 而且caf, 格式并不是很通用, 所以在开发过程中, 一般会进行压缩转码, MP3。
相关学习资料:http://blog.csdn.net/ysy441088327/article/details/7392842