0

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

[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];

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

[session setCategory:AVAudioSessionCategoryMultiRoute error:&error];

虽然音量会正常。但是iOS麦克风输出的音频数据不会一样长。使用前一种设置,audiodata长度将为4096,但后者将输出3760和3764的长度。这将导致我在对audiodata进行编码时崩溃。

我找到解决方案说我应该在打开录音机之前打开音频播放器,然后问题就解决了。不幸的是,我必须先打开录音机。所以我不知道如何设置音频会话我可以得到一个很大的音量和相同长度的音频数据。

4

1 回答 1

0

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

使用循环/环形缓冲区/fifo 来避免编码问题(例如,只有当缓冲区/fifo 中已经有那么多或更多样本时,才总是从缓冲区/fifo 中准确提取 4096 个样本)。

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

于 2020-08-23T21:20:57.740 回答