首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扬声器问题- WebRTC和iOS

扬声器问题- WebRTC和iOS
EN

Stack Overflow用户
提问于 2020-08-11 22:08:17
回答 1查看 1.3K关注 0票数 3

我正在试着用谷歌的webRTC pod和webRTC做一个视频聊天应用。我面临的问题是在尝试使用扬声器进行声音输出时。如果访问扬声器成功,则声音开始从所有扬声器中发出,包括顶部的扬声器和扬声器;并且存在大量回声和噪音。但有时,它根本无法访问扬声器,我看到以下错误:

代码语言:javascript
复制
Error Domain=NSOSStatusErrorDomain Code=-50 

我主要使用这个代码库中的webRTC部分:https://github.com/lg-tawsenior/WebRTC-iOS/blob/master/WebRTC-Demo-App/Sources/Services/WebRTCClient.swift

尝试通过扬声器输出的函数为:

代码语言:javascript
复制
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收发信机里的所有远程音轨,但没有成功。

事先非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-08-21 19:06:29

一开始我想删除这个问题,然后想如果有人像我一样偶然发现了它,所以:

下面解决了有时无法访问的问题。

代码语言:javascript
复制
self.rtcAudioSession.setCategory(AVAudioSession.Category.playAndRecord.rawValue, with: [.defaultToSpeaker, .allowBluetoothA2DP, .allowAirPlay, .allowBluetooth])

至于耳机和扬声器发出的声音,我尝试了多个VoIP应用程序,它的表现是一样的。看起来这就是苹果想要的工作方式,所以没什么好干涉的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63359928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档