Выкладываю инструкцию по сборке и установке кодеков G729 и G723 для Asterisk из исходных кодов, тестовую сборку производил на тонком клиенте HP и на 64 битном сервере.
Кодек G729 - один из лучших кодеков по соотношению качества к сжатию аудио потока. Применяется в большинстве случаев в том случае, если есть ограничения по полосе пропускания трафика. Для его использования в промышленном использовании требуется приобретать лицензию. Лицензионное соглашение можно почитать на странице лицензионного соглашения . Кодек G729 использует скорость сжатия 8 Кбит/с, что в 8 раз меньше чем стандартный кодек alaw G711.
Для расчета занимаемой полосы пропускания, можно воспользоватся калькулятором .
Дано:
Asterisk 1.8 установлен по инструкции: Установка Asterisk 1.8 в Debian Squeeze либо Ubuntu Linux, сборка из исходников VOIP Asterisk
либо:
Asterisk 1.8 установлен по инструкции: Установка Asterisk PBX 11 в Debian или Ubuntu Linux
Переходим в папку где у нас находятся исходные коды установленных Asterisk, dahdi, libpri, если папки нет, то создадим её віполнив команду:
mkdir -p /usr/src/asterisk-src/ && cd /usr/src/asterisk-src/
Скачиваем исходники кодеков на официальном сайте командой:
wget http://asterisk.hosting.lv/src/asterisk-g72x-1.1.tar.bz2
Если на официальном сайте нет данного архива, либо сайт не доступен, тода Вы можете скачать данный архив с моего сайта выполнив команду:
wget http://softnastroy.com/downloads/asterisk/asterisk-g72x-1.1.tar.bz2
Распаковываем скачанный архив, переходим в распакованную папку и запустим конфигурирование кодека выполнив команды:
tar xvf asterisk-g72x-1.1.tar.bz2 cd asterisk-g72x-1.1 ./configure --with-ipp=ipp/
Вносим изминения в файл build-itu.sh
vi build-itu.sh
Для Asterisk 1.8:
было:
# Asterisk 1.8 inc=/home/arkadi/opt/asterisk-1.8.0/include def=-DG72X_ASTERISK=18
стало:
inc=/usr/src/asterisk-src/asterisk-1.8.28.2/include def=-DG72X_ASTERISK=18
Для Asterisk 11:
было:
# Asterisk 10.0 inc=/home/arkadi/opt/asterisk-10.0/include def=-DG72X_ASTERISK=10
стало:
# Asterisk 11.0 inc=/usr/src/asterisk-src/asterisk-11.20.0/include/ def=-DG72X_ASTERISK=110
Кстати для установки на Asterisk версий не 1.8, а например Asterisk 1.4, Asterisk 1.6 или Asterisk 10 необходимо закоментировать ненужную и раскоментировать нужную версию Asterisk, а также подправить путь находжения исходников установленного Asterisk в файле build-itu.sh
Запускаем отредактированный файл командой:
sh build-itu.sh
После сборки кодеков, копируем кодеки G723 и G729 командой:
cp codec_g72*.so /usr/lib/asterisk/modules/
Перезагружаем Asterisk командой:
/etc/init.d/asterisk restart
Проверяем подключены ли кодеки используя консоль asterisk запустив команду rasterisk либо asterisk -r и выполнив в консоли команду core show translation:
rasterisk voip*CLI> core show translation Translation times between formats (in microseconds) for one second of data Source Format (Rows) Destination Format (Columns) g723 gsm ulaw alaw g726aal2 adpcm slin lpc10 g729 speex ilbc g726 g722 siren7 siren14 slin16 g719 speex16 testlaw g723 - 84005 72005 72005 84005 72005 72004 92005 460028 -148009 84005 76004 - - 88004 - - 72005 gsm 1196075 - 4002 4002 16002 4002 4001 24002 392025 - 80006 16002 8001 - - 20001 - - 4002 ulaw 1192075 12002 - 4000 12002 2 1 20002 388025 - 76006 12002 4001 - - 16001 - - 2 alaw 1192075 12002 1 - 12002 2 1 20002 388025 - 76006 12002 4001 - - 16001 - - 2 g726aal2 1200075 20002 8002 8002 - 8002 8001 28002 396025 - 84006 20002 12001 - - 24001 - - 8002 adpcm 1196074 16001 4001 4001 16001 - 4000 24001 392024 - 80005 16001 8000 - - 20000 - - 4001 slin 1192074 12001 1 1 12001 1 - 20001 388024 - 76005 12001 4000 - - 16000 - - 1 lpc10 1204075 24002 12002 12002 24002 12002 12001 - 400025 - 88006 24002 16001 - - 28001 - - 12002 g729 1272079 92006 80006 80006 92006 80006 80005100006 - -156010 92006 84005 - - 96005 - - 80006 speex - - - - - - - - - - - - - - - - - - - ilbc 1204075 24002 12002 12002 24002 12002 12001 32002 400025 - - 24002 16001 - - 28001 - - 12002 g726 1196074 16001 4001 4001 16001 4001 4000 24001 392024 - 80005 - 8000 - - 20000 - - 4001 g722 1200074 20001 8001 8001 20001 8001 8000 28001 396024 - 84005 20001 - - - 12000 - - 8001 siren7 - - - - - - - - - - - - - - - - - - - siren14 - - - - - - - - - - - - - - - - - - - slin16 1208074 28001 16001 16001 28001 16001 16000 36001 404024 - 92005 28001 8000 - - - - - 16001 g719 - - - - - - - - - - - - - - - - - - - speex16 - - - - - - - - - - - - - - - - - - - testlaw 1192075 12002 2 2 12002 2 1 20002 388025 - 76006 12002 4001 - - 16001 - - - voip*CLI>
Видим в списке наши подключенные кодеки G729 и G723.
Для подключения кодеков в Asterisk, необходимо внести данные в sip.conf
было:
disallow=all ; First disallow all codecs allow=alaw ; Allow codecs in order of preference
стало:
disallow=all ; First disallow all codecs allow=g729 allow=alaw ; Allow codecs in order of preference
Если у Вас каждому клиенту прописано насильно какой использовать кодек, тогда ему нужно прописать аналогично и кодек g729 на примере файла sip.conf
Для того, чтобы посмотреть какие кодеки используются в данный момент времени, необходимо выполнить в консоли Asterisk команду sip show channels и смотрим колонку Format:
rasterisk voip*CLI> sip show channels Peer User/ANR Call ID Format Hold Last Message Expiry 192.168.XXX.XXX XXXXXXXXXX XXXXXXXXXXXXX 0x100 (g729) No Rx: ACK 192.168.XXX.XXX XXXXXXXXXX XXXXXXXXXXXXX 0x8 (alaw) No Rx: ACK 192.168.XXX.XXX XXX XXXXXXXXXXXXX 0x8 (alaw) No Init: INVITE 192.168.XXX.XXX XXX XXXXXXXXXXXXX 0x100 (g729) No Rx: ACK 192.168.XXX.XXX XXX XXXXXXXXXXXXX 0x8 (alaw) No Init: INVITE 192.168.XXX.XXX XXX XXXXXXXXXXXXX 0x100 (g729) No Tx: ACK 6 active SIP dialogs
Задача выполнена, кодеки G723 и G729 собраны и установлены, а кодек G729 подключен к Asterisk.
С Вами был Сергей Лазаренко.
Посмотрим красивое выступление 7-ми летнего мальчика на турнике:
Add new comment