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];  //停止播放
    }
  • 相关阅读:
    OpenCV——PS 图层混合算法(一)
    PS 滤镜算法原理——照亮边缘
    PS 色调——老照片效果
    PS 滤镜算法原理——浮雕效果
    PS 滤镜算法原理——碎片效果
    PS 滤镜算法原理——染色玻璃
    PS 滤镜算法原理——高反差保留 (High Pass)
    PS图像特效算法——镜像渐隐
    手把手教你写专利申请书/怎样申请专利
    经常使用的webservice接口
  • 原文地址:https://www.cnblogs.com/10-19-92/p/4865863.html
Copyright © 2011-2022 走看看