我们有一个VOIP应用程序,它记录和播放音频。因此,我们使用的是PlayAndRecord (kAudioSessionCategory_PlayAndRecord)音频会话类别。到目前为止,我们已经成功地在iPhone 4/4s/5中使用了iOS 6和iOS 7,其中呼叫音频和音调播放得很清楚,而且是可以听到的。然而,使用iPhone 5s时,我们观察到呼叫音频和音调在扬声器模式下都是机械的/混乱的。当使用耳机/蓝牙/耳机时,声音是清晰和可听到的。与iOS 5s一起使用的iPhone版本: 7.0.4
我们正在使用音响记录/播放呼叫音频。在设置音频属性(如会话类别、音频路由、会话模式等)时,我们尝试了旧的(不推荐的) AudioSessionSetProperty()和AVAudioSession API。对于播放音调,我们使用AVAudioPlayer。在VOIP呼叫期间以及在应用程序中按下键盘控制器时,播放音调会产生机器人声音。当使用AudioComponentInstanceNew实例化音频组件时,我们将componentSubType设置为kAudioUnitSubType_VoiceProcessingIO。当用kAudioUnitSubType_VoiceProcessingIO代替kAudioUnitSubType_RemoteIO时,我们注意到呼叫音频和音调的声音不再是机械的,它是相当清晰的,但是使用扬声器模式时音量很低。
总之,保持所有其他音频API相同:
kAudioUnitSubType_VoiceProcessingIO:音量高(理想),但声音的音调和呼叫音频是机器人在扬声器模式。kAudioUnitSubType_RemoteIO:音调和呼叫声音是清晰的,但听不到。
将音频会话类别复制为playAndRecord的步骤。-设置音频路由到扬声器-设置所有其他音频属性,如启动音频单元,激活音频会话,实例化音频组件。-设置输入和呈现回调-尝试两个选项1.使用AVAudioPlayer 2播放音调。播放呼叫音频
任何关于如何克服这个问题的建议。作为一个问题向苹果提出,但尚未得到他们的回应。
我在这里共享了代码,github链接
发布于 2014-04-03 08:23:33
kAudioUnitSubType_VoiceProcessingIO和kAudioUnitSubType_RemoteIO之间唯一的区别是,voiceProcessing包含了调出声音回声的代码,即调出扬声器发出的噪音,这样麦克风就不会接收它。我已经很久没玩过音频框架了,但我记得,听起来可能有很多东西,
我有几个问题这样做,其中之一是使用第三方循环缓冲区被描述为低延迟和有效的.没有。我在这里回答了我自己的问题,并包括了循环缓冲区实现,这大大改善了我的音频,因为问题是我跳过了数据。
试试看,让我知道:iOS用户界面导致我的音频流出现故障。
请注意,有些代码是音频格式ALaw独有的,0xD5是ALaw中沉默的字节,如果您使用的是线性PCM或任何其他可能会产生某种噪音的代码。
https://stackoverflow.com/questions/21964477
复制相似问题