我需要以 PCM 格式 8 KHz 16 Bit Mono 实时发送音频数据。
音频必须像具有长度的字符数组一样发送
(<#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);
}
Best Answer-推荐答案 strong>
这并不是真正的初学者任务。解决方案是使用 RemoteIO 音频单元、音频队列 API 或 AVAudioEngine installTapOnBus block 。这些将为您提供近乎实时(取决于缓冲区大小)的音频样本缓冲区(Int16 或 float 等),您可以将其转换、压缩、打包成其他数据类型或数组等。通常通过调用回调函数或阻止您提供的对传入的录制音频样本缓冲区执行任何操作。
关于ios - 录制音频数据并将其发送到 c++ 函数,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/43891054/
|