记录音频数据并将其发送到c ++函数

时间:2017-05-10 11:23:46

标签: ios objective-c core-audio

我需要以PCM格式8 KHz 16 Bit Mono实时发送音频数据。

音频必须像长度的字符数组一样发送 (< #char * data#>,< #int len#>)。

现在我是音频处理的初学者,不能真正理解如何实现这一目标。我最好的尝试是转换为iLBC格式并尝试但它无法工作。是否有任何示例如何录制和转换音频到任何格式。我已经阅读了Chris Adamson和Kevin Avila的学习核心音频,但我确实找不到有效的解决方案。

简单我需要的东西:

(适用记录) - >(?转换) - > send(char * data,int length);

Couse我需要发送像chars数组这样的数据我不能使用播放器。

编辑: 我设法使一切工作与录音和阅读缓冲。我无法管理的是:

 if (ref[i]->mAudioDataByteSize != 0){
       char * data = (char*)ref[i]->mAudioData;
       sendData(mHandle, data, ref[i]->mAudioDataByteSize);
        }

1 个答案:

答案 0 :(得分:0)

这不是一个真正的初学者任务。解决方案是使用RemoteIO Audio Unit,Audio Queue API或AVAudioEngine installTapOnBus块。这些将为您提供接近实时(取决于缓冲区大小)的音频样本缓冲区(Int16' s或Floats等),您可以将它们转换,压缩,打包成其他数据类型或数组等。通常由调用您提供的回调函数或块,以便对传入的录制音频样本缓冲区执行任何操作。