我正在使用 Stephen Celis 的 SCListener 类来记录 iPhone 麦克风音频级别。我还通过使用 AVAudioPlayer 播放音频。例如,用户按下“播放”以开始在后台播放声音,然后可以选择向麦克风吹气以播放其他更短的声音。代码一切正常,在应该播放的时候播放所有声音,但是,当您开始使用 SCListener 收听时,AVAudioPlayer 音量大大降低。我已将罪魁祸首缩小到 SCListener 源代码中的这一行:
AudioQueueNewInput(&format, ListeningCallback, self, NULL, NULL, 0, &queue);
我绞尽脑汁,不知道如何在执行此行后将播放音量保持在最高水平。我也和史蒂芬·塞利斯谈过,他不知道发生了什么事。我认为 iPhone 在使用麦克风时可能会降低输出音量,这样就不会引入反馈,但似乎应该有一种方法可以禁用它。
总结:
- 开始使用 AVAudioPlayer 播放长音频文件 - 100% 音量(大声)。
- 启用 SCListener 并开始监听(调用 AudioQueueNewInput)。
- AVAudioPlayer 声音的输出音量大幅降低
- 调用 [[SCListener sharedListener] stop] 来处置队列
- AVAudioPlayer 声音恢复更高的播放音量
有人见过这样的事情或者对如何保持更高的播放音量有任何想法吗?我已将音量参数明确设置为 1.0f,以确保增益处于最高水平。
最佳答案
你可以试试这个:
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
关于iphone - AudioQueueNewInput 降低 AVAudioPlayer 的播放音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/892695/