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ですか?