Итак, у меня два вопроса:
- Есть ли другой (возможно, низкоуровневый) способ получения поплавков * семплов звука, который воспроизводится в данный момент?
- Возможно ли этосделать это изнутри рамки? Я имею в виду, когда у вас нет доступа к экземпляру AVPlayer (или AVAudioPlayerNode, AudioEngine или даже низкоуровневым классам CoreAudio, как угодно), кому принадлежит аудиофайл? Есть ли способ подписаться (для анализа или также для изменения / выравнивания) на аудиосэмплы, которые воспроизводятся через динамики / наушники?
Я пытался установить кранна audioEngine.mainMixerNode
, который работает, но когда я устанавливаю размер буфера> 4096 (для вычисления БПФ высокой плотности), обратный вызов вызывается реже, чем следовало бы (примерно 3 раза в секунду вместо 30 раз или даже часто)).
mixerNode.installTap(onBus: 0,
bufferSize: 16384, //or 8192
format: mixerNode.outputFormat(forBus: 0))
{[weak self] (buffer, time) in
//this block is being called LESS frequently...
}
Я знаю, что CoreAudio очень мощный и что-то должно быть для таких целей ..