Red5, Flex, Java Audio & Video Streams

Red5, Flex, Java Audio & Video Streams

Bom, já aqui tinha falado do red5, que tinha iniciado a minha luta com o servidor de streaming 100% Open Source, mas hoje venho falar um pouco mais do que encontrei quando tive que meter mãos à obra!.

O que é o red5?

O Red5 é um servidor de media, de entre algumas características, pauta-se pelo stream de audio e video com bastantes formatos suportados como FLV, MP3, MP4, F4V, AAC, M4A, gravação de streams do cliente em formato FLV, shared objects, e remoting. O servidor em si passa por grandes semelhanças do tomcat, escrito totalmente em java e com aproximadamente a mesma estrutura de pastas. As aplicações também são colocadas na pasta webapps e em tudo a sua construção se parece como uma aplicaçâo qualquer java preparada para remoting.

Configurações e Aplicações

A grande e principal diferença é no entanto a obrigatoriedade de criação de uma Classe Application que extenda o ApplicationAdapter do package disponibilizado pelo red5. (red5.jar).  A partir daqui basta implementar uns quantas funções como appStart(), appStop(), appConnect() e appDisconnect() para termos a nossa aplicação funcional. A nivel de configurações de arquivos ele diferencia-se um pouco de uma típica aplicação tipo blazeDS.

Existem apenas 3 arquivos de configurações, o web.xml o red5-web.xml e red5-web.properties. Ambos têm as suas funções, mas pouco temos que configurar para ter a nossa aplicação completamente funcional.

O Arquivo web.xml, é o arquivo tipico das aplicações blazeDS, aqui apenas temos que configurar o displayName da nossa aplicação, o param-name e o param-value para informar ao servidor como a nossa aplicação será acedidada.

Segue-se o arquivo red5-web.xml, que apenas temos que informar a nossa classe principal, trata-se de um arquivo padrão que pode ser usado sem alterações na grande maioria das aplicações variando apenas na identificação do bean da aplicação principal: bean id=”web.handler” class=”minha.class.Application”.

Por final o arquivo red5-properties que informa o caminho, host e portas da  nossa aplicação. Aqui tambem pouco há a fazer.

Criem a pasta com o devido nome no webapps do red5, copiem a pasta WEB-INF para lá e re-iniciem. O Vosso servidor está operacional com a vosso aplicação disponibilizada.

Mas então o que permite o red5?

Permite muitas possibilidades, mesmo muitas… por exemplo, num projecto no qual estou a participar foi criada de raiz uma playlist de diversos arquivos flv no servidor red5, que ao iniciar vai criar um stream no servidor e carrega essa playlist nele. Por exemplo, no caso de videos (pode ser playlist de audio, videos ou até mista) a playlist carrega o primeiro video, quando este acaba passa para o segundo  e por aí além… chegando ao fim da lista volta para o primeiro arquivo, criando um loop ilimitado. Ótimo para uma TV Online, Radio, Shoutcast, etc’s… Ainda neste exemplo no qual trabalhei foi criada a parte administrativa do flex gerir estas playlists, programar o carregamento de varias playlists a determinados dias e horas e ainda a gestão em tempo real da playlist, tudo isto com ligação a uma base de dados. A nível de playlists e seus carregamentos o  red5 é 100% autónomo a verificar se deve carregar ou nâo determinada playlist.

Esta é apenas uma das características, que sistemas como este podem oferecer e que até pode ser complementado com serviços de VOD (Video on Demand), e com um pouco mais de trabalho subscrições de varios canais de videos / audio com sistemas de Pay-Per-View (pague para ver).

Permite ainda chat’s e streamings live, varias salas e utilizadores ilimitados… enfim, uma panóplia de serviços que qualquer media server oferece, mas com a diferença de ser gratuito.

A minha experiência

Então, esta minha experiencia foi muito rica, porque apesar da documentação do red5 ser muito escassa posso afirmar que já me sinto muito à vontade para o desenvolvimento deste tipo de aplicações porque a tal falta de documentação culminou na minha aprendizagem do java, principalmente orientado a aplicações flex e no meu “esmiuçar” das entranhas da documentação (javadoc) do red5.

Quanto ao desenpenho do servidor, ele está bem equilibrado, resta apenas saber como se comportará com centenas e até talvez milhares pedidos / subscrições… mas isso só o tempo vai dizer.

Bom, em breve talvez coloque um exemplo de uma simples aplicação, mas por agora vou-me dedicando ao java! :)

E vocês, já tiveram alguma experiencia com o red5? notas positivas e negativas? e a nivel de projectos, já alguém realizou algum?

Abraço.


4 comments

add yours
  • Adriano December 16, 2010

    Muito bom artigo, estou prestes a precisar disto e uma avaliação desta me ajuda a decidir e a procurar estudar mais… Fico aguardando por mais novidades a cerca do Red5…

  • Fllávio Silveira December 26, 2010

    Tentei estudar Red5 há alguns meses, mas por conta da falta de documentação e pela minha linguagem principal não ser java acabei deixando de lado… mas a ferramenta é sensacional… o mercado tem bastante espaço para ele…para os escritores de plantão fica aí a dica para escrever algo a respeito… seria uma referência pelafalta de material.. Abraços!

  • Carlos December 27, 2010

    E ai cara blz!

    Antes de tudo ótimas explicações, eu tambem começei a estudar JAVA por conta do RED5 :).

    Mas estou adorando o RED5 e o JAVA em sí!

    O unico complicado do RED5 é ele não ter ainda suporte para netGroup (p2p), mas espero que um dia ele possa ter!

    Mas no geral ele ajuda muito para quem não quer ter custos iniciais, logico que ele não é um FMS da vida, mas já quebra um galhão!

  • Jonas February 1, 2011

    Otimo artigo cara.

    Eu fiz um curso de Flex + Red5 e FMS e achei sensacional. Este ano me formo na faculdade( Uhulll!! ) e estou desenvolvendo me Trabalho de Conclusão de Curso(TCC) em Flex + Red5. O projeto consiste em algo parecido com o Adobe Conect.

Leave a Comment

Post