【问题标题】:Switch Audio Between Speaker, Built in mic, Bluetooth or No Audio在扬声器、内置麦克风、蓝牙或无音频之间切换音频
【发布时间】:2022-06-16 13:40:52
【问题描述】:

我正在开发一个视频/音频通话应用程序,我需要提供四个与音频输出相关的选项:

扬声器,内置麦克风,任何支持音频的 BLE 设备,无音频输出

以下我使用过的函数:

static func setBuiltInMic() {
        let outputs = audioSession.availableInputs
        for output in outputs! {
            if output.portType.rawValue == AVAudioSession.Port.builtInMic.rawValue {
                do {
                    try audioSession.setPreferredInput(output)
                } catch let error {
                    print("Setting Built in Mic Port: \(error.localizedDescription)")
                }
            }
        }
    }
 static func setAndCheckBLEAudioPort() -> Bool {
        let outputs = audioSession.availableInputs
        for output in outputs! {
            if output.portType.rawValue == AVAudioSession.Port.bluetoothHFP.rawValue {
                do {
                    try audioSession.setPreferredInput(output)
                    return true
                } catch let error {
                    print("Setting BLE Port: \(error.localizedDescription)")
                    return false
                }
            }
        }
        return false
    }
static func setupAudioSession(isSpeakerEnabled: Bool) {
        do {
            try audioSession.setCategory(.playAndRecord)
            try audioSession.setMode(.voiceChat)
            try audioSession.overrideOutputAudioPort(isSpeakerEnabled ? .speaker : .none)
            try audioSession.setActive(true, options: [])
        } catch let error as NSError {
            print("Fail: \(error.localizedDescription)")
        }
    }

但这不起作用即使我尝试使用 setupAudioSession 将其静音,音频仍然来自不同的来源,例如扬声器。

有人有什么想法或参考可以让我研究一下吗?

【问题讨论】:

  • 我没有调试这个,但let outputs = audioSession.availableInputs 对我来说似乎是错误的。
  • 这通常会返回端口类型,就像我打开了 airpods 一样,然后返回蓝牙类型和 airpods 的名称,如果不是,则返回为扬声器。如果这对您来说似乎是错误的,您是否有任何参考资料可供我尝试。
  • 您正在将输入分配给输出设备,这对我来说似乎很奇怪。但没有参考。
  • 如果我能得到,我可以尝试输出,但两者都会引用将被分配的端口。

标签: ios swift avaudiosession twilio-video videocall


【解决方案1】:

任何人都可以获得上述问题的解决方案。谢谢你帮助我

【讨论】:

  • @jatinGarg 你能帮我解决这个问题吗
猜你喜欢
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 2015-10-31
  • 2012-02-07
相关资源
最近更新 更多