如何在Swift中以编程方式使用主扬声器

时间:2018-12-20 07:32:37

标签: ios swift webrtc avaudiosession

我正在使用webrtc进行视频聊天。这样,我想在其他参与者加入会议时使用主发言人。为此,我编写了这段代码,但是语音音量很低(意味着声音来自耳机)

func audioSetting() {
    RTCAudioSession.sharedInstance().isAudioEnabled = true
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(AVAudioSession.Category.playAndRecord, mode: .videoChat, options: [])

        if self.speakerOn {
            try session.overrideOutputAudioPort(.none)
        }
        else {
            try session.overrideOutputAudioPort(.speaker)
        }

        try session.setActive(true)
        self.speakerOn = !self.speakerOn
    }
    catch let error {
        print("Couldn't set audio to speaker: \(error)")
    }
}

1 个答案:

答案 0 :(得分:0)

我正在使用socket.IO开发webRTC,

  func setSpeakerStates(enabled: Bool)
    {
        let session = AVAudioSession.sharedInstance()
        var _: Error?
        try? session.setCategory(AVAudioSession.Category.playAndRecord)
        try? session.setMode(AVAudioSession.Mode.voiceChat)
        if enabled {
            try? session.overrideOutputAudioPort(AVAudioSession.PortOverride.speaker)
        } else {
            try? session.overrideOutputAudioPort(AVAudioSession.PortOverride.none)
        }
        try? session.setActive(true)
    }

在添加音频流和视频流之后,请在 viewdidload 的末尾尝试此方法。