我需要以 PCM 格式 8 KHz 16 位单声道实时发送音频数据。
音频必须像长度为字符的数组一样发送 (<#char *data#>, <#int len#>).
现在我是音频处理的初学者,无法真正理解如何完成它。我最好的尝试是转换为 iLBC 格式并尝试但它不起作用。是否有任何示例如何录制音频并将其转换为任何格式。我已经阅读了 Chris Adamson 和 Kevin Avila 的 Learning Core Audio,但我确实没有找到有效的解决方案。
简单的我需要的:
(record)->(convert?)-> send(char *data, int length);
因为我需要发送数据,比如我不能使用播放器的字符数组。
编辑: 我设法使一切都与记录和读取缓冲区一起工作。我无法管理的是:
if (ref[i]->mAudioDataByteSize != 0){
char * data = (char*)ref[i]->mAudioData;
sendData(mHandle, data, ref[i]->mAudioDataByteSize);
}
最佳答案
这不是真正的初学者任务。解决方案是使用 RemoteIO 音频单元、音频队列 API 或 AVAudioEngine installTapOnBus block 。这些将为您提供接近实时(取决于缓冲区大小)的音频样本缓冲区(Int16 或 Floats 等),您可以将其转换、压缩、打包成其他数据类型或数组等。通常通过调用回调函数或您提供的 block 以对传入的录制音频样本缓冲区执行任何操作。
关于ios - 记录音频数据并将其发送到 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43891054/