从iphone库歌曲中获取阵列中的原始样本

时间:2013-07-29 20:12:40

标签: arrays audio fft avaudioplayer

这个问题已被多次询问,但我没有找到足够的答案。我试图从用户iPod库中的一首歌中提取PCM数据,然后将其放入一个数组,以便我可以在其上运行FFT。我可以使用MediaPlayer框架从iPod上获取任何歌曲并获取其URL。我已经将它转换为AVURLAsset并尝试了许多AVFramework工具而没有运气。

MPMediaItem *currentItem = [appMusicPlayer nowPlayingItem];
NSURL * assetURL_ = [currentItem valueForProperty: MPMediaItemPropertyAssetURL];
AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL:assetURL_ options:nil];

从这一点开始,我需要将其数据放入一个数组中,我可以在该数组中对歌曲进行FFT运算。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用AVAssetReader和AVAssetWriter API从URL读取压缩文件,并写出原始样本或WAV / RIFF文件,这只是具有已知大小(通常为44字节)的小标头的原始样本在分析之前可以跳过。例如如果需要,可以使用不同的音频格式进行读写。

一旦你把文件作为原始样本,app就可以把它作为NSData读取来获取原始字节(音频16位样本将是2个字节,你可以通过将C指针转换为字节)。