Asterisk кодеки (codecs)

Asterisk IP-PBX (IP-АТС) — свободное решение компьютерной телефонии 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.711: ulaw, alaw
  • G.726: 32kbps в версии Asterisk 1.0.3, 16/24/32/40kbps в CVS HEAD версиях. Если G.711 использует полосу в 64 Kbps, то G.726 использует 32 Kbps, обеспечивая примерно такое же качество связи. Он, также, используется как стандартный кодек в системах с беспроводными DECT телефонами.
  • GSM:
  • iLBC: это VoIP кодек, разработанный Global IP Sound, и сделанный общедоступным (включая исходные коды) под свободной и довольно либеральной лицензией, которая включает в себя возможность модификации кода.
  • LPC10: (не рекомендуется к использованию!)
  • Speex: это голосовой кодек с открытым исходным кодом. Битрейт конфигурация: 4-48kbps, VBR, ABR, и т.д.
  • Для использования в командах ограничения использования кодеков allow и disallow, ниже приведена таблица соответствия используемых аббревиатур и названий кодеков:
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)
  • Вывести информацию о возможных кодеках, которые может понимать asterisk
    core show codecs
  • Проверим подгрузились кодеки или нет, командой
    module show like 729
    
    (линия) кодек не установлен
    (цифра) означает сколько миллисекунд нужно для преобразования из кодека А в B
    
    core show translation
    core show translation recalc 10
PQ VPS сервера в 28+ странах.