概述
AVAudioRecorder
提供了录音的功能给你的应用
在iOS
中,录取的声音可以从你手机的内置的麦克风,或者耳机麦克风而来
你可以给录音器实现代理去响应打断和解码错误
初始化一个AVAudioRecorder
实例
initWithURL:settings:error:
参数 :
-
url : 录音文件保存在本地的url,这个文件的类型可以在这个参数后面直接天机
-
settings : 录音器的会话设置
-
outError : 初始化错误
如果初始化时,文件已经存在,那么将会覆盖它
initWithURL:format:error:
配置和控制录音
1.prepareToRecord
告诉系统尽快准备去开始录音啦
2.record
开始或者恢复录音,调用这个方法其实就隐式的调用了prepareToRecord
3. recordAtTime:
过多久之后开始录音,也就是延迟多久才开始录音
调用这个方法其实就隐式的调用了prepareToRecord
NSTimeInterval recordDelay = 3.0; //must be ≥ 0
[myAudioRecorder recordAtTime:(myAudioRecorder.deviceCurrentTime + recordDelay)];
4.recordForDuration:
录音多长时间,也就是最长录音时间,录到这个限制点就结束录音了,中途可以手动停止,类似微信语音60s
调用这个方法其实就隐式的调用了prepareToRecord
5.recordAtTime:forDuration:
就是上两个方法的结合,不多介绍
6. pause
暂停录音,调用record
可恢复录音
7.stop
结束录音并且关闭文件
8. delegate
实现AVAudionRecorder
的代理
代理方法有两个
/* audioRecorderDidFinishRecording:successfully: is called when a recording has been finished or stopped. This method is NOT called if the recorder is stopped due to an interruption. */
- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag
//录音已经结束,
//flag:如果为YES则说明完成录音,如果为NO则说明结束录音的原因是因为音频编码的错误
这个方法不是别调用,如果录音停止是因为系统打断的原因造成
/* if an error occurs while encoding it will be reported to the delegate. */
- (void)audioRecorderEncodeErrorDidOccur:(AVAudioRecorder *)recorder error:(NSError * __nullable)error
//录音错误
9.deleteRecording
删除录音文件,在调用这个方法之前一定先把录音器结束录音才行
管理录音的信息
1.recording
一个BOOL
值,指示录音器是否正在录音
2. url
就是与录音器相关联的录音文件的储存位置的url
3.channelAssignments
一个与录音器相关联的AVAudioSessionChannelDescription
数组
4.currentTime
录了多久的时间了,如果录音器已经结束了,在获取这个值就是为0
5.settings
录音器的配置,也就是初始化的时候传入的那个参数加上系统默认的值
音频电频测量
1.meteringEnabled
这个值默认是关闭,如果需要使用电频测量功能,那么就必须先把它为YES
2.updateMeters
更新录音器相关的所有通道的平均跟峰值功率值
3.peakPowerForChannel:
返回给定通道的峰值,以分贝为单位,用来记录声音,值的范围 -160dB -0dB ,0最大,-160接近去静音
调用这个方法前,必须先调用updateMeters
4.averagePowerForChannel:
返回给定通道的平均值
调用这个方法前,必须先调用updateMeters
设置
1.一般音频格式设置
适用于由AVAudioPlayer
和AVAudioRecorder
类处理的所有音频格式的音频设置
AVFormatIDKey
格式标识符
AVSampleRateKey
采样率
AVNumberOfChannelsKey
通道数
2.编码器设置
AVAudioRecorder
类的音频编码器设置
AVEncoderAudioQualityKey
指定采样率转换质量的键
-
AVAudioQualityMin:采样率转换的最低质量
-
AVAudioQualityLow:采样率转换质量较差
-
AVAudioQualityMedium:采样率转换的中等质量
-
AVAudioQualityHigh :高质量的采样率转换
-
AVAudioQualityMax :采样率转换的最高质量
AVEncoderBitRateKey
标识音频比特率的整数
AVEncoderBitRatePerChannelKey
一个整数,用于标识每个通道的音频比特率
AVEncoderBitRateStrategyKey
该值是一个AVAudioBitRateStrategy常量
AVEncoderBitDepthHintKey
一个从8到32的整数
3.AVEncoderBitRateStrategyKey的值
这些常量是AVEncoderBitRateStrategyKey
编码器设置的支持值
- AVAudioBitRateStrategy_Constant
- AVAudioBitRateStrategy_LongTermAverage
- AVAudioBitRateStrategy_VariableConstrained
- AVAudioBitRateStrategy_Variable
4.AVSampleRateConverterAlgorithmKey的值
- AVSampleRateConverterAlgorithm_Normal
使用正常的编码器比特率策略 - AVSampleRateConverterAlgorithm_Mastering
使用主控编码器比特率策略 - AVSampleRateConverterAlgorithm_MinimumPhase
使用最小相位编码器比特率策略
网友评论