ios - 如何修改 AudioUnit Buffer 的大小?
问题描述
我正在开发一个录制的应用程序,但我要求输入缓冲区的大小应该是 882 字节。我知道我可以像这张图片一样修改 buffList 的 mDataByteSize 。但它只能修改为 2 的幂。当我尝试将其修改为 882 时,它警告我“AudioUnitRender 错误:-50”。
我希望有人可以帮助我,因为我没有办法。
解决方案
您不能在音频单元录制回调缓冲区列表中要求特定的输入大小。事实上,Audio Unit API 允许在运行时更改每个音频缓冲区的样本数。因此,您的应用必须支持与请求不同的帧数,每个回调。
相反,您的应用程序应该将样本保存在另一个临时 FIFO 缓冲区中,然后当临时 FIFO 缓冲区足够满时,删除一些您想要的块大小的样本。通常,循环缓冲区用于存储临时量,直到它被填充到您需要的大小或更大。您可以准确提取 882 个或您需要的任何数量的样本。
推荐阅读
- networking - 连接拒绝在 pod 之间进行通信
- r - 如何创建一个函数以有条件地在多列中执行算术运算
- android - 使用 Fresco 库全屏显示 GIF 图像
- java - 在 Java 上使用嵌套未来时的取消问题
- python-3.x - 模型拟合需要 1 个数组,但我得到了 768
- java - OpenJDK 11 java.lang.ClassCastException:类 sun.font.CompositeFont 不能转换为类 sun.font.PhysicalFont
- javascript - 用户脚本永远运行(不断重新加载页面,而不是重定向一次)
- docker - 在 jenkins docker 容器上运行命令以将文件复制到主机
- jquery - 过渡和 translate3d 水平滑块动画问题
- python - Grep python 输出流(尝试打印和标准输出)