Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

CODEC_TRANSCODING_OVERLOAD IP-Телефония и СКУД

Траблшутинг искажений звука и кодеков в Asterisk: установка транслятора G.729

Обновлено: 24.08.2026 · Официальная документация ↗
  • Прерывания речи (Robotic Voice / Jitter) и 100% утилизация одного ядра процессора процессом asterisk.
  • Ошибка при вызове: Unable to negotiate codec: No common codec found.
  • В логах фиксируются предупреждения: format_g729: Unable to translate from ALAW to G729.
  • Значительное ухудшение качества звука при записи разговоров (MixMonitor) или воспроизведении IVR.

1. Анализ матрицы транскодирования кодеков

Выполните команду в CLI для оценки вычислительной задержки транскодинга между аудиоформатами (в микросекундах):

asterisk -rx "core show translation"

Если на пересечении g729 и alaw/ulaw стоит прочерк -, модуль транскодинга отсутствует в системе.

2. Установка оптимизированного модуля codec_g729 под архитектуру CPU

  1. Определите поддерживаемый набор инструкций процессора:
    cat /proc/cpuinfo | grep -E "flags|model name" | head -n 2
  2. Загрузите скомпилированный бинарный модуль codec_g729 (например, сборку от bcg729 / Arkadi Shishlov):
    cd /usr/lib/asterisk/modules/
    wget http://asterisk.hosting.lv/bin/codec_g729-ast180-gcc4-glibc2.2-x86_64-avx2.so -O codec_g729.so
    chmod 755 codec_g729.so
    chown asterisk:asterisk codec_g729.so
  3. Загрузите модуль в ядро Asterisk:
    asterisk -rx "module load codec_g729.so"
    asterisk -rx "core show translation"

3. Настройка режима Pass-Through (Прямой пропуск без перекодирования)

Если сервер не должен микшировать звук или проигрывать IVR, настройте пропуск G.729 без нагрузки на CPU в pjsip.conf:

[endpoint-template](!)
disallow=all
allow=g729
allow=alaw
allow=ulaw
direct_media=yes

4. Траблшутинг джиттера и рассинхронизации RTP пакетов

Сконфигурируйте адаптивный буфер дрожания (Jitterbuffer) в /etc/asterisk/extensions.conf:

[from-internal]
exten => _X.,1,NoOp(Enabling Jitterbuffer for Call)
 same => n,Set(JITTERBUFFER(adaptive)=default)
 same => n,Dial(PJSIP/${EXTEN}@trunk-provider-a,30)
💡 Практика специалистов: Не используйте модуль кодека с инструкциями AVX-512 или AVX2 внутри устаревших виртуальных машин без поддержки соответствующих CPU Flags в гипервизоре — это приведет к мгновенному аварийному падению Asterisk (SIGILL / Illegal Instruction).

Частые вопросы (FAQ)

Почему direct_media=yes не работает при записи разговоров через MixMonitor?

MixMonitor перехватывает медиапоток и заставляет Asterisk декодировать аудиокадры в несжатый PCM формат (SLIN). Если абоненты говорят на разных кодеках (например, G.729 и G.711a), прямое соединение (Direct Media) невозможно.

В чем разница между codec_g729 и codec_g729a?

G.729a — это упрощенная спецификация алгоритма CS-ACELP с меньшей вычислительной сложностью для процессора при незначительной потере качества звука. Модули полностью совместимы между собой.

Какой объем полосы пропускания экономит G.729?

Стандартный поток G.711 (alaw/ulaw) требует 64 кбит/с без заголовков (около 84 кбит/с с RTP/IP заголовками). G.729 требует всего 8 кбит/с (около 24-30 кбит/с с заголовками).

Как проверить количество одновременных транскодирований G.729 в реальном времени?

Выполните в консоли команду: asterisk -rx 'g729 show licenses' (для лицензионного Digium модуля) или asterisk -rx 'core show channels' с фильтром по формату аудио.

Полезные материалы
Рекомендуем