我正在使用AVAssetReaderTrackOutput从iPod库音乐原始数据,赛车WAV或MP3文件格式从iPod库工作得很好。然而,如果我读取M4A文件,我将获得所有0或垃圾的数据。。。我正在读取的M4A文件是可播放的,我确信它没有加密。。。当您读取M4A文件时,它似乎是iOS加密或输出0s。有人对如何解决这个问题有什么建议吗?
注意:如果我使用AVAssetExportSession从m4a文件导出到m4a文件,那么我会得到正确的原始数据,但这意味着我必须首先将其保存到磁盘(例如,在Apps文档文件夹中),然后读取它。我希望能够流式传输它,所以我需要找到直接读取它的方法。
这是我的代码,我得到正确的mp3或wav原始数据“除了m4a”:
NSURL *assetURL = [MediaItem valueForProperty:MPMediaItemPropertyAssetURL];
AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL:assetURL options:nil];
AVAssetTrack* songTrack = [songAsset.tracks objectAtIndex:0];
AVAssetReaderOutput *assetReaderOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:[songAsset.tracks objectAtIndex:0] outputSettings:nil];
NSError *assetError = nil;
AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:songAsset
error:&assetError];
[assetReader addOutput: assetReaderOutput];
//Retain
self.mStreamAssetReader = assetReader;
self.mStreamAssetReaderOutput = assetReaderOutput;