Codecs y Formatos

De Asterisk Wiki
Revisión del 12:20 11 may 2012 de SirLouen (discusión | contribuciones) (Página creada con «{{Format}} {{ToDo}} Como es común en toda comunicación de múltiples medios (multimedia), es necesario utilizar un "lenguaje" común durante la trasmisión, y en caso de...»)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Ir a la navegación Ir a la búsqueda
Format.png Formatear
Esta página necesita ser editada para cumplir los requisitos del wiki.
Puedes revisar todas las páginas sin suficiente formato en este enlace.
Alert.png To Do
Esta página necesita ser completada.
Puedes revisar todas las páginas por completar en este enlace.


Como es común en toda comunicación de múltiples medios (multimedia), es necesario utilizar un "lenguaje" común durante la trasmisión, y en caso de querer almacenarla en nuestro sistema algun tipo de formato.

Para ello Asterisk utiliza toda una serie de Codecs y Formatos, tanto de video, como de audio, incluso de Imagen segun veremos a continuación

Reconocimiento

Para poder conocer que codecs y formatos es posible usar en nuestro sistema, accediendo a la CLI con el siguiente comando:

CLI> core show codecs


Nos aparecerá una lista especificando algunos datos con respecto a los mismos, concretamente útiles, el identificador asociado, el nombre utilizado por asterisk, el tipo y una pequeña descripción.

Para ampliar detalles, por ejemplo del codec ULAW, consultando, el identificador número 4:

CLI> core show codec 4


Nos aparece la información específica del mismo.

Compromisos

Triangulo de Compromisos

En términos generales un codec básicamente es un algoritmo de compresión y descompresión, que aprovecha la potencia de las CPU para realizar una labor de mejor o peor calidad.

Como todos los algoritmos, nos encontramos ante un triangulo en el cual, si preferimos optar por tender hacia un vértice, sacrificamos el resto. En este caso los vértices serían:

  • Uso de recursos de CPU
  • Consumo de Ancho de Banda
  • Calidad de la comunicación

Si creamos un algoritmo muy sofisticado que sea capaz de comprimir bastante el medio, y nos ofrezca una calidad de comunicación bastante aceptable, lo más probable es que estemos sacrificando una gran cantidad de Recursos de la CPU

En contrapartida, si queremos utilizar un algoritmo bastante lineal, y conservar la calidad en la comunicación, lo típico sería que el consumo de ancho de banda sea demasiado alto.

Si elegimos sacrificar la calidad en la comunicación entonces podremos permitirnos un consumo de ancho de banda ajustado, y un algoritmo relativamente lineal.

Eventualmente existen algoritmos muy sofisticados que son capaces de rendir en términos generales (menor uso de recursos, menor consumo, y máxima calidad) mucho mejor que otros menos elaborados. Pero como suele venir siendo común estos códecs están protegidos detrás de licencias de uso bastante caras y que eventualmente será decisión nuestra valorar el coste general (TOC) de la solución dado que si manejamos un alto nivel de comunicaciones, el rendimiento global podría verse afectado, y con el pago de esas licencias, conseguir un ahorro de costes a nivel de infraestructura tanto de Servidor como de Comunicaciones.

Codecs

Audio

ulaw

Este codec, es realmente conocido como G.711 pero en su versión específica para Estados Unidos. Es el tipo de codificación que utilizan los teléfonos en la red clásica de telefonía en EEUU y Canadá. Ofrece un flujo de datos de 64 kbit/s lo que puede resultar bastante alto comparado a sus "competidores" (aunque para la telefonía estándar, es un flujo de datos común). Esos 64 kbit/s recuerdan al ancho de banda, obtenido por los MODEM que se utilizaban antiguamente para conectarse a Internet y es justamente por esto, las lineas de voz, ocupaban el 100% de su ancho de banda utilizando este códec.

alaw

Es equivalente al codec ulaw, pero es el utilizado en Europa. Para configuraciones hechas en España es muy conveniente permitir este codec, y forzar los dispositivos a utilizar este códec, (u otro mejor) para intentar evitar la transcodificación.

gsm

Este codec es muy reconocido dado que se utiliza regularmente en los canales de las lineas móviles. Sus siglas hacen referencia a Global System for Mobile communications, es decir, Sistema Global para las comunicaciones móviles. Realmente no prima en la calidad sino en la cantidad, ya que el flujo de datos en una conexión Full-Rate es de solo 13kbit/s. Es un buen método para ahorrar ancho de banda ya que es casi consume 5 veces menos que el códec alaw, aunque si trabajamos en conexiones de mala calidad a nivel de tiempo de respuesta (tiempo que tarda en ir y volver un paquete enviado) o de jitter (desviación estándar del tiempo de respuesta), la voz podría llegar a distorsionarse tanto hasta ser incomprensible.

ilbc

Uno de los codecs más interesantes, creado por una empresa que compró Google, y aplicable a múltiples programas conocidos de conversación por voz, como un softphone muy popular en Linux llamado Ekiga, la convertida empresa Gizmo5 al conocido Google Voice, y como no podía ser menos, Google Talk.

Puede llegar a ofrecer niveles de calidad superiores al poderoso G729.a (vemos más adelante), y a cambio es distribuido con una licencia no Open Source, pero si de uso bastante libre, incluso es posible modificar el código. Si el dispositivo lo permite, sin duda es una gran opción permitir el uso de este códec. El flujo de datos es de tan solo 13,3 kbit/s, equivalente a GSM pero con infinita mayor calidad. El problema como suele ser lógico, es que a no ser que tuviese el algoritmo definitivo (que no es el caso), consume demasiados recursos en la CPU comparativamente al resto de los codecs.

speex

Otro códec bastante interesante desarrollado por la comunidad Xiph (también conocida por formatos reconocidos como Vorbis, Flac), y por el hecho de ser uno de los pocos 100% Open Source (Licencia BSD), y muy ajustable a nivel de nuestro sistema Asterisk. Cuando hablamos de ajustable, nos referimos a nivel de configuración (codecs.conf) podríamos elegir variar el compromiso de consumo de CPU a costa del consumo de ancho de banda o la calidad y llegar a conseguir la ajustada cantidad de solo 2kbit/s en caso que fuera necesario [1]



Referencias

  1. Speex Codec, Fundación Xiph

Véase también

Enlaces Externos

  • Fundación Xiph es una comunidad para el desarrollo de códecs y formatos de alta calidad Open Source.