AVAudioRecord录音,AVAudioPlayer播放音频

#pragma mark - 取得录音文件保存路径

/**

 *  取得录音文件保存路径

 *

 *  @return 录音文件路径

 */

-(NSURL *)getSavePath{

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

    urlStr=[urlStr stringByAppendingPathComponent:@"audio"];

    YJLog(@"录音文件路径:%@",urlStr);

    NSURL *url=[NSURL fileURLWithPath:urlStr];

    return url;

}


#warning 录音大小需要看一下,如果太大可以下调相关设置

#pragma mark - 取得录音文件设置

/**

 *  取得录音文件设置

 *

 *  @return 录音设置

 */

-(NSDictionary *)getAudioSetting{

    NSMutableDictionary *dicM=[NSMutableDictionary dictionary];

    //设置录音格式

    [dicM setObject:@(kAudioFormatMPEG4AAC) forKey:AVFormatIDKey];

    //设置录音采样率,8000是电话采样率,对于一般录音已经够了

    [dicM setObject:@(22050.0) forKey:AVSampleRateKey];

    //设置通道,这里采用单声道

    [dicM setObject:@(2) forKey:AVNumberOfChannelsKey];

    //每个采样点位数,分为8、16、24、32

    [dicM setObject:@(16) forKey:AVLinearPCMBitDepthKey];

    //是否使用浮点数采样

    [dicM setObject:@(YES) forKey:AVLinearPCMIsFloatKey];

    //音频编码质量

    [dicM setObject:@(AVAudioQualityMin) forKey:AVEncoderAudioQualityKey];

    //....其他设置等

    return dicM;

}


#pragma mark - 删除音频文件

/**

 *  删除音频

 */

- (void)deleteAudioResource

{

    //删除语音资源

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

    filePath = [filePath stringByAppendingPathComponent:@"audio"];

    if([[NSFileManager defaultManager] fileExistsAtPath:filePath])

    {

        NSError * error;

        [[NSFileManager defaultManager] removeItemAtPath:filePath error:&error];

        if (error) {

            YJLog(@"删除音频资源失败");

        }else

        {

            YJLog(@"删除音频资源成功");

        }

    }

}


#pragma mark - 懒加载
- ( AVAudioRecorder *)audioRecorder{
   
if ( _audioRecorder == nil ) {
       
// 录音相关
       
AVAudioSession *audioSession=[ AVAudioSession sharedInstance ];
       
// 设置为播放和录音状态,以便可以在录制完之后播放录音
        [audioSession
setCategory : AVAudioSessionCategoryPlayAndRecord error : nil ];
        [audioSession
setActive : YES error : nil ];
       
       
// 创建录音文件保存路径
       
NSURL * url = [ self getSavePath ];
       
// 创建录音格式设置
       
NSDictionary * setting = [ self getAudioSetting ];
       
// 创建录音机
       
NSError * error = nil ;
       
_audioRecorder = [[ AVAudioRecorder alloc ] initWithURL :url settings :setting error :&error];
       
       
_audioRecorder . delegate = self ;
       
if (error) {
           
YJLog ( @" 创建录音机对象时发生错误,错误信息: %@" , error. localizedDescription );
           
return nil ;
        }
    }
   
return _audioRecorder ;
}

/**
 * 
创建播放器
 *
 * 
@return 播放器
 */

- (
AVAudioPlayer *)audioPlayer{
   
if ( _audioPlayer == nil ) {
       
// 录音相关
       
AVAudioSession *audioSession=[ AVAudioSession sharedInstance ];
        // 设置为外放模式
        [audioSession setCategory : AVAudioSessionCategoryPlayback error : nil ];
        [audioSession
setActive : YES error : nil ];
       
NSURL * url = [ self getSavePath ];
       
NSError * error = nil ;
       
_audioPlayer = [[ AVAudioPlayer alloc ] initWithContentsOfURL :url error :&error];
       
_audioPlayer . volume = 1.0 ;
       
_audioPlayer . numberOfLoops = 0 ;
       
_audioPlayer . delegate = self ;
        [
_audioPlayer prepareToPlay ];
       
if (error) {
           
YJLog ( @" 创建播放器过程中发生错误,错误信息: %@" , error. localizedDescription );
           
return nil ;
        }
    }
   
return _audioPlayer ;
}

你可能感兴趣的:(录音,AVAudioPlayer,播放音频,AVAudioRecord)