Кодеки - установка и сборка под Asterisk
Администратор,
Кодеки используется для преобразования речевого сигнала аналог в цифровой или закодированный. Кодеки изменяются в качестве, ширине полосы канала , и в вычислительных требованиях, и т.п..
Каждая услуга, программа, телефон, шлюз, и т.п. обычно поддерживает несколько кодеков, и перед разговором они договариваются, какой кодек использовать
К примеру телефоны Cisco используют G.723.1, G.711a, G.711u, G.729a и ……
Не все кодеки можно получить бесплатно, к примеру Asterisk G.729 - платный и используется он довольно часто.
Кодеки и ширина полосы (канала)
Кодек BR NEB
G.711 64 Kbps 87.2 Kbps самый жирный кодек
G.729 8 Kbps 31.2 Kbps идеальное сочетание между качеством и каналом
G.723.1 6.4 Kbps 21.9 Kbps среднее качество (free-codec)
G.723.1 5.3 Kbps 20.8 Kbps среднее качество (free-codec)
G.726 32 Kbps 55.2 Kbps среднее качество (free-codec)
G.726 24 Kbps 47.2 Kbps среднее качество (free-codec)
G.728 16 Kbps 31.5 Kbps
LBC 15 Kbps 27.7 Kbps
BR = Bit rate NEB = Nominal Ethernet Bandwidth (в одном направление)
Установка кодеков
И так для установки кодеков, нам нужно выбрать, какой нам кодек нужен (или все) и узнать на каком железе мы его будем ставить (Hardware) .Перед тем как скачать кодеки с http://asteriskworld.ru/downloads внимательно посмотрите на их названия.
Пример codec_g729-ast14-gcc4-glibc-pentium4.so. Здесь Кодек G.729 для Asterisk 1.4.X на базе Pentium 4. После того как скатали кодек, копируем его в папку /usr/lib/asterisk/modules. Проверяем если в /etc/asterisk/modules.conf есть строчка : autoload=yes.
Далее в CLI
module load codec-… .(название) .. . .so
== Registered translator 'g729tolin' from format g729 to slin, cost 3
== Registered translator 'lintog729' from format slin to g729, cost 13
Loaded codec_g729-ast14-gcc4-glibc-pentium3-no-sse.so => (G.729 Coder/Decoder)
Далее смотрим какие кодеки у нас работают в системе
voip3*CLI> core show translation
Translation times between formats (in milliseconds) for one second of data
Source Format (Rows) Destination Format (Columns)
voip3*CLI> core show translation
Translation times between formats (in milliseconds) for one second of data Source Format (Rows) Destination Format (Columns) g723 gsm ulaw alaw g726aal2 adpcm slin lpc10 g729 speex ilbc g726 g722 g723 - 4 2 2 3 2 1 4 14 - 20 3 - gsm 15 - 2 2 3 2 1 4 14 - 20 3 - ulaw 15 4 - 1 3 2 1 4 14 - 20 3 - alaw 15 4 1 - 3 2 1 4 14 - 20 3 - g726aal2 16 5 3 3 - 3 2 5 15 - 21 1 - adpcm 15 4 2 2 3 - 1 4 14 - 20 3 - slin 14 3 1 1 2 1 - 3 13 - 19 2 - lpc10 24 13 11 11 12 11 10 - 23 - 29 12 - g729 17 6 4 4 5 4 3 6 - - 22 5 - speex - - - - - - - - - - - - - ilbc 17 6 4 4 5 4 3 6 16 - - 5 - g726 16 5 3 3 1 3 2 5 15 - 21 - - g722 - - - - - - - - - - - - -
И так в табличке там где
(линия) кодек не установлен
(цифра) означает сколько миллисекунд нужно для преобразования из кодека А в B
После такого сообщения можно смело добавить в sip.conf
Allow=g729 (в моем случае)
Или любой кодек который вы добавили
Сборка кодеков
Не всегда можно наити кодек которыи подойдет для вашего железа и тогда надо собирать самостоятельно свои кодек под свою машинку.Для сборки кодеков необходимо на готовой машине (с Asterisk) настроить и собрать.
Для того чтоб собрать кодек надо
Скачать sample-speech-coding , IPP base и patch (все можно наити в разделе Downloads)
Кроме того вам понадобится Лицензия от Intel которая выдается при скачивание любого [NonComercial] продукта с их сайта.
к примеру можно скатать C++ Compiler тут вы пройдете Регистрацию и получите ключ и Лицензию (на мыло)
Внимание если лицензия не подойдет к продукту IPP base то придется поставить сначало C++ Compiler с Лицензией потом удалить его и после этои процедуры при установки IPP base лицензию не потребуют.Новый C++ Compiler и кодеки (версии 5 и выше не работают)и не пытайтесь собрать их я потратил сутки и ниче не получилось.
Копируем все в /usr/src/tmp/ (к примеру)
mkdir /usr/src/tmp
cd /usr/src/tmp
tar -xf /usr/src/tmp/l_ipp_ia32_itanium_p_4_1_2.tar
cd /usr/src/tmp/l_ipp_ia32_itanium_p_4_1_2
./install.sh
тут Внимательно читаем все что написано, и в конце указываем путь к Лицензий (если не был ранее установлен C++ Compiler)
Далее ставим sample-speech-coding
tar -zxvf /usr/src/tmp/l_ipp_ia32_itanium_p_4_1_2
cd /usr/src/tmp/ipp-samples
теперь надо использовать patch для сборки кодека G729 и G723
cd /usr/src/mtp/ipp-samples
patch -p0 < /usr/src/tmp/ipp-svn8.diff
И так если все прошло удачно то можно смело приступить к конфигурации самих кодеков.Файл конфигурации находится в
cd /usr/src/tmp/ipp-samples/speech-coding/
vi makeopts
# System Specific
INCLSFX=.h
CPPSFX=.c
OBJSFX=.o
EXESFX=
# Optional, for ICC
#ICCLIBS=-lsvml
# IPP Dependencies
#IPPINCLS=-I$(IPPROOT)/include
#IPPLIBS=-L$(IPPROOT)/sharedlib -lippsc -lipps -lippcore -L$(IPPROOT)/sharedlib/linux32 -lguide
# Comment the above two and uncomment these
# three lines to build statically linked version
IPPINCLS=-I$(IPPROOT)/include -include $(IPPROOT)/tools/staticlib/ipp_$(IPPCORE).h
IPPLIBS=-L$(IPPROOT)/lib -lippscmerged -lippsrmerged -lippsmerged -lippcore
LDFLAGS=-static
# -libcxa
# Optimizations, choose one set only depending on CPU type (or debug at bottom)
#OPTIMIZE= -O2
#IPPCORE=
# For Pentium I
#OPTIMIZE= -O6 -march=pentium -mtune=pentium -ffast-math -fomit-frame-pointer
#IPPCORE=px
# For PII
#OPTIMIZE=-O6 -march=pentium2 -mtune=pentium2 -ffast-math -fomit-frame-pointer
#IPPCORE=px
# For PIII
OPTIMIZE= -O6 -mtune=pentium3 -march=pentium3 -ffast-math -fomit-frame-pointer
IPPCORE=a6
# For PIII no SSE
#OPTIMIZE= -O6 -mtune=pentium3 -march=pentium3 -ffast-math -fomit-frame-pointer -mno-sse
#IPPCORE=a6
# For P4
#OPTIMIZE= -O6 -march=pentium4 -mtune=pentium4 -ffast-math -fomit-frame-pointer
#IPPCORE=w7
# optional
# For P4 no SSE
#OPTIMIZE= -O6 -march=pentium4 -mtune=pentium4 -ffast-math -fomit-frame-pointer -no-sse
#IPPCORE=w7
# For Athlon (untested)
#OPTIMIZE= -O6 -march=athlon -mtune=athlon -ffast-math -fomit-frame-pointer
#IPPCORE=a6
# For debugging
#OPTIMIZE= -O -g
#IPPCORE=px
по умолчанию файл настроен оптимально для вашеи системы но при желании каждыи может его переделать под себя и под свои процессор.
После этого осталось лиш запустить сому сборку
cd /usr/src/ipp_sample/speech-coding
chmod 755 runme.sh
./runme.sh
елси все прошло удачно то в /usr/src/ipp_sample/speech-coding появится новые кодеки codec_g729.so и codec_g723.so теперь все делаем как описано сверху.