<?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>Anistar RIA Blog &#187; NetStream</title>
	<atom:link href="http://blog.riaproject.com/tag/netstream/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.riaproject.com</link>
	<description>Rich Internet Application 知識誌</description>
	<lastBuildDate>Wed, 21 Dec 2011 05:43:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>深入淺出 Flash Media Server (RTMP)介紹 part VI &#8211; 使用WebCam</title>
		<link>http://blog.riaproject.com/flash-media-server/125.html</link>
		<comments>http://blog.riaproject.com/flash-media-server/125.html#comments</comments>
		<pubDate>Fri, 27 Jul 2007 11:04:08 +0000</pubDate>
		<dc:creator>anistar</dc:creator>
				<category><![CDATA[FlashMediaServer]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Media Server]]></category>
		<category><![CDATA[NetStream]]></category>

		<guid isPermaLink="false">http://blog.riaproject.com/?p=125</guid>
		<description><![CDATA[[這段程式碼僅供ActionScript 3.0與Flash Media Server參考] 要完成一個視訊的錄製，就要學會如何抓取周邊的資源來用，例如使用Webcam或是麥克風，這次來Demo如何使用在Flash中使用WebCam，下次再來說如何將影音錄製在Flash Media Server上。 要使用WebCam用的是Cemara類別，只要用get的方法就能抓取到WebCam使用，其實Flash是可以擷取多個攝影機的，不過這邊抓取一個並放置在Video身上就好了。 package { import flash.display.Sprite; import flash.media.Video; import flash.media.Camera; import flash.media.Microphone; public class Main142webcam extends Sprite{ private var webCam:Camera; private var micro:Microphone; public function Main142webcam(){ 　　webCam = Camera.getCamera(); streamVideo.attachCamera(webCam); }}} 當擷取到攝影機時，Flash會警告使用者是否允許使用該資源，若是允許才能繼續下去，否則將不會發生任何事情。　 最後由webcam擷取的影片將會交由streamVideo來進行播放的動作。  ]]></description>
		<wfw:commentRss>http://blog.riaproject.com/flash-media-server/125.html/feed</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>深入淺出 Flash Media Server (RTMP)介紹 part V &#8211; Play &amp; Stream</title>
		<link>http://blog.riaproject.com/flash-media-server/126.html</link>
		<comments>http://blog.riaproject.com/flash-media-server/126.html#comments</comments>
		<pubDate>Tue, 24 Jul 2007 11:03:34 +0000</pubDate>
		<dc:creator>anistar</dc:creator>
				<category><![CDATA[FlashMediaServer]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Media Server]]></category>
		<category><![CDATA[NetStream]]></category>

		<guid isPermaLink="false">http://blog.riaproject.com/?p=126</guid>
		<description><![CDATA[[這段程式碼僅供ActionScript 3.0與Flash Media Server參考] 上次完成了連線，光完成連線應該沒什麼快感吧，這次要嘗試從Flash Media Server上來動態串流播放FLV檔，當然因為要播放的是一個串流的媒體，所以要先準備好一個.flv的影片檔才能播放。 基本上串流是經由NetConnection的連線在傳遞資料，一個NetConnection 可以有多個NetStream，不過一個NetStream只能處理一個媒體，而且只能處理一個方向，這時候你一定覺得什麼叫做方向，老實說我也覺得怪怪的，不過這邊講的方向是指錄製(由Client送往Server)或是播放(由Server送往Client)，所以若要要同時錄製與播放，則可以產生兩個NetStream即可，說太遠了，這邊我們示範播放串流就好了，這個CS3.flv被放置在[C:Program FilesMacromediaFlash Media Server 2applicationsfirstMediastreamsconnector]目錄中，firstMedia是應用程式名稱(Apllication Name)而connector是實題名稱(Instance name)，示範程式如下： 執行結果如下圖，就可以播放Server上的FLV。 package { import flash.display.Sprite; import flash.net.NetConnection; import flash.events.NetStatusEvent; import flash.net.ObjectEncoding; import flash.media.Video; import flash.net.NetStream; import flash.events.AsyncErrorEvent; public class Main142 extends Sprite{ public var nc:NetConnection; public var in_ns:NetStream; public function Main142(){ nc = new NetConnection(); nc.objectEncoding = ObjectEncoding.AMF0; nc.connect("rtmp://127.0.0.1/firstMedia/connector"); nc.addEventListener(NetStatusEvent.NET_STATUS,statusHandler); [...]]]></description>
		<wfw:commentRss>http://blog.riaproject.com/flash-media-server/126.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>深入淺出 Flash Media Server (RTMP)介紹 part IV &#8211; 建立新連線</title>
		<link>http://blog.riaproject.com/flash-media-server/127.html</link>
		<comments>http://blog.riaproject.com/flash-media-server/127.html#comments</comments>
		<pubDate>Sat, 21 Jul 2007 08:31:58 +0000</pubDate>
		<dc:creator>anistar</dc:creator>
				<category><![CDATA[FlashMediaServer]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Media Server]]></category>
		<category><![CDATA[NetStream]]></category>

		<guid isPermaLink="false">http://blog.riaproject.com/?p=127</guid>
		<description><![CDATA[[這段程式碼僅供ActionScript 3.0與Flash Media Server參考] 好了，接續上次的介紹內容，終於到了動動手時間了，要使用ActionScript 3.0來連接Flash Media Server，必須要透過NetConnection這個類別來完成，這是一個最基礎也是最簡單的範例： 先跟大家說聲抱歉，在這我不會逐行解釋程式碼代表什麼意思，若對ActionScript 3.0不是很清楚的人可以看ActionScript 3.0的help，或是可以看小弟我寫的書，了解Flash CS3如何和ActionScript 3.0搭配使用。 package {  import flash.display.Sprite;  import flash.net.NetConnection;  import flash.events.NetStatusEvent;  import flash.net.ObjectEncoding; public class Main141 extends Sprite{ public function Main141(){   var nc:NetConnection = new NetConnection();   nc.objectEncoding = ObjectEncoding.AMF0;   nc.connect("rtmp://127.0.0.1/firstMedia/connector");   nc.addEventListener(NetStatusEvent.NET_STATUS,statusHandler);   } private function statusHandler(event:NetStatusEvent):void{   trace("這個連線的code內容為:"+event.info.code);   for (var [...]]]></description>
		<wfw:commentRss>http://blog.riaproject.com/flash-media-server/127.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FLV與NetStram播放完畢判斷 part II</title>
		<link>http://blog.riaproject.com/actionscript/14.html</link>
		<comments>http://blog.riaproject.com/actionscript/14.html#comments</comments>
		<pubDate>Fri, 09 Mar 2007 01:56:33 +0000</pubDate>
		<dc:creator>anistar</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Media Server]]></category>
		<category><![CDATA[NetStream]]></category>

		<guid isPermaLink="false">http://blog.riaproject.com/?p=14</guid>
		<description><![CDATA[[此文章ActionSctipt2.0與ActionScript3.0共用]  接續這[FLV與NetStram播放完畢判斷 part I]這篇文章，今天我們來繼續談下去，要如何搞定NetStream的播放完畢事件，我們來看看下圖，下圖是一個已經完成的範例所trace出來的文字，我故意將trace出來的表示結構設置成 Event:Code ，這樣比較方便我們辨識是由哪個事件傳回哪些碼回來。   首先來看看NetStream.Buffer.Flush的code被傳回來以後，代表他已經假性結束(這在PartI講過了)，但是後面還會傳一次NetStream.Buffer.Empty代表真正的把影片給播放完畢 ，這時候你能代表他真正的撥完，所以您可以先把NetStream.Buffer.Flush傳回來時先記錄一個Flag，然後當NetStream.Buffer.Empty傳回時去檢查這個Flag是正確就可以了，不過真的要搞的這麼麻煩嗎？ 等等，在NetStream.Buffer.Flush和NetStream.Buffer.Empty之間您有沒有發現好像還有一個NetStream.Play.Complete的Code,莫非它就是我們的一現生機？沒錯，就是這個NetStream.Play.Complete，您會發現若您改用onPlayStatus事件，就可以得到這個Code，太好了，終於不用在判斷是否播放完畢的問題來苦惱了，這個事件在Flash的help或liveDoc裡面是找不到的，先跟大家說一聲，免得大家找破腦袋。 後來我無意間發現，網路上如果找onPlayStatus的話，會有一堆人在問為什麼他用了該事件後不能觸發，結果幾乎都是石沉大海沒人回答，好吧，我來解釋一下，如果您播放的是本機端的FLV檔，NetStream是不會去觸發onPlayStatus的，所以當您是連接Flash Media Server來串流影片時，才會有該事件，這就是答案囉。 P.S. onPlayStatus事件我是在Flash Media Server的help裡看到的，所以會這樣也就不奇怪了。]]></description>
		<wfw:commentRss>http://blog.riaproject.com/actionscript/14.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>FLV與NetStram播放完畢判斷 part I</title>
		<link>http://blog.riaproject.com/flash/8.html</link>
		<comments>http://blog.riaproject.com/flash/8.html#comments</comments>
		<pubDate>Tue, 06 Mar 2007 02:43:04 +0000</pubDate>
		<dc:creator>anistar</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Media Server]]></category>
		<category><![CDATA[NetStream]]></category>

		<guid isPermaLink="false">http://blog.riaproject.com/?p=8</guid>
		<description><![CDATA[[此段文章ActionScript 2.0與ActionScript3.0共用]  前些日子在Demo如何在Flash中播放FLV的時候出了些問題，其實原來的寫法是對的，但是可能是上了一整天的班了，腦袋已經開始恍神(自己找藉口 :p)，所以在判斷式上漏了一些idea，不過我覺得有趣的是當我嘗試用NetStream.time的屬性時，撥放到最後居然無法匹對NetStream.duration，真的是怪怪的，當時我的確曾經一度懷疑是不是自己的問題。 後來我找了一下原廠的白皮書，發現一段很妙的描述，我故意引用一段中文的片段給大家看，若覺得看不懂可以看原文的說明： onMetaData = function(infoObject:Object) {} 在 Flash Player 接收在正播放的 FLV 檔中嵌入的描述性資訊時調用。 Flash Video Exporter 實用工具（1.1 版本或更高版本）將視頻的持續時間、創建日期、資料速率及其它資訊嵌入視頻檔本身。不同的視頻編碼器嵌入不同的元資料組中。 此處理函數在調用 NetStream.play() 方法後而在視頻播放頭前進之前觸發。 在多數情況下，FLV 元資料中嵌入的持續時間值接近實際持續時間，但是並不精確。換言之，當播放頭在視頻流的結尾處時，此值不會始終與 NetStream.time 屬性的值相匹配。 讚啊！它的意思是說duration是僅供參考，如果跟NetStream.time匹配到是你運氣好。 *無言* 那怎嚜辦？有上過我課的同學就知道，乖乖的回歸onStatus吧，等到NetStream.Buffer.Flush的code被傳回來的時候，作為播放完畢的條件，不過大家覺得從此以後就天下太平了嗎？當然不是，因為這個狀況是您在讀一個靜態的Video檔案，如果一但加上Flash Media Server和串流，狀況又會不一樣了，因為當NetStream.Buffer.Flush出來時，一個影片的播放其實還沒結束，他還必須把緩衝(Buffer)的份給撥完才行，所以千萬別輕取亂動啊。 今天先寫到這，下一期我們再來探討如何在串流模式下解決這些問題，待續&#8230;]]></description>
		<wfw:commentRss>http://blog.riaproject.com/flash/8.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

