好的,所以我试着查看这个,所以它不是重复,但我可能错过了一些东西。无论如何,在我的应用程序中,我有一首歌,应该在我录制时开始播放。因此,当我点击记录时,AVAudioRecorder开始录制,我已经初始化的AVAudioPlayer开始播放歌曲。然而这首歌的音量变得非常安静。我知道这不是这首歌,因为如果我只是在没有尝试同时录制的情况下播放这首歌,它就会播放全音量。有帮助吗?感谢。
我如何初始化:
NSDictionary *recordSettings = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:16],
AVEncoderBitRateKey,
[NSNumber numberWithInt: 2],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:44010.0],
AVSampleRateKey,
nil];
NSError *error = nil;
audioRecorder = [[AVAudioRecorder alloc]
initWithURL:soundFileURL
settings:recordSettings
error:&error];
if (error)
{
NSLog(@"error: %@", [error localizedDescription]);
} else {
[audioRecorder prepareToRecord];
}
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:"Rang De"
ofType:@"mp3"]];
audioPlayerForPreloadedMusic = [[AVAudioPlayer alloc]
initWithContentsOfURL:url
error:&error];
if (error)
{
NSLog(@"Error in audioPlayer: %@",
[error localizedDescription]);
} else
{
audioPlayerForPreloadedMusic.delegate = self;
[audioPlayerForPreloadedMusic prepareToPlay];
}
我是怎么玩的:
-(void) recordAudio
{
if (!audioRecorder.recording)
{
playButton.enabled = NO;
stopButton.enabled = YES;
[audioRecorder record];
if(!audioPlayerForPreloadedMusic.playing)
[audioPlayerForPreloadedMusic play];
else {
NSLog(@"music is playing, so won't play");
}
}
}
答案 0 :(得分:1)
当您开始录制时,您正在播放听筒中的歌曲,而不是从扬声器中播放。
有一个音频会话覆盖以防止此自动切换。请参阅Apple的iOS API文档中的使用:kAudioSessionProperty_OverrideAudioRoute和kAudioSessionOverrideAudioRoute_Speaker。