AVAudioPlayer воспроизводит звук с очень низкой громкостью при выполнении аудиовызова WebRTC

#ios #swift #webrtc #avaudioplayer #avaudiosession

#iOS #swift #webrtc #avaudioplayer #avaudiosession

Вопрос:

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

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

Для 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)
}
  

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

Комментарии:

1. Привет, Джек, добро пожаловать в Stackoverflow. Возможно ли опубликовать фрагмент кода вашего вызова функции, чтобы другие могли помочь выяснить, в чем ваша проблема? Спасибо.

2. добавлен фрагмент кода

3. По сути, я тоже это вижу. На самом деле это не очень низкая громкость (по крайней мере, для меня), это маршрутизация воспроизведения звука (из и AVAudioPlayer) через выход приемника (наушник телефона). Я полагаю, что это как-то связано с блоком ввода-вывода для обработки голоса внутри webrtc

Ответ №1:

Перед воспроизведением звука измените режим на стандартный, также будет потеряна поддержка aec, agc,

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

когда закончите воспроизведение, переключитесь в режим голосового чата,

 [[AVAudioSession sharedInstance] AVAudioSessionModeVoiceChat error:amp;error];
  

Комментарии:

1. Это проблема с громкой связью, но при использовании наушников Bluetooth уровень микширования в порядке. Теперь, если я установлю режим на default , это решит проблему громкой связи, но создаст полную неразбериху при использовании наушников. 🙁

Ответ №2:

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

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

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

Комментарии:

1. Эта проблема все еще присутствует при включенном звонке и переопределении выходного порта, установленного на динамик.