Asterisk IP-PBX (IP-АТС) — свободное решение компьютерной телефонии IP PBX - это ПО, распространяемое по открытой лицензии, что делает невозможным включение в состав дистрибутива некоторых коммерческих технологий, таких как патентованные алгоритмы эхо-компенсации и преобразования кодеков G.729 и G.723.1. Однако, компания Digium предоставляет возможность всем желающим приобрести лицензию на использование кодека G729, которая позволяет использовать этот кодек для преобразования голосовых каналов (транскодирования).
Сервер Asterisk поддерживает работу с кодеками:
G.711 ulaw = ulaw G.711 alaw = alaw G.723.1 = g723.1 G.726 = g726 G.729 = g729 GSM = gsm iLBC = ilbc LPC10 = lpc10 Speex = speex ADPCM = adpcm
Типичный пример использования ограничения на кодеки:
disallow=all allow=alaw allow=ulaw
Разные клиенты поддерживают различные интервалы разбивки аудиоданных на порции цифровых данных, передаваемых в дальнейшем по сети. Сервер Asterisk поддерживает только разбивку через каждые 20ms в протоколах, использующих RTP для передачи аудиоданных, типа SIP или MGCP, из этого следует, что Вам необходимо настроить Ваше клиентское оборудование в соответствии с этим требованием.
Бинарные файлы кодеков можно скачать отсюда asterisk.hosting.lv или G.729 и G.723.1 кодеки.
Скачиваем кодеки под нужную ОС (Ubuntu 9.10 Server 64-bit) и версию Asterisk IP-PBX (IP-АТС) — свободное решение компьютерной телефонии (1.6.2).
# uname -a Linux keep 2.6.31-16-server #53-Ubuntu SMP Tue Dec 8 05:08:02 UTC 2009 x86_64 GNU/Linux # asterisk -v Asterisk 1.6.2.0~rc2-0ubuntu1.1, Copyright (C) 1999 - 2009 Digium, Inc. and others. # wget http://asterisk.hosting.lv/bin162/codec_g723-ast16-icc-glibc-x86_64-core2-sse4.so # wget http://asterisk.hosting.lv/bin162/codec_g729-ast16-gcc4-glibc-x86_64-core2-sse4.so
Удаляем старые кодеки codec_g729/723*.so в директории /usr/lib/asterisk/modules . Копируем в туже директорию новые кодеки.
cp codec_g729-ast16-gcc4-glibc-x86_64-core2-sse4.so /usr/lib64/asterisk/modules cp codec_g723-ast16-gcc4-glibc-x86_64-core2-sse4.so /usr/lib64/asterisk/modules
Перезапускаем Asterisk или подгружаем кодек вручную
localhost*CLI> module load codec_g729-ast110-gcc4-glibc-x86_64-core2.so Loaded codec_g729-ast110-gcc4-glibc-x86_64-core2.so == Registered translator 'g729tolin' from format g729 to slin, table cost, 900000, computational cost 1000 == Registered translator 'lintog729' from format slin to g729, table cost, 600000, computational cost 4000 Loaded codec_g729-ast110-gcc4-glibc-x86_64-core2.so => (g729 Coder/Decoder, based on Intel IPP)
core show codecs
module show like 729 (линия) кодек не установлен (цифра) означает сколько миллисекунд нужно для преобразования из кодека А в B core show translation core show translation recalc 10