zoukankan      html  css  js  c++  java
  • 录音

    使用AVAudioRecorder录制音频数据

    1. 包含头文件#import <AVFoundation/AVFoundation.h>

    2. 创建属性:录音对象、播放对象、存放录音文件的URL

    @property (nonatomic, strong) AVAudioRecorder *recorder;
    @property (nonatomic, strong) AVAudioPlayer *player;
    @property (nonatomic, strong) NSURL *recordURL; 

    3. 设置支持AVAudioSession支持录音和回放功能

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

    4. 录音前准备和设置工作

        NSMutableDictionary *setting = [NSMutableDictionary dictionary];
        
        // 编码格式
        setting[AVFormatIDKey] = @(kAudioFormatAppleIMA4);
        // 采样率
        setting[AVSampleRateKey] = @(44100);
        // 声道数
        setting[AVNumberOfChannelsKey] = @2;
        // 量化位数
        setting[AVLinearPCMBitDepthKey] = @16;
        // 编码质量
        setting[AVEncoderAudioQualityKey] = @(AVAudioQualityHigh);
        
        NSError *error;
        _recorder = [[AVAudioRecorder alloc] initWithURL:self.recordURL settings:setting error:&error];
        
        if (error != nil) {
            NSLog(@"error >>> %@", error);
        }
        // 准备录制
        [_recorder prepareToRecord];

    5. 懒加载

    - (NSURL *)recordURL
    {
        if (_recorder == nil) {
            NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
            //当使用kAudioFormatAppleIMA4编码格式时,生成的文件格式为caf
            NSString *path = [docPath stringByAppendingPathComponent:@"test.caf"];
            
            _recordURL = [NSURL URLWithString:path];
        }
        return _recordURL;
    }
    
    - (AVAudioPlayer *)player
    {
        if (_player == nil) {
            _player = [[AVAudioPlayer alloc] initWithContentsOfURL:self.recordURL error:nil];
            _player.numberOfLoops = 1;
            
            [_player prepareToPlay];
        }
        return _player;
    }

    6. 录音/播放控制

    - (IBAction)startRecord:(UIButton *)sender {
        [_recorder record];  //开始录音
    }
    - (IBAction)startPlay:(UIButton *)sender {
        [self.player play];  //开始播放
    }
    - (IBAction)endRecord:(UIButton *)sender {
        
        [_recorder stop];    //结束录音
    }
    - (IBAction)endPlay:(UIButton *)sender {
        [self.player stop];  //停止播放
    }
  • 相关阅读:
    Django 2.0官方文档中文 渣翻 总索引(个人学习,欢迎指正)
    Deep Learning 之 最优化方法
    2018校招笔试真题汇总
    Java Swing 图形界面开发(目录)
    【目录】Spring 源码学习
    【剑指Offer学习】【所有面试题汇总】
    SSM框架学习思维导图
    关于P2P架构的网络游戏
    Styling FX Buttons with CSS
    JavaFx2.0中CSS的应用
  • 原文地址:https://www.cnblogs.com/10-19-92/p/4865863.html
Copyright © 2011-2022 走看看