Asterisk какие кодеки установлены
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 . Копируем в туже директорию новые кодеки.
Для каждого SIP пользователя, Вам нужно указать поддерживаемые видеокодеки (см. примеры на этой странице). Если Вы не хотите полагаться на согласование видокодеков, которое существует в непропатченном сервере Asterisk версии 1.4.x (и не всегда корректно работает), убедитесь, что вы разрешили только один кодек для видео в Вашем файле sip.conf. Для решения этой проблемы, можно воспользоваться патчем, который описан ниже. И конечно, видеокодеки должны поддерживаться SIP телефонами, которые подключены к серверу Asterisk. Asterisk может работать только в прозрачном режиме при передаче видеопотоков.
Видеоконверторы для Asterisk
- FFasterisk: Утилита для создания видео контекста для Asterisk. Она позволяет конвертировать MOV файлы в пару файлов .H.263 (для видео) и .wav (для звука), с которыми может работать сервер Asterisk.
Программное обеспечение для создания видеоконференций в Asterisk.
- 1videoConference: VVoIP Решение с открытыми исходными кодами от Adiance.
- Mediamixer от Sergio Murillo.
- app_conference: имеет ограниченную поддержку видео.
- Confiance.
Некоторые основные моменты, относительно использования видео в Asterisk
В сервере asterisk версии 1.4, выбор видеокодека содержит дефекты в алгоритме (также смотри данный bug report). Для решения это проблемы IVèS предложил патч, но он не был принят. Кроме того, другая независимая разработка с названием Asterisk videocaps, позволяет надлежащим образом согласовывать fmtp атрибуты, связанные с передачей видеопотоков, в SDP. Это решение было включено в trunk и может быть появится в Asterisk 1.6.
В asterisk 1.6 запланирована глобальная перестройка поддержки видео для различных каналов, но никаких технических условий по реализации не было опубликовано. Кто-то просто хочет включить поддержку videocaps и остановиться на этом. Некоторые имеют более амбициозные планы на этот счет. Рекомендуется ознакомиться со списком рассылки: Asterisk video.
Другая проблема, связана с форматом файлов, которые содержат видео приветствия и подсказки. На данный момент, Asterisk записывает содержимое RTP пакетов, включая некоторую информацию, связанную с таймингом, в файлы с расширением .h263, ph263p, .h264. Sergio Murillo разработал приложение MP4 asterisk apps, которое может проигрывать и записывать файлы в формате MPEG4. Но проблемы, связанные с патентами, не дают возможность компании Digium интегрировать это приложение в состав сервера Asterisk.
Поддержка перекодирования из одного видеокодека в другой (транскодинг) также не поддерживается и, вероятно, не будет поддерживаться в сервере Asterisk. Использование библиотеки ffmpeg для этих целей опять создаст проблемы с лицензированием и патентами. Транскодирование видеокодеков в Asterisk также создает проблемы связанные с уменьшением производительности сервера в целом. Однако, Sergio предложил приложение, которое может выполнять некоторые ограниченные функции, связанные с транскодированием видеокодеков, оно базируется на библиотеке ffmpeg и называется - app_transcoder. Приложение имеет ограничения в текущей версии, но может быть легко расширено по функциональности теми, кто имеет опыт программирования с использованием библиотеки ffmpeg.
Последний момент, представляющий интерес, это возможность обработки ISDN/3G видеовызовов с помощью Asterisk, используя разработки от Sergio. Для дополнительной информации по этому вопросу, смотри: эту страницу.
Следующее клиенты имеют поддержку видео, которая работает совместно с сервером Asterisk:
There is also some information how to make an 3G-H.324M (UMTS Video) - SIP gateway with asterisk: Asterisk H324M
Некоторые моменты, касающиеся голосовой почты и поддержки видео.
Call Image Videotel - содержит специальные возможности для создания нормальной записи, без каких-либо модификаций самого сервера asterisk (Замечание: на данный момент линк битый. Или videotel изменил имя страницы или прекратил поддержку данного продукта).
Настройка Windows Messenger для работы с сервером Asterisk (по протоколу SIP)
Пример настройки файла sip.conf:
[general]
videosupport=yes
[video2]
type=friend
username=video2
secret=hidden
host=dynamic
context=from-camera
callerid=Video 2
canreinvite=no
disallow=all ; Windows Messenger выбирает неправильные кодеки, если указать: allow=all
allow=ulaw
allow=alaw
allow=speex
allow=gsm
allow=h261
allow=h263
allow=h263p
По роду своей деятельности в последнее время приходится обслуживать сервер IP телефонии на базе Asterisk, а также расширять свои знания в этом направлении и решать возникающие проблемы. Сейчас познакомимся с описанием кодеков, которые используются для VoIP звонков.
Asterisk использует следующие кодеки:
- G.711 ulaw/PCMU (тот, что используется в US)
- G.711 alaw/PCMA (тот, что используется в Европе)
- G.723.1 — в режиме pass-thru для людей, которым нужна лицензия , свободная версия для остальных.
- G.726 — 32kbps в версии Asterisk 1.0.3, 16/24/32/40kbps в CVS HEAD версиях.
- G.729 — может потребоваться лицензия кроме случаев, когда аудиопоток передается в режиме pass-thru, свободная версия доступна для использования в странах, где этот патент не действует или в образовательных целях.
- GSM
- iLBC
- LPC10 (не рекомендуется к использованию!)
- Speex — битрейт конфигурация: 4-48kbps, VBR, ABR, и т.д.
Для того, чтобы посмотреть какие кодеки используются в текущих вызовах, можно воспользоваться командами:
sip show channels
iax2 show channels
Для использования в командах ограничения использования кодеков 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, для различных форматов звуковых файлов
Разбивка на пакеты данных
Разные клиенты поддерживают различные интервалы разбивки аудиоданных на порции цифровых данных, передаваемых в дальнейшем по сети. Сервер Asterisk поддерживает только разбивку через каждые 20ms в протоколах, использующих RTP для передачи аудиоданных, типа SIP или MGCP, из этого следует, что Вам необходимо настроить Ваше клиентское оборудование в соответствии с этим требованием.
Нашли ошибку в тексте? Выделите фрагмент текста и нажмите Ctrl+Enter
As a part of the Media Overhaul project for Asterisk 10, changes have been made to Asterisk to increase the number of codecs it's capable of supporting, to handle codecs with custom formats, and to support audio sampling rates greater than 16kHz. This has resulted in several practical changes to Asterisk that will benefit its users.
Note that the additional codecs discussed here are available for use in Asterisk's SIP channel driver, only. Asterisk 10 does not make them available for IAX2, MGCP, SSCP, H.323, UniSTIM, etc.
Expanded Signed Linear Support
Versions of Asterisk prior to 10 supported 16-bit Signed Linear sampled at 8kHz and at 16kHz (versions 1.6.0 - 1.8). New to Asterisk 10 is support for a much wider range of sampling rates. Asterisk can resample between any of these sampling rates and can read/write raw 16-bit signed linear audio files from/to disk. The complete list of supported sampling rates and file format extensions is:
Asterisk File format
Asterisk 10 removes the format_sln16 file format in favor of expanded support in the main format_sln file format for all sampling rates. So, users who notice the absence of format_sln16 from their Asterisk 10 builds should not panic.
Users can create 16-bit Signed Linear files of varying sampling rates from WAV files using the sox command-line audio utility.
In this example, an input WAV file has been converted to Signed Linear at a depth of 16-bits and at a rate of 32kHz. The resulting output.sln file is then renamed output.sln32 so that it can be processed correctly by Asterisk.
32kHz Speex Support
Asterisk versions prior to 1.8 supported 8kHz Speex. Asterisk 1.8 supports 8 and 16kHz Speex. Asterisk 10 now supports 8, 16, and 32kHz Speex. Use of the 32kHz Speex mode is, like the other modes, controlled in the respective channel driver's configuration file, e.g. chan_sip's sip.conf.
In this example, we have created three SIP peers for 3 different devices. The first, mypeer, supports only the 8kHz sampling of Speex; the second, mypeer2, supports only the 16kHz sampling of Speex; and the third, mypeer3, supports the new 32kHz sampling of Speex.
For comparison, here are some Speex samples, saved as WAV files in .mov containers, for ease-of-playback.
CELT Pass-through Support
Asterisk 10 adds pass-through support for the CELT codec. CELT provides low-delay transmission of high-quality audio. Unlike many other codecs that are focused on the transmission of human speech only, CELT is suitable for the transmission of both speech and audio, e.g. music.
Because the CELT codec is being folded, along with SILK, into a future codec called OPUS, and because the CELT bitstream isn't finalized, we have chosen not to add transcoding support for CELT as this time. CELT is configured in codecs.conf with the following parameters.
Sets the CELT codec as the type of codec being configured
32000, 441000, 48000
Defines the sampling rate in Hz to be used for the defined codec
Represents the duration of each frame in samples. Defaults to 480 and should only be defined if a client does not use the default size. This option allows the codec to split 20ms frames into multiple frames in an anticipatory way. Thus, with 20ms frames at 48kHz are 960 samples, the packet is large. So setting framesize to 480, 20ms frames are transmitted in two 480 sample packets.
CELT codecs.conf example
In this example, three different CELT codecs are created: one for 32kHz mode, one for 44kHz mode, and another for 48kHz mode.
These codecs cannot be dynamically changed while Asterisk is running. In order to make changes, an Asterisk restart is required.
To make sure a codec or format is setup correctly, you can execute:
from the Asterisk CLI
CELT sip.conf example
Corresponding SIP peer entries to use the CELT codec would look like:
In this case, we have defined 3 peers, each with a different CELT sampling rate. Thus, you'd probably want to set at least two of them to the same CELT rate, so they could call each other.
For CELT-calling, there are not a host of options on the client side. One could try Ekiga or SFLphone as softclients to make CELT calls.
SILK Support
Asterisk 10 provides full support for Skype's SILK codec. SILK is an extremely flexible codec for the transmission of speech. It operates in low bitrate narrow-band modes as well as higher (but still very low, otherwise) bitrate super wide-band modes. With respect to CPU complexity, its consumption is roughly three times that of G.729a at comparable bitrates.
SILK is configured in codecs.conf with the following parameters
Sets the SILK codec as the type of codec being configured
8000, 12000, 16000, 24000
Defines the sampling rate in Hz to be used for the defined codec
Sets the use of Forward Error Correction by the codec. Off by default.
Integer as a percent
Defines the estimated packetloss in the uplink direction. This parameter affects the amount of redundancy built into SILK when fec is enabled. The larger the amount, the higher the consumed bandwidth. Default is 0. 10 is recommended when fec is enabled
8kHz: 5000-20000, 12kHz: 7000-25000, 16kHz: 8000-30000, 24kHz: 20000-40000
Defines, in bps and per the sampling rate being used, the maximum bitrate that will be consumed by the codec
Defines whether encoding is done in discontinuous transmission mode. If enabled, bandwidth will be reduced during periods of silence, but additional CPU complexity will be required. Off by default
SILK codecs.conf example
In this example, four different SILK codecs are created: one each for 8 (silk8), 12 (silk12), 16 (silk16), and 24kHz (silk24).
These codecs cannot be dynamically changed while Asterisk is running. In order to make changes, an Asterisk restart is required.
To make sure a codec or format is setup correctly, you can execute:
from the Asterisk CLI
SILK sip.conf example
Corresponding SIP peer entries to use the SILK codec would look like:
In this case, we have defined 4 peers, each with a different SILK codec.
The generally available SIP softphones that support SILK are, to our knowledge, CSIPSimple and nightly builds of Jitsi beginning with build 3648 (so that, and anything newer than that).
Кодеки G.729 и G.723 используются в Asterisk для того, чтобы экономить полосу пропускания между сервером Asterisk и IP-телефоном.
По сравнению с стандартным кодеком G.711, кодек G.729 потребляет в 3 раза меньше полосы пропускания: 24 кбит/сек по сравнению с 80 кбит/сек в кодеке G.711(alaw/ulaw).
В данной статье мы разберем, как происходит установка кодеков на сервер Asterisk.
Первым делом необходимо определить следующие параметры системы:
- Версию Asterisk (1.8,11,13 и т.д.)
- Разрядность ядра Linux (32 или 64 бит)
- Тип процессора (Opteron, Pentium, Core2 и т.д.)
- Набор инструкций процессора
В консоли Linux выполняем команду:
Выхлоп этой команды даст нам понимание о том, что за процессор используется на нашем сервере Asterisk.
Далее, выполняем команду
Вывод этой команды показывает нам разрядность процессора.
Зайдя в консоль Asterisk (asterisk -rvvv) и выполнив команду
core show version
узнаем версию Asterisk.
Вот схема, которая поможет вам выбрать правильный кодек:
Далее кодек необходимо скачать на сервер. Рекомендуется сделать это командой wget.
Скаченные кодеки устанавливаются в систему простым копированием их в папку modules:
/var/lib/asterisk/modules или
/var/lib64/asterisk/modules
Далее, либо делаете команду перезапуска сервиса Astersk, либо подгружаете кодеки командой
module load codec_g729..(тут точное название кодека)..so
Провека результата — командой
core show translation.
Команда показывает все доступные системе кодеки и время трансляции из одного кодека в другой. Если на строчке или колонке стоят прочерки, значит, что данного кодека в системе нет.
Если модули не подгружаются, это значит, что вы ошиблись с выбором архитектуры. Внимательно перечитывайте эту статью и делайте еще раз.
Читайте также: