ios - 记录音频数据并将其发送到 C++ 函数

标签 ios objective-c core-audio

我需要以 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/

相关文章:

ios - 如何在 UITableViewController 重新加载其数据时得到通知?

macos - 将音频流式传输到多个 AirPlay 设备

iOS:使用音频单元播放 RTP 数据包

ios - 查看 EkReminder 重复频率的最佳方式?

ios - 如何获得 linkedin 连接?

iphone - 播放 : Playing a Movie from MPMoviePlayerController results in only audio being streamed to Apple tv

ios - iOS 10 中的 collectionViewContentSize 使用自调整单元格

ios - 链接多对多的对象应该都写在 Realm 中吗?

ios - 如何将特定 NSMutableArray 中的数据重新加载到 UITableView 中

iphone - aurioTouch 示例是否应该从麦克风播放声音?