ios -简单录音实现

2018-08-06  本文已影响0人  低调的腹

最近要用过录音功能,搜罗了些方法 ,发现只需要使用ios提供的类就可实现

录音方法:

- (void)startRecord{

    [_activityView startAnimating];

    AVAudioSession *session =[AVAudioSession sharedInstance];

    NSError *sessionError;

    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

    if (session == nil) {

        NSLog(@"Error creating session: %@",[sessionError description]);

    }else{

        [session setActive:YES error:nil];

    }

    self.session = session;

    //1.获取沙盒地址

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    self.filePath = [path stringByAppendingString:@"/RRecord.wav"];

    //2.获取文件路径

    self.recordFileUrl = [NSURL fileURLWithPath:self.filePath];

    //设置参数

    NSDictionary *recordSetting = [[NSDictionary alloc] initWithObjectsAndKeys:

                                  //采样率  8000/11025/22050/44100/96000(影响音频的质量)

                                  [NSNumber numberWithFloat: 8000.0],AVSampleRateKey,

                                  // 音频格式

                                  [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey,

                                  //采样位数  8、16、24、32 默认为16

                                  [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,

                                  // 音频通道数 1 或 2

                                  [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,

                                  //录音质量

                                  [NSNumber numberWithInt:AVAudioQualityHigh],AVEncoderAudioQualityKey,

                                  nil];

    _recorder = [[AVAudioRecorder alloc] initWithURL:self.recordFileUrl settings:recordSetting error:nil];

    if (_recorder) {

        _recorder.meteringEnabled = YES;

        [_recorder prepareToRecord];

        [_recorder record];

//        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(60 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

//

////            [self stopRecord:nil];

//        });

    }else{

        NSLog(@"音频格式和文件存储格式不匹配,无法初始化Recorder");

    }

}

停止录音方法:

- (void)stop_sendToService{

    //如果正在录音 就停止

    [_activityView stopAnimating];

    if ([self.recorder isRecording]) {

        [self.recorder stop];

    }

    NSFileManager *manager = [NSFileManager defaultManager];

    if ([manager fileExistsAtPath:self.filePath]){

        NSLog(@"%@",[NSString stringWithFormat:@"文件大小为 %.2fKb",[[manager attributesOfItemAtPath:self.filePath error:nil] fileSize]/1024.0]);

    }else{

    }

    //同时将文件上传

    [self sendToService];

}

ok  结束 

上一篇下一篇

猜你喜欢

热点阅读