AVAudioInputNode
オーディオ ユニット エフェクト ( ) を使用して、デバイスの内蔵マイク ( ) からのオーディオを処理したいと考えていますAVAudioUnitEffect
。私の例では、を使用してAVAudioUnitReverb
います。接続AVAudioUnitReverb
すると、アプリケーションがクラッシュします。
import UIKit
import AVFoundation
class ViewController: UIViewController {
let audioEngine = AVAudioEngine()
let unitReverb = AVAudioUnitReverb()
var inputNode: AVAudioInputNode!
override func viewDidLoad() {
super.viewDidLoad()
inputNode = audioEngine.inputNode
audioEngine.attachNode(unitReverb)
let inputFormat = inputNode.inputFormatForBus(0)
audioEngine.connect(inputNode, to: unitReverb, format: inputFormat)
// This line is crashing the application!
// With this error "AVAudioNode.mm:521: AUSetFormat: error -10868"
audioEngine.connect(unitReverb, to: audioEngine.outputNode, format: inputFormat)
audioEngine.startAndReturnError(nil)
}
}
リバーブをバイパスして にinputNode
直接接続しても問題はありませんaudioEngine.outputNode
が、リバーブがありません。
audioEngine.connect(inputNode, to: audioEngine.outputNode, format: inputFormat)
私は何を間違っていますか?
アップデート
上記のコードは、リモートとマイクを備えた Apple EarPodsが接続されている場合にのみアプリケーションをクラッシュさせることをうっかり発見しました。デバイスの内蔵マイクを使用する場合、問題はありません。では、ヘッドフォンのマイクがアプリケーションをクラッシュさせるのはなぜAVAudioUnitEffect
ですか?