Ver Feed RSS

Tecnologia de Redes, Mobilidade e Inovação

Usando VLC para transmitir TVoIP

Avaliação: 2 votos, 4,50 média.
A quantidade de banda nos meios de transmissão (quer seja wirelesss, xDSL ou fibra) está cada vez maior o que permite com que se pense em novas aplicações e serviços prestados.

Um dos grandes desafios sempre foi a transmissão de TV (ou filmes, vídeos, etc.) via IP. O Youtube consegue fazer um bom trabalho, através de um bom protocolos de compressão e uma boa disponibilidade de banda, mas na grande maioria das vezes, os seus vídeos só precisam de um tempo de carga relativamente grande (considerando a impaciência dos usuários) e só tem uma recepção suave (sem pausas) nas menores resoluções.

Multicast

Uma das dificuldades do Youtube é que a Internet não suporta Multicast. Na verdade, a grande maioria dos roteadores utilizados hoje nos backbone de Internet já tem esse recurso, apenas que não são habilitados porque as operadoras não tem interesse (além do que iria consumir processamento).

No entanto em redes privativas, como a de provedores de acesso Internet (tanto no backbone como acesso dos clientes) é possível habilitar o multicast.

Eu escrevi a algum tempo atrás um artigo sobre multicast, recomendo para quem quer saber mais:
http://under-linux.org/blogs/mlrodri...ulticast-1134/

Em resumo, o multicast transmite uma vez só o vídeo (independentemente de quantas pessoas estejam assistindo), o que economiza banda. Se um vídeo está sendo transmitido a 2Mbps em modo normal, cada usuário irá gastar 2Mbps, assim 20 usuários vendo esse vídeo irão gastar 40Mbps do backbone da rede. Se um vídeo de 2Mbps está sendo transmitido em multicast, ele poderá ser visto por milhares de pessoas ao mesmo tempo e irá gastar apenas 2Mbps do backbone.

Vale lembrar que para isso funcionar, a rede toda (todos os equipamentos da rede) precisam suportar multicast.

A Transmissão

Outro problema comum para quem quer transmitir TV ou vídeo via IP é a codificação (transformar a imagem em IP). Nesse caso o VLC Mídia Player se torna uma ótima ferramenta.

Para quem não conhece, eu definiria o VLC como um “faz-tudo-multimidia”. É impressionante a quantidade de recursos que ele possui. Você pode baixá-lo e conhecer mais aqui:
http://www.videolan.org/vlc/

Uma das coisas mais interessantes que ele faz é transmitir um vídeo em multicast através do protocolo IGMP. Você pode transmitir a partir de um arquivo gravado (vários formatos possíveis), pode fazer através da câmera do computador ou da placa de captura de vídeo (por exemplo, para capturar uma canal de TV a cabo). O VLC permite várias fontes possíveis de sinal.

Para transmitir em multicast, é bastante simples. No menu Mídia, selecione Fluxo (o VLC em português chama o multicast de Fluxo). Na aba Arquivo, seleciona Adicionar... para escolher o seu arquivo (você pode selecionar vários para serem transmitidos na sequência), depois clique em Fluxo.

Na próxima tela serão dadas algumas opções avançadas (esta é a parte mais chata). Clique em Destinos e na opção Novo destino selecione UDP, clique em Exibir localmente (para que você também veja o que está sendo transmitido) e adicionar. Será pedido um IP e Porta, esse IP é importante que seja um endereço de multicast (não é um IP normal nem um IP da sua rede). Por exemplo coloque 224.10.10.10 (esse será o IP de multicast que os usuários irão acessar para visualizar o vídeo, no multicast não se usa o IP da rede).

Depois basta clicar em Fluxo novamente para iniciar. Para receber o vídeo, os usuários podem usar também o VLC (ou Windows Midia Player) para assistir esse IP de multicast.

Resumo

A tecnologia de multicast requer que os equipamentos da rede suporte esse protocolo. Os switchs, access point, etc tem que suportar protocolos de multicast (ou multicast snooping), como o IGMP (em IPv4) ou MLD (em IPv6) mas isso está cada vez mais presente nos equipamentos.

O VLC é uma ferramenta open source excelente para a geração e transmissão das imagens (repare que no multicast um único PC pode tranquilamente transmitir para milhões de usuários ao mesmo tempo).

A única parte mais complicada é compreender esse protocolo de multicast (como ele funciona e como se configura os equipamentos para utilizá-lo), mas não é nenhum bicho de sete cabeças e depois que você compreender como ele funciona, verá que é até bem simples. Em breve devo publicar aqui alguns tutoriais de como configurar multicast em alguns modelos de equipamento.
Categorias
Não Categorizado

Comentários

  1. Avatar de sbraitti
    Artigo bom! Gostaria de ler mais sobre soluções mais completas. O VLC é um ótimo programa porém, é solução para alguns streams apenas e quando você quer fazer algo grande? Como faz? E sobre o setupbox, mythtv daria conta do recado ?? Existem plugins para IPTV, e a grade, como passar? Essas são minhas dúvidas que não consigo encontrar muito material. Em português ainda, nada..
  2. Avatar de mlrodrig
    Citação Postado originalmente por sbraitti
    Artigo bom! Gostaria de ler mais sobre soluções mais completas. O VLC é um ótimo programa porém, é solução para alguns streams apenas e quando você quer fazer algo grande? Como faz? E sobre o setupbox, mythtv daria conta do recado ?? Existem plugins para IPTV, e a grade, como passar? Essas são minhas dúvidas que não consigo encontrar muito material. Em português ainda, nada..
    O intuito do artigo foi ser uma introdução ao assunto. Pretendo em breve escrever mais alguns sobre o assunto.
    Vale lembrar que o multicast não tem limite de quantidade de usuários, assim um PC simples com o VLC poderia - sem problemas - atender milhões de usuários. O problema, ao meu ver, do VLC é que ele não entra como serviço (pelo menos ainda não descobrir como faze-lo), o que significa que ele precisaria ser iniciado manualmente toda vez que o "servidor" fosse inicializado.

    O MythTV é um receptor e poderia ser utilizado como cliente de um sistema multicast (como o VLC).

    Para um projeto de TVoIP, eu sugeriria o MMbox trabalhando como streaming server:
    Provendo IPTV no Linux - Blogs - Under-Linux.org
  3. Avatar de Gustavinho
    Ainda é tenso em saber como transmitir isso em redes Wi-Fi.
    O consumo é alto e as redes ainda não suportam tais bandas.

    Sobre o MythTV alguem ja utilizou?
  4. Avatar de DUHbnu
    As vezes ler ou prestar atenção no texto do tópico evitaria comentários sem nexo.

    A essência é:


    "No multicast transmite uma vez só o vídeo (independentemente de quantas pessoas estejam assistindo), o que economiza banda. Se um vídeo está sendo transmitido a 2Mbps em modo normal, cada usuário irá gastar 2Mbps, assim 20 usuários vendo esse vídeo irão gastar 40Mbps do backbone da rede. Se um vídeo de 2Mbps está sendo transmitido em multicast, ele poderá ser visto por milhares de pessoas ao mesmo tempo e irá gastar apenas 2Mbps do backbone."

    É óbvio que em qualquer meio de transmissão "Multicast ou Fluxo" traz uma imensa economia de banda.


    Por exemplo: no ensino a distância EAD, as escolas e universidades levam suas transmissões a concessionárias ou provedores de acesso Internet, e estas com altíssima largura de banda disponibilizam o conteúdo a múltiplos usuários, através de conexões individuais. Se a rede no todo suportasse "Multicast ou Fluxo" a largura de banda seria minima e suportada diretamente pelas escolas e universidade; contudo concessionárias ou provedores de acesso Internet perderiam parte de seu ganha pão.

    Como disse MLRODRIG; felizmente internamente em nossas redes podemos utilizar estas tecnologias; então o lance é sair na frente. Parabéns pelo Post.
  5. Avatar de Gustavinho
    Ótimo, rode 5 canais individuais de 2Mbps cada, numa rede 802.11 a/b/g em multicast.
  6. Avatar de JorgeAldo
    Não há outra solução para esse problema, gustavinho69.

    Só há uma coisa que eu sinto falta no VLC/VLM, a capacidade de criptografar os streams de tal forma à controlar quem vai poder assistir.
  7. Avatar de mlrodrig
    Citação Postado originalmente por JorgeAldo
    Não há outra solução para esse problema, gustavinho69.

    Só há uma coisa que eu sinto falta no VLC/VLM, a capacidade de criptografar os streams de tal forma à controlar quem vai poder assistir.
    Existem algumas maneiras de fazer um controle de quem pode ou não assistir a um vídeo (ou, falando mais genericamente, que podem ou não assinar um fluxo).

    A primeira é através das VLANS. O multicast fica limitado pela sua VLAN, assim apenas as máquinas pertencentes a essa VLAN podem participar. O 802.1x pode ser utilizado para fazer alocação dinâmica de VLAN.

    Outra forma é através dos mecanismos de segurança e controle de multicast que alguns switchs possuem. Nesse caso o próprio switch realizaria esse controle.

    Mas realmente não seria ruim termos criptografia direto no VLC...
  8. Avatar de JorgeAldo
    Tu tens alguma máquina para testes ?

    Posso "inventar" um sistema de criptografia.

    O VLC permite a transmissão do fluxo para o standard output.

    Eu posso concatenar o standard output do VLC para o standard input de um programa.

    (Ou usar um named pipe que o VLC também permite para saida).

    No meu programa eu criptografo em blowfish o stream e transmito novamente em multicast.

    No cliente um outro programa (que eu também posso fazer) recebe o multicast em questão, descriptografa e envia para um named pipe a ser lido por outra instância do VLC.

    Quer testar ?
  9. Avatar de DUHbnu
    Citação Postado originalmente por gustavinho69
    Ótimo, rode 5 canais individuais de 2Mbps cada, numa rede 802.11 a/b/g em multicast.
    Veja que redes (wireless) CISCO tem como configurar o Wireless LAN Controller (WLCs) e Lightweight Access Points (LAPs) para multicast e comunicação com multicast habilitado rede cabeada.

    Multicast em Controladores de LAN sem fio (WLCs)

    Antes de Cisco Unified Wireless Network Software Release 3.2, quando multicast IP foi habilitado, o controlador entregue os pacotes multicast para LAN sem fio (WLAN) clientes, fazer cópias dos pacotes de multicast, em seguida, transmitidos através de um dos pacotes unicast Lightweight Access Point Protocol (LWAPP) túnel para cada ponto de acesso (AP), ligado ao controlador. Cada frame multicast recebidos pelo controlador de uma VLAN no roteador do primeiro salto foi copiado e enviado através do túnel LWAPP a cada um dos APs ligados a ela.

    O controlador pode precisar gerar até 300 cópias de cada pacote multicast, que depende do número de APs. Este mecanismo é ineficiente, e coloca uma grande carga de processamento do controlador. Esta inunda a rede com um grande número de pacotes duplicados unicast.

    Na Cisco Unified Wireless Network Software Releases 3.2 e posteriores, o desempenho do multicast Cisco Unified Wireless Network foi otimizado.
    Estes lançamentos introduziram uma forma mais eficiente de entregar o tráfego multicast do controlador para os APs.
    Em vez de usar unicast multicast para entregar cada pacote no túnel LWAPP para cada AP, um grupo de multicast LWAPP é usado para entregar o pacote multicast para cada AP.
    Isso permite que os roteadores da rede para a utilização de técnicas de multicast padrão para replicar e entregar pacotes multicast para os APs.
    Para o grupo multicast LWAPP, o controlador passa a ser a fonte de multicast e os APs se os receptores multicast.
    Para que o recurso de multicast de desempenho, os APs aceitar Internet Group Management Protocol (IGMP) consultas apenas os pacotes multicast router e com um endereço IP de origem do controlador com os quais estão normalmente associados.

    Se sua rede suporta pacotes multicast, você pode configurar o método multicast que utiliza o controlador. O controlador executa multicasting em dois modos:

    * modo Unicast - Neste modo, o controlador multicast unicasts cada pacote para cada AP associados ao controlador.
    Este modo é ineficiente, mas pode ser necessário em redes que não suportam multicast.

    * modo Multicast-Neste modo, o controlador envia pacotes multicast para um grupo multicast LWAPP.
    Este método reduz a sobrecarga no processador e controlador de turnos o trabalho de replicação de pacotes para a sua rede, que é muito mais eficiente que o método unicast.

    Você pode habilitar o modo de multicast usando o controlador GUI ou CLI.

    Comportamento Multicast em diferentes versões de software WLC

    Antes da versão WLC do firmware 4.0.206.0, encaminhamento de pacotes multicast habilitado tanto em modo unicast ou multicast, também possibilitou o encaminhamento de pacotes broadcast.
    Em versão do firmware WLC 4.0.206.0, tráfego broadcast e multicast deve ser ativado separadamente.
    Broadcast é desabilitada por padrão.
    Emitir este comando da CLI WLC, a fim de permitir transmissão:

    config rede para permitir transmissão

    Além disso, usa o modo de transmissão multicast que está configurado no WLC, mesmo multicast não está ativada.
    Se você quiser permitir transmissão sem ativar multicast, você realizar esta operação através do CLI, mas não através da GUI.
    Isso é porque você não pode definir o endereço IP ou o modo de ser que você permitir multicast na interface.
    Portanto, se o modo multicast é unicast e broadcast é ligado, este é o modo usa broadcast (transmissão de tráfego é replicada e unicast para cada AP).
    Se o modo de multicast é definido como multicast com um endereço multicast, em seguida, utiliza esse modo de transmissão (cada pacote de broadcast é enviado via multicast para o grupo APs).

    configuração de rede multicast modo multicast
    Ou
    config de rede unicast multicast

    Multicast com substituição AAA é suportado pela versão Wireless LAN Controller 4.2 e posteriores.
    Você precisa habilitar IGMP snooping no controlador para fazer funcionar com multicast substituir AAA.

    Na versão do controlador de software 4.2, IGMP snooping é introduzido para melhorar os pacotes multicast direta.
    Quando esse recurso é ativado, o controlador IGMP reúne relatos de clientes, relatórios de processos, cria único grupo multicast IDs (MGIDs) dos relatórios de IGMP após a verificação da Camada 3 multicast endereço eo número de VLAN, e envia os relatórios para o IGMP switch infra-estrutura.
    O controlador envia esses relatórios com o endereço de origem como o endereço de interface em que recebeu os relatórios dos clientes.

    O controlador então atualiza o ponto de acesso PROGOV tabela da AP com o endereço MAC do cliente.
    Quando o controlador recebe o tráfego multicast para um grupo de multicast especial, que encaminha para todos os APs.
    No entanto, apenas os APs que têm clientes ativos ouvir ou subscrito a esse grupo multicast enviar tráfego multicast em que WLAN particular. pacotes IP são enviados com um PROGOV que é único para uma VLAN ingresso e ao grupo multicast de destino.
    Layer 2 pacotes multicast são enviados com um PROGOV que é exclusivo para a interface de entrada.

    Nota: IGMP snooping não é compatível com os controladores de série 2000, a 2,1 mil controladores de série, ou a Cisco Wireless LAN Controller Rede Módulo de Cisco Integrated Services Routers.

    .... segue .... vários fabricantes Wireless já prevem MULTICAST...

    Da uma olhada ai:
    Setting up IPTV without impact to LAN and Wireless traffic

    Setting up IPTV without impact to LAN and Wireless traffic - DD-WRT Wiki

+ Enviar Comentário