美文网首页
AVFoundation框架之录音(AVAudioRecorde

AVFoundation框架之录音(AVAudioRecorde

作者: 亭竹丶 | 来源:发表于2017-06-26 15:15 被阅读137次

录音属于AVFAudio里面的一个高级封装。在实际运用中,可以使用到语音录制,比如聊天等。这个对语音录制做一个简单的了解。

1.基础配置

    /*
     
     音频基础
     
     声波是一种机械波,是一种模拟信号。
     PCM,全称脉冲编码调制,是一种模拟信号的数字化的方法。
     采样精度(bit pre sample),每个声音样本的采样位数。
     采样频率(sample rate)每秒钟采集多少个声音样本。
     声道(channel):相互独立的音频信号数,单声道(mono)立体声(Stereo)
     语音帧(frame),In audio data a frame is one sample across all channels.
     
     */
    // 语音录制
    
    // 格式(真机)
    NSMutableDictionary *recordSetting = [NSMutableDictionary dictionary];
    NSError *error = nil;
    NSString *outputPath = nil;

    // 输出地址
#if TARGET_IPHONE_SIMULATOR//模拟器

    outputPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"1.caf"];
    // 设置录音格式
    [recordSetting setObject:@(kAudioFormatLinearPCM) forKey:AVFormatIDKey];
    
#elif TARGET_OS_IPHONE//真机
    
    NSString *outputPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"1.m4a"];
    [recordSetting setObject:@(kAudioFormatMPEG4AAC) forKey:AVFormatIDKey];

#endif

    // 设置录音采样率
    [recordSetting setObject:@(8000) forKey:AVSampleRateKey];
    // 设置通道,这里采用单声道 1:单声道;2:立体声
    [recordSetting setObject:@(1) forKey:AVNumberOfChannelsKey];
    // 每个采样点位数,分为8、16、24、32
    [recordSetting setObject:@(8) forKey:AVLinearPCMBitDepthKey];
    
    // 大端还是小端,是内存的组织方式
    [recordSetting setObject:@(NO) forKey:AVLinearPCMIsBigEndianKey];
    // 是否使用浮点数采样
    [recordSetting setObject:@(YES) forKey:AVLinearPCMIsFloatKey];
    // 是否交叉
    [recordSetting setObject:@(NO) forKey:AVLinearPCMIsNonInterleaved];
    
    // 设置录音质量
    [recordSetting setObject:@(AVAudioQualityMin) forKey:AVEncoderAudioQualityKey];
    
    // 比特率
    [recordSetting setObject:@(128000) forKey:AVEncoderBitRateKey];
    // 每个声道音频比特率
    [recordSetting setObject:@(128000) forKey:AVEncoderBitRatePerChannelKey];
    
    // 深度
    [recordSetting setObject:@(8) forKey:AVEncoderBitDepthHintKey];
    
    // 设置录音采样质量
    [recordSetting setObject:@(AVAudioQualityMin) forKey:AVSampleRateConverterAudioQualityKey];
    
    // 策略 AVSampleRateConverterAlgorithmKey
    // 采集率算法 AVSampleRateConverterAlgorithmKey
    // 渠道布局 AVChannelLayoutKey
 

2.录音类初始化

// 初始化
AVAudioRecorder *recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL fileURLWithPath:outputPath] settings:recordSetting error:&error];
// 设置协议
recorder.delegate = self;
// 准备录制
[recorder prepareToRecord];

3.录音

[recorder record];

4.暂停

[recorder pause];

5.停止

[recorder stop];

6.协议

// 录音结束
- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag{
    
    NSLog(@"%@", recorder.url);
}

// 发生错误调用
- (void)audioRecorderEncodeErrorDidOccur:(AVAudioRecorder *)recorder error:(NSError *)error {

    NSLog(@"%@", error);
}

demo

相关文章

  • AVFoundation框架之录音(AVAudioRecorde

    录音属于AVFAudio里面的一个高级封装。在实际运用中,可以使用到语音录制,比如聊天等。这个对语音录制做一个简单...

  • 音频_录音

    录音 参考:AVAudioRecorder Class Reference 使用 包含框架AVFoundation...

  • iOS中音频的录制和播放

    实现思路 利用系统框架AVFoundation实现录音和录音播放 AudioSession简介 iOS 通过ses...

  • iOS学习笔记25-录音和网络流媒体

    一、录音 AVFoundation框架还有一个AVAudioRecorder类专门处理录音操作,它同样支持多种音频...

  • Audio playback

    -音频播放 1.录音功能实现 AVFoundation框架创建一个录音对象设置保存录音文件的位置(沙盒)准备录音开...

  • iOS - 录音和播放

    利用系统框架AVFoundation实现录音和录音播放 1,导入头文件 2,申请麦克风权限NSMicrophone...

  • iOS音视频学习5——录音

    录音 除了上面说的,在AVFoundation框架中还要一个AVAudioRecorder类专门处理录音操作,它同...

  • UI -- 录音 视频 音频的基本概念

    录音 一、AVAudioRecoder类录音 1、属于AVFoundation框架中的类 2、之前学的一个AVAu...

  • AVFoundation之视频录制基础版

    AVFoundation框架学习之视频录制基础版 AVFoundation框架简介 在系统中的位置: 框架中主要得...

  • iOS 录音与播放

    实现思路 利用系统框架AVFoundation实现录音和录音播放 注意事项 在Info.plist文件中添加如下代...

网友评论

      本文标题:AVFoundation框架之录音(AVAudioRecorde

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