AVAudioPlayer воспроизводит звук с очень низкой громкостью, когда выполняется аудиозвонок WebRTC - PullRequest
3 голосов
/ 22 марта 2019

Я пытаюсь воспроизвести аудиоклип с использованием AVAudioPlayer, когда активен PeerConnection с использованием библиотеки GoogleWebRTC Obj-C для iOS.

Когда я воспроизводю звук, я слышу егочерез громкоговорители, но он воспроизводится с чрезвычайно низкой (почти неразборчиво) громкостью по сравнению с выводом WebRTC Audio.

У меня AVAudioSession установлен на active = true со следующим;AVAudioSession.Category = .playAndRecord, AVAudioSession.CategoryOptions = [.defaultToSpeaker, .allowBluetooth, .mixWithOthers], AVAudioSession.Mode = .voiceChat.

У меня нет проблем с воспроизведением и прослушиванием звуков, когда нет активно настроенного аудиоподключения WebRTC.

Есть ли способ разрешить воспроизведение звука с AVAudioPlayer без снижения его громкости через WebRTC?

do {
        try setActiveAudio()

        let player = try AVAudioPlayer(data: asset.data, fileTypeHint: AVFileType.mp3.rawValue)

        activePlayers.append(player)

        player.delegate = self
        player.prepareToPlay()
        player.play()
} catch let error {
        print(error.localizedDescription)
}

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 25 июля 2019

Перед воспроизведением аудио, измените режим на значение по умолчанию, также потеряется AEC, поддержка AGC,

[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeDefault error:&error];

по окончании воспроизведения, сброс режима в голосовой чат,

[[AVAudioSession sharedInstance] AVAudioSessionModeVoiceChat error:&error];
0 голосов
/ 22 марта 2019

Я столкнулся с чем-то похожим, когда звонок выключен. Можете ли вы

  1. Убедитесь, что звонок не выключен
  2. Убедитесь, что текущий выходной порт - динамик.

    [[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
    
...