如何在iOS上将声音文件读入浮点数组?

如何在iOS上将声音文件读入浮点数组?,ios,audio,Ios,Audio,我想读一个声音文件,我自己生成这个文件,这样我就可以选择audacity可以输出的任何东西,放入一个浮点数组,这样我就可以得到float mySoundOneSecond[44100];让它充满数据,这样我就可以在iOS设备上随心所欲地处理“原始”浮点数据。NSMutableData可能是读取此文件的最简单方法。大概是这样的:: NSMutableData *data = [NSMutableData dataWithContentsOfFile:path options:0 error:&am

我想读一个声音文件,我自己生成这个文件,这样我就可以选择audacity可以输出的任何东西,放入一个浮点数组,这样我就可以得到float mySoundOneSecond[44100];让它充满数据,这样我就可以在iOS设备上随心所欲地处理“原始”浮点数据。

NSMutableData
可能是读取此文件的最简单方法。大概是这样的::

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

float *mySoundOnSecond = [data mutableBytes];
您可能希望在此类应用程序的选项中传递
NSDataReadingMapped
。通过将文件映射到内存,而不是一次读取所有文件,这将为您节省一些时间


请注意,这种方法将阻止它所在的线程。如果文件很大,可以在后台线程上执行,也可以使用异步读取方法。有关各种选项,请参阅。

NSMutableData
可能是读取此文件的最简单方法。大概是这样的::

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

float *mySoundOnSecond = [data mutableBytes];
您可能希望在此类应用程序的选项中传递
NSDataReadingMapped
。通过将文件映射到内存,而不是一次读取所有文件,这将为您节省一些时间


请注意,这种方法将阻止它所在的线程。如果文件很大,可以在后台线程上执行,也可以使用异步读取方法。有关各种选项,请参阅。

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

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

你好,Rob,谢谢-性能问题对我所做的事情来说没什么大不了的-但是在没有标题或任何东西的情况下,我可以使用什么格式的音频呢。。。读取这样的字节,好吧,当然明白了,但是什么格式会给我这种格式的正确的尾端字节和无头字节呢?感谢这通常被称为“原始”或“PCM”格式。我不知道Audacity是否会写这些。嗨,Rob,谢谢-性能问题对我正在做的事情来说没什么大不了的-但是我可以使用什么格式的音频,如果它是完全原始的,没有标题或任何东西。。。读取这样的字节,好吧,当然明白了,但是什么格式会给我这种格式的正确的尾端字节和无头字节呢?感谢这通常被称为“原始”或“PCM”格式。我不知道Audacity会不会写这些。