【问题标题】:Playing audio while record will get a low volume录制时播放音频会降低音量
【发布时间】:2020-12-05 12:39:08
【问题描述】:

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

[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];

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

[session setCategory:AVAudioSessionCategoryMultiRoute error:&error];

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

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

【问题讨论】:

  • 当我使用 iPad 作为测试设备时,我可以使用 PlayAndRecord 来获得正常的音量。

标签: ios objective-c audiounit audioqueue audiosession


【解决方案1】:

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

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

另外,在启用 AudioSession 之前尝试设置您喜欢的采样率。

【讨论】:

    猜你喜欢
    • 2022-12-31
    • 2012-05-17
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多