录音时播放音频音量会降低

时间:2020-08-16 03:29:59

标签: ios objective-c audiounit audioqueue audiosession

我使用audiounit录制语音,并使用audioqueue播放音频数据。当我设置时:

[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];

播放的音频的音量将非常低。但是当我设置时:

[session setCategory:AVAudioSessionCategoryMultiRoute error:&error];

尽管音量将是正常的。但是从iOS麦克风输出的音频数据将不会相同。使用前者设置时,音频数据长度将为4096,但后者将输出长度,分别为3760和3764。这在我编码音频数据时会导致崩溃。

我发现解决方法是说我应该先打开音频播放器再打开录音机,然后问题才能解决。不幸的是,我必须先打开录音机。因此,我不知道如何设置音频会话,是否可以使音量和音频数据具有相同的长度。

1 个答案:

答案 0 :(得分:0)

3760-3764是由于将采样率从48k重新采样到了44.1k。

使用圆形/环形缓冲区/ fifo避免编码问题(例如,仅在缓冲区/ fifo中已经有足够多的采样时,才总是从缓冲区/ fifo中取出4096个样本)。

此外,在启用AudioSession之前,请尝试设置您的首选采样率。

相关问题