您的位置:首页 > 移动开发 > IOS开发

AVAudioSession、AVAudioRecorder、AVAudioPlayer

2015-10-07 13:51 411 查看
按钮显示为“录音”,点击显示为“停止”,再点击显示为“录音”

实现代码:

- (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];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: