<?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; Streaming</title>
	<atom:link href="http://www.fabiotomio.com.br/blog/tag/streaming/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>Streaming parte 2</title>
		<link>http://www.fabiotomio.com.br/blog/2008/08/20/streaming-parte-2/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/08/20/streaming-parte-2/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 19:14:27 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Streaming]]></category>
		<category><![CDATA[akamai]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[darwin]]></category>
		<category><![CDATA[exceda]]></category>
		<category><![CDATA[flash media]]></category>
		<category><![CDATA[flash media encoder]]></category>
		<category><![CDATA[flash media server]]></category>
		<category><![CDATA[fms]]></category>
		<category><![CDATA[quicktime]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=51</guid>
		<description><![CDATA[Fala pessoal, coloquei em prática as teorias sobre a transmissão de audio/video atravéz da internet. Como fiz? A estrutura foi dividida em Encoder e Servidor de entraga do conteúdo. Para o encoder utilizei o Flash Media Encoder,para a parte de &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/08/20/streaming-parte-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Fala pessoal, coloquei em prática as teorias sobre a transmissão de audio/video atravéz da internet.<br />
<strong>Como fiz?</strong></p>
<p><a href="http://fabiotomio.files.wordpress.com/2008/08/locaweb.png"><img class="aligncenter size-medium wp-image-52" src="http://fabiotomio.files.wordpress.com/2008/08/locaweb.png?w=300" alt="" width="300" height="122" /></a></p>
<p>A estrutura foi dividida em Encoder e Servidor de entraga do conteúdo. Para o encoder utilizei o <a href="http://www.adobe.com/products/flashmediaserver/flashmediaencoder/" target="_blank">Flash Media Encoder</a>,para a parte de entrega de conteúdo foi um serviço contratado da <a href="http://www.locaweb.com.br/flashcom/default.asp" target="_blank">LocaWeb</a>.</p>
<p>A transmissão ocorreu perto das 19:00 horas, com origem em São Paulo capital e com os principais espectadores em Curitiba.</p>
<p>Os principais problemas foram:</p>
<ul>
<li>O não suporte ao H.264 pelo serviço de Flash Server disponibilizado pela Loca Web;</li>
<li>O não suporte do Flash Media Encoder ao sistema operacional Mac OS X;</li>
<li>Horário da transmissão;</li>
</ul>
<p>Por não poder utilizar o H.264 tive que efetuar o encoder do vídeo utilizando o VP6, o resultado final foi um maior peso do vídeo e com isso a necessidade de um Link com maior capacidade.<br />
Com relação ao encoder, o problema é a plataforma, tive instabilidades com o Windows, o Flash Media Encoder fechava sem nenhum motivo aparente, ou não fazia o streaming, somente no último minuto antes da transmissão ele estabilizou (foi um sufoco).<br />
Com relação ao horário o impacto é o trafego da Internet no Brasil, aconpanhei através do site da <a href="http://www.rnp.br/ceo/trafego/panorama.php" target="_blank">RNP</a> que o horário escolhido pelo pessoal organizador do evento era justamente o horário de pico da Internet do Brasil, não somente por esse problema, mas também por problemas de estreitamento de banda no local do evento, tive problemas com a &#8220;up&#8221; do conteúdo até a Loca Web.</p>
<p>Mas no final deu tudo certo, a transmissão durante todo o evento não teve problemas de instabilidade, o antes foi muito complicado, o durante e depois fui super tranquilo.</p>
<p>Poderia ter utilizado o Red5, mas o meu principal problema foi conseguir uma documentação explicando como fazer a instação no centOS e a minha falta de tempo. Por esses motivos utilizei o Flash Media da Loca Web, supriu as minhas necessidades.</p>
<p>A aplicação client foi desenvolvida por mim e pela equipe de desenvolvimento web da empresa, utilizando o Adobe Flex 3, a base do código foi o programa postado aqui no blog.</p>
<p><a href="http://fabiotomio.wordpress.com/2008/06/25/adobe-flex-red5-e-streaming/" target="_blank">http://fabiotomio.wordpress.com/2008/06/25/adobe-flex-red5-e-streaming/</a></p>
<p><strong>Qual o meu parecer?</strong></p>
<p>Transmissão utilizando a Internet é extremamente complexa, existem inúmeros fatores que podem afetar a transmissão, não somente sua aplicação ou mesmo o seu serviço de entrega utilizado. A tecnologia em sí e forma de entrega são sim os principais focos na hora de projetar uma transmissão, mas não se pode esquecer os outros fatores que são importantes também, como:</p>
<ul>
<li>A entrega dos sinais será feita como? Há a necessidade de um conversor de mídia?</li>
<li>O audio? como será entregue? há um sistema de compressão de audio? Clips (Overload) no audio geram instabilidades.</li>
<li>Qual a tecnologia utilizada para acesso a Internet? É estável? ADSL, Fibra, Frame-Relay, Radio? Mais instavel maior a necessidade da largura.</li>
<li>Nunca utilizar 100% do Link disponível, se necessário diminua a qualidade do vídeo! Existem muitos picos durante a transmissão, se não existir banda disponível há perda de sincronismo.</li>
</ul>
<ul>
<li>Qual o seu público? Onde ele está? Quanto mais proximo a origem da transmissão melhor.</li>
<li>Qual a distância da origem do sinal e do servidor que irá distribuir o conteúdo? Quanto mais próximo melhor!</li>
</ul>
<p>Esses são alguns pontos importantes e que devem ser levados em consideração.</p>
<p>As duas últimas questões levam em conta que existam gargalos de comunicação entre uma região e outra. Por exemplo, se o o conteúdo for trafegar na Internet existem diferentes tecnologias de comunicação para entregar a Internet no Brasil, por exemplo, Paraná &#8211; São Paulo, o link é DWDM de 2.5 Gps já São Paulo com Manaus são 20 Mbps. Mais informações em <a href="http://www.rnp.br/backbone/index.php" target="_blank">RNP</a>. Uma alternativa a esse problema é locar uma rede terceira para trafegar seu conteúdo.</p>
<p><strong>Próxima etapa:</strong></p>
<p>Setembro está chegando e lá vou eu de novo, dessa vez vou mudar muita coisa, ou quase tudo, vou migrar do Flash pro QuickTime, o servidor de streaming do QuickTime tem ume versão Open Source, mais conhecida como Darwin, tem muitos recursos e o melhor, dá suporte ao H.264.</p>
<p>Adicionei mais uma camada para a entrega do conteúdo, é um serviço que faz cache do conteúdo e utiliza rede própria para trafegar o conteúdo, e faz a entrega do conteúdo utilizando várias conexões simultâneas, sabe o superdownload ou getright? é o mesmo conceito, só que em vez de ser na aquisição do conteúdo, é na entrega. Este serviço é utilizado pelos maiores sites e portais do mundo, como Apple, Adobe, CNN, etc. Segue abaixo uma imagem exemplificando o funcionamento. Quem fornece esse serviço no mundo é a <a href="www.akamai.com" target="_blank">Akamai</a>, seu representante no Brasil é a <a href="http://exceda.com/" target="_blank">Exceda</a>.</p>
<p><a href="http://fabiotomio.files.wordpress.com/2008/08/image001.jpg"><img class="aligncenter size-medium wp-image-53" src="http://fabiotomio.files.wordpress.com/2008/08/image001.jpg?w=300" alt="" width="300" height="224" /></a></p>
<p>Estou efetuando testes, sem o serviço da Akamai a princípio, procurando o melhor configuração entre qualidade do vídeo e consumo de banda, essa semana ainda começamos os testes com a Akamai distribuindo o conteúdo.</p>
<p>Vamos ver os resultados, para quem quizer fazer testes com o QuikTime/Darwin, os sites são:</p>
<p><a href="http://developer.apple.com/opensource/server/streaming/index.html" target="_blank">Darwin</a></p>
<p><a href="http://streaming411.com/wiki/Darwin_Streaming_Server" target="_blank">Instalar Darwin on centOS</a></p>
<p>Assim que tiver outras novidades posto aqui&#8230;</p>
<p>Abraços a todos, e se pintar alguma dúvida, é só enviar um email para <a href="mailto:fabiotomio@gmail.com" target="_blank">fabiotomio@gmail.com</a></p>
<p>Links:</p>
<ul>
<li>http://www.adobe.com/products/flashmediaserver/flashmediaencoder/</li>
<li>http://www.locaweb.com.br/flashcom/default.asp</li>
<li>http://www.rnp.br/backbone/index.php</li>
<li>http://www.akamai.com</li>
<li>http://exceda.com</li>
<li>http://developer.apple.com/opensource/server/streaming/index.html</li>
<li>http://streaming411.com/wiki/Darwin_Streaming_Server</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/08/20/streaming-parte-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<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>
