ESTUDO E DESENVOLVIMENTO DE UMA SOLUÇÃO BASEADA EM PADRÕES ABERTOS PARA SINCRONIZAÇÃO DE SLIDES COM STREAMING DE ÁUDIO E VÍDEO



Documentos relacionados
3 Qualidade de serviço na Internet

Fundamentos de Hardware

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Redes de Computadores

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Informática. Prof. Macêdo Firmino. Macêdo Firmino (IFRN) Informática Setembro de / 16

Curso de Instalação e Gestão de Redes Informáticas

Prof. Daniel Hasse. Multimídia e Hipermídia

1 Introduc ao 1.1 Hist orico

Tecnologias de Banda Larga

Oficina de Multimédia B. ESEQ 12º i 2009/2010

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Prof. Marcelo Machado Cunha Parte 3

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

:: Telefonia pela Internet

Tecnologia PCI express. Introdução. Tecnologia PCI Express

1. NÍVEL CONVENCIONAL DE MÁQUINA

Arquitetura de Rede de Computadores

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:

Codificação/Compressão de Vídeo. Tópico: Vídeo (Codificação + Compressão)

Unidade 2. Largura de Banda e Throughput

Informática Aplicada a Radiologia

5 Mecanismo de seleção de componentes

Manual Sistema MLBC. Manual do Sistema do Módulo Administrativo

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

TRANSMITINDO CONHECIMENTO ON-LINE

Características do vídeo. Aquisição, síntese, edição e reprodução de vídeo. Características do vídeo analógico. Características do vídeo analógico

PROJETO DE REDES

Entendendo como funciona o NAT

ESTRUTURAS DE DADOS II

Novo cabo HDMI AVIS da Discabos

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

2- Conceitos Básicos de Telecomunicações

Sistemas Distribuídos

Redes de Computadores

Aspectos básicos do vídeo

TECNOLOGIA DA INFORMAÇÃO

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

1 Problemas de transmissão

Como medir a velocidade da Internet?

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

O vídeo. O vídeo. Sistemas analógicos de vídeo. O vídeo Wilson de Pádua Paula Filho

SOBRE A CALLIX. Por Que Vantagens

Telecomunicações e Teleprocessamento

Administração de Sistemas de Informação I

Subunidade 6: publicação

PARANÁ GOVERNO DO ESTADO

Sistemas Distribuídos

Aula 09. Exportação e Licenças

7. DIVULGAÇÃO DE VÍDEOS E SOM VIA REDE MÉTODO STREAMING

Trabalhando com arquivos de som. Prof. César Bastos Fevereiro 2008

SISTEMAS DISTRIBUÍDOS

Disciplina: Introdução à Informática Profª Érica Barcelos

VOIP A REVOLUÇÃO NA TELEFONIA

WHITEPAPER. Guia de compra para câmeras IP: tudo o que você precisa saber antes de adquirir a sua solução digital

INTRODUÇÃO BARRAMENTO PCI EXPRESS.

Streaming na pratica Shoutcast Flumotion

XDOC. Solução otimizada para armazenamento e recuperação de documentos

DIMENSIONANDO PROJETOS DE WEB-ENABLING. Uma aplicação da Análise de Pontos de Função. Dimensionando projetos de Web- Enabling

Subcamada MAC. O Controle de Acesso ao Meio

Introdução. Arquitetura de Rede de Computadores. Prof. Pedro Neto

Entenda os formatos mais populares de vídeo

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA

Você pode dizer isso de novo! Compressão de Texto

Passo 3: Posicionando a Câmera na Prova Didática Teórica ou na Prova de Defesa da Produção Intelectual

FUNDAMENTOS DE HARDWARE CD-ROM. Professor Carlos Muniz

Multimédia, Qualidade de Serviço (QoS): O que são?

Virtual Welding. Treinamento do futuro

Miguel Nascimento Nº TIM LTM 12 Janeiro 2011

4 Mercado setor de telecomunicações


1 INTRODUÇÃO Internet Engineering Task Force (IETF) Mobile IP

Multimídia. Conceitos Básicos (Parte II)

2 Atualidade de uma base de dados

Universidade de Brasília. Departamento de Ciência da Informação e Documentação

Introdução ao Modelos de Duas Camadas Cliente Servidor

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Placa Acessório Modem Impacta

PROJETO DE REDES

2 de maio de Remote Scan

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Largura de banda e Throughput (Tanenbaum,, 2.1.2)

Projeto de Arquitetura

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

IP Camera Tutorial. CNet Technology Jan 2008

TECNOLOGIAS DE TRANSMISSÃO

ANIMAÇÕES WEB AULA 2. conhecendo a interface do Adobe Flash. professor Luciano Roberto Rocha.

Introdução à Tecnologia Web HTML HyperText Markup Language XHTML extensible HyperText Markup Language Formatos de Imagens

3. Cite o nome e características do ponto mais alto e do ponto mais baixo de uma onda?

Prof. Samuel Henrique Bucke Brito

Manual do Painel Administrativo

Automação de Locais Distantes

Hit dos Bits. Série Matemática na Escola

Prof. Esp. Lucas Cruz

Introdução à multimídia na Web

TRABALHO COM GRANDES MONTAGENS

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Transcrição:

CENTRO UNIVERSITÁRIO UNIVATES CURSO DE ENGENHARIA DA COMPUTAÇÃO Armando Taffarel Neto ESTUDO E DESENVOLVIMENTO DE UMA SOLUÇÃO BASEADA EM PADRÕES ABERTOS PARA SINCRONIZAÇÃO DE SLIDES COM STREAMING DE ÁUDIO E VÍDEO Lajeado, dezembro de 2007

Armando Taffarel Neto ESTUDO E DESENVOLVIMENTO DE UMA SOLUÇÃO BASEADA EM PADRÕES ABERTOS PARA SINCRONIZAÇÃO DE SLIDES COM STREAMING DE ÁUDIO E VÍDEO Trabalho de conclusão de curso apresentado ao Centro Universitário UNIVATES para a obtenção do título de Bacharel em Engenharia da Computação. Orientador: Marcelo de Gomensoro Malheiros Lajeado, dezembro de 2007

AGRADECIMENTOS Ao meu orientador, professor Marcelo de Gomensoro Malheiros, pela sugestão do tema, pela dedicação e pela grande ajuda em todas as fases do trabalho. Ao professor Ronaldo Hüsemann, pela grande disponibilidade em ajudar e contribuir e pelas orientações que foram fundamentais em vários momentos. A todos os professores do curso de Engenharia da Computação, que de uma forma ou de outra contribuíram para a realização deste trabalho, seja de forma direta ou indireta. Aos meus pais Sueli e Flávio, e às minhas irmãs, Flávia e Mariana, pelo incentivo e pela infra estrutura, sempre presentes e atuantes e nunca medindo esforços para ajudar quando necessário, sempre da melhor forma possível. À minha namorada Lisandra, que sempre esteve ao meu lado me apoiando, me cuidando e me dando forças para seguir sempre em frente, suportando noites mal dormidas por causa dos estudos e tolerando minhas ausências. Aos meus amigos, sempre presentes, compartilhando idéias e emoções e ajudando a esfriar a cabeça quando ela superaquecia com os estudos. Aos meus colegas formandos de Engenharia da Computação, pela corrente positiva que nos fez chegar até aqui. TEM QUE SER!

RESUMO Este trabalho apresenta uma solução para sincronização de slides com um streaming de áudio e vídeo utilizando apenas tecnologias livres de patentes e de código fonte aberto. O objetivo principal é simular virtualmente um ambiente não interativo de sala de aula. A solução contempla os quatro estágios de streaming: captura, codificação, distribuição e visualização. Ela foi desenvolvida combinando se uma série de tecnologias existentes e adaptando se algumas delas. Diversos testes foram feitos e diferentes cenários foram simulados com o intuito de construir uma solução flexível e robusta. Desta forma, este trabalho pretende contribuir para o crescimento do ensino à distância, especialmente no que diz respeito ao uso de soluções livres. Palavras chave: streaming, slides, sincronização, ensino à distância

ABSTRACT This work presents a solution for the slide synchronization with audio and video streaming only using patent free and open source technologies. The main goal is to virtually simulate a non interactive classroom environment. The solution comprises the four stages of streaming: capture, coding, distribution and visualization. It was developed combining a set of existing technologies and adapting some of them. Several tests were made and various setups were simulated aiming to build a flexible and robust solution. Therefore, this work wants to contribute for the distance learning expansion, specially regarding to the use of free solutions. Keywords: streaming, slides, synchronization, distance learning

LISTA DE SIGLAS E ABREVIATURAS AVC Advanced Video Coding bps bits por segundo CBR Constant Bit Rate HTML HyperText Markup Language IP Internet Protocol ITU International Telecommunications Union MSE Mean Squared Error NTSC National Television Standards Committee PAL Phase Alternation by Line PPM Portable PixMap PSNR Peak Signal-to-Noise Ratio RGB Red Green Blue RLE Run-Length Encoding SECAM Sequential Color and Memory VBR Variable Bit Rate

LISTA DE FIGURAS FIGURA 1 Os padrões RGB e YUV...22 FIGURA 2 Uma onda de som é digitalizada usando amostragem discreta...23 FIGURA 3 O modelo cliente/servidor...34 FIGURA 4 O streaming como uma alternativa para transmissão multimídia...37 FIGURA 5 Os quatro estágios do streaming...38 FIGURA 6 O streaming desde a captura até a visualização...41 FIGURA 7 Streaming em tempo real...42 FIGURA 8 Streaming sob demanda...43 FIGURA 9 Reprodução de multimídia via streaming...44 FIGURA 10 Taxa de bits varíavel e constante...46 FIGURA 11 O Gstreamer perante seus plugins e outras aplicações...58

8 FIGURA 12 Interligação de elementos do Gstreamer...59 FIGURA 13 Representação de pipeline para reproduzir Ogg com vídeo e áudio...59 FIGURA 14 Exemplo de tela de administração do Flumotion...62 FIGURA 15 Tela de demonstração do Adobe Acrobat Connect Professional...67 FIGURA 16 Tela de demonstração do Microsoft Office Live Meeting...68 FIGURA 17 Tela de demonstração do Wimba Classroom...69 FIGURA 18 Tela de demonstração do LearnLinc...70 FIGURA 19 Esquema para capturar a saída de vídeo do computador...74 FIGURA 20 Esquema para capturar o ambiente compartilhado via RFB...76 FIGURA 21 Esquema para capturar o ambiente compartilhado via chamadas ao modo gráfico do GNU/Linux...77 FIGURA 22 Exemplos de conversores de vídeo...83 FIGURA 23 Applet Cortado adaptado...97 FIGURA 24 Comparação do PSNR do vídeo dos slides entre as três formas de captura...109 FIGURA 25 Comparação do PSNR do vídeo dos slides entre as três formas de captura com base na taxa de bits...110 FIGURA 26 Comparação da taxa de bits do vídeo dos slides entre as três formas de captura

9 com base na codificação VBR...111 FIGURA 27 Comparação do uso de processamento entre as três formas de captura usando VBR e CBR...112

LISTA DE TABELAS TABELA 1 Comparação entre os codecs de vídeo mais utilizados...50 TABELA 2 Comparação entre os codecs de áudio mais utilizados...52 TABELA 3 Comparação entre os containers mais utilizados para streaming...53 TABELA 4 Versões de tecnologias livres utilizadas...65 TABELA 5 Cenários utilizados nos testes...102 TABELA 6 Testes com forma analógica de captura...104 TABELA 7 Testes com captura via RFB...107 TABELA 8 Testes com captura via Xlib...108 TABELA 8 Comparativo entre formas de captura de slides...113

SUMÁRIO 1 INTRODUÇÃO...15 2 MULTIMÍDIA...18 2.1 Vídeo...18 2.1.1 Vídeo analógico...18 2.1.2 Vídeo digital...19 2.1.3 Espaço de conversão de cor...21 2.2 Áudio...22 2.2.1 Áudio digital...23 2.2.2 Canais de áudio...24 2.3 Compressão de dados...25 2.3.1 Compressão sem perda...25 2.3.2 Compressão com perda...26 2.3.3 Compressão e codificação de vídeo...27 2.3.4 Compressão e codificação de áudio...30 2.4 Containers de dados...32

12 3 STREAMING...33 3.1 Redes de computadores...33 3.2 Streaming...35 3.2.1 Aplicações do streaming...36 3.2.2 A arquitetura do streaming...38 3.3 Os estágios de captura e codificação...39 3.4 O estágio armazenamento e/ou distribuição...39 3.4.1 Streaming em tempo real...42 3.4.2 Streaming sob demanda...42 3.5 O estágio de visualização...43 3.6 Taxa de bits constante e variável...45 4 TECNOLOGIAS EXISTENTES...47 4.1 Padrões e codecs de vídeo...47 4.2 Padrões e codecs de áudio...50 4.3 Containers de dados...52 4.4 Tecnologias livres...53 4.4.1 O Formato Ogg...53 4.4.2 O Codec Vorbis...55 4.4.3 O Codec Theora...56 4.4.4 O Framework Gstreamer...57 4.4.5 O Servidor Flumotion...60 4.4.6 O applet Cortado...63 4.4.7 O distribuidor Icecast...64

13 4.4.8 Versões utilizadas...65 4.5 Ferramentas proprietárias para ensino à distância...66 4.5.1 Adobe Acrobat Connect Professional...66 4.5.2 Microsoft Office Live Meeting...67 4.5.3 Wimba Classroom...68 4.5.4 ilinc...69 5 ESPECIFICAÇÃO DO AMBIENTE DE TRABALHO...71 5.1 Recursos para a captura...72 5.1.1 Captura de vídeo...73 5.1.2 Captura de áudio...73 5.1.3 Captura de apresentação de slides...73 5.1.3.1 Captura da saída de vídeo do computador...74 5.1.3.2 Captura do ambiente de trabalho compartilhado via RFB...76 5.1.3.3 Captura do ambiente de trabalho compartilhado via chamadas ao modo gráfico do GNU/Linux...77 5.2 Recursos para a codificação...78 5.3 Recursos para a distribuição...78 5.4 Recursos para a visualização...79 6 DETALHAMENTO DA IMPLEMENTAÇÃO...81 6.1 O estágio de captura...82 6.1.1 Captura da saída de vídeo do computador...82 6.1.2 Captura do ambiente de trabalho compartilhado via RFB...84 6.1.3 Captura do ambiente de trabalho compartilhado via chamadas ao modo gráfico do GNU/Linux...86

14 6.2 O estágio de codificação...88 6.3 O estágio de distribuição...89 6.4 Os cenários completos desde a captura até a distribuição...90 6.4.1 O cenário de captura da saída de vídeo do computador...90 6.4.2 O cenário de captura da saída do ambiente compartilhado via RFB...94 6.4.3 O cenário de captura da saída do ambiente compartilhado via chamadas ao modo gráfico do GNU/Linux...95 6.4.4 O cenário de distribuição utilizando o Icecast...95 6.5 O estágio de visualização...96 7 ANÁLISE DA IMPLEMENTAÇÃO...101 7.1 Captura e codificação...101 7.1.1 Cenários utilizados nos testes...102 7.1.2 Testes com a captura da saída de vídeo do computador...103 7.1.3 Testes com a captura via RFB...106 7.1.4 Testes com a captura via chamadas à Xlib...107 7.1.5 Análises comparativas...108 7.2 Distribuição...113 7.3 Visualização...114 8 CONCLUSÃO...115 REFERÊNCIAS...118 APÊNDICES...121

1 INTRODUÇÃO Os recursos multimídia, através do som e da imagem, estão cada vez mais presentes em nossas vidas e têm contribuído consideravelmente para o aumento da quantidade de conhecimento disponível, com uma qualidade cada vez maior. O livre acesso à informação é uma realidade cada vez mais notada pela sociedade, principalmente devido à popularização da Internet. A televisão, aos poucos, foi substituindo o rádio e o cinema e se tornou um importante meio de comunicação em massa. A Internet, aos poucos, está tomando espaço da televisão convencional, e a tendência é que isto se acentue com o tempo, principalmente através da adaptação deste modelo de televisão para a televisão digital interativa. O ensino à distância, utilizando se da multimídia, pode possibilitar o acesso a uma parte da população que não tem condições de bancar os estudos, uma vez que este modelo de ensino proporciona redução de custos principalmente em relação à infra estrutura física (DO AMARAL, 2004). O desenvolvimento de novas tecnologias de informação e comunicação tem sido relevante para a criação de ambientes de aprendizagem que expandam as oportunidades de combinação de recursos tecnológicos e humanos. O ensino à distância faz o uso destas novas tecnologias para que o aluno não tenha limitações geográficas e que dependa de uma sala de aula presencial para buscar sua qualificação (MEHLECKE, 2003).

16 Seguindo esta linha, está se tornando comum a criação de ferramentas que simulam o ambiente de sala de aula através da Internet. Grandes empresas, como a Adobe e a Microsoft, têm explorado bastante esta área. Porém, atualmente, não existem tecnologias livres que realizem esta tarefa. Este contexto deu a motivação e estabeleceu principal objetivo deste trabalho, que é apresentar uma solução que simula o ambiente de sala de aula não interativo através da Internet, combinando recursos de áudio e vídeo com slides de uma apresentação, utilizando se apenas tecnologias livres. Além do objetivo acima definido, e de características inerentes a ele, como o baixo custo devido ao fato do uso de tecnologias livres, outros objetivos podem ser ressaltados. O primeiro deles é atingir taxas de bits baixas em relação à qualidade do vídeo, do áudio e dos slides, permitindo que diversos clientes possam ser atendidos ao mesmo tempo. O segundo objetivo é atender a vários cenários distintos de captura dos slides, uma vez que a solução apresentada permite capturá los de três formas. O terceiro é fazer uma série de testes para validar a solução apresentada. Por fim, tem se também por objetivo avaliar e validar as tecnologias livres empregadas, para verificar se estas estão suficientemente maduras para utilização em ambientes de ensino à distância. A solução apresentada contempla todos os estágios do streaming, que vão desde a captura dos dados até a visualização do conteúdo por múltiplos clientes conectados através de uma rede de computadores. Com o trabalho aqui descrito, pretende se contribuir para o crescimento do ensino à distância, especialmente no que diz respeito à utilização e à difusão de tecnologias livres.

17 Os capítulos iniciais deste trabalho fornecem o embasamento teórico necessário para a compreensão dos capítulos posteriores, sendo que o Capítulo 2 apresenta a teoria sobre multimídia e o Capítulo 3 a teoria sobre streaming. Em seguida, no Capítulo 4, são apresentadas as tecnologias existentes relacionadas a este trabalho, tanto livres quanto proprietárias, bem como um maior detalhamento e uma justificativa da utilização das tecnologias livres empregadas no desenvolvimento do trabalho. Na seqüência, no Capítulo 5, é feita a especificação do ambiente de trabalho, onde são elencados os recursos necessários para a utilização da solução. No Capítulo 6 é feito o detalhamento da implementação, onde são apresentadas as adaptações necessárias a algumas tecnologias livres existentes e são dadas diretivas de configuração destas. No Capítulo 7 é feita uma análise da implementação, onde testes são apresentados juntamente com análises comparativas dos diversos cenários que foram montados para validar a solução. Por fim, no Capítulo 8, é apresentada uma conclusão, onde são comentados os resultados obtidos, são apresentadas as principais contribuições e são citadas possíveis continuações para este trabalho.

2 MULTIMÍDIA Este capítulo apresenta uma visão geral sobre multimídia, especialmente sobre os recursos de vídeo e áudio. Estas definições são fundamentais para dar embasamento à solução desenvolvida por este trabalho. 2.1 Vídeo A imagem em movimento, que também pode ser chamada de vídeo, é caracterizada por uma série de imagens projetadas de forma rápida e sucessiva para dar a idéia de movimento. 2.1.1 Vídeo analógico Quando as câmeras de vídeo foram desenvolvidas, as imagens de entrada eram capturadas, medidas e convertidas em uma série de valores elétricos. Estes valores, então, puderam ser disponibilizados, recebidos e convertidos novamente em imagens. O vídeo foi

19 dividido em quadros e cada quadro dividido em unidades que pudessem ser medidas, que são chamadas de linhas. Esta tecnologia é utilizada na televisão convencional até hoje. O NTSC (National Television Standards Committee)1 decidiu por 30 quadros por segundo como o padrão (baseado no valor de 60 Hz da corrente elétrica alternada), com cada quadro dividido em 525 linhas horizontais. Como a maioria dos países europeus tem a corrente elétrica em 50 Hz, houve a necessidade de criação de padrões com 25 quadros por segundo. Assim surgiram o PAL (Phase Alternation by Line)2 e o SECAM (Sequential Color and Memory)3, ambos com 625 linhas horizontais e 25 quadros por segundo. 2.1.2 Vídeo digital A revolução dos produtos eletrônicos nos últimos 50 anos introduziu o conceito de vídeo e áudio digital. Em vez de armazenar o áudio e o vídeo como valores elétricos ou ondas magnéticas, o sinal é representado como uma série de números (bits) armazenados em formato digital. Os formatos digitais têm alguns benefícios em relação aos analógicos, principalmente pelo fato de que as cópias entre este formato são idênticas, fato que não ocorre no sistema analógico, onde cada cópia sofre degradação, e, conseqüentemente, perde qualidade. Os formatos digitais também são mais fáceis de se editar e processar. 1 NTSC Sistema de televisão analógico usado principalmente nos Estados Unidos, Canadá e Japão. 2 PAL Sistema de televisão analógico usado principalmente na Europa. O Brasil usa uma variante do PAL chamada PAL M. 3 SECAM Sistema de televisão analógico usado principalmente na França e Rússia.

20 Antes de iniciar o processo de edição e codificação do vídeo, é necessário que este seja transferido para o computador num formato que ele possa manipular. Se a fonte geradora de vídeo for analógica, é necessária a utilização de algum equipamento, como uma placa de captura de vídeo, que transforme o sinal analógico em digital. Se a fonte geradora for digital, os dados simplesmente são transferidos digitalmente entre a fonte geradora e o computador através de canais de alta velocidade como FireWire1 ou USB 2.0. A digitalização de vídeo consiste em dividir cada quadro em uma série de pixels. O pixel é o menor ponto (ou menor elemento) de uma imagem com uma cor atribuída. A medição do número de pixels horizontais pelo número de pixels verticais é denominada resolução, e esta resolução define o tamanho de cada quadro. O problema é que digitalizar vídeo em alta qualidade significa usar a maior resolução possível, e quanto mais alta for a resolução, mais pixels existirão, o que significa armazenar mais dados. Um dos desenvolvimentos mais importantes dos últimos anos foi o do padrão IEEE 1394. Muitos computadores e câmeras estão vindo com este padrão embutido numa porta FireWire. Utilizando FireWire, o vídeo pode ser transferido digitalmente, direto da câmera para o computador. Quando um vídeo analógico é digitalizado, ocorrem perdas de informação, ou seja, degradação da qualidade. Quando o processo é inteiramente digital, os dados são transferidos fielmente para o computador. Neste caso, a única perda que ocorre é em relação à capacidade que o sensor da câmera digital tem de capturar o mundo real. 1 FireWire Interface serial do padrão IEEE 1394 para computadores pessoais e aparelhos digitais de áudio e vídeo que oferece comunicação de alta velocidade. É o padrão digital de conexão para áudio e vídeo mais utilizado profissionalmente.

21 2.1.3 Espaço de conversão de cor O mecanismo biológico responsável pela visão humana tem dois tipos de sensores: os bastões, que são sensíveis à intensidade da luz; e os cones, que são sensíveis aos níveis do espectro visível, composto pelas cores vermelho, verde e azul, que dão origem ao formato chamado de RGB1 (Red Green Blue). Para dar uma impressão realística das cores, o sistema de televisão é baseado no espectro de visão das três cores primárias, justamente composto pelas cores que formam o RGB. Para representar o formato RGB digitalmente, tipicamente são necessários 24 bits para cada pixel de uma imagem, sendo 8 para cada cor, especificando o nível de intensidade de cada uma delas. Uma das necessidades do padrão NTSC inicialmente era manter a compatibilidade com o sistema monocromático. Para este fim, o espaço de cor RGB pode ser mapeado (através de uma matriz de cor) em sinal de luminância (já utilizado pelo receptor monocromático) e duas diferenças de cor ou sinais de crominância. O componente de luminância é chamado de Y, e os componentes de cor são chamado de Blue Y (ou U) e Red Y (ou V). Este esquema de cores é chamado de YUV. Num processo reverso, o sinal original RGB pode ser derivado pelo receptor a partir do YUV. Este processo é ilustrado na FIGURA 1. 1 RGB Sistema de cor aditivo composto pelas cores primárias vermelho, verde e azul.

22 FIGURA 1 Os padrões RGB e YUV Fonte: Austerberry (2004) O esquema de cores YUV pode utilizar as limitações da visão humana para mostrar a mesma quantidade de informação perceptível em 24, 16, 12 ou 9 bits, com alguma degradação de qualidade. Isso é feito reduzindo os valores de crominância, que trazem menos informações perceptíveis ao sistema de visão humana que a luminância, e pode ser útil para reduzir a largura de banda necessária e a capacidade de armazenamento. 2.2 Áudio As tecnologias de armazenamento de áudio digital, como os discos compactos (CDs), já estão difundidas há muito tempo, e, principalmente pela qualidade e custo acessível, já se tornaram padrão de mercado.

23 2.2.1 Áudio digital Para digitalizar o áudio, é necessário converter as ondas elétricas do sinal analógico em informação digital. Para fazer isto, são feitas medições da amplitude da onda em diferentes pontos uniformemente espalhados no tempo e os valores resultantes são armazenados seqüencialmente. A FIGURA 2 ilustra esta transformação. FIGURA 2 Uma onda de som é digitalizada usando amostragem discreta Fonte: Mack (2002) Por natureza, o áudio digital envolve amostragem discreta. Cada caixa dentro da forma de onda original na FIGURA 2 representa uma amostra. Quanto mais alta for a taxa de amostragem, mais precisa será a forma de onda digitalizada. Isto ocorre devido à existência de um mecanismo de filtragem analógico inerente ao mecanismo de audição humana. Como pode ser visto na FIGURA 2, transformar um áudio analógico em digital resulta na representação de degraus para simular a curva original. Conforme a taxa de amostragem aumenta, o efeito de degraus fica menos perceptível, e o resultado digital se aproxima da curva original.

24 Outra medida importante no áudio digital é a largura de bits (ou bit length). Para cada amostra coletada, é necessário associar um número ao valor elétrico. A largura de bits se refere ao número de bits utilizados para armazenar esse valor numérico. Quanto mais bits forem usados, maior será a precisão. Os CDs, por exemplo, são amostrados numa taxa de 44.100 amostras por segundo (44.1 khz). Em relação à largura de bits, os CDs utilizam 16 bits de largura para cada amostra. Isto é considerado suficiente para capturar o espectro audível completo. 2.2.2 Canais de áudio O áudio pode ser transmitido como um canal simples, chamado de monofônico (ou mono), ou pode ter uma informação de alcance espacial através da utilização de multicanais. Quando um som tem dois canais, ele é chamado de estéreo, e esse é o padrão mais popular para a reprodução de áudio digital. O cinema e os home theaters introduziram o áudio surround, que simula um som envolvente, como se o ouvinte estivesse dentro do som. O surround geralmente está no formato 5.1, que se refere a cinco canais mais um canal de efeitos de baixa freqüência (graves).

25 2.3 Compressão de dados A compressão de dados reduz o número de bits utilizados para representar uma informação. As técnicas utilizadas para comprimir vídeo e áudio são diferentes, ou seja, deve se procurar uma técnica de compressão adequada para cada situação. Os algoritmos de compressão de dados são classificados de duas maneiras: sem perda, onde o arquivo original pode ser recriado exatamente a partir de um arquivo comprimido e com perda, onde o arquivo descomprimido é uma aproximação do arquivo original o quanto aproximado é em relação ao original depende da quantidade de compressão utilizada. 2.3.1 Compressão sem perda A compressão sem perda tira vantagem da informação redundante. Esta redundância pode ser representada de uma maneira mais eficiente. Por exemplo, a seqüência AAAAAAAA pode ser armazenada como 8A. Esta técnica é conhecida como compressão RLE (Run Length Encoding). Neste exemplo, em vez de armazenar oito caracteres, é necessário armazenar apenas dois. Neste caso simples, a necessidade de armazenamento é reduzida em 75%. Outra técnica de compressão sem perda é conhecida como entropia. Entre estas técnicas, está a codificação de Huffman, nomeada pelo seu criador, David Huffman. Esta técnica se baseia na distribuição de valores para garantir maior eficiência, ou seja, valores repetidos, muitas vezes, têm menor representação de bits.

26 Os algoritmos de compressão de arquivos utilizam técnicas de compressão sem perdas. Os arquivos originais podem ser recriados exatamente como estavam antes de serem comprimidos. A compressão de dados sem perda é útil para manter a qualidade, porém a proporção de compressão costuma ser moderada. 2.3.2 Compressão com perda A compressão com perda é caracteriza por altas proporções de compressão através do descarte de informações que são consideradas redundantes ou desnecessárias. Pelo fato de algumas informações serem descartadas, a recriação da informação original se torna impossível. Algumas vezes os algoritmos de compressão com perda precisam ser severos. Em casos de extrema compressão, estes algoritmos fazem o melhor para reter a qualidade original, mas podem ser forçados a descartar uma grande quantidade de informação. O objetivo em casos como este é tentar manter a informação mais importante e descartar o resto, fazendo com que a perda se torne menos perceptível. Inevitavelmente, com o aumento da complexidade dos algoritmos de compressão com perda, aumenta também a quantidade de recursos de processamento necessários para comprimir os dados.

27 2.3.3 Compressão e codificação de vídeo Um vídeo digitalizado bruto, ou seja, sem nenhuma compressão, com uma resolução de 640x480 pixels, com 30 quadros por segundo, pode ter seu tamanho obtido através do seguinte cálculo: 640 * 480 * 30 = 9.216.000 pixels 9.216.000 * 24 bits (RGB) = 221.184.000 bits 221.184.000 / 8 = 27.648.000 bytes 27.648.000 / 1024 / 1024 = 26,4 MB Em apenas um segundo de um vídeo bruto em formato VGA, tem se 26,4 MB de informação, o que torna praticamente inviável o seu armazenamento em termos de volume de dados, pois uma hora de vídeo ultrapassa 92 GB de informação. Inevitavelmente é necessário encontrar uma forma de reduzir este volume de dados. Caso a resolução do vídeo seja maior, como um vídeo de alta definição (1920x1080), este problema é ainda mais crítico. As formas mais imediatas para reduzir os dados são o tamanho da tela e a relação de quadros. A redução desses dois fatores não caracteriza uma compressão de dados, e sim um descarte de informação ajustado de acordo com a necessidade da aplicação. Num exemplo simples, se for multiplicado um quadro de 640x480, teremos mais de trezentos mil pixels de informação. Se o quadro for dividido pela metade, ou seja, 320x240, teremos apenas um quarto dos pixels em relação ao quadro anterior. Essa é uma definição importante para se definir um meio termo entre o tamanho do quadro e a qualidade do vídeo. Outra forma de economia é reduzir a relação de quadros por segundo. Qualquer valor acima de vinte quadros por segundo é adequado para que o olho humano tenha a idéia de

28 movimento. Porém, para conteúdos que têm pouco movimento, é seguro reduzir o número de quadros obtendo uma percepção de movimento aceitável. Só para se ter uma idéia, se aquela resolução inicial de 640x480, com trinta quadros por segundo, for reduzida para 160x120, com dez quadros por segundo, teremos apenas 3,125% de informação em relação ao início. Após este redução de informação, caso ela seja necessária, inicia se o processo de compressão propriamente dito. Os sistemas de compressão de imagem exploram o mecanismo de percepção visual para remover informações redundantes, mas produzem uma experiência visual convincente. Existem diversas técnicas que os algoritmos de compressão de vídeo utilizam para economizar informação. Entre elas está a compressão interframe, que também é conhecida por compressão temporal. Esta técnica conta com o fato de que boa parte (ou todo) do conteúdo do vídeo pode permanecer inalterado entre os quadros, ou seja, que haja uma redundância entre as imagens. Desta forma, é armazenada apenas a diferença entre os quadros, e o que permaneceu inalterado é descartado. Como existe erro associado à localização das redundâncias, os algoritmos que utilizam essa técnica precisam inicialmente comprimir um quadro completo para estabelecer os elementos presentes na imagem para então calcular as diferenças entre os quadros. O quadro estabelecido é chamado de quadro de referência e os outros são chamados de quadros de diferença. Em vídeos onde há pouco movimento, essa economia pode ser significativa, pois não será necessário utilizar muitos quadros de referência. Outra técnica importante é a compressão intraframe. Esta técnica se baseia na compressão de cada quadro separadamente, ao contrário da interframe, que utiliza a relação entre quadros. Como exemplos de mecanismos que utilizam essa técnica pode se citar o PNG e o JPEG.

29 Além das técnicas citadas, existem outras que exploram as redundâncias existentes em um sinal de vídeo. Basicamente a redundância pode ser classificada em espacial, temporal, de percepção e estatística. A redundância espacial é explorada através de técnicas como a compressão intraframe. A temporal é explorada por compressões como a interframe. A redundância de percepção explora o sistema de visão humano, que não trata todos os tipos de informação visual com a mesma relevância, como, por exemplo, a baixa habilidade de perceber detalhes de cor se comparados com luminosidade. Por último, vem a compressão estatística, que busca repetições (já visto na compressão sem perda) no sinal de vídeo para economizar informação. Todas estas técnicas podem ser combinadas para que se obtenha um resultado final mais satisfatório. Os programas que realizam esta compressão são chamados de codec. Eles utilizam uma série de algoritmos matemáticos que transformam dados de um formato para outro. Seu nome é dado através de uma abreviação de codificação/decodificação. Os codecs são utilizados para reduzir o tamanho das informações de vídeo e áudio originais (brutos). Posteriormente, eles são utilizados para converter os dados comprimidos de volta ao formato original para que possam ser visualizados pelo cliente. Para que isto seja possível, o mesmo codec que foi utilizado para comprimir os dados deve ser utilizado para os descomprimir. Os codecs costumam combinar diversas técnicas de compressão de dados para conseguir um maior desempenho na compactação, e podem ser caracterizados como simétricos ou assimétricos. Um codec simétrico necessita de menos processamento no servidor, porém, a quantidade de processamento utilizada na codificação e na decodificação

30 são semelhantes. Já os codecs assimétricos utilizam técnicas de compressão que exigem mais tarefas que as de descompressão. Isto significa que o processo de codificação necessita de mais processamento que a decodificação. 2.3.4 Compressão e codificação de áudio Um áudio digitalizado bruto com uma taxa de amostragem de 44.1kHz, com uma largura de 16 bits, com dois canais, pode ter seu tamanho obtido através do seguinte cálculo: 44.100 * 16 * 2 = 1.411.200 bits 1.411.200 / 8 = 176.400 bytes 176.400 / 1024 = 172,27 KB 172,27 * 60 / 1024 = 10MB Em um minuto de um áudio bruto em formato PCM, teremos aproximadamente 10MB de informação. Neste caso, o problema de armazenamento não é tão crítico quanto do vídeo, mas uma transmissão através da Internet utilizando estes dados se torna inviável. Uma técnica simples para diminuir a quantidade de informação relativa ao áudio é diminuir o número de canais. Por exemplo, se um sinal estéreo for convertido num sinal monofônico, a quantidade de informação necessária para representar o áudio será reduzida pela metade. Outro fator determinante para a diminuição dos dados é taxa de amostras. Este valor pode ser restringido de acordo com o tipo de conteúdo que está sendo comprimido. Por

31 exemplo, para voz humana, 8kHz é suficiente, mas para sons de alta definição é necessário utilizar freqüências maiores que 44kHz, como é utilizado no CD. Após esta redução de informação, inicia se o processo de compressão propriamente dito. Na compressão de áudio, o objetivo é manter a taxa e a dinâmica da freqüência original. Se a taxa de bits por segundo for alta, isso é facilmente atingido. Porém, conforme a taxa de bits for diminuindo, esse objetivo fica difícil de ser atingido, e torna se necessário abrir mão de alguns dados. As técnicas de compressão baseadas na percepção auxiliam na manutenção da fidelidade tomando decisões sobre o que pode seguramente ser descartado e para que parte do áudio é necessário destinar mais bits. Muitas características da audição humana também são exploradas pelas técnicas de compressão baseadas na percepção. O estudo desta audição é chamado de psicoacústica. Entre os fatores que são explorados por esta técnica estão a faixa de freqüência que o ouvido humano pode detectar, com a definição do ponto mínimo da audição, onde freqüências acima e abaixo dessa faixa podem ser descartadas, o mascaramento, onde sons muito altos fazem outros de volume mais baixo se tornem inaudíveis, tornando possível que esses possam ser descartados, e também a curva de resposta da audição humana, que não é linear. Os codecs utilizados para vídeo e áudio são diferentes, pois as técnicas de compressão também são diferentes. No caso dos codecs de áudio, existe um detalhe que torna a codificação mais complexa. As técnicas que os codecs utilizam para comprimir música e voz são diferentes. Em virtude disto, existem codecs de áudio específicos para voz e outros para propósito geral.

32 2.4 Containers de dados Depois de o áudio e o vídeo serem codificados, eles precisam ser colocados encapsulados. Este encapsulamento, que podem conter vários tipos de dados, geralmente áudio e/ou vídeo comprimidos por um codec, são chamados de containers. Os containers empacotam o áudio e o vídeo usando marcações ou índices. Isto permite que diversos áudios e/ou diversos vídeos possam estar dentro de um único arquivo, tornando possível, por exemplo, que um vídeo possa ser transmitido em múltiplas línguas. Os containers mais modernos possibilitam também que o arquivo contenha outros tipos de conteúdo, como legendas e imagens.

3 STREAMING Neste capítulo são apresentados os conceitos de redes de computadores e de streaming. Estes assuntos também são fundamentais para dar embasamento à solução proposta por este trabalho. 3.1 Redes de computadores Devido ao rápido progresso tecnológico, principalmente no campo da informação, todas as áreas da tecnologia estão convergindo rapidamente. À medida que cresce nossa capacidade de colher, processar e distribuir informações, torna se ainda maior a necessidade de formas de processamento de informações cada vez mais sofisticadas (Austerberry, 2004). Para atender essas necessidades, surgiram as redes de computadores, que tornaram possível a troca de informações entre uma série de computadores interconectados. Com o passar dos anos, surgiu a necessidade de que as redes de computadores, além de interligarem computadores próximos, também pudessem interligar computadores ou redes

34 mais distantes. A partir dessa necessidade, com a conglomeração de diversas redes de computadores, surgiu a Internet. Através da Internet, é possível que pessoas e empresas de todo o mundo estejam interligadas e possam trocar informações e compartilhar recursos. Esta interligação possibilita, entre outras coisas, o acesso a informações remotas, a comunicação entre pessoas, a diversão interativa, podendo até, em alguns casos, substituir a presença física. As redes de computadores possibilitam a utilização de computadores centralizadores de serviços, que são chamados de servidores. Esses computadores centralizam serviços para uma rede local, como compartilhamento de arquivos e autenticação ou até mesmo para a Internet, como um servidor de páginas de conteúdo ou um servidor de correio eletrônico. Os usuários que utilizam esses serviços, através de seus computadores pessoais, são os clientes. No modelo cliente/servidor, a comunicação costuma se dar através de uma mensagem de solicitação do cliente enviada ao servidor, pedindo para que alguma tarefa seja executada ou alguma informação seja disponibilizada. Em seguida, o servidor atende à requisição e envia a resposta. Geralmente, há muitos clientes usando um pequeno número de servidores (Tanenbaum, 1997). Este modelo é ilustrado na FIGURA 3. FIGURA 3 O modelo cliente/servidor Fonte: Tanenbaum (1997)

35 Para a comunicação entre cliente e servidor, a definição de largura de banda é um característica fundamental. A largura de banda se refere à taxa de dados que são enviados num intervalo de tempo, sendo calculada através do número de bytes transmitidos por segundo em uma direção durante um determinado intervalo de tempo. 3.2 Streaming O áudio e o vídeo são meios mais naturais de comunicação do que o texto e a imagem, já usados por décadas na Internet. A multimídia está e estará cada vez mais presente na Internet, principalmente através das páginas Web. A tendência é que as páginas estáticas, aos poucos, sejam substituídas por páginas dinâmicas com cada vez mais recursos multimídia. Uma boa alternativa para contribuir com isso é o streaming, que é a tecnologia que possibilita o envio de informações multimídia (geralmente vídeo e áudio) através de uma rede de computadores. O streaming é caracterizado pelo fato de o cliente receber o conteúdo multimídia como um um fluxo de informação contínuo. Também é caracterizado por não ser necessário que todos os dados cheguem no cliente, pois a apresentação pode começar assim que chegarem os primeiros dados. Depois que o cliente visualiza o conteúdo do streaming, os dados são descartados. Esta característica de descarte de dados é inédita do streaming. Na televisão convencional, o aparelho doméstico apenas recebe o sinal, o que caracteriza uma conexão de apenas uma direção. No streaming, uma conexão bidirecional é mantida enquanto o espectador estiver recebendo informação, o que possibilita adicionar

36 recursos de interatividade ou até mesmo saber quantos espectadores estão conectados em determinado momento. Conforme os equipamentos relacionados à multimídia foram evoluindo, a qualidade e a fidelidade das imagens também foram aumentando, e essa é uma relação que deve se manter com o surgimento de novas tecnologias. Ironicamente, o streaming inverteu essa tendência. Enquanto clientes e produtores de conteúdo necessitam da melhor qualidade possível, as limitações das larguras de banda impuseram severas restrições na taxa de bits por segundo do streaming, o que afeta sua qualidade. O cabo de guerra entre qualidade e largura de banda é o que direciona o desenvolvimento do streaming atualmente. Conforme a tecnologia melhora e a largura de banda aumenta, essa relação tende a mudar, e, portanto, pode ser vista como um empecilho temporário. Novas tecnologias estão começando a auxiliar na inversão desta relação. 3.2.1 Aplicações do streaming Potencialmente, o streaming pode ser utilizado em ensino à distância (aulas, palestras, treinamentos), entretenimento, publicidade e comunicação corporativa (relações humanas, monitoramento, relacionamento com imprensa). O ensino à distância deve crescer exponencialmente com a consolidação do streaming como uma alternativa de disponibilização de informação. Ainda hoje, boa parte do ensino à distância é baseado em correio eletrônico e conteúdos estáticos. Com streaming, é possível que a informação seja disponibiliza de uma forma mais eficaz, ou seja, em tempo real com recursos de interatividade.

37 A FIGURA 4 ilustra algumas aplicações do streaming, neste caso como uma alternativa para o CD ROM e para o DVD, e principalmente para o videocassete e para o conteúdo disponibilizado via satélite, nesses últimos casos substituindo a televisão convencional. FIGURA 4 O streaming como uma alternativa para transmissão multimídia Fonte: Austerberry (2004)

38 3.2.2 A arquitetura do streaming Basicamente, existem quatro estágios que definem a arquitetura de um streaming, desde sua captura até sua visualização. A FIGURA 5 ilustra esta arquitetura. FIGURA 5 Os quatro estágios do streaming Fonte: Austerberry (2004) O estágio de captura capta o áudio e o vídeo do microfone e da câmera. O estágio de codificação processa o áudio e o vídeo e os encapsula em um arquivo. Posteriormente, este arquivo é enviado para um servidor de conteúdo, que pode transmiti lo em tempo real ou armazená lo para transmissão em outro momento. O último estágio, o de visualização, recebe o streaming e é responsável por descompactar o arquivo e reproduzir o vídeo e o áudio no cliente.

39 3.3 Os estágios de captura e codificação Antes do áudio e do vídeo serem transmitidos via streaming, eles precisam passar por uma série de estágios de processamento. Os estágios de captura e codificação de vídeo começam com alguma fonte geradora de imagem ou de som, como uma câmera, por exemplo. O segundo passo é capturar o vídeo ou o áudio e transformá los em vídeo bruto ou em áudio bruto, ou seja, nem nenhuma compactação, processo que é chamado de captura de vídeo ou digitalização. Finalmente, ele deve ser processado pelo codec, que comprime os dados conforme for indicado pelo administrador do sistema para atender a largura de banda desejada. 3.4 O estágio armazenamento e/ou distribuição O segundo estágio do streaming é o de armazenamento e/ou distribuição. Depois de criado o arquivo com os dados de vídeo e áudio, esse arquivo deve ser enviado a um servidor para distribuição através de uma rede de computadores ou armazenado para posteriormente ser distribuído sob demanda. O processo que permite a disponibilização do conteúdo através da rede é o streaming propriamente dito. O computador que executa esse processo pode ser o mesmo que executa o processo de captura e codificação. Um servidor de streaming é mais do que apenas um simples servidor de arquivos, pois ele controla a entrega do fluxo de informação em tempo real. Para disponibilizar o streaming, é necessária uma conexão persistente entre o cliente e o servidor e um fluxo contínuo de

40 dados. Se algum problema ocorrer, o serviço pode ser comprometido, o que pode resultar em um vídeo distorcido ou trancado ou em um áudio mudo ou com ruídos. O problema é que a Internet não foi originalmente projetada para suportar fluxos contínuos através de conexões persistentes. Uma série de desenvolvimentos estão ajudando a melhorar a qualidade de entrega. Um deles é o aumento da largura de banda das conexões com a Internet. Novos padrões estão se difundindo e as chamadas conexões de banda larga (conexões mais rápidas que as discadas) se popularizando. Um ponto importante da distribuição é a capacidade de atendimento de clientes. Este detalhe é muito importante para definir a taxa de bits do streaming na hora da codificação. Por exemplo, se o servidor tiver uma largura de banda de saída de 1Mbit/s, e o streaming estiver sendo codificado numa taxa de bits de 100kbps, no máximo dez clientes poderão ser atendidos simultaneamente. Se o streaming for codificado em 50kbps, vinte clientes poderão ser atendidos simultaneamente. Esta é uma decisão importante a ser tomada na hora de montar um serviço de streaming, sempre encontrando uma melhor relação custo x benefício. A FIGURA 6 ilustra um streaming desde a captura até a sua visualização. Primeiramente o áudio e o vídeo são digitalizados e comprimidos. Depois eles são unidos num container de dados. Posteriormente esse container é empacotado para que possa ser enviado através de uma rede de computadores. O passo seguinte é o tráfego dos pacotes de sua origem até seu destino através de uma rede IP (Internet Protocol). Já no cliente, container é desempacotado. Por último, o áudio e o vídeo são separados e descomprimidos para então serem reproduzidos.

41 FIGURA 6 O streaming desde a captura até a visualização Fonte: Austerberry (2004) Um streaming pode ser caracterizado como sendo em tempo real ou sob demanda.

42 3.4.1 Streaming em tempo real Um streaming pode ser considerado em tempo real quando a informação está sendo transmitida direto da fonte de captura para o espectador, ou seja, sem passar por um processo intermediário de gravação. Um sinônimo para streaming em tempo real é streaming ao vivo. O processo é similar à televisão convencional, onde o conteúdo é capturado e distribuído através de uma rede até o receptor doméstico. Nesta categoria do streaming, todos os espectadores assistem ao mesmo conteúdo ao mesmo tempo. Uma ilustração dessa categoria é mostrada na FIGURA 7. FIGURA 7 Streaming em tempo real Fonte: Austerberry (2004) 3.4.2 Streaming sob demanda O streaming pode ser considerado sob demanda quando o conteúdo disponibilizado ao espectador está previamente gravado. Nesta categoria, o conteúdo é disponibilizado ao cliente do ponto que ele escolher. É possível que a qualquer momento o espectador possa assistir a um vídeo, e, também a qualquer momento, pausá lo. Este é o processo utilizado por grandes sites concentradores de arquivos multimídia. Este processo difere um pouco do download

43 tradicional, pois o conteúdo não precisa ser inteiramente baixado para ser assistido. Uma ilustração dessa categoria é mostrada na FIGURA 8. FIGURA 8 Streaming sob demanda Fonte: Austerberry (2004) 3.5 O estágio de visualização O último estágio do streaming é a visualização. Este processo é executado pelo reprodutor multimídia, que é equivalente ao receptor de televisão. Para que o reprodutor multimídia interprete os dados, é necessário que o mesmo codec que foi utilizado para codificar os dados seja utilizado para os decodificar.

44 Um reprodutor multimídia pode ser um software independente, instalado no sistema operacional ou um plug in1 em um navegador Web. Neste último caso, o streaming é tratado como parte de uma mídia rica (que pode ser composta por texto, imagem, som e vídeo), ou de uma página Web dinâmica. Atualmente este processo não se restringe a computadores normais. Já é possível que os streamings sejam disponibilizados para a televisão digital e para redes sem fio, onde celulares 3G e computadores de mão (PDAs) podem interpretar os dados. A FIGURA 9 ilustra esta relação. FIGURA 9 Reprodução de multimídia via streaming Fonte: Austerberry (2004) 1 Plug in Extensão que fornece recursos adicionais a um programa de computador, geralmente desenvolvido por terceiros.

45 3.6 Taxa de bits constante e variável Como a compressão de vídeo e de áudio se baseia, entre outras coisas, em redundância na informação, quanto ela ocorre bastante, a qualidade fica melhor, pois não é necessário descartar muita informação para atingir a taxa de bits especificada. Porém, quando há pouca redundância, é necessário descartar muita informação para atingir a taxa de bits especificada, o que acaba fazendo com que a qualidade piore. A maioria dos codecs de streaming, por padrão, codificam em taxa de bits constante (CBR Constant Bit Rate). Isto significa que sempre, em um determinado intervalo de tempo, teremos a mesma quantidade de dados. Por exemplo, em um streaming de 56kbps, teremos sempre 56.000 bits por segundo. Quando a largura de banda disponível para distribuir o streaming for limitada, isto é uma vantagem, pois é possível saber exatamente quantos clientes poderão ser atendidos pelo serviço de streaming, supondo que a rede esteja sempre disponível. Além da codificação em taxa de bits constante, existe também a codificação em taxa de bits variável (VBR Variable Bit Rate). O vídeo MPEG 2, por exemplo, que é utilizado no DVD, tem uma taxa de bits variável, dependendo da entropia do conteúdo original. Para evitar a queda de qualidade, a taxa de bits do DVD aumenta quando há muito movimento na cena, passando do valor típico de 3Mbit/s para até 8Mbit/s. O resultado final é uma qualidade constante para quem está visualizando o vídeo. Na codificação do DVD, para otimizar a codificação com um tamanho de arquivo específico (capacidade do DVD) é necessário usar a técnica de duas passadas. A primeira apenas analisa o conteúdo e a segunda codifica utilizando os parâmetros da primeira.

46 A técnica de taxa de bits variável tem sido utilizada por alguns codecs de streaming, conseguindo melhorar a qualidade quando comparado com os mecanismo CBR. Os codecs utilizam o servidor e o buffer do cliente para usar uma taxa de bits média, simulando assim uma taxa de bits constante, o que para a rede de computadores fica imperceptível, ou seja, semelhante a uma taxa de bits fixa. A FIGURA 10 ilustra dois streamings, sendo um constante e outro variável. Pode se perceber que, durante as cenas de ação, a qualidade do streaming VBR é melhor que a do CBR. FIGURA 10 Taxa de bits varíavel e constante Fonte: Austerberry (2004)

4 TECNOLOGIAS EXISTENTES Neste capítulo são listadas as tecnologias existentes de codificação de vídeo, de codificação de áudio e de containers de dados, tanto proprietárias quanto livres. Na seqüência é apresentada uma visão mais aprofundada das tecnologias livres utilizadas para desenvolver a solução que este trabalho propõe, juntamente com a justificativa de escolha de cada uma delas. Por fim, são apresentadas as soluções proprietárias existentes para utilização em ensino à distância, que tem objetivo semelhante ao da solução livre apresentada por este trabalho. 4.1 Padrões e codecs de vídeo Existem diversos codecs de vídeo, entre proprietários, abertos e livres. Entre eles, muitos podem ser utilizados para streaming. Os principais padrões e codecs relacionados a esta tecnologia são listados a seguir. O H.261, criado em 1990, e o H.263, criado em 1995, são dois padrões de vídeo conferência que foram desenvolvidos pela ITU (International Telecommunications Union) quando começou a ficar muito óbvio que as

48 telecomunicações e as indústrias de computadores estavam andando cada vez mais lado a lado. Estes dois padrões formam a base de diversos outros codecs. A entidade MPEG (Moving Picture Experts Group) foi formada no final dos anos 80 para desenvolver um sistema para codificar os vídeos a serem usados pelas aplicações do CD ROM. O MPEG 1 foi criado em 1992 e foi inicialmente projetado para trabalhar com uma taxa de bits de 1.5Mbit/s (velocidade máxima de leitura do CD ROM na época) e fornecer qualidade semelhante ao VHS. O MPEG 2, criado em 1995, é uma evolução do MPEG 1, possibilitando a utilização de tamanhos de imagens e taxas de bits maiores, entre outros recursos. O padrão MPEG 2, até hoje, é muito difundido no mercado, e é a codificação de vídeo utilizada nos DVDs. O MPEG 4 engloba novos mecanismos de codificação de vídeo e áudio, assim como novas tecnologias de compressão de vídeo que tratam diferentes elementos no vídeo como objetos separados. Isto permite, por exemplo, que personagens e fundo de cena sejam tratados isoladamente com recursos de taxa de bits e qualidades diferentes. Entre as implementações de codecs de vídeo mais difundidas do MPEG 4 estão o DivX e o Xvid. O DivX é um codec de vídeo proprietário,. O Xvid é um codec de vídeo aberto e livre de patentes. Os dois disputam o posto de codec mais utilizado do padrão MPEG 4. O H.264 é um padrão para compressão de vídeo, também conhecido como MPEG 4 parte 10 ou AVC (Advanced Video Coding). A intenção do projeto H. 264/AVC foi criar um padrão capaz de fornecer boa qualidade de vídeo com uma taxa de bits muito baixa em relação aos padrões já existentes, como o MPEG 2 e o H.263, que gerou um aumento significativo na complexidade computacional do codificador. Outra meta do projeto foi fazer um padrão que fosse compatível com todas as

49 necessidades, isto é, compatível com vídeos de baixa e alta taxa de bits ou com baixa e alta resolução. O H.264 é o padrão de codificação de vídeo mais promissor do mercado e vem sendo amplamente adotado. Exemplos desta adoção são as especificações dos padrões de televisão digital e a compatibilidade com o Flash, da Macromedia, o que está fazendo com que portais concentradores de vídeos, como o YouTube, migrem para este formato. Um exemplo da implementação deste padrão é o x264. O padrão Ogg é um formato aberto e livre de patentes, mantido pela fundação Xiph.Org1. O principal codec de vídeo que utiliza esse padrão é o Theora. Outro codec desse formato é o Tarkin, que ainda está em fase de desenvolvimento, e, portanto, pouco difundido. A Tecnologia Windows Media da Microsoft tem uma família de codecs com uma série de recursos internos de tecnologias de terceiros. Os principais codecs de vídeo desse padrão são o Windows Media Video 9 e o Microsoft MPEG 4 V3. As tecnologias QuickTime, da Apple, já são utilizadas na criação multimídia há muitos anos, e, de fato, o formato de arquivo do QuickTime foi usado como base para o formato de arquivo do padrão MPEG 4. Um dos principais codecs de vídeo do Quicktime é o Sorenson. A TABELA 1 apresenta uma comparação entre os principais codecs de vídeo com perda existentes no mercado em relação à especificação de padrão (se é aberto ou fechado) e em relação à dependência de patentes. 1 Xiph.Org Fundação sem fins lucrativos dedicada a proteger as fundações de multimídia via Internet do controle da iniciativa privada.

50 TABELA 1 Comparação entre os codecs de vídeo mais utilizados Aberto Livre de patentes Windows Media Video não não Sorenson não não DivX (MPEG 4) sim não x264 sim não Xvid (MPEG 4) sim não MPEG 1/MPEG 2 sim não Theora sim sim Tarkin sim sim Codec 4.2 Padrões e codecs de áudio Assim como no vídeo, existem diversos codecs de áudio proprietários, abertos e livres. Muitos deles podem ser utilizados por um streaming. Os principais padrões e codecs relacionados a essa tecnologia são listados a seguir. Desde sua versão inicial, o MPEG já definia um padrão de codificação para áudio e para vídeo. Do padrão MPEG 1, surgiu o codec MP3, que é uma abreviação de MPEG 1 Layer 3, ou seja, utiliza a terceira camada do algoritmo MPEG de áudio. O MP3 é o codec de áudio mais difundido, amplamente usado na Internet e em aparelhos eletrônicos. Apesar de já ser bem antigo e de ser menos eficiente que boa parte dos codecs de áudio existentes atualmente, o MP3 ainda é padrão de mercado. Outro codec da família MPEG muito importante é o AAC (Advanced Audio Coding). Ele é compatível com os padrões MPEG 2 e MPEG 4 e foi criado para ser o sucessor

51 do MP3. O AAC possui uma qualidade bem superior à do MP3 para a mesma taxa de compressão. Dois codecs do padrão Ogg também muito importantes são o Vorbis e o Speex. O Vorbis é um codec de áudio de propósito geral, enquanto o Speex é um codec especializado em compressão de voz humana. Outro codec importante e muito utilizado pelo fato de utilizar compressão sem perda é o FLAC (Free Losless Audio Codec). Esse codec tem um formato de arquivo próprio, mas pode ser disponibilizado também no formato Ogg. Dos formato desenvolvidos pela Microsoft, os codecs de áudio mais importantes são o Windows Media Audio 9 para música e o ACELP.net para voz. Do formato da Apple, os codecs de áudio mais utilizados são o Qdesign para música e o QualComm PureVoice (QCELP) para voz. A TABELA 2 apresenta uma comparação entre os principais codecs de áudio existentes no mercado em relação à especificação de padrão (se é aberto ou fechado), em relação à dependência de patentes, ao tipo de compressão de dados e finalidade.

52 TABELA 2 Comparação entre os codecs de áudio mais utilizados Codec Aberto Livre de patentes Tipo de compressão Utilização Windows Media Audio não não com perda geral ACELP.net não não com perda voz Qdesign não não com perda geral QCELP não não com perda voz MP3 sim não com perda geral AAC sim não com perda geral Vorbis sim sim com perda geral Speex sim sim com perda voz FLAC sim sim sem perda geral 4.3 Containers de dados Existem diversos containers que podem ser utilizados para streaming. A maioria deles já foi citado acima na definição dos padrões dos codecs. Os principais e suas respectivas extensões de arquivo são os seguintes: MPEG 4,.mp4; MPEG 2,.mpeg ou.mpg; Formato de sistemas avançado da Microsoft,.asf; Quicktime,.mov; Ogg,.ogg.

53 A TABELA 3 apresenta uma comparação entre os principais containers existentes no mercado que suportam streaming em relação à especificação de padrão (se é aberto ou fechado), em relação à dependência de patentes e aos principais codecs suportados. TABELA 3 Comparação entre os containers mais utilizados para streaming aberto livre de patentes principais codecs suportados ASF não não Windows Media Audio (WMA), Windows Media Video (WMV) QuickTime não não MP3, WMA,Vorbis, AAC, FLAC, MPEG 1, MPEG 2, Xvid, DivX, WMV, Theora MPEG 4 sim não MP3, AAC, MPEG 1, MPEG 2, Xvid, DivX Ogg sim sim Vorbis, Speex, FLAC, Theora, Tarkin Container 4.4 Tecnologias livres Para o desenvolvimento do trabalho, foram utilizadas diversas tecnologias livres, que serão aprofundadas a seguir. 4.4.1 O Formato Ogg O Ogg é um padrão aberto de um formato de container, livre de patentes de softwares e projetado para streaming e manipulação de conteúdo multimídia. O Ogg é mantido pela fundação Xiph.Org.

54 O container Ogg pode multiplexar diversos codecs para áudio, vídeo, texto e metadados. Entre os codecs mais utilizados e difundidos compatíveis com este formato estão o Vorbis e o Theora, mas o Ogg também suporta outros codecs, como o MP3 e os do padrão MPEG 4. O formato de bitstream (fluxo de bits) do Ogg foi criado como sendo um framework para o desenvolvimento de uma série de componentes para a codificação e decodificação de conteúdo multimídia livres. Esse formato foi definido pela RFC 3533 (Pfeiffer, 2003) e seu conteúdo pela RFC 3534 (WALLEIF, 2003). O formato consiste em blocos de dados que são chamados de página Ogg. Cada página começa com a string OggS para identificar o arquivo como um formato Ogg. Um número de série e número de página no cabeçalho da página Ogg identificam cada página como um pedaço da seqüência de páginas que formam o bitstream. Múltiplos bitstreams podem ser multiplexados no arquivo onde páginas de cada bitstream são ordenadas pelo tempo do conteúdo de dados. Uma biblioteca livre chamada libogg está disponível para codificar e decodificar dados de um stream Ogg. O formato Ogg foi escolhido como container de dados por ser a melhor alternativa livre disponível, com mais recursos e mais largamente testada.

55 4.4.2 O Codec Vorbis O Vorbis é um codec de áudio com perda para propósito geral, aberto e livre de patentes. Foi desenvolvido e é mantido pela fundação Xiph.Org e foi concebido para concorrer com o MP3 e o AAC. Ele é mais comumente usado juntamente com o container Ogg, e juntos, ganham o nome Ogg Vorbis. O Vorbis foi projetado para permitir uma grande flexibilidade de codificação e também para permitir uma grande faixa de taxa de bits. Ele é um codec monolítico que executa transformações adaptativas pra frente (forward adaptive) e é baseado na Transformada Discreta de Cosseno Modificada. O Vorbis pode ser configurado para utilizar uma taxa de bits constante ou uma taxa de bits variável. Quando deseja se utilizar uma taxa de bits constante, a opção bitrate deve ser informada ao codec juntamente com o tamanho da taxa de bits. Esta opção força o codec a adaptar a codificação a uma taxa de bits específica, que será mantida ao longo do tempo. Para utilizar se uma taxa de bits variável, a opção quality deve ser informada ao codec, acompanhada de um número fracionário entre 0 e 1. Juntamente com a opção quality pode ser usada a opção max bitrate, que define um teto para a quantidade de bits por segundo quando se está utilizando uma taxa de bits variável. O Vorbis foi escolhido como codec de áudio também por ser a melhor alternativa livre disponível, com mais recursos e mais largamente testada.

56 4.4.3 O Codec Theora O Theora é um codec de vídeo com perda para propósito geral, aberto e livre de patentes. Ele é baseado no VP3, da empresa On2, e foi desenvolvido para concorrer com os codecs do padrão MPEG 4, RealVideo e Windows Media. Apesar do VP3 ser patenteado, a On2 tem permitido o seu uso livre de royalties, permitindo que o Theora e outros codecs baseados nele sejam usados para qualquer propósito. O Theora é mais comumente usado juntamente com o container Ogg e com o codec de áudio Vorbis, formando o Ogg Vorbis/Theora. Estes três componentes juntos formam a melhor opção multimídia entre as soluções existentes totalmente livres de patentes. Tal como vários outros formatos de imagem e vídeo, o Theora usa subamostragem da crominância, além de empregar o processo de estimativa/compensação de movimentos em blocos e um bloco DCT 8x8. Isto é comparável ao padrão MPEG 1/2/4. Além disso, o Theora suporta quadros internos (intra coded) e quadros preditivos para frente (forward predictive), mas não suporta quadros bi preditivos que podem ser encontrados em vários outros codecs de vídeo. Assim como o Vorbis, o Theora pode ser configurado para utilizar uma taxa de bits constante ou uma taxa de bits variável. Quando deseja se utilizar uma taxa de bits constante, a opção bitrate deve ser informada ao codec juntamente com seu tamanho em bits. Para utilizar se uma taxa de bits variável, a opção quality deve ser informada ao codec, juntamente com um número de 0 a 63, que define a faixa desde a codificação mínima até a máxima. Estas opções são mutuamente exclusivas.

57 Outras opções relativas aos quadros de referência e sensibilidade à movimentação também podem ser configuradas no Theora. O Theora foi escolhido como codec de vídeo também por ser a melhor alternativa livre disponível, com mais recursos e mais largamente testada. 4.4.4 O Framework Gstreamer O Gstreamer é um framework bastante versátil, aberto e livre de patentes, voltado para a criação de aplicações multimídia baseadas em streaming. A forma básica do Gstreamer se baseia no pipeline1 do Oregon Graduate Institute, com algumas idéias do DirectShow. O Gstreamer foi projetado para que aplicações para gerenciar vídeo e áudio (ou ambos) sejam escritas facilmente. Além de vídeo e áudio, o Gstreamer também pode processar qualquer tipo de fluxo de dados. Um dos usos mais óbvios para o Gstreamer é a construção de um reprodutor multimídia. Por padrão, ele já inclui componentes para construir um reprodutor com suporte a vários formatos e codecs, incluindo MP3, Ogg/Vorbis, MPEG 1/2, AVI, Quicktime, entre outros. Entretanto, o Gstreamer é muito mais que um reprodutor multimídia. Sua principal característica é que seus componentes podem ser mesclados e combinados através de pipelines, tornando assim possível a criação de editores de áudio ou vídeo. 1 pipeline Consiste em uma série de elementos de processamento organizados de forma que a saída de um elemento seja conectado à entrada do próximo.

58 O framework é baseado em plugins que provêm codificação e decodificação de vários codecs, entre outras funcionalidades. Conforme já foi dito, esses plugins são interligados através de pipelines. São esses pipelines que controlam o fluxo de dados. O GStreamer provê uma camada de abstração sobre componentes de manipulação para qualquer formato para o qual haja um plugin instalado. Com ele, as aplicações não precisam mais se preocupar em implementar decodificadores, mixers, sincronia ou codecs. Elas podem se concentrar apenas nas funcionalidades mais úteis para o usuário. Essa abstração, é representada na FIGURA 11. FIGURA 11 O Gstreamer perante seus plugins e outras aplicações Fonte: Lira (2006) O GStreamer é ainda multiplataforma e já roda nas seguintes arquiteturas e sistemas operacionais: Linux x86, PPC, ARM, Solaris x86 e SPARC, MacOSX, Microsoft Windows e IBM OS/400. No Gstreamer, tudo começa com uma fonte (source) de fluxo de mídia, que pode ser um arquivo, dados de áudio de um microfone ou da entrada da placa de som, dados de vídeo capturado por uma webcam, por uma placa de captura de vídeo ou uma placa FireWire, um

59 streaming da internet, entre outras fontes. O fluxo proveniente dessa fonte é recebido por um consumidor (sink). Essa interligação entre os elementos é apresentada na FIGURA 12. FIGURA 12 Interligação de elementos do Gstreamer Fonte: Lira (2006) Na nomenclatura do Gstreamer, cada componente, exceto o fluxo, é um Elemento (Element), e este deve ter pelo menos um source e um sink. No meio do caminho do fluxo para seu destino, podem haver elementos que recebem o fluxo em seu sink, façam alguma manipulação, e entreguem o resultado em seu source. Estes elementos são chamados de filtros (filters) e sua utilização geralmente é necessária. Sources e sinks são chamados conjuntamente de pads, que são as portas por onde passa o fluxo. Eles possuem capacidades de manipulação de dados bem específicas e podem restringir o tipo de dados que pode passar por eles. Os pads também fornecem informações sobre suas capacidades para elementos que queiram se conectar a eles. FIGURA 16 Demuxer de áudio e vídeo Fonte: Lira (2006) FIGURA 13 Representação de pipeline para reproduzir Ogg com vídeo e áudio Fonte: Lira (2006)

60 Interligando os diversos elementos do Gstreamer e seus plugins é possível criar diversas aplicações. Na FIGURA 13 é apresentado um pipeline para reproduzir um arquivo já salvo em formato Ogg, com um canal de vídeo Theora e um canal de áudio Vorbis. O pipeline inicia com o elemento filesrc que lê um arquivo do disco. Posteriormente, a fonte desse elemento é consumida pelo oggdemux que separa os canais de áudio e de vídeo do container Ogg. Neste momento, é aberta uma thread (tarefa concorrente) para cada canal. Na thread de vídeo, o elemento theoradec consome o vídeo do demuxer e o transforma em um vídeo de espaço de cor YUV. Na seqüência, o filtro ffmpegcolorspace converte o vídeo decodificado pelo theoradec no espaço de cor RGB, para que possa ser exibido na tela pelo ximagesink. Na outra thread, o elemento vorbisdec consome o áudio do demuxer e o transforma em um áudio do tipo com amostragem de ponto flutuante. Na seqüencia, o filtro audioconvert transforma o áudio em amostragem inteira e em seguida é reamostrado pelo audioresample para que possa ser reproduzido na placa de som pelo osssink. A escolha do Gstreamer se deve ao fato de ser uma ferramenta com muitos recursos e bastante flexibilidade, compatível com a codificação de formatos e codecs livres. Além disso, o Gstreamer vem sendo constantemente aprimorado, e é o framework multimídia mais completo e mais promissor que existe atualmente no mundo livre. 4.4.5 O Servidor Flumotion O Flumotion é um servidor de streaming multimídia, aberto e livre de patentes. Ele é escrito na linguagem Python e utiliza o framework Gstreamer para multimídia e o framework

61 Twisted1 para aplicações de redes de computadores. Em outras palavras, pode se dizer que ele é, entre outras coisas, uma interface operacional (front end) para esses dois frameworks. O Flumotion é uma ferramenta distribuída e extensível, e foi desenvolvida com o foco principal de ser fácil de ser utilizado. Ele permite que o trabalho de captura, codificação, empacotamento, distribuição e arquivamento seja feito por múltiplos computadores denominamos trabalhadores (workers), e tudo isso seja gerenciado por um computador denominado gerente (manager). Existe também uma ferramenta para administração do gerente totalmente gráfica, com um assistente de configuração que facilita o trabalho de produção de streaming. Além disso, o Flumotion tem uma arquitetura interna baseada em componentes que fazem o trabalho desde a produção até a distribuição ou arquivamento. É possível ainda, criar novos componentes ou alterar os já existentes com certa facilidade. Para captura, o Flumotion possui componentes para FireWire (vídeo e áudio), placas de captura de vídeo, webcams e placas de som, além de um componente que permite que parte de um pipeline do Gstreamer seja utilizada como fonte de captura. Para codificação e empacotamento, o Flumotion tem componentes para Theora, Vorbis e Speex, bem como um componente que junta o áudio e o vídeo (ou apenas um deles) no formato Ogg. Possui também componentes para distribuição de streaming e para gravar em disco. Além disso, possui também componentes para equilíbrio de cores e overlay (sobreposição no vídeo) de texto e imagem. A FIGURA 14 apresenta um exemplo de uma tela de administração do Flumotion em produção. O exemplo apresenta duas fontes de vídeo ( producer video1 e producer video2 ) e uma fonte de áudio ( producer audio ). Cada uma das fontes de vídeo é codificada para Theora pelo componentes encoder video1 e encoder video2 e a fonte de áudio, 1 Twisted Framework dirigido a eventos para aplicações de rede escrito em Python de código fonte aberto e livre de patentes.

62 encoder audio é codificada para Vorbis. Na seqüência, essas três fontes codificadas são encapsuladas num arquivo Ogg através do componente muxer audio video. Finalmente, o arquivo Ogg é distribuído via streaming pelo componente http audio video e ao mesmo tempo é armazenado pelo componente disk audio video. FIGURA 14 Exemplo de tela de administração do Flumotion A escolha do Flumotion se deve ao fato de ser uma ferramenta voltada para a usabilidade, por ter interface amigável e também por ser bastante flexível. O Flumotion também vem sendo constantemente aprimorado e se apresenta como a melhor ferramenta livre de alto nível para streaming de vídeo e áudio.

63 4.4.6 O applet Cortado O Cortado é um applet em Java, capaz de decodificar Ogg com Vorbis e Theora, aberto e livre de patentes. O Cortado contém, internamente, uma série de componentes que são implementações de algumas tecnologias para Java. O primeiro deles é o JST, uma implementação do Gstreamer para Java. Há também o jcraft, que é uma implementação de Ogg (denominada Jogg) e de Vorbis (denominada Jorbis) para Java. E ainda o jheora, uma implementação do Theora para Java. O Cortado não vem sendo mantido atualmente, sendo que a última alteração publicada por sua equipe de desenvolvimento foi em 28/05/2007. Mesmo assim, ainda se apresenta como uma solução viável para visualização de Ogg/Vorbis/Theora por rodar embutido em uma página HTML (HyperText Markup Language) através de um plug in de Java. Para a visualização, o applet Cortado foi o escolhido para ser adaptado, por ser o único reprodutor multimídia livre de Ogg com Vorbis e Theora que roda embutido numa página HTML. Com isso, é possível adicionar mais recursos a uma página HTML facilmente, como um chat, por exemplo, e criar um ambiente de ensino à distância mais completo, sem exigir mais do que um plug in de Java dos clientes.

64 4.4.7 O distribuidor Icecast O Icecast é um servidor de streaming multimídia aberto e livre de patentes, que suporta a distribuição de Ogg (Vorbis e Theora) e também MP3. Atualmente, o Icecast roda em GNU/Linux, FreeBSD, OpenBSD, Solaris e Microsoft Windows. O Icecast funciona como um multiplicador, que recebe dados na forma de streaming e multiplica o conteúdo para diversos clientes através de uma rede de computadores. Também é possível utilizar diversos servidores Icecast para replicar streamings, colocando um servidor como mestre e diversos outros como escravos, aumentando significativamente a largura de banda disponível para a distribuição. Internamente, o Icecast se baseia na biblioteca libshout, que é uma biblioteca de comunicação que gerencia as conexões, o tempo dos dados e previne perda de dados. Para a distribuição de streaming, dependendo da necessidade, a solução propõe o uso do Flumotion ou do Icecast. A proposição de mais de uma ferramenta se deve a diversos fatores. O primeiro deles é que o Gstreamer pode ser utilizado para captura e codificação sozinho, sem o Flumotion, e como ele não faz a distribuição, uma outra ferramenta, como o Icecast, é necessária. Outro fator muito importante é que o Icecast possui o recurso de replicação de servidores, tornando possível o aumento da largura de banda, característica que não é contemplada pelo Flumotion. Ainda é possível combinar as duas alternativas através de um componente do Flumotion que envia dados para o Icecast, permitindo assim que o Flumotion faça a distribuição para um rede interna, e que o Icecast faça a distribuição através da Internet.

65 4.4.8 Versões utilizadas Na TABELA 4 são apresentadas todas as versões das tecnologias escolhidas que foram utilizadas na implementação e nos testes. As versões citadas são as últimas publicadas por cada projeto no momento deste trabalho. No caso do gstreamer plugins bad, do Cortado e do Flumotion, foi utilizada a versão de desenvolvimento, para que as alterações feitas por este trabalho pudessem ser submetidas como contribuições para estes projetos. TABELA 4 Versões de tecnologias livres utilizadas Tecnologia Versão GNU/Linux Ubuntu 7.10 Ogg libogg 1.1.3 Vorbis libvorbis 1.2.0 Theora libtheora 0.0.0.alpha7 Gstreamer gstreamer 0.10.4.1, gstreamer0.10 ffmpeg 0.10.2.2, gstreamer0.10 plugins bad (versão CVS1 do dia 14 11 2007), gstreamer0.10 plugins base 0.10.14.1, gstreamer0.10 plugins good 0.10.6 Flumotion flumotion (versão SVN2 do dia 10 11 2007) Cortado cortado (versão SVN do dia 28 05 2007) Icecast icecast 2.3.5 1 CVS (Concurrent Versions System) Sistema de controle de versão que auxilia no desenvolvimento colaborativo de desenvolvedores espalhados geograficamente. 2 SVN (Abreviação de Subversion) Sistema de controle de versão que auxilia no desenvolvimento colaborativo de desenvolvedores espalhados geograficamente. É uma evolução do CVS.

66 4.5 Ferramentas proprietárias para ensino à distância Existem algumas soluções no mercado que permitem a sincronização de imagens (ou slides) com um streaming de vídeo e áudio. Além de fazer isso, essas ferramentas também contam com outros recursos, tornando o ambiente virtual ainda mais próximo do real. Todas estas soluções são proprietárias e, geralmente, têm um custo muito elevado. As mais utilizadas são descritas a seguir. Todas estas ferramentas têm recursos semelhantes, voltados principalmente à criação de salas de aula virtuais. 4.5.1 Adobe Acrobat Connect Professional Entre as ferramentas que simulam o ambiente de sala de aula virtualmente, o Adobe Acrobat Connect Professional, anteriormente conhecido como Macromedia Breeze, é o mais utilizado (Wagner, 2006). O Acrobat Connect Professional é uma solução de comunicação via Internet que permite encontros virtuais, salas de aulas virtuais e colaboração em grupo, podendo ser acessado em qualquer momento e de qualquer lugar, a partir de um navegador de Internet. Entre suas principais características estão a disponibilização de conteúdo de slides do Microsoft PowerPoint, vídeo e áudio ao vivo e sob demanda, conteúdo Adobe Flash, compartilhamento do ambiente de trabalho (captura de tela) ao vivo e chat multiusuário. A FIGURA 15 apresenta o ambiente de trabalho do Adobe Acrobat Connect Professional.

67 FIGURA 15 Tela de demonstração do Adobe Acrobat Connect Professional 4.5.2 Microsoft Office Live Meeting O Microsoft Office Live Meeting é um outra ferramenta comercial para conferência via Web que permite encontros virtuais, treinamentos e eventos. Entre suas principais características estão o compartilhamento de apresentação de slides, envio e recebimento de vídeo e áudio, participação em chat, edição de arquivos e compartilhamento de quadro branco. A FIGURA 16 apresenta a tela do Microsoft Office Live Meeting.

68 FIGURA 16 Tela de demonstração do Microsoft Office Live Meeting 4.5.3 Wimba Classroom O Wimba Classroom é uma ferramenta que permite ensinar e fazer encontros virtualmente. Suas salas de aulas virtuais suportam áudio, vídeo, compartilhamento de aplicações, conversas via chat e disponibilização de conteúdo. A FIGURA 17 apresenta uma tela de demonstração do Wimba, que tem toda sua interface via Web.

69 FIGURA 17 Tela de demonstração do Wimba Classroom 4.5.4 ilinc O ilinc é um conjunto de ferramentas da empresa de mesmo nome (Ilinc Communication), voltado para conferência via Web que permite encontros virtuais, conferências, ensino à distância e prestação de suporte a clientes. Entre suas principais características estão a transmissão de áudio e de vídeo, chat, disponibilização de conteúdo, compartilhamento de aplicações e de quadro branco. A FIGURA 18 apresenta uma tela de demonstração do LearnLinc, a ferramenta do conjunto ilinc responsável pelo ensino à distância.

70 FIGURA 18 Tela de demonstração do LearnLinc

5 ESPECIFICAÇÃO DO AMBIENTE DE TRABALHO A transmissão de vídeo e áudio através de um streaming pela Internet está se tornando mais comum a cada dia. Atualmente, existem diversas ferramentas que fazem esse trabalho, inclusive ferramentas livres de patentes e com padrões e códigos fonte abertos. Além disso, novas tecnologias e novas ferramentas para essa área surgem e são aprimoradas constantemente. Porém, a maioria das ferramentas disponíveis, especialmente as livres, limita se a transmitir apenas vídeo e áudio. Não é comum a existência de ferramentas livres com mais recursos, que além de vídeo e áudio permitam, por exemplo, transferir imagens em qualidade mais alta ao mesmo tempo que um vídeo e um áudio. Outra questão importante a ser levantada é a largura de banda disponível, principalmente no lado do cliente, que costuma ser relativamente pequena. Esta limitação geralmente implica em transmissões que utilizam baixas taxas de bits, e conseqüentemente, qualidades baixas, com vídeos de resolução em torno de 320x240. Com resoluções como essa é inviável transmitir slides de uma apresentação, uma vez que pequenos elementos tornam se ilegíveis.

72 Para resolver os problemas citados acima, este trabalho apresenta uma solução baseada na combinação e adaptação de algumas tecnologias livres, que tornam possível a utilização de vídeo e áudio juntamente com a transmissão de slides sincronizados. Esta solução simula um ambiente virtual de sala de aula não interativo, onde o aluno pode ter virtualmente os mesmos recursos de visão e audição que tem presencialmente. Isto faz com que esta solução seja ideal para utilização em ensino à distância. Ela também permite a disponibilização de conteúdo em tempo real e sob demanda. Por exemplo, enquanto uma aula estiver ocorrendo, ela pode ser disponibilizada num streaming em tempo real e ao mesmo tempo ser armazenada, para que os alunos que não puderem assistir à aula ao vivo possam vê la posteriormente através de um streaming sob demanda. Também é possível que seja apenas disponibilizada em tempo real ou apenas gravada para ser disponibilizada futuramente. Diversos recursos são necessários para a utilização desta solução. Para um melhor entendimento, eles foram divididos nas áreas de captura, codificação, distribuição e visualização. 5.1 Recursos para a captura Para a utilização da solução, é necessária a utilização de uma fonte captadora de vídeo e outra de áudio, de forma que a imagem e a voz possam ser codificadas e transmitidas via streaming. Além disso, também é necessário capturar a imagem da apresentação de slides. A seguir, cada uma destas fases de captura é detalhada.

73 5.1.1 Captura de vídeo Para a captura de vídeo é necessária a utilização de uma câmera, que poderá prover a imagem através de sinais analógicos ou digitais. No caso da utilização de um sinal analógico, é necessária a utilização de uma placa de captura de vídeo analógico, que digitaliza o sinal analógico. Se a câmera for digital é possível utilizar uma conexão USB ou FireWire. 5.1.2 Captura de áudio Para a captura de áudio, pode ser utilizado qualquer componente compatível com a entrada de som das placas de som tradicionais, como um microfone ou uma saída de uma mesa de som. 5.1.3 Captura de apresentação de slides A captura do sinal de vídeo com os slides de uma apresentação é um pouco mais complexa que as anteriores. Esta complexidade é um fator que contribui para que as ferramentas livres existentes não contemplem esta característica. A seguir são apresentadas três formas possíveis para a captura de slides. A discussão sobre vantagens e desvantagens de cada uma é apresentada no Capítulo 7.

74 5.1.3.1 Captura da saída de vídeo do computador A primeira alternativa para a captura dos slides é através da saída de vídeo do computador. Como pode ser visto no esquema da FIGURA 19, existem cinco formas para o sinal da saída de vídeo do computador que apresenta os slides chegar até o computador produtor (computador onde ocorre a captura e a codificação). FIGURA 19 Esquema para capturar a saída de vídeo do computador Duas dessas formas estão atreladas à saída analógica S Video1 da placa de vídeo do computador que contém a apresentação de slides. Um caminho possível utilizando essa saída é ligá la diretamente a uma placa de captura de vídeo analógico, conectada ao computador 1 S Video (Separate Video) Padrão de vídeo analógico que separa os dados em sinais de brilho e cor. Este padrão é erroneamente confundido com S VHS e Super Video.

75 produtor. O outro caminho possível é utilizar um equipamento que converte este sinal analógico para digital (FireWire), e este por sua vez, ser conectado a uma placa FireWire no computador produtor. As outras três formas estão atreladas à saída VGA1 da placa de vídeo do computador apresentador de slides. Destas três formas, duas passam por um equipamento conversor de VGA para S Video. A partir da saída analógica desse conversor, o caminho é semelhantes às duas formas comentadas anteriormente, ou seja, através da placa de captura de vídeo analógico ou através de um conversor de analógico para digital. A terceira forma utilizando a saída VGA é utilizar um conversor de VGA para FireWire. Destas cinco formas, as quatro que estão atreladas a um sinal S Video, seja na saída do computador ou na saída do conversor de VGA para analógico, sofrem degradação de qualidade, uma vez que os computadores geralmente utilizam resoluções superiores a 800x600, e a resolução equivalente de um sinal S Video está em torno de 640x480, sem contar a degradação de qualidade que ocorre devido ao ruído gerado pelo canal analógico. No caso da utilização do equipamento conversor de VGA para FireWire, esse problema é minimizado, uma vez que o sinal VGA pode ser convertido pra FireWire mantendo se uma resolução mais alta e minimizando se o ruído. 1 VGA (Video Graphis Array) Padrão analógico de exibição para computadores. Este termo também representa o conector de 15 pinos presente nas placas de vídeo, mais comumente usado para conectar um monitor de vídeo.

76 5.1.3.2 Captura do ambiente de trabalho compartilhado via RFB A segunda alternativa possível é a utilização de um ambiente compartilhado, utilizando o protocolo RFB1, utilizado em servidores e visualizadores de VNC2. Na FIGURA 20 é apresentado o esquema para captura através do protocolo RFB, da codificação, da distribuição e da visualização. FIGURA 20 Esquema para capturar o ambiente compartilhado via RFB Esta forma exige que haja uma conexão de rede entre o computador apresentador de slides e o computador produtor, bem como um servidor RFB instalado no apresentador de slides. Em termos de qualidade, esta forma é excelente, pois não há nenhuma degradação no processo, uma vez que a captura é inteiramente digital. 1 Protocolo RFB (Remote Framebuffer) Protocolo simples para acesso remoto utilizando interfaces gráficas. 2 VNC (Virtual Networking Computing) Sistema de compartilhamento de ambiente de trabalho que utiliza o protocolo RFB para visualizar e controlar outros computadores através da rede, passando em um sentido a informação visual, e no outro os eventos de dispositivos de entrada como mouse e teclado.

77 5.1.3.3 Captura do ambiente de trabalho compartilhado via chamadas ao modo gráfico do GNU/Linux A terceira alternativa possível é a utilização de um ambiente compartilhado utilizando o modo gráfico do GNU/Linux1. Na FIGURA 21 é apresentado o esquema para captura através de chamadas ao modo gráfico do GNU/Linux, da codificação, da distribuição e da visualização. Esta forma difere das anteriores uma vez que a apresentação dos slides, a captura e a codificação acontecem no mesmo computador. Obviamente, essa técnica requer mais recursos de hardware, sendo discuta no Capítulo 7. FIGURA 21 Esquema para capturar o ambiente compartilhado via chamadas ao modo gráfico do GNU/Linux Em termos de qualidade, esta forma também é excelente, pois também não há nenhuma degradação no processo, uma vez que o processo também é inteiramente digital. 1 GNU/Linux Sistema Operacional livre mais utilizado no mundo

78 Das três formas apresentadas, esta é a única que depende de um sistema operacional específico, no caso, o GNU/Linux. 5.2 Recursos para a codificação Para fazer a codificação de vídeo e áudio depois destes já terem sido capturados, é necessária a utilização de um computador com o sistema operacional GNU/Linux, com os pacotes Gstreamer e Flumotion instalados. Estas ferramentas fazem tanto a captura quanto a codificação. A codificação é feita para o formato Ogg, utilizando o codec Vorbis para áudio e Theora para vídeo. Dentro do container Ogg, são colocados um canal de áudio e dois canais de vídeo, sendo um da câmera de vídeo e outro da apresentação de slides. A sincronização é garantida pelo próprio container Ogg, desde que não haja atraso na captura em relação ao outro sinal de vídeo e ao áudio. Os dois vídeos são injetados no container com resoluções, número de quadros por segundo e qualidades diferentes. A discussão desses parâmetros que resultam em diferentes qualidades e diferentes necessidades de largura de banda, bem como os resultados obtidos são apresentados no Capítulo 7. 5.3 Recursos para a distribuição Para fazer a distribuição do conteúdo codificado através de streaming, é possível utilizar duas ferramentas: o Flumotion e o Icecast.

79 Este computador pode ser o mesmo que captura e codifica os dados. É possível, por exemplo, que o computador produtor esteja dentro de uma rede interna e o computador distribuidor visível pela Internet. Também é possível que tanto a produção quanto a distribuição sejam feitas no mesmo computador. Caso dois computadores sejam utilizados, é possível que o produtor também faça o trabalho de distribuição para uma rede interna e o distribuidor faça a distribuição para a Internet. É possível ainda, a utilização de replicadores de distribuição, caso seja necessário aumentar a largura de banda disponível para atender os visualizadores. Todos estes cenários são discutidos nos Capítulos 6 e 7. 5.4 Recursos para a visualização Para a visualização do conteúdo do streaming, pode se utilizar o applet em Java modificado por este trabalho. Dentre os reprodutores multimídia compatíveis com os formatos livres, o VLC1 foi o único que se manteve compatível com os dois vídeos encapsulados no Ogg. A compatibilidade do Cortado depende de um plug in de Java instalado no navegador de Internet. O Java é compatível com os principais sistemas operacionais, tornando o Cortado possível de ser exibido por praticamente qualquer navegador do mercado. Como o applet é embutido numa página HTML, ele pode ser facilmente integrado com outros recursos, como ferramentas de chat por exemplo, que também podem ser embutidas em páginas HTML. Utilizando esses dois recursos, cria se uma solução ainda mais completa para utilização em ensino à distância, pois adiciona recursos de interatividade e colaboração. 1 VLC (VideoLan Client) Reprodutor multimídia multiplataforma livre para os principais formatos de containers e codecs do mercado. Também pode ser usado como servidor de streaming.

80 O VLC pode ser uma boa alternativa caso o cliente queira utilizar um software compilado para a arquitetura de seu sistema operacional a fim de consumir menos recursos de memória e processamento.

6 DETALHAMENTO DA IMPLEMENTAÇÃO A proposta deste trabalho é apresentar uma solução livre em um ambiente em que seja possível transmitir slides de uma apresentação juntamente com um streaming de vídeo e áudio, com boa qualidade, pouca largura de banda e o mínimo de interferência no ambiente do cliente. Diante disso, um dos principais problemas a ser resolvido por este trabalho é a definição de como os slides podem ser capturados e também como podem ser encapsulados num streaming, mantendo uma sincronia com o áudio e com o vídeo. Para atender a estas necessidades, foram feitos diversos testes e combinações de ambientes e tecnologias livres, a fim de obter um resultado flexível e que atendesse os requisitos citados acima. A seguir é feito o detalhamento da implementação em cada um dos estágios do streaming, bem como o detalhamento dos cenários completos desde a produção até a distribuição.

82 6.1 O estágio de captura A captura de áudio de um microfone ou da entrada de linha da placa de som, bem como a captura de câmeras FireWire, webcams ou placas de captura de vídeo analógica são problemas bem resolvidos pelas tecnologias apresentadas em suas características originais. Para a captura dos slides, diversas formas foram pesquisadas a fim de se ter uma solução flexível. Três formas de captura dos slides foram desenvolvidas. Estas formas se diferem umas das outras apenas na captura, pois a partir do estágio de codificação, as implementações são semelhantes para as três. A seguir são detalhadas as implementações de cada uma das três formas de captura de slides desenvolvidas. 6.1.1 Captura da saída de vídeo do computador A primeira forma desenvolvida foi a captura da saída de vídeo do computador, através de um conector VGA ou S Video. Como esta forma atua direto na saída de vídeo, existe a independência de sistema operacional e não há nenhuma interferência no ambiente de trabalho do cliente. Nessa primeira forma, para o estágio de captura, não foi necessário nenhuma implementação em termos de código, já que o Flumotion e o Gstreamer já suportam fontes de placas de captura de vídeo analógico e de placas FireWire.

83 Foram pesquisadas diversas maneiras de se capturar esta saída de vídeo do computador, bem como os equipamentos que são necessários para fazer esta captura. No caso mais simples, quando o computador tiver uma saída S Video, basta ligar esta saída a uma placa de captura de vídeo analógico. Também é possível digitalizar esse sinal antes deste chegar ao computador produtor, utilizando um conversor de S Video para FireWire, como o Canopus ADVC 100, que é apresentado na FIGURA 22. Para utilizar a saída VGA, é possível que o sinal chegue ao computador produtor de três formas. A primeira delas consiste em utilizar um conversor de VGA para S Video, ligando essa saída à placa de captura de vídeo analógico. Para essa forma, pode se usar o conversor PixelView Game Show, que é apresentado na FIGURA 22. Também é possível que esse sinal S Video seja conectado ao Canopus ADVC 100 para ser transformado para FireWire, para então ser conectado ao computador produtor. A última e melhor forma é ligar a saída VGA a um conversor de VGA para FireWire, como o Canopus TwinPact 100. De todas as formas, esta é a que apresenta melhor qualidade, pois o conversor de VGA para FireWire mantém a resolução alta do sinal VGA, porém este conversor custa cerca de dez vezes mais que o conversor de VGA para S Video. FIGURA 22 Exemplos de conversores de vídeo