【发布时间】:2021-12-02 16:56:52
【问题描述】:
我正在使用AVAudioEngine 获取本地麦克风输入,然后进行广播。我想在点击静音按钮时停止获取本地麦克风输入。
我尝试了三件事:
-
audioEngine.inputNode.isVoiceProcessingInputMuted = true- 没用。 -
audioEngine.stop()- 实际上它可以工作,但会导致其他问题:我正在使用 HaishinKit 流式传输屏幕录制 + 麦克风输入 + 其他设备音频。停止 audioEngine 会导致查看器端出现小延迟。 - 使用
HaishinKit.RTMPStream静音:rtmpStream.audioSettings[.muted] = true- 它可以工作,但会静音整个音频。我只想将本地麦克风静音,而不是其他设备的音频。
//
private func startTappingMicrophone() {
let inputNode = audioEngine.inputNode
let inputFormat = inputNode.outputFormat(forBus: 0)
audioEngine.inputNode.installTap(onBus: 0, bufferSize: AVAudioFrameCount(bufferSize), format: inputFormat) { [weak self] buffer, _ in
guard let self = self else { return }
self.conversionQueue.async {
if let cmSampleBuffer = self.configureSampleBuffer(pcmBuffer: buffer) {
self.delegate?.recievedRecordedFrame(cmSampleBuffer)
}
}
}
audioEngine.prepare()
try? audioEngine.start()
}
【问题讨论】: