<?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>{FMS Guru} - Multimídia e Interatividade &#187; flash media</title>
	<atom:link href="http://fmsguru.com.br/tag/flash-media/feed/" rel="self" type="application/rss+xml" />
	<link>http://fmsguru.com.br</link>
	<description>Blog oficial do Livro Flex 3 + Flash Media Server 3.5</description>
	<lastBuildDate>Sat, 20 Mar 2010 14:11:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Adobe Live Cycle Collaboration Service</title>
		<link>http://fmsguru.com.br/2009/10/20/adobe-live-cycle-collaboration-service/</link>
		<comments>http://fmsguru.com.br/2009/10/20/adobe-live-cycle-collaboration-service/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 05:07:17 +0000</pubDate>
		<dc:creator>Carlos Eduardo</dc:creator>
				<category><![CDATA[4Conference]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[LCCS]]></category>
		<category><![CDATA[flash media]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://fmsguru.com.br/?p=108</guid>
		<description><![CDATA[Adobe Live Cycle Collaboration Service (LCCS) é um software como um serviço (Sass) que permite que desenvolvedores criem aplicações colaborativas em tempo real através de uma estrutura server-side e de um conjunto de componentes disponíveis dentro de um SDK para Adobe Flex e Flash.
O LCCS contém uma infra-estrutura única de servidores que mantém as contas dos [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.adobe.com/technologies/afcs/" target="_blank">Adobe Live Cycle Collaboration Service (LCCS)</a> é um software como um serviço (Sass) que permite que desenvolvedores criem aplicações colaborativas em tempo real através de uma estrutura server-side e de um conjunto de componentes disponíveis dentro de um SDK para Adobe Flex e Flash.</p>
<p>O LCCS contém uma infra-estrutura única de servidores que mantém as contas dos desenvolvedores, e estas contas mantém as aplicações através de canais de streaming. Esta arquitetura tem por objetivo proporcionar novas oportunidades para o desenvolvimento de aplicações ricas e colaborativas através de funcionalidades como o real time collaboration (RTC).</p>
<p>Para conhecer mais sobre esta plataforma na prática, resolvi escrever uma versão do 4Conference para funcionar junto ao Adobe Live Cycle Collaboration Service com o objetivo de avaliar o serviço e verificar se realmente vale a pena criar aplicações colaborativas com ele. Nesta aplicação eu usei o protocolo RTMFP para criar um ambiente de conferência p2p com suporte a áudio, vídeo e chat entre duas ou mais pessoas.  O resultado desta avaliação você confere abaixo.</p>
<p style="text-align: center; "><a href="http://www.tomsas.com.br/p2p"><img class="size-full wp-image-111 aligncenter" title="4Conference com LCCS" src="http://fmsguru.com.br/wp-content/uploads/2009/10/forConferenceView.png" alt="4Conference com LCCS" width="665" height="520" /></a></p>
<p><strong>Pontos positivos:</strong></p>
<p>Primeiramente vou falar dos pontos positivos, pois a idéia do serviço me pareceu bastante interessante e válida, apesar de achar que a Adobe está dando um tiro no pé junto ao licenciamento do Flash Media Interactive Server.</p>
<p><strong>SDK</strong></p>
<p>O ponto alto a se destacar do serviço é o SDK, que é um conjunto de componentes visuais e não visuais que permitem criar aplicações Flex/Flash para ambientes de áudio, vídeo, conferências e colaboração síncrona usando protocolos como RTMP e RTMFP.</p>
<p><strong>Componentes</strong></p>
<p><strong><span style="font-weight: normal; ">Este conjunto de componentes e classes permitem criar pods visuais de chat, listagem de usuários, área para a publicação de uma ou mais webcans e a publicação do áudio e o seu play, compartilhamento de arquivos e um incrível writeboard, que por sinal é bastante completo e lindão.</span></strong></p>
<p><strong><span style="font-weight: normal; "><strong>Documentação</strong></span></strong></p>
<p>A documentação é bem completa e trás vários exemplos em vídeo de como compartilhar objetos remotos que são chamados de <em>Shared Model</em>s e como trabalhar com eventos concorrentes através de um recurso chamado de <em>Baton</em> que prevê o fluxo de trabalho de forma síncrona entre os usuários. Essencialmente, este recurso fica escutando o usuário que está usando um determinado recurso e fornece uma API para monitorar, adicionar ou remover propriedades de uma determinada funcionalidade da aplicação. Ex: Enquanto o usuário estiver digitando em uma caixa de texto, a caixa é desabilitada para o restante dos usuários.</p>
<p><strong>Código final</strong></p>
<p>A sintax do código final é bastante simples e limpa, até os mais leigos em programação podem usufruir dos recursos somente clicando e arrastando os componentes visuais para criar pequenas aplicações multimídias sobre o flash player e Adobe Air. A idéia primeiramente é ter uma chamada ao rtc:authenticator que vai realizar a autenticação na conta do desenvolvedor para a url da aplicação fornecida no rtc:ConnectSessionContainer.</p>
<p>No exemplo abaixo você pode conferir a quantidade de linhas escritas que criam uma sala com chat e áudio conferência que promove automáticamente todos os  usuários a terem o acesso ao botão para publicar seu áudio.</p>
<p><em>&lt;rtc:authenticator&gt; </em></p>
<p><em> &lt;rtc:AdobeHSAuthenticator id=&#8221;auth&#8221; username=&#8221;username&#8221; password=&#8221;senha&#8221; protocol=&#8221;rtmp&#8221;/&gt;</em></p>
<p><em>&lt;/rtc:authenticator&gt;</em></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 931px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>&lt;rtc:ConnectSessionContainer</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 931px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"><em> </em></span><em>id=&#8221;sess&#8221;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 931px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"><em> </em></span><em>authenticator=&#8221;{auth}&#8221;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 931px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"><em> </em></span><em>initialRoomSettings=&#8221;{settings}&#8221;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 931px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"><em> </em></span><em>autoLogin=&#8221;false&#8221; width=&#8221;100%&#8221; height=&#8221;100%&#8221;&gt;</em></div>
<p><em>&lt;rtc:RoomSettings id=&#8221;settings&#8221; autoPromote=&#8221;true&#8221; /&gt;</em></p>
<p><em>&lt;rtc:ConnectSessionContainer  id=&#8221;sess&#8221;  roomURL=&#8221;https://connectnow.acrobat.com/userdeveloper/myappname&#8221;<br />
authenticator=&#8221;{auth}&#8221;  initialRoomSettings=&#8221;{settings}&#8221; autoLogin=&#8221;false&#8221; width=&#8221;100%&#8221; height=&#8221;100%&#8221;&gt;</em></p>
<p><em> &lt;rtc:AudioPublisher id=&#8221;audioPub&#8221; /&gt;</em></p>
<p><em> &lt;rtc:AudioSubscriber id=&#8221;audioSub&#8221; /&gt;</em></p>
<p><em> &lt;rtc:SimpleChat width=&#8221;100%&#8221; height=&#8221;100%&#8221;/&gt;</em></p>
<p><em>&lt;/rtc:ConnectSessionContainer&gt;</em></p>
<p><em><br />
</em></p>
<p><strong>Pontos negativos:</strong></p>
<p>Poucas coisas me perturbaram durante os testes, uma delas é a dificuldade para trabalhar com permissões, o que só pode ser feito somente (pelo menos até onde encontrei) via console ou através de uma api web que permite criar os usuários diretamente no LCCS, mas aí as permissões são setadas antes do usuário autenticar no serviço e não em real time, caso eu precise remover ou adicionar um determinada permissão de um usuário específico.</p>
<p><strong>O Acesso</strong></p>
<p>Se eu precisar definir níveis de acesso através de papéis como administrador, monitor e participante para determinadas funcionalidades, estes usuários devem ser também cadastrados no portal do LCCS, forçando assim qualquer empresa ou desenvolvedor a compartilhar email e senha dos usuários junto ao seu serviço. Achei um pouco de invasão, pois não são todas as empresas e pessoas que gostam de ter seu cadastro em um lugar que eles não conhecem. Afinal, se eu desenvolver uma aplicação usando os recursos do LCCS e vender para um determinado cliente, porque ele gostaria de ter seus dados em outro local?</p>
<p><strong>Custo benefício</strong></p>
<p>O ponto negativo mais alto, é o preço cobrado, que é sob-demanda, você paga por aquilo que usar de banda, mensagens enviadas e por tempo de cada usuário conectado, veja:</p>
<p>Se você estiver usando uma comunicação p2p via RTMFP, irá pagar somente pela quantidade de mensagens enviadas e pelo tempo em que o usuário permanecerá conectado. Caso haja alguma falha na comunicação p2p entre dois ou mais usuários, o usuário que tiver com problemas automáticamente passará a usar o RTMP através de um recurso chamado de FMS failover.</p>
<p>No momento que estiver usando RTMP, você pagará pela quantidade de banda de upload e download que passar por sua aplicação, pela quantidade de mensagens enviadas e pelo tempo de conexão por usuário conectado junto a aplicação.</p>
<p>Confira abaixo os <a href="http://forums.adobe.com/thread/501587?tstart=0" target="_blank">preços divulgados pela Adobe</a>.</p>
<table style="margin-top: 1px; margin-right: 0px; margin-bottom: 1px; margin-left: 0px; border-collapse: collapse; width: 497px; float: none; height: 211px; padding: 3px; border: 1px solid #000000;" border="1" cellspacing="0" cellpadding="3">
<tbody style="padding: 0px; margin: 0px;">
<tr style="padding: 0px; margin: 0px;">
<th style="background-color: #6690bc; padding: 0px; margin: 0px;" align="left" valign="middle"><span style="font-family: arial, helvetica, sans-serif; color: #ffffff; font-size: 10pt; padding: 0px; margin: 0px;"><strong>Dimension</strong></span></th>
<th style="background-color: #6690bc; padding: 0px; margin: 0px;" align="left" valign="middle"><span style="font-family: arial, helvetica, sans-serif; color: #ffffff; font-size: 10pt; padding: 0px; margin: 0px;"><strong>Price</strong></span></th>
<th style="background-color: #6690bc; padding: 0px; margin: 0px;" align="left" valign="middle"><span style="font-family: arial, helvetica, sans-serif; color: #ffffff; font-size: 10pt; padding: 0px; margin: 0px;"><strong>Description</strong></span></th>
</tr>
<tr style="padding: 0px; margin: 0px;">
<td style="border-collapse: collapse; padding: 3px; margin: 1px; border: 1px solid #000000;"><span style="font-family: arial, helvetica, sans-serif; font-size: 10pt; padding: 0px; margin: 0px;">Live Stream Bandwidth</span></td>
<td style="border-collapse: collapse; padding: 3px; margin: 1px; border: 1px solid #000000;"><span style="font-family: arial, helvetica, sans-serif; font-size: 10pt; padding: 0px; margin: 0px;">$0.49 USD per GB</span></td>
<td style="border-collapse: collapse; padding: 3px; margin: 1px; border: 1px solid #000000;"><span style="font-family: arial, helvetica, sans-serif; font-size: 10pt; padding: 0px; margin: 0px;"><span style="padding: 0px; margin: 0px;"><span style="font-family: 'Cronos Pro'; padding: 0px; margin: 0px;">Up/down live stream bandwidth, such as real-time audio and video. P2P stream via RTMFP is excluded though LCCS will gracefully switch connection methods if a P2P connection cannot be established or maintained.</span></span></span></td>
</tr>
<tr style="padding: 0px; margin: 0px;">
<td style="border-collapse: collapse; padding: 3px; margin: 1px; border: 1px solid #000000;"><span style="font-family: arial, helvetica, sans-serif; font-size: 10pt; padding: 0px; margin: 0px;">Push Messages</span></td>
<td style="border-collapse: collapse; padding: 3px; margin: 1px; border: 1px solid #000000;"><span style="font-family: arial, helvetica, sans-serif; font-size: 10pt; padding: 0px; margin: 0px;">$0.10 USD per 1K</span></td>
<td style="border-collapse: collapse; padding: 3px; margin: 1px; border: 1px solid #000000;"><span style="padding: 0px; margin: 0px;"><span style="font-family: 'Cronos Pro'; font-size: 10pt; padding: 0px; margin: 0px;">Push messages are data messages in to the service. Data messages out are excluded. Some examples of data messages include chat messages and shared cursors. Push messages assist in collaborative </span><span style="font-family: 'Cronos Pro'; font-size: 10pt; padding: 0px; margin: 0px;">workflows</span><span style="font-family: 'Cronos Pro'; font-size: 10pt; padding: 0px; margin: 0px;"> between clients.</span></span></td>
</tr>
<tr style="padding: 0px; margin: 0px;">
<td style="border-collapse: collapse; padding: 3px; margin: 1px; border: 1px solid #000000;"><span style="font-family: arial, helvetica, sans-serif; font-size: 10pt; padding: 0px; margin: 0px;">User Minutes</span></td>
<td style="border-collapse: collapse; padding: 3px; margin: 1px; border: 1px solid #000000;"><span style="font-family: arial, helvetica, sans-serif; font-size: 10pt; padding: 0px; margin: 0px;">$0.01 USD per Hour</span></td>
<td style="border-collapse: collapse; padding: 3px; margin: 1px; border: 1px solid #000000;"><span style="padding: 0px; margin: 0px;"><span style="font-family: 'Cronos Pro'; font-size: 10pt; padding: 0px; margin: 0px;">User minutes is the amount of time that a connection is maintained to the service. If there are 3 connections maintained over a 5 minute period, the total user minutes for that session is 15 minutes.</span></span></td>
</tr>
</tbody>
</table>
<p style="font-size: 1.083em; line-height: 1.462; padding: 0px; margin: 0px;"><span style="padding: 0px; margin: 0px;"> </span></p>
<p style="font-size: 1.083em; line-height: 1.462; padding: 0px; margin: 0px;"><span style="font-size: 8pt; padding: 0px; margin: 0px;"><em><span style="font-style: italic; font-family: 'Cronos Pro'; padding: 0px; margin: 0px;">Note: Though multiple currencies are supported and your payment card will be charged in the appropriate currency,<br />
the developer portal interface and billing </span><span style="font-style: italic; font-family: 'Cronos Pro'; padding: 0px; margin: 0px;">emails</span><span style="font-style: italic; font-family: 'Cronos Pro'; padding: 0px; margin: 0px;"> will be in English and USD only.</span></em></span></p>
<p style="font-size: 1.083em; line-height: 1.462; padding: 0px; margin: 0px;">
<p style="font-size: 1.083em; line-height: 1.462; padding: 0px; margin: 0px;"><span style="font-size: 8pt; padding: 0px; margin: 0px;"><em><span style="font-style: italic; font-family: 'Cronos Pro'; padding: 0px; margin: 0px;"><br />
</span></em></span></p>
<p>Sinceramente achei um absurdo e caro a forma de cobrança, acredito que um modelo baseado na quantidade de conexões simultâneas seria mais justo, pois pagar 10 centavos de dólares por 1k de mensagens enviadas, ou seja, 1k de uso do chat é fora de série. Comece a somar tudo isso e entenda a onde eu quero chegar. Não importa o tamanho de sua aplicação em recursos, o que importa é a quantidade de uso, se há uma aplicação que fique dois usuários conectados usando recursos de áudio, vídeo, chat e compartilhamentos de arquivos durante 24 horas, e outra aplicação que tenha 10 usuários conectados durante 1 hora, a diferença no valor final pode ser bem pouca.</p>
<p><strong>Qualidade do áudio e vídeo</strong></p>
<p><strong><span style="font-weight: normal;">Ter o controle da qualidade do áudio e vídeo é bem fácil, o que não é fácil é identificar o momento em que a internet do usuário está ruim para assim alterar a qualidade do áudio e vídeo. Por vários momentos o áudio falhou, houve latência, e quando entrava mais de 4 usuários, algum dos usuários ficava sem áudio, isso acontecia de forma randômica e constantemente.</span></strong></p>
<p><strong>Upgrade</strong></p>
<p>Depois de ter feito todos os testes resolvi fazer o upgrade da conta developer que vem com 15 dólares iniciais para testes, pois pretendia conhecer outros recursos como o controle detalhado de uso por aplicação e a possibilidade de adicionar limite de uso por aplicação, o que permite criar um sistema de bilhetagem. E para minha decepção, até a data deste post a conta não tinha sido atualizada, e olha que já se passaram mais de 5 dias após a Adobe Store ter enviado um email informando a compra e confirmação dos dados da transação.</p>
<p><strong>Conclusão:</strong></p>
<p>A curto prazo o uso do LCCS pode ser bastante interessante, criar aplicações que devem ir para produção o mais rápido possível podem usufruir do serviço com muita facilidade. Já a médio e a longo prazo pode não ser uma boa solução, principalmente se a aplicação exigir muitas conexões simultâneas e pontos de customizações que o SDK não permite criar.</p>
<p><strong>Importante:</strong></p>
<p>Espero que tenha ajudado você de alguma forma com este post. Quero deixar claro que estas foram opiniões pessoais e as mesmas não refletem no desenvolvimento de futuras aplicações usando o Adobe Live Cycle Collaboration Service que eu venha a fazer.</p>
<p><strong>Aplicação demo:</strong></p>
<p>O resultado desta aplicação <a href="http://www.tomsas.com.br/p2p" target="_blank">pode ser visto aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://fmsguru.com.br/2009/10/20/adobe-live-cycle-collaboration-service/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Entendendo o RTMFP</title>
		<link>http://fmsguru.com.br/2009/10/12/entendendo-o-rtmfp/</link>
		<comments>http://fmsguru.com.br/2009/10/12/entendendo-o-rtmfp/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 15:24:27 +0000</pubDate>
		<dc:creator>Carlos Eduardo</dc:creator>
				<category><![CDATA[Novidades]]></category>
		<category><![CDATA[RTMFP]]></category>
		<category><![CDATA[RTMP]]></category>
		<category><![CDATA[flash media]]></category>

		<guid isPermaLink="false">http://fmsguru.com.br/?p=86</guid>
		<description><![CDATA[Em 2006 a Adobe comprou a Amicima, Inc. uma empresa especializada na criação de novos procotolos para comunicações cliente x servidor e cliente x cliente. Na época ela tinha desenvolvido um protocolo chamado de Secure Media Flow Protocol (MFP) e o MFPNet que possuia uma camada para comunicação p2p.
A partir desta aquisição a Adobe criou [...]]]></description>
			<content:encoded><![CDATA[<p>Em 2006 a Adobe comprou a <strong>Amicima, Inc. </strong>uma empresa especializada na criação de novos procotolos para comunicações cliente x servidor e cliente x cliente. Na época ela tinha desenvolvido um protocolo chamado de Secure Media Flow Protocol (MFP) e o MFPNet que possuia uma camada para comunicação p2p.</p>
<p>A partir desta aquisição a Adobe criou o Real-Time Media Flow Protocol (RTMFP), um protocolo para comunicações p2p a partir de duas aplicações Flash/Flex rodando sobre o Adobe® Flash® Player 10 ou sobre o Adobe AIR® 1.5. O RTMFP possui recursos muito importantes que inclui baixa latência, segurança e escalabilidade, pois a comunicação parte diretamente entre dois clientes, não passando assim por um servidor Flash Media.</p>
<p>O RTMP funciona somente sobre o TCPIP e sempre irá precisar de um servidor Flash Media no centro, o que pode aumentar a latência dependendo da localização do servidor e seu desempenho. Já com o RTMFP conseguimos garantir mais qualidade porque a comunicação é feita sobre o UDP,  levando assim mais eficiência e a redução drástica da quantidade de pacotes perdidos. Vale destacar que o áudio  tem prioridade sobre o vídeo, o que faz deste procotolo uma excelente opção para o desenvolvimento de aplicações para vídeo conferência de alta qualidade.</p>
<p>Com o RTMFP podemos criar aplicações para vídeo conferências, salas de bate papo, jogos multi-players e ferramentas como o msn, skype, gtalk e afins. Não existe uma API nova para o uso desde protocolo, a comunicação continua sendo feita por NetConnection e NetStream, a única diferença é que é preciso gerar um peer ID para as comunicações p2p, e hoje é possível negociar isso através do <a href="http://labs.adobe.com/technologies/stratus/" target="_blank">Stratus</a> que é um serviço beta da Adobe que permite cada cliente se conectar ao servidores deste serviço somente para gerar e gerenciar o peer ID.</p>
<p>O peer ID nada mais é que uma chave que identifica cada cliente e sua localização, ele é gerado da seguinte forma:</p>
<address>nc = new NetConnection();<br />
nc.addEventListener(NetStatusEvent.NET_STATUS,ncStatus);<br />
nc.connect(<strong>rtmfp</strong>://Stratus_Server+Developer_key);</address>
<p><strong>Após conectado ao serviço, basta recuperar o peer ID com:</strong></p>
<p><em>var myPeerID:String = nc.nearID;</em></p>
<p><strong>Em seguida basta estabelecer a comunicação do streaming através do NetStream.</strong></p>
<p><em>sendStream = new NetStream(nc,NetStream.DIRECT_CONNECTIONS);<br />
sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);<br />
sendStream.publish(&#8220;media&#8221;);</em><strong><em> </em></strong></p>
<p><strong><em> </em></strong><em>var sendStreamClient:Object = new Object();<br />
sendStreamClient.onPeerConnect = function(callerns:NetStream):Boolean{</em></p>
<p><em>farPeerID = callerns.farID;</em></p>
<p><em>trace(&#8220;O cliente &#8220;+farPeerID + &#8220;Está te chamando para uma comunicação p2p&#8221;);</em></p>
<p><em>return true;<br />
}</em></p>
<p><em>sendStream.client = sendStreamClient;</em></p>
<p><strong>Para aceitar a conexão p2p é só usar o código abaixo. Onde o </strong><em><strong>farPeerID é a chave peer ID do amigo p2p.</strong><br />
</em></p>
<p><em>recvStream = new NetStream(nc,farPeerID);<br />
recvStream.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);<br />
recvStream.play(&#8220;media&#8221;);</em></p>
<p><em>recvStream.client = this;</em></p>
<p><strong>Para enviar uma mesagem para o amigo p2p basta fazer.</strong></p>
<p><em>sendStream.send(&#8220;receiveSomeData&#8221;,txtSendData.text);</em></p>
<p><em><br />
</em>Você deve estar se perguntando, mas como irei recuperar o peer ID de cada amigo conectado ao Stratus? A resposta é simples, cada amigo se conecta ao Stratus, e de posse do peer ID, cada amigo guarda este ID em seu servidor web ou em um sharedObject em um outro servidor Flash Media por exemplo. A opção de um outro servidor Flash Media para guardar estas chaves de amigos e grupos de amigos é a mais interessante, pois quando eles conectarem ou se desconectarem da aplicação através de um script server side no Flash Media, será possível adicionar ou remover o peer ID de uma lista. Desta forma conseguimos criar um recurso que indentifica quando o usuário estará on-line ou off-line.</p>
<p>O exemplo acima usa o <a href="http://labs.adobe.com/technologies/stratus/" target="_blank">Adobe Stratus</a> que é um serviço beta e não permite criar aplicações comerciais por enquanto, mas já dá uma idéia de uso do RTMFP, pois você poderá criar aplicações para testes entre amigos ou empresas dentro da internet ou intranet. Agora se você pretende implementar uma aplicação comercial e fazer uso de comunicações p2p com o RTMFP, você poderá usar o <a href="http://labs.adobe.com/technologies/afcs/" target="_blank">Adobe Live Cycle Collaboration Service</a> que recentemente foi liberado para uso comercial e que inclui a geração de peer IDs via RTMFP e um recurso chamado de FMS failover que estabelece uma comunicação RTMP automáticamente caso a RTMFP falhe. Como o Adobe Live Cycle Collaboration é um serviço comercial, <a href="http://forums.adobe.com/thread/501587?tstart=0" target="_blank">consequentemente iremos pagar pelo mesmo</a>, e o mais interessante é que vamos pagar somente pelo uso, uma espécie de <a href="http://en.wikipedia.org/wiki/Software_as_a_service" target="_blank">SaaS</a>.</p>
<p><img class="aligncenter size-full wp-image-95" title="Adobe Live Cycle Collaboration Service" src="http://fmsguru.com.br/wp-content/uploads/2009/10/AdobeLiveCycleCollaborationService.png" alt="Adobe Live Cycle Collaboration Service" width="599" height="400" /></p>
<p>Em outubro de 2009 no Adobe Max,  a Adobe levou ao público o lançamento de suas principais tecnologias e tendências,  a mesma fez o anúncio do Flash Player 10.1, do Adobe AIR 2.0, e os novos recursos do RTMFP, que inclui:</p>
<ol>
<li><strong>Groups &#8211; </strong> Inclui suporte a comunicação por grupos de clientes via p2p, assim como acontece no Skype e MSN. Só que a grande sacada é que será possível enviar dados, áudio e vídeo entre todos os clientes presentes em um ou mais grupos.</li>
<li><strong>Multicast &#8211; </strong>Camada que permite o suporte nativo para multicast IP, que são técnicas para a transmissão e serviço de alta qualidade.</li>
<li><strong><strong>Posting &#8211; </strong></strong>Recurso que permite enviar mensagens ActionScript.</li>
<li><strong>Directed Routing -</strong> Direcionamento de mensagens ActionScript dentro de um grupo para um ou mais clientes especificos. Resumindo, dentro de um grupo será possível enviar mensagens privadas para os usuários que você definir.</li>
<li><strong>Object Replication &#8211; </strong>Envio de mensagens em ActionScript através de replicação. Resumindo, você envia para um cliente x dentro de um grupo, e este cliente envia para outro cliente, e assim sussesivamente.</li>
</ol>
<p>Na imagem abaixo você pode conferir uma breve amostra do funcionamento de uma comunicação RTMFP baseada em grupos.</p>
<p><img class="aligncenter size-full wp-image-88" title="P2P Multicast" src="http://fmsguru.com.br/wp-content/uploads/2009/10/p2pmulticast.png" alt="P2P Multicast" width="532" height="412" /></p>
<p>Apesar  do RTMFP estar completando um ano, ainda não é possivel o uso de sharedObject como acontece com uso do Flash Media Interactive Server, mas ele tem se comportado muito bem em meus testes de bancada, possuindo uma alta qualidade de áudio quando usado com Speex e vídeo mesmo usando o padrão Nellymoser.</p>
<p>Com todas estas novidades da Adobe estavámos esperando que o Flash Media Interactive Server pudesse gerar e gerenciar também estes peer ID&#8217;s, mas pelo jeito isso não deve acontecer tão cedo, pois em novembro de 2009 a Adobe deve lançar o Flash Media Interactive Server 3.5.3 que contém somente atualizações  e a implementação de pequenos novos recursos.  Veja as palavras de <a href="http://blogs.adobe.com/ktowes/" target="_blank">Kevin Tower</a> na lista de Flash Media da Community.lsoft.com.</p>
<p>&#8220;FLASH MEDIA SERVER &#8211; we have not announced any new version of FMS yet that will support RTMFP.  We did hint yesterday that we&#8217;ll be updating FMS3.5 to version 3.5.3 later this year to support the new FP 10.1 features &#8211; and in a future version after that release &#8211; FMS may be one of your options to host a local service to build your own P2P applications &#8211; including introductions, and supporting server side programming.&#8221;.</p>
<p>Agora vamos aguardar, pois para nós que temos servidores dedicados com a licença do Flash Media Interactive Server não é uma boa opção ter que pagar para usar o <a href="http://labs.adobe.com/technologies/afcs/" target="_blank">Adobe Live Cycle Collaboration Service</a> somente para estabelecer esta geração de peer ID&#8217;s. Lembrando que caso falhe a comunicação RTMFP o FMS failover passará a usar o RTMP e teremos também a cobrança de banda de upload, download e da quantidade de dados enviados.  É um pouco estranho estas cobranças para o uso do RTMFP, mas vale ficar atento porque mais novidades virão por aí.</p>
]]></content:encoded>
			<wfw:commentRss>http://fmsguru.com.br/2009/10/12/entendendo-o-rtmfp/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
