1

这个问题已经被问过很多次了,但是我没有找到足够的答案。我正在尝试从用户 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。谢谢你的帮助!

4

1 回答 1

0

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

一旦您将文件作为原始样本获取,应用程序可以将其作为 NSData 读取以获取原始字节(音频 16 位样本将是 2 个字节,您可以通过将 C 指针转换为字节来获取) .

于 2013-07-29T21:10:36.477 回答