我正在制作一个iOS应用程序,我正在使用AVAudioRecorder
记录外部音频并通过averagePowerForChannel
函数计算功率。当我的应用程序进入后台时一切顺利但当我在iPhone音乐应用程序中启动歌曲时,我的录制停止。然后我使用了以下代码:
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
现在当我从iPhone音乐应用程序播放音乐时,它可以在不中断录制的情况下播放,但播放的音量非常低。
我想录制这个iOS音乐应用程序歌曲,因为我在我的代码中的某个地方使用了电源。
经过大量的实验,我终于知道了正常音乐应用程序播放歌曲需要什么。
AVAudioSessionCategoryOptionMixWithOthers将允许录制附近的音频。但是如果你想录制iPhone扬声器产生的音频,你需要添加这个类别以及AVAudioSessionCategoryOptionDefaultToSpeaker。
以下是工作代码:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker
error:nil];