a importância dos codecs _ blog do ensinar

10
Blog do Ensinar Compartilhando Conhecimento A importância dos Codecs By Rodrigo Ribeiro Caros colegas, Novamente tomo a liberdade para escrever no blog do Ensinar. Acredito que este seja um assunto de interesse geral e voltado a todos que trabalham com telefonia IP e VoIP. Este artigo busca fazer entender o que é um codec, quais suas características e critérios para implementação dentro de um servidor Asterisk. Devo frisar que a fonte desse post provém do conteúdo da revista Linux Magazine “Especial 3 VoIP com Asterisk” (http://www.linuxmagazine.com.br/especial/lme_3_voip_com_asterisk) , baseado em uma análise escrita por Flávio E. Gonçalves. Um boa leitura para todos! Introdução Primeiramente devemos definir o que é um codec. Um codec (http://pt.wikipedia.org/wiki/Codec) (coderdecoder) é um codificadordecodificador (traduzindo ao “pé da letra”), de um sinal ou um fluxo de dados digitais. Temos um exemplo abaixo que mostra como funciona a codificação PCM (Pulse Code Modulation) (http://en.wikipedia.org/wiki/Pulsecode_modulation) :

Upload: euber-chaia

Post on 23-Dec-2015

15 views

Category:

Documents


3 download

DESCRIPTION

A Importância Dos Codecs _ Blog Do Ensinar

TRANSCRIPT

Page 1: A Importância Dos Codecs _ Blog Do Ensinar

Blog do Ensinar

Compartilhando Conhecimento

A importância dos Codecs

By Rodrigo RibeiroCaros colegas,

Novamente tomo a liberdade para escrever no blog do Ensinar. Acredito que este seja um assunto de interesse geral e voltado a todos que trabalham comtelefonia IP e VoIP. Este artigo busca fazer entender o que é um codec, quais suas características e critérios para implementação dentro de um servidorAsterisk. Devo frisar que a fonte desse post provém do conteúdo da revista Linux Magazine “Especial 3 – VoIP com Asterisk”(http://www.linuxmagazine.com.br/especial/lme_3_voip_com_asterisk), baseado em uma análise escrita por Flávio E. Gonçalves.

Um boa leitura para todos!

Introdução

Primeiramente devemos definir o que é um codec. Um codec (http://pt.wikipedia.org/wiki/Codec) (coderdecoder) é um codificadordecodificador(traduzindo ao “pé da letra”), de um sinal ou um fluxo de dados digitais. Temos um exemplo abaixo que mostra como funciona a codificação PCM(Pulse Code Modulation) (http://en.wikipedia.org/wiki/Pulsecode_modulation):

Page 2: A Importância Dos Codecs _ Blog Do Ensinar

No caso um sinal analógico de 4000 Hz (faixa da voz humana) é amostrado , quantizado e codificado, gerando um fluxo digital de 8000 amostras, cadauma codificada em 8 bits de dados, consumindo 64kbps de banda, que será transmitido para o sistema. De acordo com a norma da ITU G.711(http://www.itu.int/rec/TRECG.711/en) existem 2 tipos de algoritmos para codificar um sinal PCM: Mulaw e Alaw, designados no Asterisk como“ulaw” e “alaw”. O primeiro é usado nos EUA e Japão, enquanto o segundo é usado em quase todos os países. Existem várias características que devemser entendidas em relação a um codec. Abaixo temos uma tabela com os codecs mais conhecidos e usados no Asterisk e a seguir focaremos em algumascaracterísticas e pontos importantes a respeito dos codecs.

Tabela comparativa dos Codecs

Codecs G.711 G.729 G.723 GSM iLBC

5,3 ou 13,3 ou

Page 3: A Importância Dos Codecs _ Blog Do Ensinar

Largura de Banda (Kbps) 64 8 6,3 13 15

Complexidade (Mips) 0,35 13 19 5 18

Resistência a perda depacotes —— 3% 3% 3% 5% ou

7%

MOS 4,41 4,14 3,79 N/A 4,07

»Qualidade de Voz

A qualidade de voz é medida em MOS (http://en.wikipedia.org/wiki/Mean_Opinion_Score) (Mean Opinion Score, ou média dos resultados dasopiniões). Os testes para MOS seguem a norma P.800 da ITU (http://www.itu.int/rec/TRECP.800199608I/en). O MOS varia em uma escala de um(qualidade ruim) a cinco (qualidade excelente);

» Compensação (ocultação)

Conhecida como ocultação da perda de pacotes (Packet Loss Concealment (http://en.wikipedia.org/wiki/Packet_Loss_Concealment)). Codecs com essacaracterística conseguem compensar eventuais perdas de pacotes de voz, “ocultando” isso para o usuário final;

» Silêncio e ruído

Alguns codecs permitem a detecção de silêncio ou intervalo sem presença de voz, fazendo com que esse “vazio” não seja transmitido, economizandobanda. Infelizmente o Asterisk não suporta (ainda) a inclusão desse recurso;

» Forma de licenciamento

Nem todos os codecs são gratuitos. Alguns como o G.729 e o G.723 necessitam ser licenciados. O custo não é alto: cerca de 10 dólares por canalsimultâneo.

Complexidade

Page 4: A Importância Dos Codecs _ Blog Do Ensinar

A complexidade de um codec é medida em MIPS (http://pt.wikipedia.org/wiki/MIPS) (milhões de instruções por segundo). Chega a ser difícil comparara complexidade em MIPS, pois ela é dependente de um processador. Em muitos casos os codecs são processados em DSP’s(http://pt.wikipedia.org/wiki/DSP) (Digital Signal Processor), preparados, construídos e até programados para isso, o que alivia a CPU principal doprocesso de codificação e decodificação. Logo o processamento de codecs pode ser feito tanto por software como por hardware.

Escolhendo o codec

Cada tipo de codec possui uma aplicação diferente, dependente do sistema, ambiente e solução a que ele for implementado. Por isso, saber escolher podefazer uma grande diferença. Abaixo temos uma análise para cada tipo de rede:

» Codecs para redes locais

Em redes locais geralmente temos banda passante em abundância, de forma que o nível de compressão tem um peso pequeno na escolha do codec a serutilizado. Nesse caso uma escolha natural seria o g.711, que ocuparia cerca de 100kbps (incluindo os cabeçalhos) para cada ligação;

» Codecs para redes WAN

Em uma rede WAN (http://en.wikipedia.org/wiki/Wide_Area_Network) (Wide Area Network), normalmente temos uma banda passante pequena (64,128 ou 256 Kbps) onde podemos priorizar o tráfego de voz. Nesse tipo de redes, normalmente, é pouco comum ocorrerem perdas de pacotes. Há trêsbons codecs para esse tipo de rede: o G.729 provavelmente se destaca, pois provê uma excelente qualidade de voz com uma compressão de 8 para 1; oG.723 permite taxas de compressão ainda maiores, mas com certa perda de qualidade; por fim temos o GSM (http://wwwmobile.ecs.soton.ac.uk/speech_codecs/standards/gsm.html) que é uma alternativa para aqueles que procuram custo/benefício. O ponto negativo do GSMfica para o fato de não ter suporte ao codec na maioria dos telefones IP’s e ATA’s.

» Codecs para Internet

Em uma rede com Internet há dois desafios: banda passante e falta de controle do meio. Por isso temos uma latência alta e jitter (variação da latência),que culminam com a perda de pacotes. Alguns codecs foram desenvolvidos com esses requisitos em mente. O codec mais indicado para esse tipo de redeé o iLBC (http://en.wikipedia.org/wiki/Internet_Low_Bit_Rate_Codec), que tem uma boa resistência a perda de pacotes e usa pouca banda passante.Mais informações podem ser encontradas na tabela de codecs desse post.

Consumo

Page 5: A Importância Dos Codecs _ Blog Do Ensinar

A banda usada em codecs é reservada apenas para o que chamamos de payload (http://pt.wikipedia.org/wiki/Payload), ou “carga”, de voz. Para queum pacote de voz possa trafegar pela rede é preciso que ele seja encapsulado usando cabeçalhos de rede. Uma sessão de voz usando o codec G.729 emuma rede Ethernet , por exemplo, consome cerca de 30 Kbps (quase 4 vezes o tamanho do payload!). Para verificar quanto cada codec consome, emqualquer tipo de rede, podemos usar uma calculadora de banda (http://www.asteriskexperts.com.br/bandcalc/bandcalcpt.php).

Codec no Asterisk

Esse e os dois tópicos abaixo já são mais técnicos. Para selecionar um codec no Asterisk, é preciso editar o canal relativo ao protocolo desejado (IAX,SIP, H323, etc). Dentro de cada canal é possível escolher os codecs para todos os usuários, presente na seção [general], ou individualmente para cadauser em [peer/user]. Por exemplo, para selecionar os codecs para todos os usuários, usamos a seção [general]:

[general]disallow=allallow=alaw

E individualmente, por [peer/user]:

[40200]disallow=allallow=g729

Transcodificação

Em algumas situações o Asterisk precisa converter os pacotes de voz de um codec para o outro. Esse processo é conhecido como transcodificação econsome muitos recursos de CPU. Sempre que há conversão de pacotes de voz de um codec para o outro, inclusive em leitura e gravação de gravaçõesde dados, ocorre a transcodificação. Se esse processo puder ser evitado podese poupar recursos de CPU e evitar a compra de licenças desnecessárias.

Empacotamento do RTP

Na versão 1.4 do Asterisk também é possível alterar os moldes de empacotamento de cada codec. Podese agora aumentar ou diminuir o payload de cadacodec, por exemplo, usando 60ms ao invés de 20ms, no caso do codec G.729, impactando no consumo de banda. O empacotamento é definido nainstrução Allow:

allow=g729:60

Page 6: A Importância Dos Codecs _ Blog Do Ensinar

Maiores detalhes podem ser encontrados no site da Digium (http://svn.digium.com/view/asterisk/branches/1.4/doc/rtppacketization.txt).

Conclusão

A escolha correta do codec faz toda diferença na implementação de uma solução de telefonia IP ou VoIP. Ela influencia, sobretudo, o consumo debanda, número de canais simultâneos e qualidade de voz para o usuário final. Por isso escolha o codec mais correto para o seu tipo de rede, use técnicasde QoS (http://en.wikipedia.org/wiki/Quality_of_service) (qualidade de serviço), priorize o tráfego de pacotes de voz e evite as transcodificações.

This entry was posted on dezembro 21, 2008 at 9:49 pm and is filed under Telefonia. You can follow any responses to this entry through the RSS 2.0feed. You can leave a response, or trackback from your own site.

8 Respostas to “A importância dos Codecs”

Esdraz Lucena Says: abril 29, 2009 às 7:39 pmQual seria o motivo da utilização da transcodificação? G711 > FXS não transcodifica, mas o GSM > FXS codifica??

Rodrigo Ribeiro Says: abril 30, 2009 às 2:02 pmCaro Esdraz,

Vou colocar alguns trechos abaixo, retirados de algumas fontes da internet e que vão “clarear” melhor a idéia:

“Usar a CPU do PC para processar o áudio é condenável!

O Asterisk usa a CPU do servidor para processar os canais de voz, ao invés de ter um DSP (processador de sinais digitais) dedicado a cada canal.Enquanto isto permitiu que o custo fosse reduzido para as placas E1/T1em até quatro vezes, tornou o sistema, sim, dependente do desempenho daCPU. Com um dimensionamento correto, o Asterisk é capaz de lidar com grandes volumes de chamadas. Recentemente a Digium lançou uma placachamada TC400B com DSPs para aqueles que desejam processar a voz (transcodificação, cancelamento de eco e dtmf) em processadores de sinaisdigitais (DSPs) dedicados sem usar a CPU principal do computador. Esta placa possui um custo bastante razoável se comparado com o custo delicenciamento individual do codec G.729 já embutido.

About these ads(http://wordpress.com/abouttheseads/)

Page 7: A Importância Dos Codecs _ Blog Do Ensinar

O papel dos CODECs (COder/DECoder) é codificar a voz em um formato específico para transporte em uma rede digital. Cada tipo de CODECpossui um uso específico. Alguns como o g.729, por exemplo, permitem que se codifique o sinal de áudio à velocidade de 8 kilobits/segundo, umacompressão de 8 para 1 em comparação com a codificação PCM (Pulse Code Modulation) usada na rede pública. Além disso a codificação de vozpermite a utilização de diversas outras funcionalidades, como por exemplo:

* Detecção de voz (VAD)* Transmissão de dados descontinua (DTX)* Geração de ruído de conforto (CNG)* Maior robustez frente a perda de pacotes

Existem diversos CODECs que o asterisk pode utilizar, sendo que o Asterisk pode fazer a transcodificação de um CODEC para outro de formatransparente. Entretanto alguns CODECs no Asterisk são suportados apenas no modo” passthrough”, em outras palavra, eles não podem sertranscodificados, dado que o Asterisk não entende o stream de bits utilizado pelos mesmos.

O Asterisk suporta os seguintes CODECs:

∙ G.711 ulaw (usado nos EUA) – (64 Kbps);

∙ G.711 alaw (usado na Europa e no Brasil) – (64 Kbps);

∙ G.723.1 – Modo Passthrough;

∙ G.726 – 32kbps no Asterisk 1.0.3, 16/24/32/40kbps;

∙ G.729 – Precisa de licença, a menos que esteja usando o modo passthru.(8Kbps);

∙ GSM – (1213 Kbps);

∙ iLBC – (15 Kbps);

∙ LPC10 – (2.5 Kbps);

∙ Speex – (2.1544.2 Kbps).”

Fonte: http://site.asteriskguide.com/FreeChapters123pt.htm

Page 8: A Importância Dos Codecs _ Blog Do Ensinar

Para “aliviar” o uso de CPU da máquina do Asterisk, pelo motivo desta não ter um DSP, existem as placas que fazem esse processo, codificando etranscodificando o áudio. Um exemplo já citado acima é a da TC400B (http://thevoipbox.net/products.php?product=PlacaTC400BG.729aCodecTranscoder).

Existem também testes de transcodificação para conhecimento público, mostrando a atuação e desempenho de alguns cenários com Asterisk:

http://www.asteriskexperts.com.br/index.php/arquivodenoticiasmainmenu51/1391500chamadassimultaneasnoasterisk.html

http://www.albertosato.voipcenter.com.br/?p=239

http://clevitonmendes.blogspot.com/2008/06/desempenhodoasterisknaverso14.html

Logo é possível afirmar que a transcodificação é o processo no qual o conteúdo de voz compactado ou codificado é transcodificado para ser usado naforma de codec para a rede pública ou outro tipo de codec a ser usado internamente no Asterisk, seja ele propriétário (e tendo licença de uso) ou não.No caso do G711, como ele usa a mesma taxa de codificação (64kb) da rede pública (codec PCM) ele não precisa ser transcodificado, se o caminhofor G711 > FXS. No caso do G729 (proprietário), GSM ou outro, que tem taxas de compactação e digitalização diferentes, é preciso haver atranscodificação para que o tipo de áudio venha a ser compatível com o PCM (PSTN).

Espero que eu tenha sanado a sua dúvida, e para qualquer outra sintase a vontade.

Conceitos Básicos de QoS « Templário da Tecnologia Says: junho 7, 2009 às 7:43 pm[…] de QoS Junho 7, 2009 — Rodrigo Ribeiro Escrevi um artigo a algum tempo no blog do Ensinar (outro blog onde também faço postagens) quetem relações com o assunto de QoS. No caso era […]

Fernando Meira Lins Says: janeiro 16, 2010 às 3:19 pmPrezado Rodrigo, sua explicação foi bem elucidativa em vários pontos, mas confesso que mesmo tendo buscado as informações de referência que vcindicou, não conssegui entender aonde está a vantagem ou desvantagem, em aumentar ou diminuir o Empacotamento do RTP

Ou seja: Acho que entendi muito mal! rsrsrs.

Passar para allow=g729:60 siginificaria estar triplicando o consumo de banda do CODEC? Qual a vantagem e desvantagem de se fazer isso? Estárelacionada mais ao consumo de banda ou à qualidade da voz?

Page 9: A Importância Dos Codecs _ Blog Do Ensinar

Grato;Fernando

wesleyvolcov Says: janeiro 26, 2010 às 1:29 pmCaro Fernando,

O fato de se aumentar a banda utilizada no codec pode influenciar muito na qualidade do audio. Com pacotes maiores temos menos fragmentação,menos perda de dados, porém, será utilizada mais banda para que isso ocorra.Balancear boa qualidade de voz e consumo não excessivo de largura de banda, hoje é uma questão muito abrangente. Uma boa opção é utilizar ocodec g729, porém há necessidade de licença no caso de transcode.

Espero ter ajudado.

Fernando Meira Lins Says: janeiro 26, 2010 às 4:29 pmAgradeço a resposta… Bom, por favor me confirme se meu entendimento explanado abaixo, está correto.

Então se usarmos por exemplo g729:40, teríamos um pouco mais de “qualidade” com menor possibilidade de perda de pacotes por fragmentação, econsumiríamos o dobro da banda tradicional do codec.

Seria então um g729 com consumo nominal de 16kb ao invés de 8kb. Na prática sem dúvida a história é outra, mas a “grosso” modo é isso?

Samuel Says: julho 18, 2012 às 6:35 pmCaro sou praticamente um leigo neste assunto e gostaria de saber qual o melhor codec para utilizar com o Csipsimple e Vono num Galaxy 5, GSMou ILBC ou posso deixar ambos?

Messias Galvão Says: abril 29, 2013 às 2:06 pmDerrepente alguém possa me ajudar..Estou desenvolvenso um software de decodificação de tons de DTMF pelo telefone, para isso uso um FAXMODEM VOICE e comandos ATs (comandos de modem). O software funciona quase bem, atende a ligação entra no mode voice recebe os tonsdecodifica, o problema é que se esses tons vierem muito rápido o modem não da conta de decodificar os pacotes por inteiro começa a quebrarnúmeros, e ainda certos modems recebe caracteres truncados tipo: 1~/3~/6~/7~/9, ao invez de : 1 2 3 4 5 6 7 8 9.

Page 10: A Importância Dos Codecs _ Blog Do Ensinar

O tema Kubrick. Crie um website ou blog gratuito no WordPress.com. Entradas (RSS) e Comentários (RSS).

Seguir

Seguir “Blog do Ensinar”

Crie um site com WordPress.com