Я пытаюсь применить фильтры к звуку, взятому из библиотеки музыки Apple, с помощью AVAudioEngine:
Прежде всего, я получаю AVAudioFile:
NSURL *assetURL = [song valueForProperty:MPMediaItemPropertyAssetURL];
NSError *error;
AVAudioFile *audioFile = [[AVAudioFile alloc] initForReading:assetURL error:&error];
Затем я пытаюсь преобразовать егоAVAudioPCMBuffer:
AVAudioFormat *format = audioFile.processingFormat;
AVAudioFrameCount capacity = (AVAudioFrameCount)audioFile.length;
AVAudioPCMBuffer *buffer = [[AVAudioPCMBuffer alloc] initWithPCMFormat:format frameCapacity:capacity];
[audioFile readIntoBuffer:buffer error:nil];
И, наконец, я пытаюсь подключить все, используя AVAudioEngine и запланировать буфер:
[engine attachNode:audioEQ];
[engine attachNode:avHighPassFilter];
[engine attachNode:audioPlayerNode];
[engine connect:audioPlayerNode to:mainMixer format:[mainMixer outputFormatForBus:0]];
[engine connect: audioPlayerNode to:audioEQ format:buffer.format];
[engine connect: audioEQ to:avHighPassFilter format:buffer.format];
[engine connect:avHighPassFilter to:mainMixer format:buffer.format];
[audioPlayerNode scheduleBuffer:buffer atTime:nil options:AVAudioPlayerNodeBufferLoops completionHandler:nil];
Воспроизводит песню, но в ужасном качестве.Когда я сначала пытаюсь экспортировать MPMediaItem в папку с документами, качество звука немного лучше, но все же недостаточно хорошее.
Кто-нибудь может мне помочь исправить это?Является ли проблема с форматом com.apple.m4a-audio?