<?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>The Pixel Code &#187; Adobe Stratus</title>
	<atom:link href="http://www.thepixelcode.com/tag/adobe-stratus/feed" rel="self" type="application/rss+xml" />
	<link>http://www.thepixelcode.com</link>
	<description>Design / Develop / Inspiration by Mohammed Khan</description>
	<lastBuildDate>Mon, 19 Jul 2010 03:45:04 +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>Video feed exchange using Adobe Stratus</title>
		<link>http://www.thepixelcode.com/development/flex/video-feed-exchange-using-adobe-stratus</link>
		<comments>http://www.thepixelcode.com/development/flex/video-feed-exchange-using-adobe-stratus#comments</comments>
		<pubDate>Sun, 05 Jul 2009 16:15:48 +0000</pubDate>
		<dc:creator>Mohammed Khan</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[RTMFP]]></category>
		<category><![CDATA[Adobe Stratus]]></category>

		<guid isPermaLink="false">http://www.thepixelcode.com/?p=176</guid>
		<description><![CDATA[In continuation of my excitement to work with Adobe Stratus and test the RTMFP protocol capabilities, here is another example on how two flash player 10 clients can exchange video feeds with each other without the need of routing through any media server like Flash Media Server. In my earlier post where the source code [...]]]></description>
			<content:encoded><![CDATA[<p>In continuation of my excitement to work with Adobe Stratus and test the RTMFP protocol capabilities, here is another example on how two flash player 10 clients can exchange video feeds with each other without the need of routing through any media server like Flash Media Server. In my earlier <a href="http://www.thepixelcode.com/development/flex/developing-a-chat-application-with-adobe-stratus">post</a> where the source code was in accordance to Ryan Stewart&#8217;s <a href="http://blog.digitalbackcountry.com/2009/06/building-a-p2p-chat-application-with-adobe-stratus/">demo</a>, to demonstrate text chat capabilities using Adobe Stratus service.</p>
<p>Just to extend and be original, I wanted to test the video feed exchange over Adobe Stratus, and to my surprise I found that the plumbing code required to bind the feeds to the NetStreams is very similar when working with text chat. In fact when you look at the code, you will find that only two new methods are written to publish and subscribe the video streams</p>
<pre class="java">
//Used to bind your local camera (webcam) to the VideoDisplay
private function nearId_videoDisplay_creationComplete():void
{
   var camera:Camera = Camera.getCamera();
   if (camera)
   {
      vdispNearId.attachCamera(camera);
   }
   else
   {
      Alert.show("You don't seem to have a camera.");
   }
}

//Used for streaming your local webcam video feed
public function onVideoSend():void
{
     var camera:Camera = Camera.getCamera();
     //var mic:Microphone = Microphone.getMicrophone();
     sendStream.attachCamera(camera);
     //sendStream.attachAudio(mic);
     btnNearIdVideoStream.enabled= false;

}

//Used for displaying remote camera(webcam) video feed
public function onVideoRecieve():void
{
     remoteVideo = new Video();
     remoteVideo.width = 320;
     remoteVideo.height = 240;
     remoteVideo.attachNetStream(recievedStream);
     vdispFarId.addChild(remoteVideo);

}</pre>
<p>The two NetStreams, <code>sendStream</code> and r<code>ecievedStream</code>, is what one would work it. You can practically attache (publish) audio, video and byteArray data to the <code>sendStream</code>, and the remote host can subscribe to your feed. One thing that really makes me interested with RTMFP is the ISP bandwidth cost. Earlier, when AV exchange sites (running on Media Servers like FMS), had to bare the cost of the video feed exchange over their bandwidth, but with RTMFP, they no longer have. With services like Adobe Stratus, which only maintain the session between the two Flash Player 10 clients, and the binary feeds exchanged between the Flash Player 10 clients is at the user&#8217;s cost. </p>
<div id="attachment_196" class="wp-caption alignnone" style="width: 310px"><a href="http://www.thepixelcode.com/wp-content/uploads/2009/07/Picture-1.png"><img src="http://www.thepixelcode.com/wp-content/uploads/2009/07/Picture-1-300x187.png" alt="Stratus Video Feed App" title="Stratus Video Feed App" width="300" height="187" class="size-medium wp-image-196" /></a><p class="wp-caption-text">Stratus Video Feed App</p></div>
<p>Below is the source code attached for you to try to and test. Also remember you would need Flash Player 10 installed and two different browser to test out. Also you would need your Adobe Stratus Developer Key which can be obtained <a href="http://labs.adobe.com/technologies/stratus/">here</a>.</p>
<p><a href='http://www.thepixelcode.com/wp-content/uploads/2009/07/SampleStratusVideoApp.zip'>Sample Stratus Video App Zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thepixelcode.com/development/flex/video-feed-exchange-using-adobe-stratus/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developing a Chat Application with Adobe Stratus</title>
		<link>http://www.thepixelcode.com/development/flex/developing-a-chat-application-with-adobe-stratus</link>
		<comments>http://www.thepixelcode.com/development/flex/developing-a-chat-application-with-adobe-stratus#comments</comments>
		<pubDate>Fri, 03 Jul 2009 23:06:01 +0000</pubDate>
		<dc:creator>Mohammed Khan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Adobe Stratus]]></category>
		<category><![CDATA[RTMFP]]></category>

		<guid isPermaLink="false">http://www.thepixelcode.com/?p=147</guid>
		<description><![CDATA[In continuation to my previous blog,I was eager to test the Adobe Stratus service. Unlike Adobe Flash Collaboration Service (AFCS) aka Cocomo, Stratus is simple and straight forward to use. It doesn&#8217;t require you to download any library SWCs, just a simple Developer Key, and you are on your way to develop collaborative apps. The [...]]]></description>
			<content:encoded><![CDATA[<p>In continuation to my previous <a href="http://www.thepixelcode.com/development/flash/comparing-rtmp-and-rtmfp-protocols">blog</a>,I was eager to test the <a href="http://labs.adobe.com/technologies/stratus/">Adobe Stratus</a> service. Unlike Adobe Flash Collaboration Service (AFCS) aka Cocomo, Stratus is simple and straight forward to use. It doesn&#8217;t require you to download any library SWCs, just a simple Developer Key, and you are on your way to develop collaborative apps. The hight light of Stratus is that it lets the flash player 10 clients connect to each other over the RTMFP protocol. Using Stratus one could be able to develop AV and text based collaborative apps, in fact what I feel is Stratus is kind of service that lets you experiment around with RTMFP and the new feature within Flash Player 10 (to connect with other Flash Player 10). AFCS gives you more control over the wire, but Stratus is simple to just get started. Well to work Stratus or AFCS, some prior knowledge of working with Flash Media Server can be handy. </p>
<div id="attachment_169" class="wp-caption alignnone" style="width: 310px"><a href="http://www.thepixelcode.com/wp-content/uploads/2009/07/StratusChat.png"><img src="http://www.thepixelcode.com/wp-content/uploads/2009/07/StratusChat-300x187.png" alt="Adobe Stratus Demo Chat App" title="Adobe Stratus Demo Chat App" width="300" height="187" class="size-medium wp-image-169" /></a><p class="wp-caption-text">Adobe Stratus Demo Chat App</p></div>
<p>I have attached the source code of FB3.3 sdk based chat application which was used by Ryan Stewart to demonstrate <a href="http://blog.digitalbackcountry.com/2009/06/building-a-p2p-chat-application-with-adobe-stratus/">here</a>, for code review and how to make it work, use the video to understand.  Also note to run the application you will the need the developer key, which you can obtain <a href="http://labs.adobe.com/technologies/stratus/">here</a>. And two different browsers, so that two different Flash Player clients can connect to each other. </p>
<p><a href='http://www.thepixelcode.com/wp-content/uploads/2009/07/SampleStratusChatApp.zip'>SampleStratusChatApp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thepixelcode.com/development/flex/developing-a-chat-application-with-adobe-stratus/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comparing RTMP and RTMFP protocols</title>
		<link>http://www.thepixelcode.com/development/flash/comparing-rtmp-and-rtmfp-protocols</link>
		<comments>http://www.thepixelcode.com/development/flash/comparing-rtmp-and-rtmfp-protocols#comments</comments>
		<pubDate>Sat, 27 Jun 2009 08:56:21 +0000</pubDate>
		<dc:creator>Mohammed Khan</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[RTMFP]]></category>
		<category><![CDATA[RTMP]]></category>
		<category><![CDATA[Adobe Flash Media Server]]></category>
		<category><![CDATA[Adobe Stratus]]></category>
		<category><![CDATA[Cocomo]]></category>
		<category><![CDATA[FMS]]></category>

		<guid isPermaLink="false">http://www.thepixelcode.com/?p=53</guid>
		<description><![CDATA[Its interesting to see how Adobe has been evolving the protocols required for collaborative apps. In recent years Real Time Messaging Protocol (RTMP) has dominated live content delivery product markets. Flash Media Server and other open source media servers relied on RTMP for streaming audio and video content, and also to create collaborative apps. But [...]]]></description>
			<content:encoded><![CDATA[<p>Its interesting to see how Adobe has been evolving the protocols required for collaborative apps. In recent years <strong>Real Time Messaging Protocol (RTMP)</strong> has dominated live content delivery product markets. Flash Media Server and other open source media servers relied on RTMP for streaming audio and video content, and also to create collaborative apps. But there was a constraint while using RTMP protocol for collaborative apps, all clients involved in the conversation had to fetch feeds from the streaming server, they couldn&#8217;t directly connect to each other to interact. The answer to this concern again came out from Adobe, they released the <strong>Real Time Media Flow Protocol (RTMFP) </strong>specification for Peer to Peer communication (P2P). </p>
<p>As I was discussing with my team at office today about collaborative apps, and when I asked &#8220;Does someone know here about RTMFP ?&#8221;, SOMEONE popped up &#8220;Its an upcoming extension to the RTMP protocol&#8221;. I had to hold on and say &#8220;Vinay I don&#8217;t think its an extension to RTMP but instead its a communication standard for a whole different breed of apps&#8221;. So after getting back to home, I thought it would be interesting if I could put up a blog post that differentiates out RTMP and RTMFP. So here is what I feel are the differences :</p>
<p><strong>1.</strong> Looking at the specifications of RTMP and RTMFP (as they are open source now), the first observation is in the underlying transport layer protocols that RTMP and RTMFP use. RTMP uses the <strong>Transmission Control Protocol (TCP)</strong>, where as the RTMFP uses the <strong>User Datagram Protocol (UDP)</strong>. With the above highlight, it would be necessary to look at TCP and UDP to understand the what RTMP and RTMFP offers. </p>
<p>As we know TCP is the most commonly used protocol on the Internet. The reason for this is because TCP offers error correction. When the TCP protocol is used there is a &#8220;guaranteed delivery.&#8221; This is due largely in part to a method called &#8220;flow control.&#8221; Flow control determines when data needs to be re-sent, and stops the flow of data until previous packets are successfully transferred. This works because if a packet of data is sent, a collision may occur. When this happens, the client re-requests the packet from the server until the whole packet is complete and is identical to its original. </p>
<p>On other side UDP (User Datagram Protocol) is another commonly used protocol on the Internet. However, UDP is never used to send important data such as webpages, database information, etc; UDP is commonly used for streaming audio and video. Streaming media such as Windows Media audio files (.WMA) , Real Player (.RM), and others use UDP because it offers speed! The reason UDP is faster than TCP is because there is no form of flow control or error correction. The data sent over the Internet is affected by collisions, and errors will be present. Remember that UDP is only concerned with speed. This is the main reason why streaming media is not high quality.</p>
<p>Well if UDP is not suitable for streaming media, then why is chosen for RTMFP ? To answer this lets look at a scenario, if I am gonna use the TCP protocol for streaming audio and during transmission a 300ms audio was lost, then as per the mechanism, the media server will reinitiate the streaming from start. This would get painful if each time some data is lost. This is reason why UDP is used, even if I loose the 300ms audio, the gap is not that large that I have to start over again, so the drop packets are compromised and I get the whole data packet.</p>
<p><strong>2.</strong> Communication model when using RTMP and RTMFP is different, when using RTMP, clients when needed to interact with each other has to route messages through the Flash Media Server, which means that a direct connection between the user&#8217;s flash players cannot be made. But with RTMFP the scenario is different, because the protocol has been designed to build collaborative apps, Adobe made it possible for individual Flash Player clients to connect with each other and pass messages while maintaining the session with the media server or the Adobe Stratus service. Below figures, illustrate the two different communication models.</p>
<div id="attachment_52" class="wp-caption alignnone" style="width: 310px"><a href="http://www.thepixelcode.com/wp-content/uploads/2009/06/RTMFP-Communicatio-Model.png"><img src="http://www.thepixelcode.com/wp-content/uploads/2009/06/RTMFP-Communicatio-Model-300x222.png" alt="RTMFP Communication Model" title="RTMFP-Communicatio-Model.png" width="300" height="222" class="size-medium wp-image-52" /></a><p class="wp-caption-text">RTMFP Communication Model</p></div>
<div id="attachment_51" class="wp-caption alignnone" style="width: 310px"><a href="http://www.thepixelcode.com/wp-content/uploads/2009/06/RTMP-Communication-Model.png"><img src="http://www.thepixelcode.com/wp-content/uploads/2009/06/RTMP-Communication-Model-300x222.png" alt="RTMP Communication Model" title="RTMP-Communication-Model.png" width="300" height="222" class="size-medium wp-image-51" /></a><p class="wp-caption-text">RTMP Communication Model</p></div>
<p><strong>3.</strong> Bandwidth consumption is much better when using RTMFP as it avoids much of the client-server communication for inter-client communications as it prevails in the RTMP implementation. </p>
<p><strong>4.</strong> Security and firewall restrictions are always part of the application design considerations, RTMFP fails to impress at this point, because most of the firewalls implemented in corporates are not UDP port friendly. So when RTMFP and RTMP are to be considered, the implementation considerations are always different for both the protocols.</p>
<p><strong>5.</strong> RTMFP cannot be used for broadcasting high quality live video or swarming, it can only connect and stream live audio and webcam, whereas the RTMP can be used to stream high quality video, audio and webcam (from different sources).</p>
<p>In coming time the RTMFP protocol, I feel would evolve the way P2P or C2C applications are built using a common communication framework. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.thepixelcode.com/development/flash/comparing-rtmp-and-rtmfp-protocols/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
