Диагностика проблемы со звуком в BigBlueButton
Дата: 2026-01-09
Контейнер: BBB-CONT22-1
Проблема: Звук не работает, хотя видео работает
Анализ логов
Положительные признаки
Из логов bbb-webrtc-sfu видно, что:
- ✅ Аудио сессии создаются: "Audio session started"
- ✅ Мост между FreeSWITCH и mediasoup запускается: "FS transceiver bridge started"
- ✅ Клиентское аудио течет: "Client audio is FLOWING"
- ✅ RTP endpoints создаются: "mediasoup: transport created"
Обнаруженные проблемы
- Неправильная конфигурация external.xml
- В
/opt/freeswitch/etc/freeswitch/sip_profiles/external.xmlиспользовался$${local_ip_v4}вместо$${external_rtp_ip}и$${external_sip_ip} -
Это критично для работы через NAT, так как FreeSWITCH должен отправлять внешний IP в SDP
-
Дублирование параметров в external.xml
- Были закомментированные строки с
auto-natи активные сlocal_ip_v4 - Нужно использовать переменные
external_rtp_ipиexternal_sip_ip
Выполненные исправления
1. Исправление external.xml
Было:
<param name="ext-rtp-ip" value="$${local_ip_v4}"/>
<param name="ext-sip-ip" value="$${local_ip_v4}"/>
Стало:
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
<param name="ext-sip-ip" value="$${external_sip_ip}"/>
2. Проверка конфигурации vars.xml
Убедились, что в /opt/freeswitch/etc/freeswitch/vars.xml установлены:
<X-PRE-PROCESS cmd="set" data="external_rtp_ip=89.179.242.240"/>
<X-PRE-PROCESS cmd="set" data="external_sip_ip=89.179.242.240"/>
3. Проверка конфигурации mediasoup
Убедились, что в /etc/bigbluebutton/bbb-webrtc-sfu/production.yml настроено:
mediasoup:
plainRtp:
listenIp:
ip: 10.218.14.37
announcedIp: 89.179.242.240
Дополнительная диагностика
Если проблема сохраняется после исправлений:
1. Проверка SDP в логах
Проверьте, какой IP адрес отправляется в SDP:
lxc exec BBB-CONT22-1 -- grep -i "c=IN IP4" /var/log/freeswitch/freeswitch.log | tail -10
Должен быть внешний IP (89.179.242.240), а не внутренний (10.218.14.37).
2. Проверка RTP трафика
Проверьте, идет ли RTP трафик:
# На хосте
sudo tcpdump -i any -n udp port 16384 -c 10
# В контейнере
lxc exec BBB-CONT22-1 -- tcpdump -i any -n udp port 16384 -c 10
3. Проверка соединения FreeSWITCH с mediasoup
Проверьте логи на наличие ошибок соединения:
lxc exec BBB-CONT22-1 -- journalctl -u bbb-webrtc-sfu -f | grep -i "freeswitch\|rtp\|bridge\|error"
4. Проверка портов
Убедитесь, что порты проброшены правильно:
# Проверка на хосте
sudo ss -tuln | grep -E "16384|32768"
# Проверка в контейнере
lxc exec BBB-CONT22-1 -- ss -tuln | grep -E "16384|5060|5066"
Возможные дополнительные проблемы
- Проблемы с NAT на роутере
- Убедитесь, что порты 16384-32768 UDP проброшены правильно
-
Проверьте, что динамическое перенаправление портов работает
-
Проблемы с файрволом
- Проверьте UFW на хосте
-
Проверьте файрвол в контейнере
-
Проблемы с браузером
- Проверьте консоль браузера (F12) на наличие ошибок WebRTC
- Проверьте разрешения микрофона в браузере
-
Попробуйте другой браузер
-
Проблемы с SRTP
- В логах есть предупреждения "DecryptSrtp() failed"
- Обычно не критично, но может указывать на проблемы с шифрованием
Следующие шаги
- ✅ Исправлена конфигурация external.xml
- ✅ FreeSWITCH перезапущен
- ⏳ Требуется тестирование звука
- ⏳ Если проблема сохраняется, проверить SDP и RTP трафик
Статус: Исправления применены, требуется тестирование