Asterisk: G.729 license counter exceeded / License not found (Ошибки codec_g729)
- В журнале Asterisk регистрируется
ERROR[5678]: codec_g729.c: G.729 license counter exceeded (limit 10, attempted 11). - Ошибка
G.729 license not found: falling back to passthrough only. - Внезапный сброс входящих или исходящих звонков в часы пиковой нагрузки.
- Команда
g729 show licensesвозвращаетNo licenses installed.
1. Проверка текущих лицензий Digium G.729
asterisk -rx "g729 show licenses"2. Переход на открытую библиотеку Belledonne bcg729 (Безлимитный open-source)
Срок действия патентов на G.729 истек в 2017 году. Рекомендуется удалить старый проприетарный модуль Digium и установить открытый транскодер asterisk-g729 на базе bcg729.
# Установка сборочных зависимостей
apt-get install -y git build-essential cmake libbcg729-dev asterisk-dev
# Клонирование открытого модуля
git clone https://github.com/BelledonneCommunications/bcg729.git
cd bcg729 && mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make && make install
# Сборка модуля для Asterisk
cd /tmp
git clone https://github.com/arkadijs/asterisk-g729.git
cd asterisk-g729
./autogen.sh
./configure --with-asterisk-includes=/usr/include
make && make install3. Выгрузка старого и загрузка нового модуля
asterisk -rx "module unload codec_g729.so"
asterisk -rx "module load codec_g729.so"4. Проверка матрицы транскодирования
asterisk -rx "core show translation" | grep g729 Частые вопросы (FAQ)
Законно ли использовать open-source кодек bcg729 без лицензий Digium?
Да. Все базовые мировые патенты на алгоритм компрессии G.729 (ITU-T G.729) официально истекли к 2017 году, поэтому кодек перешел в общественное достояние.
Чем отличается G.729 passthrough от transcoding?
В режиме passthrough Asterisk просто пересылает сжатые RTP-пакеты между двумя клиентами (лицензия не требуется). В режиме transcoding Asterisk декодирует звук в PCM для записи, микширования или смены кодека.
Как ограничить количество транскодируемых каналов G.729 в диалплане?
Используйте функцию GROUP() и GROUP_COUNT() в extensions.conf для подсчета одновременных вызовов перед маршрутизацией на внешний транк.
Почему после обновления ОС модуль codec_g729.so перестает загружаться?
Бинарные модули жестко слинкованы с ABI конкретной версии ядра Asterisk. При обновлении пакета asterisk модуль codec_g729 необходимо пересобирать заново.