iOS录音编程简介
来源:互联网 发布:中小型企业网络规划 编辑:程序博客网 时间:2024/05/16 10:17
使用框架AVFoundation中的AVAudioRecorder类,属性与方法大体和AVAudioPlayer类似,但是在创建录音机时除了指定路径外还必须指定录音设置信息,
因为录音机必须知道录音文件的格式、采样率、通道数、每个采样点的位数等信息,通常需要设置几个常用属性。
AVAudioRecorder类对象属性说明
@property(readonly, getter=isRecording) BOOL recording;是否正在录音,只读
@property(readonly) NSURL *url录音文件地址,只读
@property(readonly) NSDictionary *settings录音文件设置,只读
@property(readonly) NSTimeInterval currentTime录音时长,只读,注意仅仅在录音状态可用
@property(readonly) NSTimeInterval deviceCurrentTime输入设置的时间长度,只读,注意此属性一直可访问
@property(getter=isMeteringEnabled) BOOL meteringEnabled;是否启用录音测量,如果启用录音测量可以获得录音分贝等数据信息
@property(nonatomic, copy) NSArray *channelAssignments当前录音的通道
AVAudioRecorder类对象对象方法说明
- (instancetype)initWithURL:(NSURL *)url settings:(NSDictionary *)settings error:(NSError **)outError录音机对象初始化方法,注意其中的url必须是本地文件url,settings是录音设置
- (BOOL)prepareToRecord准备录音,主要用于创建缓冲区,如果不手动调用,在调用record录音时也会自动调用
- (BOOL)record开始录音
- (BOOL)recordAtTime:(NSTimeInterval)time在指定的时间开始录音,一般用于录音暂停再恢复录音
- (BOOL)recordForDuration:(NSTimeInterval) duration按指定的时长开始录音
- (BOOL)recordAtTime:(NSTimeInterval)time forDuration:(NSTimeInterval) duration在指定的时间开始录音,并指定录音时长
- (void)pause;暂停录音
- (void)stop; 停止录音
- (BOOL)deleteRecording;删除录音,注意要删除录音此时录音机必须处于停止状态
- (void)updateMeters;更新测量数据,注意只有meteringEnabled为YES此方法才可用
- (float)peakPowerForChannel:(NSUInteger)channelNumber;指定通道的测量峰值,注意只有调用完updateMeters才有值
- (float)averagePowerForChannel:(NSUInteger)channelNumber指定通道的测量平均值,注意只有调用完updateMeters才有值
AVAudioRecorder类对象代理方法说明
- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag完成录音
- (void)audioRecorderEncodeErrorDidOccur:(AVAudioRecorder *)recorder error:(NSError *)error录音编码发生错误
简单书写步骤
1.导入框架AVFoundation,引入头文件#import <AVFoundation/AVFoundation.h>
2.首先设置录音文件保存路径
NSString *urlStr=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
urlStr=[urlStr stringByAppendingPathComponent:文件全名(文件名+类型)];
NSURL *strFinalUrl=[NSURL fileURLWithPath:urlStr];
3.设置录音文件设置信息(以下是部分信息)
NSMutableDictionary *dicSetting=[NSMutableDictionary dictionary];
[dicSetting setObject:@(kAudioFormatLinearPCM) forKey:AVFormatIDKey]; //设置录音格式
[dicSetting setObject:@(8000) forKey:AVSampleRateKey];//设置录音采样率,8000是电话采样率,对于一般录音已经够了
[dicSetting setObject:@(1) forKey:AVNumberOfChannelsKey]; //设置通道,这里采用单声道
[dicSetting setObject:@(8) forKey:AVLinearPCMBitDepthKey]; //每个采样点位数,分为8、16、24、32
[dicSetting setObject:@(YES) forKey:AVLinearPCMIsFloatKey];//是否使用浮点数采样
4.创建录音对象,准备录音
AVAudioRecorder*audioRecorder=[[AVAudioRecorder alloc]initWithURL:strFinalUrl settings:dicSetting error:&error];
audioRecorder.delegate=self;
audioRecorder.meteringEnabled=YES;//如果要监控声波则必须设置为YES
5.一些录音期间的基本操作,开始、暂停、停止
[audioRecorder record];//开始
[audioRecorder pause];//暂停
[audioRecorder stop];//停止
6.录音回调
-(void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag{
NSLog(@"录音完成!");
录音需要播放
AVAudioPlayer*audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:strFinalUrl error:&error];
audioPlayer.numberOfLoops=0;
[audioPlayer prepareToPlay];
[audioPlayer play];
}
- iOS录音编程简介
- IOS录音
- iOS 录音
- iOS录音
- iOS 录音
- iOS 录音
- iOS 录音
- iOS录音
- iOS录音
- Record录音简介
- iOS网络编程1--简介
- iOS音频播放编程简介
- iOS 录像录音
- 关于ios下录音
- IOS-录音功能
- Cocos2d-x IOS录音
- iOS - 简单录音:
- ios 录音播放问题
- 想学点东西
- CASIO fx-9750的贪吃蛇
- 安卓Activity生命周期相关
- STL中的算法
- 剑指offer:n个骰子的点数(java)
- iOS录音编程简介
- laravel ajax时间与关键字搜索、即点即改、批量删除
- linux之sed用法
- 面试心理测试题
- 剑指offer-算法题练习:part20 二叉树的镜像
- 第三章小结
- 【网络知识】——交换机上不了网问题
- CSS基础知识
- Python 的defaultdict用法