前言:本篇介绍录音。

关于录音,这里提供更为详细的讲解网址:http://www.cnblogs.com/kenshincui/p/4186022.html#audioRecord  ,并且该博客有更完整的详述和代码实现哦。

内容大纲:

  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>实现的代码:

 #import "ViewController.h"
#import <AVFoundation/AVFoundation.h> @interface ViewController () /** 录音对象*/
@property(nonatomic ,strong) AVAudioRecorder *recorder; @end @implementation ViewController -(void)viewDidLoad{
[self createRecord];
} - (void)createRecord{
// 0.1 创建录音文件存放路径
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"test.caf"];
NSLog(@"%@", path);
NSURL *url = [NSURL URLWithString:path]; // 0.2 创建录音设置
NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] init];
// 设置编码格式
[recordSettings setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey: AVFormatIDKey];
// 采样率
[recordSettings setValue :[NSNumber numberWithFloat:11025.0] forKey: AVSampleRateKey];
// 通道数
[recordSettings setValue :[NSNumber numberWithInt:] forKey: AVNumberOfChannelsKey];
//音频质量,采样质量
[recordSettings setValue:[NSNumber numberWithInt:AVAudioQualityMin] forKey:AVEncoderAudioQualityKey]; // 1. 创建录音对象
self.recorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:nil]; // 2. 准备录音(系统会分配一些录音资源)
[self.recorder prepareToRecord];
} - (IBAction)beginRecord
{
NSLog(@"开始录音");
[self.recorder record]; // 直接录音, 需要手动停止
// [self.recorder recordForDuration:3]; // 从当前执行这行代码开始录音, 录音5秒
// [recorder recordAtTime:recorder.deviceCurrentTime + 2]; // 2s, 需要手动停止
// [self.recorder recordAtTime:self.recorder.deviceCurrentTime + 2 forDuration:3]; // 2s 3s
} - (IBAction)pauseRecord:(id)sender {
NSLog(@"暂停录音");
[self.recorder pause];
} - (IBAction)stopRecord {
NSLog(@"停止录音");
[self.recorder stop];
} @end

    在23~32行的代码,这个是对一个属性添加很多值,是可以抽离出来声明一个属性,然后加值的部分写在懒加载中。

    <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://baike.baidu.com/link?url=z36Nw7UihAEnCC6BjCygft9rBpLr29Ru0of_9Blpl0aR6qzI1B9iWTD5h3uimPVix2SuuQYo7GVYOIsaaP2Eyq

4、开发经验

  caf 文件格式, 因为某些编码设置, 文件有可能会很大, 而且caf, 格式并不是很通用, 所以在开发过程中, 一般会进行压缩转码, MP3。

  相关学习资料:http://blog.csdn.net/ysy441088327/article/details/7392842

转载注明出处:http://www.cnblogs.com/goodboy-heyang/p/5374322.html ,尊重劳动成功。

IOS开发之音频--录音的更多相关文章

  1. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...

  2. iOS开发系列--音频播放、录音、

    音频 在iOS中音频播放从形式上可以分为音效播放和音乐播放.前者主要指的是一些短音频播放,通常作为点缀音频,对于这类音频不需要进行进度.循环等控制.后者指的是一些较长的音频,通常是主音频,对于这些音频 ...

  3. iOS开发系列--音频播放(音效和音乐)播放本地的

    音频 在iOS中音频播放从形式上可以分为音效播放和音乐播放.前者主要指的是一些短音频播放,通常作为 点缀音频,对于这类音频不需要进行进度.循环等控制.后者指的是一些较长的音频,通常是主音频,对于这些音 ...

  4. iOS开发之音频口通信-通过方波来收发数据

    之前做过的项目有需要通过音频口通信用方波来收发数据,由于这方面的资料比较少,下面就介绍下其原理,希望能给大家帮助. 一. 音频通信简介大家应该都知道支付宝声波支付和拉卡拉吧,它们都是利用手机的音频口( ...

  5. iOS开发-解决AVAudioRecorder录音文件无法保存的问题

    我们在开发iOS客户端APP时,有时候会用到录音的功能,一般会使 AVAudioRecorder 这个类.如下面这样: @interface MyViewController : UIViewCont ...

  6. iOS开发之音频播放AVAudioPlayer 类的介绍

    主要提供以下了几种播放音频的方法: 1. System Sound Services System Sound Services是最底层也是最简单的声音播放服务,调用 AudioServicesPla ...

  7. iOS开发——WAVE音频文件解析

    WAV文件也分了好几类,相应的非数据信息存储在文件的头部,下面简单的提一下,然后在最后重点介绍44字节的那种,一般用的都是这个. 1.8KHz采样.16比特量化的线性PCM语音信号的WAVE文件头格式 ...

  8. iOS开发系列文章(持续更新……)

    iOS开发系列的文章,内容循序渐进,包含C语言.ObjC.iOS开发以及日后要写的游戏开发和Swift编程几部分内容.文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大 ...

  9. iOS开发笔记10:圆点缩放动画、强制更新、远程推送加语音提醒及UIView截屏

    1.使用CAReplicatorLayer制作等待动画 CALayer+CABasicAnimation可以制作很多简单的动画效果,之前的博客中介绍的“两个动画”,一个是利用一张渐变色图片+CABas ...

随机推荐

  1. MVC 框架搭建

    1.0 初步建立目录和项目 2.0 设置层之间的引用 IRepository引用 ModelRepository引用 Model,IRepositoryIServices引用 Model,IRepos ...

  2. ASP.NET MVC Layout 嵌套

    模板页Layout.cshtml代码(路径"~/Views/Backstage/MachineMng/Layout.cshtml"): @{ ViewBag.Title = &qu ...

  3. 【UWP】使用Action代替Command

    在Xaml中,说到绑定,我们用的最多的应该就是ICommand了,通过Command实现ViewModel到View之间的命令处理,例如Button默认就提供了Command支持,如下 Xaml: & ...

  4. 【iOS】配置和使用静态库

    上一篇 我们演示了了如何创建自己的静态库,最终生成多个.a文件,根据需要引用工程就可以直接使用静态库了,但是有个很麻烦的问题,模拟器用的库和真机的不是同一个,当我们切换的时候需要更换静态库,有两种方式 ...

  5. 分享几个原生javascript面向对象设计小游戏

    一.序言 不知大家是不是和我一样,当初都有个梦想.学编程,就是想开发游戏.结果进入大学学习之后,才知道搞的是数据库应用程序开发!在此,本人就分享下业余时间做的几个小游戏吧!本打算想用winform或w ...

  6. Response.Redirect 无法跳转页面

    错误现象:Response.Redirect(Server.MapPath("BackIndex.aspx")); 打断点测试执行了这一句,Server.MapPath(" ...

  7. C#控制台程序的参数解析类库 CommandLine简单使用说明

    前言 C#开发的控制台程序,默认接收string[] args参数.如果有多个参数需要输入时,可以按照顺序依次输入:但如果有些参数不是必选的,或者有些参数中间需要有空格比如时间“2016-05-18 ...

  8. NanUI for Winform 使用示例【第二集】——做一个所见即所得的Markdown编辑器

    经过了这一个多星期的调整与修复,NanUI for .NET Winform的稳定版已经发布.应广大群友的要求,现已将NanUI的全部代码开源. GitHub: https://github.com/ ...

  9. webstorage[html5的本地数据处理]

    1.webStorage是什么? webStorage是html5中用于本地化存储的一种方式,而在之前呢我们是用cookie的存储方式处理; 2.那它们之间的区别是什么? Ⅰ.cookie存在的问题: ...

  10. Java并发编程:并发容器之ConcurrentHashMap(转载)

    Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concu ...