我使用audiounit录制语音,并使用audioqueue播放音频数据。当我设置时:
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
播放的音频的音量将非常低。但是当我设置时:
[session setCategory:AVAudioSessionCategoryMultiRoute error:&error];
尽管音量将是正常的。但是从iOS麦克风输出的音频数据将不会相同。使用前者设置时,音频数据长度将为4096,但后者将输出长度,分别为3760和3764。这在我编码音频数据时会导致崩溃。
我发现解决方法是说我应该先打开音频播放器再打开录音机,然后问题才能解决。不幸的是,我必须先打开录音机。因此,我不知道如何设置音频会话,是否可以使音量和音频数据具有相同的长度。
答案 0 :(得分:0)
3760-3764是由于将采样率从48k重新采样到了44.1k。
使用圆形/环形缓冲区/ fifo避免编码问题(例如,仅在缓冲区/ fifo中已经有足够多的采样时,才总是从缓冲区/ fifo中取出4096个样本)。
此外,在启用AudioSession之前,请尝试设置您的首选采样率。