AVAudioSession、AVAudioRecorder、AVAudioPlayer

来源:互联网 发布:对于上海踩踏事件知乎 编辑:程序博客网 时间:2024/05/29 19:23

按钮显示为“录音”,点击显示为“停止”,再点击显示为“录音”
实现代码:
- (IBAction)onRecordButtonPressed:(id)sender
{
UIButton button = (UIButton )sender;
[sender setTitle:([button.titleLabel.text isEqualToString:@”录音”] ? @”停止” : @”录音”)forState:UIControlStateNormal];
}
项目:
“录音按钮”按钮:点击即可录音,录音时按钮显示为“停止”,点击则停止录音,此段录音被保存
“播放录音”按钮:点击即播放刚才的录音,播放时按钮显示为“停止”,点击即停止
总结:
//利用AVFoundation框架实现录音和播放(AVAudioSession、AVAudioRecorder、AVAudioPlayer)
程序的构建主要分为以下几步:

  • 设置音频会话类型为AVAudioSessionCategoryPlayAndRecord,因为程序中牵扯到录音和播放操作。

  • 创建录音机AVAudioRecorder,指定录音保存的路径并且设置录音属性。

  • 实现录音机按钮

  • 创建音频播放器AVAudioPlayer,用于在录音完成之后播放录音。

  • 添加录音、暂停、恢复、停止操作,需要注意录音的恢复操作其实是有音频会话管理的,恢复时只要再次调用record方法即可,无需手动管理恢复时间等。

import

pragma mark - 录音机代理方法

  • (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag
    {
    [_audioSession setActive:NO error:nil];
    }

【创建音频播放器AVAudioPlayer】
- (IBAction)onPlayerButton:(id)sender
{
//“播放播音”及“停止”按钮的切换
UIButton button = (UIButton )sender;
[sender setTitle:([button.titleLabel.text isEqualToString:@”播放录音”] ? @”停止” : @”播放录音”)forState:UIControlStateNormal];
if( ![_audioPlayer isPlaying] )
{
if( [[NSFileManager defaultManager] fileExistsAtPath:[self getSoundPath]] )
{
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[self getSoundPath]] error:nil];
[_audioPlayer setDelegate:self];
//加载音频文件至缓存
[_audioPlayer prepareToPlay];
//播放音频
[_audioPlayer play];
}
}
else
[_audioPlayer stop];
}

pragma mark - 音频播放器代理方法

  • (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
    {
    [self.playerButton setTitle:@”播放录音” forState:UIControlStateNormal];
    }
0 0
原创粉丝点击