AVAudioRecorder

作者: edison0428 | 来源:发表于2017-12-07 17:29 被阅读267次

概述

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.一般音频格式设置

适用于由AVAudioPlayerAVAudioRecorder类处理的所有音频格式的音频设置

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
    使用最小相位编码器比特率策略

相关文章

网友评论

    本文标题:AVAudioRecorder

    本文链接:https://www.haomeiwen.com/subject/chbdixtx.html