我正在编写的应用程序包含 2 个部分:
- 播放立体声 MP3 文件的音频播放器
- 使用 webRTC 进行视频会议
每个部分都可以完美地单独工作,但是当我一起尝试它们时,会发生以下两种情况之一:
- 视频会议音频淡出,我们只听到音频文件(立体声)
- 我们从两者都获得音频输出,但音频文件以单声道播放,从双耳发出
我的挖掘使我走了几条路线:
https://developer.apple.com/forums/thread/90503
&
https://github.com/twilio/twilio-video-ios/issues/77
这表明问题可能与音频会话类别、模式或选项有关。然而,我已经尝试了很多组合并且正在努力让任何东西按预期工作。
有没有人对音频选项有更好的理解以指向正确的方向?
我最近的组合
class BBAudioClass {
static private var audioCategory : AVAudioSession.Category = AVAudioSession.Category.playAndRecord
static private var audioCategoryOptions : AVAudioSession.CategoryOptions = [
AVAudioSession.CategoryOptions.mixWithOthers,
AVAudioSession.CategoryOptions.allowBluetooth,
AVAudioSession.CategoryOptions.allowAirPlay,
AVAudioSession.CategoryOptions.allowBluetoothA2DP
]
static private var audioMode = AVAudioSession.Mode.default
static func setCategory() -> Void {
do {
let audioSession: AVAudioSession = AVAudioSession.sharedInstance()
try audioSession.setCategory(
BBAudioClass.audioCategory,
mode: BBAudioClass.audioMode,
options: BBAudioClass.audioCategoryOptions
)
} catch {
};
}
}
更新
我设法让一切按我的意愿工作:
- 开始音频会话
- 连接到视频会议(此时所有音频均为单声道)
- 强制所有输出到扬声器
- 强制输出回耳机
显然这是一件疯狂的事情,但确实证明它应该有效。但是,如果有人知道为什么会这样,那就太好了,这样我就可以在第一次真正让事情正常工作而无需经历所有这些骇人的步骤