#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:
Я столкнулся с несколько похожей проблемой, когда звонок выключен. Можете ли вы
- Убедитесь, что звонок не выключен
-
Убедитесь, что текущий выходной порт — динамик.
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
Комментарии:
1. Эта проблема все еще присутствует при включенном звонке и переопределении выходного порта, установленного на динамик.