如何在iOS上的浮点数组中读取声音文件?

时间:2011-09-16 13:00:49

标签: ios audio

我想读一个声音文件,我自己生成这个文件,所以我可以选择任何大胆可以输出的内容,放入一个浮点数组,这样我就可以浮动mySoundOneSecond [44100];并充分利用数据,以便我可以在iOS设备上操作“原始”浮动数据。

2 个答案:

答案 0 :(得分:1)

您必须在CoreAudio中使用ExtFileReader C API。这将把你的文件读入lPCM。但要注意,从技术上讲,你得到的缓冲区不会保持浮点值,而是AudioUnitSampleType类型的8.24bit定点整数。不要被这种类型的typedef所迷惑,它是8.24bit。

答案 1 :(得分:0)

NSMutableData可能是您阅读此文件的最简单方法。像这样的东西::

NSMutableData *data = [NSMutableData dataWithContentsOfFile:path options:0 error:&error];
if (!data) { ... do something with the error ... }

float *mySoundOnSecond = [data mutableBytes];

您可能希望在此类应用的选项中传递NSDataReadingMapped。通过将文件映射到内存而不是一次性读取,可以节省一些时间。

请注意,此方法将阻止其所在的线程。如果文件很大,您可以在后台线程上执行此操作,也可以使用异步读取方法。有关各种选项,请参阅File System Programming Guide