Открытая библиотека iaxclient для реализации IAX-транков поставляется с набором демок одну из которых мы соберем в этой статье (вместе с библиотекой). Скачать библиотеку можно на sourceforge. Мы соберем самую простую консольную демку testcall которая умеет регистрироваться на шлюзе IP телефонии (например Asterisk), принимать звонки и звонить, а в качестве интерфейсов использовать системные аудио-устройства, доступные с помощью библиотеки port-audio

 

#сначала нужно установить portaudio, speex для centos так
yum install portaudio-devel speex-devel
tar -xf iaxclient-2.1beta3.tar.gz
cd iaxclient-2.1beta3/
./autogen.sh
# Посмотреть хелп по конфигурации можно тут
./configure --help
#включаем сборку только testcall (для гуи демок нужны всякие тулкиты) и отключаем видео 
./configure --enable-clients=testcall --enable-video=No --without-vidcap
make
# клиент тут
./simpleclient/testcall/testcall

Зарегистрироваться и сразу позвонить можно так:

-u <логин> -p <пароль> -h <хост> <логин>:<пароль>@<хост>/<номер телефона>

Сама библиотека лежит в ./lib/.libs/libiaxclient.so и зависит от таких so-шек:

ldd ./lib/.libs/libiaxclient.so
        linux-vdso.so.1 =>  (0x00007fff4318e000)
        libportaudio.so.2 => /usr/lib64/libportaudio.so.2 (0x00007ff016998000)
        libm.so.6 => /lib64/libm.so.6 (0x00007ff016714000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff0164f6000)
        libspeex.so.1 => /usr/lib64/libspeex.so.1 (0x00007ff0162dd000)
        libspeexdsp.so.1 => /usr/lib64/libspeexdsp.so.1 (0x00007ff0160ca000)
        libc.so.6 => /lib64/libc.so.6 (0x00007ff015d35000)
        libasound.so.2 => /lib64/libasound.so.2 (0x00007ff015a4a000)
        libjack.so.0 => /usr/lib64/libjack.so.0 (0x00007ff01582d000)
        librt.so.1 => /lib64/librt.so.1 (0x00007ff015624000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ff01540e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ff016dfa000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007ff01520a000)

Конфигурация пира для Asterisk может выглядить так (/etc/asterisk/iax.conf):

[general]
bandwidth=low
disallow=lpc10
calltokenoptional=0.0.0.0/0.0.0.0
requirecalltoken=no
maxregexpire=400 ; for clients who wase regexpire 300

[<логин>]
qualify=200 ; ping to limit 200 ms ping(if not respond in 200 show LAGG)
type=friend
secret=<пароль>
auth=plaintext
host=dynamic
context=default
description=<Описание>

Чтобы применить конфигурацию Asterisk воспользуйтесь iax2 reload.

Надеюсь эти несколько комманд помогут сделать старт в начале разрабатки своих клиенты с помощью библиотеки libiaxclient. Сама библиотека имеет довольно понятный исходный код, и неплохо описана тут и имеет неплохие возможности включая поддержку разных кодеков и перекодирование голосовых потоков из/в линейный формат, а также несколько фильтров.