<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fábio Tomio # Web Analyst &#38; Developer &#187; web cam</title>
	<atom:link href="http://www.fabiotomio.com.br/blog/tag/web-cam/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fabiotomio.com.br/blog</link>
	<description>Internet and continuous evolution!</description>
	<lastBuildDate>Wed, 21 Jul 2010 16:16:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Adobe Flex, RED5 e Streaming</title>
		<link>http://www.fabiotomio.com.br/blog/2008/06/25/adobe-flex-red5-e-streaming/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/06/25/adobe-flex-red5-e-streaming/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 02:28:07 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[Streaming]]></category>
		<category><![CDATA[1080p]]></category>
		<category><![CDATA[adobe flex 3]]></category>
		<category><![CDATA[flash media server]]></category>
		<category><![CDATA[full hd]]></category>
		<category><![CDATA[HDV]]></category>
		<category><![CDATA[red5]]></category>
		<category><![CDATA[web cam]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=15</guid>
		<description><![CDATA[Introdução Ainda lembro a minha primeira quase &#8220;transmissão&#8221; de um evento pela Internet, um festival de dublagem na minha cidade natal (litoral do Paraná) em meados de 1997/1998, o objetivo era enviar para o site do colégio imagens das apresentações. &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/06/25/adobe-flex-red5-e-streaming/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Introdução</strong></p>
<p>Ainda lembro a minha primeira quase &#8220;transmissão&#8221; de um evento pela Internet, um festival de dublagem na minha cidade natal (litoral do Paraná) em meados de 1997/1998, o objetivo era enviar para o site do colégio imagens das apresentações. Na época a conexão mais rápida era de 56Kbps, é isso mesmo, linha discada, um modem externo US. Robotics que se conectava com o PC pela porta paralela, um servidor Linux para compartilhamento da conexão. Conexões USB`s não eram muito utilizadas, a Web Cam utilizava a interface paralela e também a conexão do teclado, nem perto da qualidade da imagem das Web Cams atuais. Bom, com toda essa limitação tecnológica e os meus 15 anos o que consegui foi, fazer capturas das apresentações utilizando a Web Cam, (demorava um bocadinho), e com um programa FTP eu enviava essas imagens para o host onde o site do colégio estava hospedado. Só foi possível porque o software de captura da câmera podia ser configurada para capturar as imagens quando detectava movimento, e o software FTP possibilitava o agendamento de upload toda vez que um arquivo era modificado. Foi divertido, um desafio, que foi solucionado com o pouco conhecimento e os poucos recursos disponíveis na época.</p>
<p><strong>Por que tudo isso?</strong></p>
<p>Em um passeio para ir pegar café, e dar um out do computador pra respirar um pouco, fui informado que o próximo evento da empresa que será em setembro será transmitido pela Internet, e que a responsabilidade de levantar o Know How estava nas minhas mãos. Gostei, mais um desafio para ser superado, e mais conhecimento para ser adquirido. Voltei pra minha mesa já pensando em mil possibilidade e entendendo a complexidade de concretizar tudo isso.</p>
<p><strong>Realidade</strong></p>
<p>Muitas pessoas já pensaram, é fácil, mas vamos a realidade, fatos que devemos levar em consideração:</p>
<ul>
<li>A captura da imagens é feita em HD (High Quality), 1080p pra ser mais preciso;</li>
<li>O evento não tem um local fixo para acontecer;</li>
<li>Levar em consideração a possibilidade de envio de audio/vídeos simultâneos (vários &#8220;canais&#8221;);</li>
<li>Prever como enviar ao servidor de Streaming o conteúdo (acesso à Internet);</li>
<li>A mesa de corte utilizada não possui saida de vídeo em FireWire, somente em Y,B,R e SDI;</li>
<li>Custos tendendo a zero, principalmente no que se diz respeito à Infra-estrutura e Softwares.</li>
</ul>
<p><strong>Tecnologia</strong></p>
<p>Levando em consideração esses pontos semana passada, mais exatamente na quinta-feira comecei um estudo sobre transmissão de audio/vídeo utilizando FMS (Flash Media Server), já tinha visto a algum tempo o RED5 (<span class="a">osflash.org/<strong>red5</strong></span>) achei interessante pois é Open Source (custos reduzidos) e utilizando o Java, é possivel criar os serviços e mais, montar serviços que interajam com outras aplicações, interfaces, dispositivos, tudo que o Java possibilita, isso é interessante quando se precisa de flexibilidade, característica essa que o Open Source carrega no sangue.</p>
<p>Comecei o estudo, baixei sua versão para o MAC OSX, e instalei. Sua instalação no Mac é simples, não tive problemas, o RED5 vem com uns demos, todos funcionaram perfeitamente. Bom o servidor estava rodando, agora faltava a aplicação.</p>
<p>Para a construção das aplicações decidí utilizar o Adobe Flex 3, pois já desenvolvo aplicações com ele a algum tempo, isso facilita bastante =). Não achei muita documentação do RED5 e o Flex, foi dificil fazer com que a aplicação conversasse com o RED5, mas funcionou. Primeiramente tentei reescrever as classes que vieram nos exemplos do RED5 de (Flash) ActionScript2 para (Flex) ActionScript3, foi sinistro e frustrante, dai pesquisando um pouco mais, consegui somente a classe de conexão pro RED5 em ActionScript3 (<a href="http://www.vadus.de/uni/red5/AS_red5_Connection.zip" target="_blank">http://www.vadus.de/uni/red5/AS_red5_Connection.zip</a>). Foi aí que a conexão funcionou.</p>
<p><strong>Transmissão</strong></p>
<p>Com a conexão em pé era a hora de tentar enviar o vídeo, trabalhar com as classes Video, Camera, NetStream no Flex não foi tão complicado, o Google ajudou bastante, foi atravéz dele que cheguei ao site <a href="http://www.rafaeldohms.com.br/2007/04/16/transmitindo-um-evento-ao-vivo-com-fms-os-bastidores/pt/" target="_blank">www.rafaeldohms.com.br</a> muito bom o artigo, e o Source Code disponibilizado pelo Rafael me ajudou muuuuito. Utilizei o código do Rafael como base pra montagem da classe de envio de recepção de audio/vídeo.<br />
Mas faltava uma coisa ainda, o serviço no RED5 que ficaria responsável recebimento e distribuição do audio/vídeo. Tentei algumas vezes montar um novo serviço, sem sucesso. Foi então que tive a brilhante, ou nem tão brilhante idéia de utilizar o serviço da apicação demo. Um Chat com Vídeo que vem junto com o RED5. Depois de ler e re-ler o Java do serviço identifiquei o funcionamento do serviço e consegui enviar o conteúdo. Utilizei a própria interface do chat pra ver o resultado da transmissão. Faltava a última coisa agora, a parte de recepção do conteúdo. Essa não foi tão difícil, mais um pouco de leitura do Java do serviço do RED5 e, pronto, funcionando.</p>
<p><strong>Testes</strong></p>
<p>Testes de preformance e consumo de banda, na rede da minha casa, apontaram uma boa qualidade e um consumo de banda próximo a 250Kbps, isso efetuando a transmissão de uma camera (Web Cam) com audio. Mais testes, dessa vez na empresa, conectei uma camera de vídeo no meu note utilizando a interface FireWire, o sinal que estava sendo injetado era HDV, 60fps, [16:9]. O Flash Player não detectou o sinal, tive que configurar a camera pra DV, 60 fps, 16:9, menos qualidade, e o Flash Player detectou. Comecei as transmissões, não sei se é pelo fato da minha aplicação pegar a imagem gerada pela câmera e reduzir o tamanho dela, mas a imagem ficou bem ruim, o interlaçado quando o movimento era rápido, era mais do que visível. Fiz vários testes esperimentando reconfigurar o FPS da aplicação, o Bandwidth, a qualidade do vídeo, o Frame Interval, e quando cheguei a um resultado satisfatório, fui verificar a utilização da banda. É definitivamente não vai dar pra utilizar o RED5. Se fosse uma Web Cam as coisas já estariam resolvidas, mas como a realidade é outra, vou ter mais trabalho pela frente.</p>
<p><strong>Encoder</strong></p>
<p>Comecei pesquisas sobre a utilização de um Encoder no RED5 e ví que não é possivel a utilização de um.<br />
Vou seguir com o projeto e pesquisar agora o Flash Media Server (<a href="http://www.adobe.com/products/flashmediaserver/" target="_blank">Adobe</a>) e o Wonza Media Server (<a href="http://www.wowzamedia.com/" target="_blank">Wonza</a>) esses possibilitam a utilização de um Encoder.</p>
<p><strong>Código</strong></p>
<p>Vou disponibilizar o código das aplicações pro pessoal que precisar montar uma aplicação Flex utilizando recursos de audio/vídeo e o RED5, como por exemplo um software de Vídeo conferência. Eu montei a aplicação pra suportar vários streams, a qualidade é setada toda na aplicação, dando flexibilidade pra configurar como quizer.</p>
<p>Vai aqui o meu agradecimento ao Rafael por disponibilizar o conteúdo da aplicação dele, achei uma ótima iniciativa e seguindo este exemplo, também vou disponibilizar os códigos.</p>
<p>Abraços a todos&#8230;. qualquer dúvida estou a disposição&#8230;. <a href="mailto:fabiotomio@gmail.com">fabiotomio@gmail.com</a></p>
<p>Source Code</p>
<p><strong>Links:</strong></p>
<p><a href="http://osflash.org/red5" target="_blank">http://osflash.org/red5</a></p>
<p><a href="http://www.adobe.com/products/flashmediaserver/" target="_blank">http://www.adobe.com/products/flashmediaserver/</a></p>
<p><a href="http://www.rafaeldohms.com.br/pt/" target="_blank">http://www.rafaeldohms.com.br/pt/</a></p>
<p><a href="http://www.wowzamedia.com/" target="_self">http://www.wowzamedia.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/06/25/adobe-flex-red5-e-streaming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
