目录

调用流程图

audioRecorder基本参数配置

##一般的设定

音频格式

key: AVFormatIDKey
value:

CF_ENUM(AudioFormatID)
{
    kAudioFormatLinearPCM               = 'lpcm',
    kAudioFormatAC3                     = 'ac-3',
    kAudioFormat60958AC3                = 'cac3',
    kAudioFormatAppleIMA4               = 'ima4',
    kAudioFormatMPEG4AAC                = 'aac ',
    kAudioFormatMPEG4CELP               = 'celp',
    kAudioFormatMPEG4HVXC               = 'hvxc',
    kAudioFormatMPEG4TwinVQ             = 'twvq',
    kAudioFormatMACE3                   = 'MAC3',
    kAudioFormatMACE6                   = 'MAC6',
    kAudioFormatULaw                    = 'ulaw',
    kAudioFormatALaw                    = 'alaw',
    kAudioFormatQDesign                 = 'QDMC',
    kAudioFormatQDesign2                = 'QDM2',
    kAudioFormatQUALCOMM                = 'Qclp',
    kAudioFormatMPEGLayer1              = '.mp1',
    kAudioFormatMPEGLayer2              = '.mp2',
    kAudioFormatMPEGLayer3              = '.mp3',
    kAudioFormatTimeCode                = 'time',
    kAudioFormatMIDIStream              = 'midi',
    kAudioFormatParameterValueStream    = 'apvs',
    kAudioFormatAppleLossless           = 'alac',
    kAudioFormatMPEG4AAC_HE             = 'aach',
    kAudioFormatMPEG4AAC_LD             = 'aacl',
    kAudioFormatMPEG4AAC_ELD            = 'aace',
    kAudioFormatMPEG4AAC_ELD_SBR        = 'aacf',
    kAudioFormatMPEG4AAC_ELD_V2         = 'aacg',    
    kAudioFormatMPEG4AAC_HE_V2          = 'aacp',
    kAudioFormatMPEG4AAC_Spatial        = 'aacs',
    kAudioFormatAMR                     = 'samr',
    kAudioFormatAMR_WB                  = 'sawb',
    kAudioFormatAudible                 = 'AUDB',
    kAudioFormatiLBC                    = 'ilbc',
    kAudioFormatDVIIntelIMA             = 0x6D730011,
    kAudioFormatMicrosoftGSM            = 0x6D730031,
    kAudioFormatAES3                    = 'aes3',
    kAudioFormatEnhancedAC3             = 'ec-3'
};

采样率

keyAVSampleRateKey
value:
一般的采样率为80004410096000

设置通道

Key:AVNumberOfChannelsKey
value:1,2

说明:当没有外设设备时值为1,一般的情况下设置为1

LPCM 聲音格式的設定

LPCM 聲音格式的位元深度

key:AVLinearPCMBitDepthKey
value: 8162432

设定将最高位放在前面 (Big-Endian) 還是後面

key:AVLinearPCMIsBigEndianKey 
value: YESNO

设置声音的处理方式,是采用定点数还是浮点数

key:AVLinearPCMIsFloatKey
value: YESNO

设置声音的编码方式是采用非交错式的还是交错式的。

key:AVLinearPCMIsNonInterleaved
value: YESNO

编码器设定

音质设定

key:AVEncoderAudioQualityKey
value: 
           AVAudioQualityMin    最小的质量
           AVAudioQualityLow    比较低的质量
           AVAudioQualityMedium 中间的质量
           AVAudioQualityHigh   高的质量
           AVAudioQualityMax    最好的质量

音频的编码比特率

key: AVEncoderBitRateKey
value: 一般为128000bps

线性音频的位深度

key: AVEncoderBitDepthHintKey
value: 一般为8162432

采样率频率转换器的设定

key: AVSampleRateConverterAudioQualityKey
value: 
			 AVAudioQualityMin    最小的质量
           AVAudioQualityLow    比较低的质量
           AVAudioQualityMedium 中间的质量
           AVAudioQualityHigh   高的质量
           AVAudioQualityMax    最好的质量

常用属性方法

@property (readonly, getter=isRecording) BOOL recording;//是否正在录音
@property (readonly) NSDictionary<NSString *, id> *settings;//录音配置
@property (readonly) NSURL *url;//录音文件存放URL
@property (readonly) NSTimeInterval currentTime;//录音时长,注意仅仅在录音状态可用
@property(readonly) NSTimeInterval deviceCurrentTime;
@property (getter=isMeteringEnabled) BOOL meteringEnabled;//是否监控声波

常用对象方法

- (BOOL)prepareToRecord;//为录音准备缓冲区
- (BOOL)record;//录音开始,暂停后调用会恢复录音
- (BOOL)recordAtTime:(NSTimeInterval)time;//在指定时间后开始录音
- (BOOL)recordForDuration:(NSTimeInterval) duration;//按指定时长录音
- (BOOL)recordAtTime:(NSTimeInterval)time 
         forDuration:(NSTimeInterval)duration;//上面2个的合体
- (void)pause; //中断录音
- (void)stop; //停止录音
- (BOOL)deleteRecording;//删除录音,必须先停止录音再删除
- 

常用的代理方法:

//录音完成后调用
- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder 
                           successfully:(BOOL)flag;
//录音编码发送错误时调用
- (void)audioRecorderEncodeErrorDidOccur:(AVAudioRecorder *)recorder 
                                   error:(NSError *)error;
                                   

点击去github下载AVAudioRecorderDemo

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!


hetaodie

Mobile development

简单,深入的研究移动客户端开发技术"