Neste post gostaria de compartilhar com você alguns conceitos que fazem parte de nosso dia a dia dentro deste mundo fantástico chamado web 2.0. O primeiro deles é entender o que é streaming.

A primeira transmissão digital via streaming ocorreu no ano de 1988 utilizando a tecnologia Shoutcast com base no MP3 comprimido à 128kbps (qualidade de CD), porém, a internet ainda não era capaz de suportar transmissões de elevada velocidade e o projeto foi engavetado.

Hoje com sua internet de alta velocidade, isso já é real. Quando você se conecta a sua rádio preferida pela internet, onde a programação da mesma está acontecendo ao vivo, o seu player favorito tenta estabelecer uma conexão persistente com o servidor onde está o serviço de compartilhamento da rádio.

Desta forma os dados são enviados por pacotes de um único ponto, o servidor. Assim se cria um processo chamado de streaming ou broadcast, pelo qual se transmite ou difunde determinada informação, tendo como principal característica que a mesma informação está sendo enviada para muitos receptores ao mesmo tempo.

Com isto temos a sensação de que o áudio é transmitido ao vivo, dando a impressão que você está realmente com seu rádio ligado. Quando falamos em sensação, estamos descontando alguma latência de alguns milissegundos ou segundos que pode haver entre a rede que está o servidor até chegar em sua rede onde está o seu computador. Podemos concluir então que streaming é uma forma de transmissão síncrona através de uma comunicação persistente via TCP IP.

Outra coisa que você precisa entender é sobre o download progressivo, que permite assistir vídeos ou escutar música pela internet baixando os arquivos para o cache de seu browser. Desta forma você só consegue ter acesso a mídia assim que for ocorrendo o download da mesma.

Um exemplo simples de download progressivo são os vídeos disponibilizados no youtube.com, veja que, quando você acessa um vídeo e o mesmo começa, dentro de alguns segundos o mesmo para, carrega e volta a tocar novamente, até ser totalmente carregado em sua máquina. Vale destacar que, quando a mídia está totalmente carregado em seu computador é sinal que você já assistiu toda ela, a não ser que você tenha dado uma pausa para esperar a mesma ser totalmente carregada. Outro detalhe importante é destacar que este processo de download progressivo ocorre via HTTP, e o tamanho do arquivo está diretamente ligado ao tempo de download, por isto no Youtube você consegue assistir alguns vídeos mais rápidos que outros.

Este processo é o mais barato pois não exige a presença de um servidor de streaming, basta ter qualquer servidor HTTP e um player acessando diretamente o arquivo.

Streaming versus download progressivo

As pessoas me perguntam muito qual é a melhor opção para compartilhar arquivos de áudio, vídeo ou até mesmo criar ambientes de colaboração pela internet, e confesso que a resposta para isto é bem simples. Depende de projeto para projeto, de aplicação para aplicação.

Através do download progressivo você só consegue compartilhar arquivos que estão fisicamente no servidor HTTP, e os clientes só conseguirão avançar o vídeo se já foi feito o download do mesmo até o ponto que se quer avançar.

Já através do streaming você tem a flexibilidade de detectar o tamanho da conexão do usuário e tomar decisões, direcionando o streaming para o arquivo que tenha uma qualidade em que o usuário possa assistir mesmo se a sua conexão for lenta, tudo isso de forma automatizada e com total controle de buffer. O cliente poderá também avançar a mídia ou voltar a qualquer momento, sem precisar que a mesma esteja carregada totalmente em sua máquina, se isto for um item importante na aplicação e se os usuários precisam interagir de forma síncrona, sem dúvida o streaming é a melhor opção.

Outro ponto importante é o valor gasto em estrutura para montar um servidor de mídia, ex: Em um servidor de vídeos via download progressivo os itens principais é servidor HTTP, uma boa banda de saída(upload) e um bom espaço em disco para colocar os seus vídeos.

Já no servidor de mídias síncronas você irá precisar de um servidor de streaming, banda de saída(upload) e um bom espaço em disco. São os mesmos itens citados no servidor de vídeos via download progressivo, só trocamos o servidor HTTP por um servidor de streaming onde conseguimos ter um total controle sobre a mídia fornecida e realizar uma comunicação bi-directional (“full duplex”) em tempo real.

Você sabia?

Que a primeira transmissão mundial ao vivo ocorreu em 25 de junho de 1967, quando o canal inglês BBC se uniu a um pool de emissoras de 26 países para transmitir ao grupo The Beatles cantando a música All You Need Is Love.

Assista o vídeo aqui: http://youtube.com/watch?v=rLxTpsIVzzo

Distribuição de conteúdo multimídia

Uma das plataformas e plugins mais usados para distribuição de conteúdos multimídia através da internet usando download progressivo ou streaming é sem dúvida o flash player da Adobe, que já toma conta de 98% de todos os computadores ligados a rede mundial de computadores. Hoje a mesma versão que existe para Windows é a mesma do Linux, Mac OS e Solaris, o que não acontecia algum tempo atrás.

A Adobe vem investindo grandemente nesta runtime, no momento que estou escrevendo este post a versão corrente é 9.0.124, o que me faz crer que logo logo já exista uma versão mais recente, o que fortalece o comprometimento da Adobe com seus clientes.

O Flash Player alguns anos atrás era visto como um plugin para rodar animações feitas em Flash, e até hoje é visto desta forma por algumas pessoas do “mundo web” desatualizadas. Muitos desenvolvedores ainda não entenderam o que a Adobe está fazendo para o mundo tecnológico.

O Flash Player é o plugin mais usado também na distribuição de vídeos e áudio pela internet, estes recursos estão presentes no Flash Player desde suas primeiras versões ainda quando fazia parte da antiga Macromedia(Comprada pela Adobe Systems). A Adobe tem melhorado muito estes recursos com o tempo, com alguns posts criados aqui você poderá comprovar isto, como é simples e fácil criar ambientes e distribuir conteúdo multimídia usando esta runtime.

Vale destacar que o este player não para por aí, vide a versão 10 chamado de “Astro” que traz grandes melhorias em sua estrutura, como: Maior suporte para sabores *Unix, recursos 3D como eixo Z, detecção automática de banda com streaming dinâmico, novo codec de áudio, conteúdo indexado por ferramentas de buscas dentre outras features que você poderá acompanhar de perto acessando:

http://labs.adobe.com/technologies/flashplayer10/