jueves, 16 de abril de 2009

Codec iLBC para Asterisk

Actualizado al 14/06/2009
- Los directorios de descarga de digium cambiaron.
- Compilacion correcta.

Desde la versión 1.4.19, Asterisk no incluye el codec iLBC, ya que hay que aceptar una licencia antes de utilizarlo, pero igual es de libre uso.
Esta demás decir que es un codec muy bueno, excelente alternativa al g729.

Una pequeña comparación, generalmente son los que ocupo:

G.711 ulaw (utilizado en EEUU) (64 Kbps)
G.711 alaw (utilizado en Europa) (64 Kbps)
G.729 (licencia) (8Kbps)
GSM (13Kbps)
iLBC (13.33/15.2Kbps)

Vamos al grano, esta "guía" se basa en Elastix 1.5.2 con Asterisk 1.4.24. Voy a tratar de hace todo paso por paso y explicar algunos comandos para aquellos que estan recién en esto (todas las guías que veo juran que todos son unos sabiondos en Linux o Asterisk).

Entramos al sistema como root.

Antes que todo deben tener instalados los siguientes paquetes, que sirven para compilar Asterisk

# yum -y install make bison flex gcc gcc-c++

Vamos al siguiente directorio.

# cd /usr/src

Descargamos los paguetes de Asterisk desde la pagina de digium.

# wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-1.4.24.1.tar.gz

Ahora descomprimimos (suena raro) los paguetes.

# tar -xzvf asterisk-1.4.24.1.tar.gz

Entramos a la carpeta que se creo.

# cd asterisk-1.4.24.1

Ahora viene la magia, los paguetes de asterisk vienen con un script para descargar y complilar el codec iLBC, desde la página de sus creadores. Desde la carpeta donde nos encontramos ejecutamos el script que esta en contrip/scripts

# ./contrib/scripts/get_ilbc_source.sh

Este descarga dentro del directorio codecs los binarios. Lo que hice yo, fue entrar al menu de asterisk y habilitar el codec iLBC.
# ./configure

# make menuselect

Seleccionan con la barra espaciadora Opción 4 codecs, y habilitan el iLBC. Con la tecla "x" guardan y salen.

Todas las guías que encontre dicen que hacer un "make" y luego un "make install", al principio n me funcionaba el "make install" (pero despues de bajar algunos paquetes como gcc), logre que funcionara

# make

Y finalmente

# make install

Con esto se compila el codec y aparece el archivo "codec_ilbc.so", que es el que utiliza asterisk para codificar y decodificar.

/usr/lib/asterisk/modules/codec_ilbc.so

Ahora, si entramos a la consola de asterisk, reinician el servicio, comprueban las codecs, tendria que aparecer.

# asterisk -r

> restart now

O si es un Elastix

# amportal restart

Entramos a la consola

# asterisk -r
> core show translation

Si aparecen los datos del iLBC, es porque ya esta cargado.

Sólo tendrian que agregar la línea "allow = ilbc", en el archivo "sip_general_custom.conf", que se encuentra en la carpeta "/etc/asterisk". Para que los aparatos o softphone puedan usarlo.

Si no les funciona el "make install" como me sucedio en una ocasión, pueden copiar el codecs que esta en la carpeta que se descargo, hacia la carpeta donde estan los codecs que usa asterisk. O reiniciar el servidor después de haber actualizado paquetes al principio.

# cd /usr/src/asterisk-1.4.24.1/codec

# cp codec_ilbc.so /usr/lib/asterisk/modules

Y para los que quieran descargar el codec ilbc
Codec iLBC

Por favor si les resulto o si tuvieron problemas comenten. Saludos

Asterisk

Hace tiempo que estoy usando Elastix para montar las centrales que instalo, y he tenido muy buenos resultados.

Con la versión actual 1.5.2, no he tenido problemas hasta ahora, y esta demás decir que me ha parecido excelente. No por algo se demoraron un tiempo en sacarla.

Voy a comenzar a utilizar este blog, aparte de promocionar mis servicios, para dar tips de asterisk y linux, cuando encuentre algo interesando que podría servir a otra gente. He encontrado guías para algunas cosas pero siempre omiten cosas importantes o se van detalles.