尝试同时录制和播放音频,但它很安静

时间:2012-07-30 20:14:08

标签: iphone objective-c ios ipad audio

好的,所以我试着查看这个,所以它不是重复,但我可能错过了一些东西。无论如何,在我的应用程序中,我有一首歌,应该在我录制时开始播放。因此,当我点击记录时,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");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

当您开始录制时,您正在播放听筒中的歌曲,而不是从扬声器中播放。

有一个音频会话覆盖以防止此自动切换。请参阅Apple的iOS API文档中的使用:kAudioSessionProperty_OverrideAudioRoute和kAudioSessionOverrideAudioRoute_Speaker。