关于ios下录音

时间:2022-03-08 15:02:22

http://blog.csdn.net/silencetq/article/details/8447400

我是采用的AVAudioRecorder这个框架来进行录音

这个录音跟官方网站上的speakHere有些区别,最大的区别是,这个必须要录制完成才能处理文件,而speakhere示例是可以实现边录制边上传的效果。

#import <AVFoundation/AVFoundation.h>

#import <CoreAudio/CoreAudioTypes.h>

引入框架,这是使用录音功能的基本配备

先说明一点,默认AVAudioRecorder录制后的格式是.caf,而大部分的播放器都是不支持这个格式的,下面一段设置是可以让录制格式是wav的格式

NSDictionary *recordSetting = [[NSDictionary alloc] initWithObjectsAndKeys:

[NSNumber numberWithFloat: 44100.0],AVSampleRateKey, //采样率

[NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey,

[NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,//采样位数
默认 16

[NSNumber numberWithInt: 2], AVNumberOfChannelsKey,//通道的数目

[NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,//大端还是小端
是内存的组织方式

[NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,nil];//采样信号是整数还是浮点数

NSURL *recordedTmpFile = [NSURL fileURLWithPath:[NSTemporaryDirectory()stringByAppendingPathComponent: [NSString stringWithFormat: @"%.0f.%@", [NSDatetimeIntervalSinceReferenceDate] * 1000.0, @"wav"]]];  //文件名的设置

//Setup the recorder to use this file and record to it.

AVAudioRecorder *recorder = [[ AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSettingerror:&error];

[recorder prepareToRecord];

[recorder record];

下面代码应该是当前.m文件加载时候就设置

AVAudioSession * audioSession = [AVAudioSession sharedInstance];

[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error: &error]; //设置音频类别,这里表示当应用启动,停掉后台其他音频

[audioSession setActive:YES error: &error];//设置当前应用音频活跃性