我正在使用Stephen Celis的SCListener课程来录制iPhone麦克风音频电平。我也通过使用AVAudioPlayer播放音频。例如,用户按下“播放”以启动在后台播放的声音,然后可以选择吹入麦克风以播放更多更短的声音。代码一切正常,在播放时播放所有声音,但是,当您开始使用SCListener进行监听时,AVAudioPlayer音量大大会减少。我已经在SCListener源代码中将罪魁祸首缩小到这一行:
AudioQueueNewInput(& format,listeningCallback,self,NULL,NULL,0,& queue);
我已经绞尽脑汁,一旦这条线执行完毕,就无法知道如何将播放音量保持在最高水平。我也和Stephen Celis谈过,他不知道发生了什么。我想,有可能在使用麦克风时iPhone会降低输出音量,这样就不会引入反馈,但似乎应该有办法禁用它。
总结:
有没有人见过这样的内容,或者对如何保持播放音量更高有任何想法?我已经明确地将音量参数设置为1.0f,以确保增益处于最高水平。
答案 0 :(得分:1)
你可以试试这个:
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
答案 1 :(得分:0)
我不熟悉Stephen Celis的工作,但是如果tposchel的建议不起作用,那么在调试模式下查看InputQueue的值与OutputQueue的音频值可能有一些价值(但这很棘手,因为这些方法的回调是实时线程。)
这可能会提供信息,因为它会告诉您操作系统认为它发送到您的输出设备(耳机或内置扬声器)的内容。
解决此问题的强力方法是手动规范化(或按比例放大)OutputQueue回调中的值。这可能不会解决您的根本问题,但在您找到答案之前可能是一个黑客攻击。