音频处理(录音一)

简单录音功能实现可以录音和播放,根据声音大小显示相应的音量图片。

1.添加框架AVFoundation.framework与CoreAudio.framework

2.

创建两个按钮

    startButton = [UIButton buttonWithType:UIButtonTypeCustom];

    startButton.frame = CGRectMake(50, 300, 100, 50);

    startButton.backgroundColor = [UIColor blackColor];

    [startButton addTarget:self action:@selector(startStop) forControlEvents:UIControlEventTouchUpInside];

    [startButton setTitle:@"开始录音" forState:UIControlStateNormal];

    [self.view addSubview:startButton];

    

    UIButton * playButton = [UIButton buttonWithType:UIButtonTypeCustom];

    playButton.frame = CGRectMake(200, 300, 100, 50);

    playButton.backgroundColor = [UIColor blackColor];

    [playButton addTarget:self action:@selector(play) forControlEvents:UIControlEventTouchUpInside];

    [playButton setTitle:@"开始播放" forState:UIControlStateNormal];

    [self.view addSubview:playButton];


3.   创建一个url

recordedTempFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:@"RecordedFile"]];

    AVAudioSession *session = [AVAudioSession sharedInstance];

    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

    [session setActive:YES error:nil];

4.创建一个imageview

    self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];

    [self.view addSubview:self.imageView];

具体代码如下:

- (void)viewDidLoad

{

    [super viewDidLoad];

    [self creatButton];

    

    startOrStopFlag = YES;

    recordedTempFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:@"RecordedFile"]];

    

    AVAudioSession *session = [AVAudioSession sharedInstance];

    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

    [session setActive:YES error:nil];

}


- (void)creatButton

{

    startButton = [UIButton buttonWithType:UIButtonTypeCustom];

    startButton.frame = CGRectMake(50, 300, 100, 50);

    startButton.backgroundColor = [UIColor blackColor];

    [startButton addTarget:self action:@selector(startStop) forControlEvents:UIControlEventTouchUpInside];

    [startButton setTitle:@"开始录音" forState:UIControlStateNormal];

    [self.view addSubview:startButton];

    

    UIButton * playButton = [UIButton buttonWithType:UIButtonTypeCustom];

    playButton.frame = CGRectMake(200, 300, 100, 50);

    playButton.backgroundColor = [UIColor blackColor];

    [playButton addTarget:self action:@selector(play) forControlEvents:UIControlEventTouchUpInside];

    [playButton setTitle:@"开始播放" forState:UIControlStateNormal];

    [self.view addSubview:playButton];

    

    self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];

    [self.view addSubview:self.imageView];

    

//   UILabel * hzLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 100, 50)];

//    hzLabel.text = @"采样频率";

//    [self.view addSubview:hzLabel];

//    

//    UILabel * voLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 150, 100, 50)];

//    voLabel.text = @"音量";

//    [self.view addSubview:voLabel];

//

//    hzTextField = [[UITextField alloc] initWithFrame:CGRectMake(200, 50, 100, 50)];

//    hzTextField.borderStyle = UITextBorderStyleRoundedRect;

//    hzTextField.text = @"44100.0";

//    [self.view addSubview:hzTextField];

//    

//   voTextField = [[UITextField alloc] initWithFrame:CGRectMake(200, 150, 100, 50)];

//    voTextField.borderStyle = UITextBorderStyleRoundedRect;

//    voTextField.text = @"2";

//    [self.view addSubview:voTextField];

    

    activity = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(100, 400, 50, 50)];

    activity.backgroundColor = [UIColor redColor];

    [self.view addSubview:activity];

}


- (void)dealloc

{

//    NSFileManager * fm = [NSFileManager defaultManager];

//    [fm removeItemAtPath:[recordedTempFile path] error:nil];

//    recorder = nil;

}


- (void)startStop

{

    if (startOrStopFlag) {

        [startButton setTitle:@"暂停录音" forState:UIControlStateNormal];

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

        //开启音量检测

        recorder.meteringEnabled = YES;

        recorder.delegate = self;

        

        //设置定时检测

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

        

        startOrStopFlag = NO;

        [activity startAnimating];

        [recorder prepareToRecord];

        [recorder record];

    }

    else

    {

        startOrStopFlag = YES;

        [activity stopAnimating];

        [startButton setTitle:@"开始录音" forState:UIControlStateNormal];

        [recorder stop];

        

        player = [[AVAudioPlayer alloc] initWithContentsOfURL:recordedTempFile error:nil];

    }

}

- (void)detectionVoice

{

    [recorder updateMeters];

    

    double lowPassResults = pow(10, (0.05 * [recorder peakPowerForChannel: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"]];

    }

}


- (void)play

{

    [player prepareToPlay];

    [player play];

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值