Я использую AVAssetReaderTrackOutput для воспроизведения музыкальных необработанных данных из библиотеки iPod, гоночный формат WAV или MP3 из библиотеки iPod работает нормально.Однако, если я читаю файл M4A, я получу данные со всеми нулями или мусором ... Файл M4A, который я читаю, воспроизводится, и я уверен, что он не зашифрован ... Кажется, что iOS шифруется или выдает 0, когда вычитаем файл M4A.Кто-нибудь есть какие-либо предложения о том, как решить эту проблему?
ПРИМЕЧАНИЕ. Если я использую 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;