Диагностика проблемы со звуком в 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"

Обнаруженные проблемы

  1. Неправильная конфигурация external.xml
  2. В /opt/freeswitch/etc/freeswitch/sip_profiles/external.xml использовался $${local_ip_v4} вместо $${external_rtp_ip} и $${external_sip_ip}
  3. Это критично для работы через NAT, так как FreeSWITCH должен отправлять внешний IP в SDP

  4. Дублирование параметров в external.xml

  5. Были закомментированные строки с auto-nat и активные с local_ip_v4
  6. Нужно использовать переменные 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"

Возможные дополнительные проблемы

  1. Проблемы с NAT на роутере
  2. Убедитесь, что порты 16384-32768 UDP проброшены правильно
  3. Проверьте, что динамическое перенаправление портов работает

  4. Проблемы с файрволом

  5. Проверьте UFW на хосте
  6. Проверьте файрвол в контейнере

  7. Проблемы с браузером

  8. Проверьте консоль браузера (F12) на наличие ошибок WebRTC
  9. Проверьте разрешения микрофона в браузере
  10. Попробуйте другой браузер

  11. Проблемы с SRTP

  12. В логах есть предупреждения "DecryptSrtp() failed"
  13. Обычно не критично, но может указывать на проблемы с шифрованием

Следующие шаги

  1. ✅ Исправлена конфигурация external.xml
  2. ✅ FreeSWITCH перезапущен
  3. ⏳ Требуется тестирование звука
  4. ⏳ Если проблема сохраняется, проверить SDP и RTP трафик

Статус: Исправления применены, требуется тестирование