我使用音频单元录制语音,并使用音频队列播放音频数据。当我设置:
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
播放的音频音量将非常低。但当我设置:
[session setCategory:AVAudioSessionCategoryMultiRoute error:&error];
尽管音量正常。但iOS麦克风输出的音频数据不会一样长。在前一种设置下,音频数据长度将为4096,但后者将在3760和3764中输出长度。当我对音频数据进行编码时,这将导致崩溃。
我发现解决方案说,我应该在打开录音机之前打开音频播放器,然后问题就会解决。很遗憾,我必须先打开录音机。所以我不知道如何设置音频会话。我可以获得相同长度的音量和音频数据吗。
3760-3764是由于从48k重新采样到44.1k采样率。
使用循环/环形缓冲区/fifo来避免编码问题(例如,只有当缓冲区/ffo中已经有4096个或更多样本时,才从缓冲区/fio中取出4096个样本(。
此外,在启用AudioSession之前,请尝试设置您喜欢的采样率。