录音

在开始录音前,要把会话方式设置成AVAudioSessionCategoryPlayAndRecord

//设置为播放和录音状态,以便可以在录制完之后播放录音AVAudioSession *session = [AVAudioSession sharedInstance];NSError *setCategoryError = nil;[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&setCategoryError];NSError *activationError = nil; [session setActive:YES error:&activationError];

创建AVAudioRecorder

给出录音存放的地址,录音的设置等

//录音存放位置
-(NSURL *) getRecordAudioPath{NSString *urlStr=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];//#define kRecordAudioFile @"myRecord.caf"urlStr=[urlStr stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.caf",[[NSUUID UUID]UUIDString]]];NSLog(@"save file path at:%@",urlStr);NSURL *url=[NSURL fileURLWithPath:urlStr];return url; }
- (void) startRecord{if (recorder.isRecording) {return;}recorderUrl = [self getRecordAudioPath]; NSError *err =nil; NSMutableDictionary *dicM=[NSMutableDictionary dictionary]; // [dicM setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey]; //设置录音格式 [dicM setObject:@(kAudioFormatLinearPCM) forKey:AVFormatIDKey]; //设置录音采样率,8000是电话采样率,对于一般录音已经够了 [dicM setObject:@(8000) forKey:AVSampleRateKey]; //设置通道,这里采用单声道 [dicM setObject:@(1) forKey:AVNumberOfChannelsKey]; //每个采样点位数,分为8、16、24、32 [dicM setObject:@(8) forKey:AVLinearPCMBitDepthKey]; //是否使用浮点数采样 [dicM setObject:@(YES) forKey:AVLinearPCMIsFloatKey]; recorder = [[AVAudioRecorder alloc]initWithURL:recorderUrl settings:dicM error:&err]; recorder.delegate = self; 如果要监控声波则必须设置为YES recorder.meteringEnabled = YES; [recorder updateMeters]; if (err) { NSLog(@"创建录音机对象时发生错误,错误信息:%@",err.localizedDescription); recorder = nil; return ; } [recorder prepareToRecord]; [recorder record]; }

录制暂停

    //暂停录音,且可以继续录音[recorder pause];//[recorder record];

录制结束

    //录制结束,录音文件关闭,会执行代理方法audioRecorderDidFinishRecording/* stops recording. closes the file. */[recorder stop];

代理方法

pragma mark — AVAudioRecorderDelegate

-(void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag
{
NSLog(@”录音完成!”);

}
-(void)audioRecorderEncodeErrorDidOccur:(AVAudioRecorder )recorder error:(NSError )error
{
NSLog(@”录音出错!”);

}

播放录音

创建AVAudioPlayer,AVAudioPlayer播放本地音频。

    NSError *err =nil;player = [[AVAudioPlayer alloc]initWithContentsOfURL:recorderUrl error:&err];player.delegate = self;//设置音乐播放次数 -1为一直循环 player.numberOfLoops = 0; //开启仪表计数功能 player.meteringEnabled = YES; [player updateMeters]; // player.enableRate = YES; //设置左右声道 left:-1,center:0.0,right =1; player.pan = 0.0; //设置音量,其值0.0~1.0 player.volume = 0.6; [player prepareToPlay]; [player play];

播放代理AVAudioPlayerDelegate

#pragma mark- AVAudioPlayerDelegate-(void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error
{NSLog(@"player 播放失败%@",error); } -(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { NSLog(@"player:%@ 播放完成%d",player,flag); // //根据实际情况播放完成可以将会话关闭,其他音频应用继续播放 // [[AVAudioSession sharedInstance]setActive:NO error:nil]; AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); playBtn.selected = NO; }

转载于:https://www.cnblogs.com/Free-Thinker/p/9582660.html

AVFoundation之录音及播放相关推荐

  1. AVFoundation的录音与播放

    1.AVAudioSession的使用 AVAudioSession是一个单例模式.在IOS7以前可以不用设置,在IOS7上不设置AVAudioSession则不可以录音. 1.1设置AVAudioS ...

  2. IOS AVFoundation的录音与播放

    这是我第一次撰写博客,大部分内容都来自网络,写的不对地方还请多多指教,如果有摘录的地方与原作略有相同还请谅解说明.请多多支持. 1,AVAudioSession的使用 AVAudioSession是一 ...

  3. iPhone的录音和播放

    最近准备做一个关于录音和播放的项目!查了一些资料,很简单的做了一个,下面我就分享一下iPhone的录音和播放的使用心得. iPhone的录音和播放使用到了media层的内容,media层处于cocoa ...

  4. Swift实现iOS录音与播放音频功能

    Swift实现iOS录音与播放音频功能 作用 AVPLayer:可以用来播放在线及本地音视频 AVAudioSession:音频会话,主要用来管理音频设置与硬件交互 使用时需要导入 #import & ...

  5. 录音、播放音频(本地、在线)

    #import "VoiceInputCell.h" #import <AVFoundation/AVFoundation.h> #define kRecordAudi ...

  6. 实例编程iPhone 录音和播放

    实例编程iPhone 录音和播放是本文要介绍的内容,最近准备做一个关于录音和播放的项目!查了一些资料,很简单的做了一个,下面我就分享一下iPhone的录音和播放的使用心得.iPhone的录音和播放使用 ...

  7. 实例编程iPhone 录音和播放(收藏)

    分享一下iPhone的录音和播放的使用心得.iPhone的录音和播放使用到了media层的内容,media层处于cocoa层之下,用到的很大一部分都是c语言的结构. 1.引入框架. #import & ...

  8. Android开发之PCM录音实时播放的实现方法 | 边录音边播放 |PCM录音播放无延迟 | 录音无杂音 | 录音无噪音

    先说下录音得开启录音权限 <uses-permission android:name="android.permission.RECORD_AUDIO" /> 然后录音 ...

  9. 智能会议系统(32)---WebRTC学习之三:录音和播放

    WebRTC学习之三:录音和播放 VoiceEngine中与录音和播放相关的头文件有五个,如下表所示: 头文件 包含的类 说明 voe_base.h VoiceEngineObserver Voice ...

最新文章

  1. Android offsetTopAndBottom 和 setTranslationY 的作用 和区别
  2. CDN监控系统(三 业务架构)
  3. php中try catch捕获异常实例详解
  4. SAP UI5 应用开发教程之六十三 - 基于 OData V4 的本地 Mock Server 实现的深入介绍
  5. jquery 延迟加载代码_延迟加载是一种代码气味
  6. python升级版本命令_如何在python中安装和配置kivy库
  7. Blob和Clob的区别和用法
  8. 全国计算机一级会考分类汇总吗,全国计算机一级考试分布
  9. 在计算机设备中 麦克风属于( ),计算机一级考试基础及MSOffice应用单选真题
  10. 目前比较好的跨境电商ERP软件有哪些?这5款打死也要收藏!
  11. 用matlab处理信号,信号处理matlab程序示例
  12. php扩展exif模块,Centos+PHP模块+exif扩展 (第三方模块)
  13. 外贸出口业务管理解决方案丨汇信
  14. linux常用命令大全,建议收藏
  15. 自旋量子计算机,硅基量子计算机的突破:自旋量子位的远距离连接
  16. android 音频压缩 silk,微信音頻silk導出多個mp3,合並成一個mp3,壓縮大小
  17. 紫薇星“Jigsaw Puzzle”
  18. 拉姆达表达式 追加 条件判断 ExpressionFuncT, bool
  19. php 数组函数特点,php常见数组函数
  20. 申请美国大学计算机专业,美国大学计算机专业申请

热门文章

  1. 《数据库原理与应用》(第三版)第13章 安全管理 基础 习题参考答案
  2. mysql 日均pv100w_日均百万PV架构第四弹(分布式监控)_MySQL
  3. 计算机是管理信息系统的必要条件吗,管理信息系统复习题(有答案)..doc
  4. Codeforces 845 C. Two TVs 思路:简单贪心算法
  5. lcx转发3389数据
  6. 一个程序来比较cuda/c在GPU/CPU的运行效率
  7. mysql 特殊函数_MySQL中sleep函数的特殊现象示例详解
  8. 优雅地断开TCP连接
  9. 多个Activity与Fragment之间的数据传递
  10. 最小覆盖子串_滑动窗口