Плохое качество звука при использовании AVAudioEngine для MPMediaItem - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь применить фильтры к звуку, взятому из библиотеки музыки 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?

...