Iphone 尝试从.wav文件中提取样本

Iphone 尝试从.wav文件中提取样本,iphone,arrays,sample,wav,Iphone,Arrays,Sample,Wav,我试图从.wav文件中获取样本并将它们存储在数组中(使用objective c) 有人知道一个好办法吗 到目前为止,它看起来像libsndfile(http://www.mega-nerd.com/libsndfile/)可能是我需要实现的,但我不确定从哪里开始(我对这方面比较陌生) 谢谢;) AudioToolbox.framework中的ExtAudioFile和AudioFileAPI将为您完成此操作。AQOfflineRenderTest可能是一个很好的示例。如果您已经知道波形文件的类型

我试图从.wav文件中获取样本并将它们存储在数组中(使用objective c)

有人知道一个好办法吗

到目前为止,它看起来像libsndfile(http://www.mega-nerd.com/libsndfile/)可能是我需要实现的,但我不确定从哪里开始(我对这方面比较陌生)


谢谢;)

AudioToolbox.framework中的
ExtAudioFile
AudioFile
API将为您完成此操作。AQOfflineRenderTest可能是一个很好的示例。

如果您已经知道波形文件的类型…例如,以48 KHz的频率进行16位单声道采样,那么最简单的方法就是简单地将波形文件作为二进制文件打开,移过标题,然后开始解析示例字节

如果您熟悉C结构,并且如果不熟悉,有大量的在线字节对字节引用,那么wave头就是这样的

类型定义结构 { char chunkID[4]; UINT32 chunkSize;//只需计算此字段 字符格式[4]; char subchunk1ID[4]; UINT32次弹簧尺寸; UINT16音频格式; UINT16个数字通道; UINT32采样器; UINT32字节; UINT16块对齐; UINT16位样本; char subchunk2ID[4]; UINT32 subchunk2Size;//需要计算此字段 }波头

这一点之后的样品是有序的。如果是单声道,则有一个采样;如果是立体声,则有一个声道,然后是该时间位置的下一个声道

当然,如果您还不知道wave文件的类型和/或大小,那么您总是可以简单地解析头文件