Asterisk какие кодеки установлены

Обновлено: 06.07.2024

Кодеки используется для преобразования речевого сигнала аналог в цифровой или закодированный. Кодеки изменяются в качестве, ширине полосы канала , и в вычислительных требованиях, и т.п..

Каждая услуга, программа, телефон, шлюз, и т.п. обычно поддерживает несколько кодеков, и перед разговором они договариваются, какой кодек использовать

К примеру телефоны Cisco используют G.723.1, G.711a, G.711u, G.729a и ……

Не все кодеки можно получить бесплатно, к примеру Asterisk G.729 - платный и используется он довольно часто.

G.729 8 Kbps 31.2 Kbps идеальное сочетание между качеством и каналом

BR = Bit rate NEB = Nominal Ethernet Bandwidth (в одном направление)

Пример 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.

== 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)

Далее смотрим какие кодеки у нас работают в системе

Translation times between formats (in milliseconds) for one second of data

(цифра) означает сколько миллисекунд нужно для преобразования из кодека А в B

Не всегда можно наити кодек которыи подойдет для вашего железа и тогда надо собирать самостоятельно свои кодек под свою машинку.Для сборки кодеков необходимо на готовой машине (с Asterisk) настроить и собрать.

Кроме того вам понадобится Лицензия от Intel которая выдается при скачивание любого [NonComercial] продукта с их сайта.

к примеру можно скатать C++ Compiler тут вы пройдете Регистрацию и получите ключ и Лицензию (на мыло)

Внимание если лицензия не подойдет к продукту IPP base то придется поставить сначало C++ Compiler с Лицензией потом удалить его и после этои процедуры при установки IPP base лицензию не потребуют.Новый C++ Compiler и кодеки (версии 5 и выше не работают)и не пытайтесь собрать их я потратил сутки и ниче не получилось.

тут Внимательно читаем все что написано, и в конце указываем путь к Лицензий (если не был ранее установлен C++ Compiler)

теперь надо использовать patch для сборки кодека G729 и G723

И так если все прошло удачно то можно смело приступить к конфигурации самих кодеков.Файл конфигурации находится в

Asterisk IP PBX - это ПО, распространяемое по открытой лицензии, что делает невозможным включение в состав дистрибутива некоторых коммерческих технологий, таких как патентованные алгоритмы эхо-компенсации и преобразования кодеков G.729 и G.723.1. Однако, компания Digium предоставляет возможность всем желающим приобрести лицензию на использование кодека G729, которая позволяет использовать этот кодек для преобразования голосовых каналов (транскодирования).

Сервер Asterisk поддерживает работу с кодеками:

Гибридные кодеки G.729, G.729 Annex А, G.729 Annex B (содержит VAD и генератор комфортного шума): Использование кодека Гибридные кодеки G.729 в продуктах требует лицензирования от: Sipro Lab Telecom или VoiceAge, если вы живете в США или некоторых других странах. Существует некоторое количество свободных некоммерческих экспериментальных реализаций кодека G.729: бинарные и др. Сервер Asterisk поддерживает работу кодека в режиме pass-thru (т.е. без транскодинга) или, если у Вас имеется лицензия? или у Вас есть голова и руки. G.723.1: Использование этого кодека в продуктах требует лицензии от Sipro Lab Telecom. Сервер Asterisk поддерживает работу с этим кодеком в режиме pass-thru. G.726: 32kbps в версии Asterisk 1.0.3, 16/24/32/40kbps в CVS HEAD версиях. Если G.711 использует полосу в 64 Kbps, то G.726 использует 32 Kbps, обеспечивая примерно такое же качество связи. Он, также, используется как стандартный кодек в системах с беспроводными DECT телефонами. iLBC: это VoIP кодек, разработанный Global IP Sound, и сделанный общедоступным (включая исходные коды) под свободной и довольно либеральной лицензией, которая включает в себя возможность модификации кода. Speex: это голосовой кодек с открытым исходным кодом. Битрейт конфигурация: 4-48kbps, VBR, ABR, и т.д. Для использования в командах ограничения использования кодеков allow и disallow, ниже приведена таблица соответствия используемых аббревиатур и названий кодеков:

Типичный пример использования ограничения на кодеки:

Разные клиенты поддерживают различные интервалы разбивки аудиоданных на порции цифровых данных, передаваемых в дальнейшем по сети. Сервер Asterisk поддерживает только разбивку через каждые 20ms в протоколах, использующих RTP для передачи аудиоданных, типа SIP или MGCP, из этого следует, что Вам необходимо настроить Ваше клиентское оборудование в соответствии с этим требованием.

Бинарные файлы кодеков можно скачать отсюда asterisk.hosting.lv или G.729 и G.723.1 кодеки.

Скачиваем кодеки под нужную ОС (Ubuntu 9.10 Server 64-bit) и версию Asterisk (1.6.2).

Удаляем старые кодеки codec_g729/723*.so в директории /usr/lib/asterisk/modules . Копируем в туже директорию новые кодеки.

Совершенно не лишним будет разобрать как же все-таки добавить необходимые кодеки в систему где развернута АТС на базе Asterisk. Может конечно данная заметка и не претендует на новизну, но все же она носит практический характер для меня лично, своего рода шпаргалка.

А потому можно и разобрать уже опубликованные заметки присутствующие во всемирной паутине но с акцентом на свое видение.

Asterisk развернут по заметке опубликованной на моем блоге:

$ uname -a && lsb_release -a && asterisk -V

14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 14.04.4 LTS

Виды кодеков для VOIP телефонии

На сколько я вычитал, к одек G.729 позволяет вести много большее количество разговоров при ограниченном канале, что сразу же поднимает его эффективность. В обычном использовании VOIP телефонии используется 64Кбит/с (кодек G711), а тут один звонок уже 8Кбит/с — выгода очевидна.

Вывести информацию по типу процессора и используемым инструкциям процессора:

$ cat /proc/cpuinfo | grep -E 'model name|flags'

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl extd_apicid pni cx16 popcnt hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch arat vmmcall

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl extd_apicid pni cx16 popcnt hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch arat vmmcall

из этого вывода для текущей заметки является то какие инструкции поддерживает процессор, в моем случае это лишь: sse4a, именно для этой инструкции в дальнейшем и нужно будет скачать уже откомпилированный бинарник.

$ sudo asterisk -rvvvv

Вывод кодеков имеющих место быть установленных в системе

Информация по текущим установленным модулям:

$ sudo asterisk -rx "core show codecs" | grep g726

5 audio g726 (G.726 RFC3551)

6 audio g726aal2 (G.726 AAL2)

/usr/lib/asterisk/modules/codec_g726.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=50045b5d6cb366f0d4e16acdac126e0f943c948e, stripped

Файлы представленные на сайте кодеков имеет следующий формат:

  • g729 → тип кодека
  • ast130 → версия Asterisk 13
  • gcc4 → тип компилятора
  • glibc → библиотеки
  • x86_64 → разрядность процессора и ОС
  • core2 — тип процессора (поколение)
  • sse4 → набор инструкций

Из представленного скриншота ниже видно что к примеру у меня нет кодека g729 — вот установку его и разберу.

srv-host*CLI> quit

Asterisk cleanly ending (0).

Executing last minute cleanups

Скачиваю бинарник файла кодека под свои инструкции которыми может оперировать мой процессор.

Копирую скачанный кодек в папку modules:

$ sudo mv codec_g729-ast130-gcc4-glibc-x86_64-core2-sse4.so /usr/lib/asterisk/modules/

Устанавливаю скачанный кодек:

$ sudo asterisk -rvvv

srv-host*CLI> core reload

srv-host*CLI> module load codec_g729-ast130-gcc4-glibc-x86_64-core2-sse4.so

Проверяю видит ли Asterisk добавленный кодек:

srv-host*CLI> core show translation

странно вывода как раньше нет, значит у меня конфликт того факта что скачанный и установленный модуль не соответствует моей архитектуре процессора. Что ж буду исправляться.

srv-host*CLI> module unload -f codec_g729-ast130-gcc4-glibc-x86_64-core2-sse4.so

srv-host*CLI> quit

Asterisk cleanly ending (0).

Executing last minute cleanups

$ sudo rm /usr/lib/asterisk/modules/codec_g729-ast130-gcc4-glibc-x86_64-core2-sse4.so

$ sudo /etc/init.d/asterisk restart

$ sudo asterisk -rvvv

srv-host*CLI> core show translation

вот теперь вывод есть

$ sudo cp codec_g729-ast130-gcc4-glibc-athlon-sse.so /usr/lib/asterisk/modules/codec_g729.so

$ sudo asterisk -rx "module load codec_g729.so"

Unable to load module codec_g729.so

$ sudo file /usr/lib/asterisk/modules/codec_g729.so

/usr/lib/asterisk/modules/codec_g729.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=fd48fad20f16fe008f2e399dcb60bef6930bcdb2, stripped

codec_g729-ast130-gcc4-glibc-x86_64-opteron.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=7be3620e1cee9ad1f47e69c94c799c78d6407d19, stripped

$ sudo mv codec_g729-ast130-gcc4-glibc-x86_64-opteron.so /usr/lib/asterisk/modules/codec_g729.so

$ sudo asterisk -rx "module load codec_g729.so"

$ sudo /etc/init.d/asterisk restart

Stopping Asterisk PBX: asterisk.

Starting Asterisk PBX: asterisk.

$ sudo /etc/init.d/asterisk status

* Asterisk PBX is running

если не запущен то запускаем:

$ sudo /etc/init.d/asterisk start

Starting Asterisk PBX: asterisk.

$ sudo asterisk -rx "core show translation" | grep g729

ulaw alaw gsm g726 g726aal2 adpcm slin slin slin slin slin slin slin slin slin lpc10 g729 speex speex speex g722 testlaw opus amr amrwb

У меня было, что я не правильную версию модуля скачал, т. е. От другой версии Asterisk — и Asterisk вообще упал — так что сперва в тестовых условиях обкатайте, а уже потом если действительно нужно на боевой системе:

, но у меня он падает

$ sudo asterisk -rvvv

Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

$ sudo /etc/init.d/asterisk status

* Asterisk PBX is not running

$ sudo tail -f /var/log/syslog

Jul 10 17:08:11 srv-host kernel: [18294.737419] asterisk[3756]: segfault at 40 ip 00007f1f7040c911 sp 00007ffc5e582f48 error 4 in asterisk[7f1f70349000+246000]

По мне так это из-за модуля он конфликтует с используемым типом процессора (у меня же Asterisk установлен внутри Virtualbox — я тестирую). Ладно так и быть удаляю и попробую позже на домашней системе:

$ sudo rm /usr/lib/asterisk/modules/codec_g729.so

$ sudo /etc/init.d/asterisk restart

Stopping Asterisk PBX: asterisk.

Starting Asterisk PBX: asterisk.

$ sudo asterisk -rx "core show translation" | grep g729

вывода нет значит и модуля тоже нет, Asterisk сейчас работает и в логах нет ошибок. Во общем хорошо.

Хоть я и не достиг поставленной цели данной заметкой, но в то же время узнал много нового, а именно ни в коем случае не нужно все делать на продуктиве, лучше потратить некоторое время на тест, обкатать а уже только потом трижды подумать и применять на боевой предварительно сделав бекап. И я считаю, что за сервис должен отвечать только один человек, т. к. если их много то исправив как Вам кажется что-то неправильное на Ваш взгляд Вы все порушите, потому что это был чей-то костыль. А когда весь функционал ведет один человек (к примеру Я сам), то я знаю что и для чего когда либо делалось. На этом я прощаюсь, действия данной заметки я разберу на боевой системе чуть позже и обязательно поделюсь результатами, а пока все, до новых встреч, с уважением автор блога — ekzorchik.

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще :)

Карта МКБ: 4432-7300-2472-8059

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Кодек G729 для Asterisk, установка из исходных кодов

Выкладываю инструкцию по сборке и установке кодеков G729 и G723 для Asterisk из исходных кодов, тестовую сборку производил на тонком клиенте HP и на 64 битном сервере.

Кодек G729 - один из лучших кодеков по соотношению качества к сжатию аудио потока. Применяется в большинстве случаев в том случае, если есть ограничения по полосе пропускания трафика. Для его использования в промышленном использовании требуется приобретать лицензию. Лицензионное соглашение можно почитать на ]]> странице лицензионного соглашения ]]> . Кодек G729 использует скорость сжатия 8 Кбит/с, что в 8 раз меньше чем стандартный кодек alaw G711.

Для расчета занимаемой полосы пропускания, можно воспользоватся ]]> калькулятором ]]> .

Переходим в папку где у нас находятся исходные коды установленных Asterisk, dahdi, libpri, если папки нет, то создадим её віполнив команду:

Скачиваем исходники кодеков на официальном сайте командой:

Если на официальном сайте нет данного архива, либо сайт не доступен, тода Вы можете скачать данный архив с моего сайта выполнив команду:

Распаковываем скачанный архив, переходим в распакованную папку и запустим конфигурирование кодека выполнив команды:

Вносим изминения в файл build-itu.sh

Для Asterisk 1.8:

Для Asterisk 11:

Запускаем отредактированный файл командой:

После сборки кодеков, копируем кодеки G723 и G729 командой:

Перезагружаем Asterisk командой:

Проверяем подключены ли кодеки используя консоль asterisk запустив команду rasterisk либо asterisk -r и выполнив в консоли команду core show translation:

Видим в списке наши подключенные кодеки G729 и G723.

Для подключения кодеков в Asterisk, необходимо внести данные в sip.conf

Если у Вас каждому клиенту прописано насильно какой использовать кодек, тогда ему нужно прописать аналогично и кодек g729 на примере файла sip.conf

Для того, чтобы посмотреть какие кодеки используются в данный момент времени, необходимо выполнить в консоли Asterisk команду sip show channels и смотрим колонку Format:

Задача выполнена, кодеки G723 и G729 собраны и установлены, а кодек G729 подключен к Asterisk.

Читайте также: