扬声器问题-WebRTC和iOS

问题描述

我正在尝试使用Google的webRTC pod使用webRTC制作视频聊天应用。我面临的问题是尝试使用扬声器进行声音输出时。如果成功访问扬声器,则声音开始从所有扬声器发出,包括顶部的扬声器和扬声器。而且回声和噪音很多。但是有时候,它根本无法访问扬声器,我看到此错误:

Error Domain=NSOSStatusErrorDomain Code=-50 

我主要在此仓库中使用过webRTC部分: https://github.com/lg-tawsenior/WebRTC-iOS/blob/master/WebRTC-Demo-App/Sources/Services/WebRTCClient.swift

尝试通过扬声器输出的功能是:

func speakerOn() {
      self.audioQueue.async { [weak self] in
          guard let self = self else {
              return
          }
        
          self.rtcAudioSession.lockForConfiguration()
          do {
            
            try self.rtcAudioSession.setCategory(AVAudioSession.Category.playAndRecord.rawValue)
            try self.rtcAudioSession.overrideOutputAudioPort(AVAudioSession.PortOverride.speaker)
            try self.rtcAudioSession.setActive(true)
            
          } catch let error {
            
            debugPrint("Couldn't force audio to speaker: \(error)")
          }
          self.rtcAudioSession.unlockForConfiguration()
      }
  }

我尝试将rtcAudioSession设置为非活动状态,但这是不可能的,因为正在进行I / O操作。我试图暂停webRTC收发器中的所有远程轨道,没有运气。

非常感谢您的帮助。

解决方法

首先,我想到删除此问题,然后再考虑是否有人像我一样偶然发现了这个问题,所以:

以下内容解决了有时无法访问的问题。

self.rtcAudioSession.setCategory(AVAudioSession.Category.playAndRecord.rawValue,with: [.defaultToSpeaker,.allowBluetoothA2DP,.allowAirPlay,.allowBluetooth])

对于从听筒和扬声器发出的声音,我尝试使用多个VoIP应用程序,其行为相同。看起来这就是苹果希望它工作的方式,所以没有什么可干扰的。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...