分享

iOS 录音并播放

 求知665 2014-10-07
iso录音和播放 需要导入AVFoundation.frameworkiOS <wbr>录音并播放


 

#import <UIKit/UIKit.h>

#import <AVFoundation/AVFoundation.h>//注意导入引用库

@interface testViewController : UIViewController<</span>AVAudioRecorderDelegate>

{


    NSURL *tmpFile;

    AVAudioRecorder *recorder;

    BOOL recording;

    AVAudioPlayer *audioPlayer;

    UIButton*LuBut;


}

-(void)setlable:(id)inder;

-(void)jian;

-(void)biaoqing;

======================================

创建两个按钮 一个录音 一个播放

          LuBut=[UIButton buttonWithType:UIButtonTypeRoundedRect];

         [LuBut setTitle:@"录音" forState:UIControlStateNormal];

        [bgImgView addSubview:LuBut];

        [LuBut addTarget:self action:@selector(luyin) forControlEvents:UIControlEventTouchUpInside];

        LuBut.frame=CGRectMake(30, 290, 60, 20);

        

        UIButton*BOBut=[UIButton buttonWithType:UIButtonTypeRoundedRect];

        [BOBut setFrame:CGRectMake(190, 290, 60 , 20)];

        [BOBut setTitle:@"播放"  forState:UIControlStateNormal];

        [BOBut addTarget:self action:@selector(bofang) forControlEvents:UIControlEventTouchUpInside];

        [bgImgView addSubview:BOBut];

====================================================================


//录音后 他会在你的项目目录的temp文件夹里面 创建一个wangshuo.caf 文件  重复录制  他会覆盖上一个,如需多个录音 文件名称可以设置不同名称!


 

-(void)luyin{

    AVAudioSession * audioSession = [AVAudioSession sharedInstance]; if (!recording) {

        recording = YES;

        [audioSession setCategory:AVAudioSessionCategoryRecord error:nil];

        [audioSession setActive:YES error:nil];

        [LuBut setTitle:@"停止" forState:UIControlStateNormal];

        

        NSDictionary *setting = [[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithFloat: 44100.0],AVSampleRateKey, [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey, [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey, [NSNumber numberWithInt: 2], AVNumberOfChannelsKey, [NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey, [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,nil]; //然后直接把文件保存成.wav就好了

        tmpFile = [NSURL fileURLWithPath:

                   [NSTemporaryDirectory() stringByAppendingPathComponent:

                    [NSString stringWithFormat: @"%@.%@",

                     @"wangshuo",

                     @"caf"]]];

        recorder = [[AVAudioRecorder alloc] initWithURL:tmpFile settings:setting error:nil];

        [recorder setDelegate:self];

        [recorder prepareToRecord];

        [recorder record];

    } else {

        recording = NO;

        [audioSession setActive:NO error:nil];

        [recorder stop];

        [LuBut setTitle:@"录音" forState:UIControlStateNormal];

    }


}

//播放音频

-(void)bofang{

    NSError *error;

    audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:tmpFile

                                                      error:&error];

    

    audioPlayer.volume=1;

    if (error) {

        NSLog(@"error:%@",[error description]);

        return;

    }

    //准备播放

    [audioPlayer prepareToPlay];

    //播放

    [audioPlayer play];

}


你也可以设置录音动态录音大小 需要定时器 不断刷新当前的音量 这个算法 录音的音量算法 有点小问题!不够灵敏!后期再学习!

  //设置定时检测

    timer = [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(detectionVoice) userInfo:nil repeats:YES];

recorder=== AVAudioRecorder;

 

- (void)detectionVoice

{

    [recorder updateMeters];//刷新音量数据

    //获取音量的平均值  [recorder averagePowerForChannel:0];

    //音量的最大值  [recorder peakPowerForChannel:0];

    

    double lowPassResults = pow(10, (0.05 * [recorder peakPowerForChannel:0]));

    NSLog(@"%lf",lowPassResults);

    //最大50  0

    //图片 -》大

    if (0<lowPassResults<=0.06) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_01.png"]];

    }else if (0.06<lowPassResults<=0.13) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_02.png"]];

    }else if (0.13<lowPassResults<=0.20) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_03.png"]];

    }else if (0.20<lowPassResults<=0.27) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_04.png"]];

    }else if (0.27<lowPassResults<=0.34) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_05.png"]];

    }else if (0.34<lowPassResults<=0.41) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_06.png"]];

    }else if (0.41<lowPassResults<=0.48) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_07.png"]];

    }else if (0.48<lowPassResults<=0.55) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_08.png"]];

    }else if (0.55<lowPassResults<=0.62) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_09.png"]];

    }else if (0.62<lowPassResults<=0.69) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_10.png"]];

    }else if (0.69<lowPassResults<=0.76) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_11.png"]];

    }else if (0.76<lowPassResults<=0.83) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_12.png"]];

    }else if (0.83<lowPassResults<=0.9) {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_13.png"]];

    }else {

        [self.imageView setImage:[UIImage imageNamed:@"record_animate_14.png"]];

    }

}




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多