ошибка при подключении узла ввода к AVAudioSinkNode

Я получаю сообщение об ошибке при подключении узлов

let sourceNode = AVAudioSinkNode { (test1, frameCount, audioBufferList) -> OSStatus in
    print("callback", self.testInteger)
    return noErr
}
audioEngine.attach(sourceNode)
audioEngine.connect(audioEngine.inputNode, to: sourceNode, format: nil)

[aurioc] AURemoteIO.cpp: 1086: Инициализация: сбой: -10851 (включить 1, выход ‹2 канала, 0 Гц, Float32, без интер› инф ‹2 канала, 0 Гц, Float32, без интер›)

И после этого ошибки, когда try audioEngine.start ()

[avae] AVAEInternal.h: 88 обязательное условие является ложным: [AVAudioEngineGraph.mm:1415:Initialize: (IsFormatSampleRateAndChannelCountValid (inputHWFormat))] [avae] AVAudioEngine.mm:160 Engine @ 0x2836a8940 [= не удалось-инициализировать двигатель @ 0x2836a8940: не удалось avae] AVAEInternal.h: 88 обязательное условие является ложным: [AVAudioEngineGraph.mm:1415:Initialize: (IsFormatSampleRateAndChannelCountValid (inputHWFormat))]

Я тоже пробовал

audioEngine.connect (audioEngine.inputNode, to: sourceNode, format: audioEngine.inputNode.inputFormat (forBus: 0))

и

audioEngine.connect (audioEngine.inputNode, to: sourceNode, format: audioEngine.inputNode.outputFormat (forBus: 0))

в этих двух случаях приложение аварийно завершает работу с ошибкой. Завершение работы приложения из-за неперехваченного исключения com.apple.coreaudio.avfaudio, причина: «необходимое условие ложно: IsFormatSampleRateAndChannelCountValid (формат)


person Yaroslava    schedule 25.10.2020    source источник
comment
format: nil неверно.   -  person matt    schedule 26.10.2020
comment
@matt да, я понял, что это неправильно, но я до сих пор не понимаю, что мне использовать вместо этого, я пробовал другие форматы (я писал об этом в своем вопросе) но они тоже не работают. вы можете сказать мне, какой формат мне следует использовать?   -  person Yaroslava    schedule 26.10.2020


Ответы (1)


Нашел проблему надо было поставить категорию аудиосессии playAndRecord

try audioSession.setCategory (.playAndRecord, mode: .spokenAudio, options: .defaultToSpeaker)

при этом условии эта опция работает

audioEngine.connect (audioEngine.inputNode, to: sourceNode, format: audioEngine.inputNode.inputFormat (forBus: 0))
person Yaroslava    schedule 26.10.2020