每10毫秒记录一次pcmaudiodata而不播放

时间:2019-07-12 15:50:17

标签: ios swift4 avaudioplayer avaudiorecorder audiounit

İ需要每10毫秒记录一次pcmaudio,而不能迅速播放。

我已经尝试过此代码,但是我找不到在录制时如何停止播放。

RecordAudio Github Repo

和第二个问题:如何从循环缓冲区中获取PCM数据以正确进行编码-解码过程。当我将录制的音频数据转换为有符号字节或无符号字节或其他任何内容时,转换后的数据有时会损坏。这种过程的最佳实践是什么

1 个答案:

答案 0 :(得分:0)

在RecordAudio示例代码中,音频格式指定为Float(32位浮点数)。在进行浮点数到整数的转换时,必须确保比例和偏移量导致目标类型的合法范围内的值。例如检查-1.0到1.0导致0到256(无符号字节),并且超出范围的值被裁剪为合法值。还请注意您转换的样​​本数,因为音频单元回调可以改变发送的frameCount(返回的样本数)。您很可能在任何一个RemoteIO回调中都不会获得准确的10毫秒,但可能必须观察由多个回调填充的循环缓冲区,或者必须拆分的较大缓冲区。

RemoteIO在播放和录制模式下运行时,通常可以在从Audio Unit回调返回之前,通过将bufferList缓冲区清零(在复制,分析或以其他方式使用缓冲区中的数据之后)来使播放静音。