首页 > 解决方案 > 如何修改 AudioUnit Buffer 的大小?

问题描述

我正在开发一个录制的应用程序,但我要求输入缓冲区的大小应该是 882 字节。我知道我可以像这张图片一样修改 buffList 的 mDataByteSize 。但它只能修改为 2 的幂。当我尝试将其修改为 882 时,它警告我“AudioUnitRender 错误:-50”。

我希望有人可以帮助我,因为我没有办法。

标签: iosobjective-caudiounit

解决方案


您不能在音频单元录制回调缓冲区列表中要求特定的输入大小。事实上,Audio Unit API 允许在运行时更改每个音频缓冲区的样本数。因此,您的应用必须支持与请求不同的帧数,每个回调。

相反,您的应用程序应该将样本保存在另一个临时 FIFO 缓冲区中,然后当临时 FIFO 缓冲区足够满时,删除一些您想要的块大小的样本。通常,循环缓冲区用于存储临时量,直到它被填充到您需要的大小或更大。您可以准确提取 882 个或您需要的任何数量的样本。


推荐阅读