오디오 장치 효과 (AVAudioUnitEffect
)가있는 장치의 내장 마이크 (AVAudioInputNode
)에서 오디오를 처리하고 싶습니다. 예를 들어 AVAudioUnitReverb
을 사용하고 있습니다. AVAudioUnitReverb
을 연결하면 응용 프로그램이 충돌하고 있습니다. AVAudioEngine을 사용하여 AVAudioUnitEffect에 AVAudioInputNode 연결
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)
}
}
나는 리버브를 무시하고
audioEngine.outputNode
에 직접
inputNode
를 연결하면 나는 아무 문제가 없지만, 그때 리버브가 없다 :
audioEngine.connect(inputNode, to: audioEngine.outputNode, format: inputFormat)
내가 잘못하고있는 중이 야 무엇을?
업데이트
나는 실수로 내 Apple EarPods with Remote and Mic이 연결되어있을 때 위의 코드는 응용 프로그램을 충돌 것을 발견했다. 기기의 내장 마이크를 사용할 때 문제가 없습니다. 그렇다면 왜 내 헤드폰의 마이크가 응용 프로그램을 충돌 시키지만, AVAudioUnitEffect
을 사용할 때만 가능합니까?
내 생명을 구할 ..! :) –