Я настроил AVAudioSinkNode
, подключенный к AVAudioEngine
inputNode
примерно так:
let sinkNode = AVAudioSinkNode() { (timestamp, frames, audioBufferList) -> OSStatus in
print("SINK: \(timestamp.pointee.mHostTime) - \(frames) - \(audioBufferList.pointee.mNumberBuffers)")
return noErr
}
audioEngine.attach(sinkNode)
audioEngine.connect(audioEngine.inputNode, to: sinkNode, format: nil)
audioEngine.prepare()
do {
try audioEngine.start()
print("AudioEngine started.")
} catch {
print("AudioEngine did not start!")
}
Я отдельно настроил его для использования устройства «Встроенный микрофон» (которое Я уверен, что он использует).
Если я установлю частоту дискретизации 44100 для mi c (с помощью приложения «Audio MIDI Setup», поставляемого Apple на всех компьютерах Mac), все будет работать как положено:
AudioEngine started.
SINK: 692312319180567 - 512 - 2
SINK: 692312348024104 - 512 - 2
SINK: 692312359634082 - 512 - 2
SINK: 692312371244059 - 512 - 2
SINK: 692312382854036 - 512 - 2
...
Однако, если я использую приложение «Audio MIDI Setup» (предоставляется Apple на всех компьютерах Mac) и меняю частоту дискретизации mi c на любую , отличную от 44100 (скажем, 48000) , тогда приемный узел , похоже, ничего не делает (ничего не печатает).
Конечно, изначально я пытался изменить mi c. частота дискретизации программно. Но позже я обнаружил, что то же самое происходит, когда я просто изменяю частоту дискретизации устройства через стандартное приложение «Audio MIDI Setup». Поэтому код, который я имею для установки частоты дискретизации, не требуется публиковать здесь.
Кто-нибудь знает, жестко ли в AVAudioSinkNode
разрешена разрешенная частота дискретизации ?
Я не могу найти другого объяснения ...