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

3 comentarios:

Xanxess dijo...

Buenas Fernando, muchas gracias por la aportación, no sabia yo que a partir de esa versión habia que incluir el codec por separado. Me ha funcionado correctamente.
De nuevo, gracias por la entrada! ;)

Linux0ec dijo...

Hola Fernando Saludos Cordiales desde Ecuador muchas gracias por el aporte excelente funciona de maravilla solo 2 acotaciones:

1.- el directorio es contrib y tu lo pusiste contrip...
2.- Cuando hice la primera vez make install me dio un error .. lo volvi a correr y funciono todo OK

Nuevamente Muchas gracias por tu aporte

Fernando dijo...

Ya corregui el pequeño error de tipeo. Gracias por avisar.

Ahora que tengo más tiempo voy a subir algunas guías y tips para Asterisk y Elastix.

Saludos