Почти уже две недели назад в asterisk появился новый модуль — app_jack. Russell в заметке объявил о добавлении нового модуля, который содержит два приложения: JACK () и JACK_HOOK (). Причиной появления этих приложений является знакомство с PureData, и поиск путей по передаче звукового потока между Asterisk и Pd.
После поиска решения, очевидным оказалось решение с передачей потока через JACK. JACK — это аудио-сервер, позволяющий с низкой задержкой передавать звуковые от одних приложений к другим. Подробнее можно посмотреть на сайте проекта.
Список приложений, поддерживающих работу через JACK (кстати, Asterisk оперативно добавлен в него), позволяет представить какие возможности открываются теперь для создания всевозможных VoIP приложений:
- Потоковое вещание через Icecast/Shoutcast/DarkIce
- Различные способы генерирования звуков, в том числе MIDI синтезаторы, драм-машины и, даже, звуки, генерируемые входящим сетевым трафиком.
- Радио ведущие могут принимать звонки в прямой эфир с Астериска
- Измерения и анализ звука
- Наложение эффектов на звуковой поток
Не буду полностью переводить то, как используются приложения, обойдусь кратким описанием. Подробности и примеры можно посмотреть в оригинальной заметке и во встроенном описании приложений (core show function ...)
JACK ()
Данное приложение позволяет использовать аудио-сервер как оконечное устройство, пересылая ему звук от позвонившего и возвращая звонящему звук, приходящий от сервера.
JACK_HOOK () Эта функция работает иначе и использует механизм «звуковых петель» (audiohooks), добавленный в 1.6. Установив переменную JACK_HOOK(manipulate)
равной on на каком-либо канале вы создаёте петлю в голосовом трафике. Звук сначала попадает на аудио-сервер, а затем передаётся слушателю. Причём изменить значение функции можно в любой момент через AMI, либо через CLI.