套件 | flash.net |
類別 | public class NetStream |
繼承 | NetStream EventDispatcher Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
使用 NetStream 類別執行下列動作:
- 呼叫
NetStream.play()
以便從本機磁碟、網站伺服器或 Flash Media Server 播放媒體檔案。 - 呼叫
NetStream.publish()
以發佈視訊、音效以及資料串流至 Flash Media Server。 - 呼叫
NetStream.send()
將資料訊息傳送至所有訂閱的用戶端。 - 呼叫
NetStream.send()
以加入中繼資料至即時串流。 - 呼叫
NetStream.appendBytes()
以便將 ByteArray 資料傳入 NetStream。
注意:您無法透過相同的 NetStream 物件播放和發佈串流。
Adobe AIR 與 Flash Player 9.0.115.0 和更新的版本都支援衍生自標準 MPEG-4 容器格式的檔案。其中包括 F4V、MP4、M4A、MOV、MP4V、3GP 和 3G2 (如果這些檔案包含 H.264 視訊、HEAAC v2 編碼音效或兩者的話)。相較於 Sorenson 或 On2 中的相同編碼描述檔,H.264 會在較低位元速率提供較高品質視訊。AAC 是定義在 MPEG-4 視訊標準中的標準音效格式。HE-AAC v2 是 AAC 的延伸,使用光譜波段複製 (SBR) 和參數立體聲 (PS) 技術以增加低位元速率的編碼效率。
如需有關支援的轉碼器與檔案格式的細詳資訊,請參閱下列主題:
- Flash Media Server 文件
- Exploring Flash Player support for high-definition H.264 video and AAC audio (探索 Flash Player 對高畫質 H.264 視訊和 AAC 音效的支援)
- FLV/F4V open specification documents (FLV/F4V 開放的規格文件)
從 Flash Media Server 串流、漸進式 F4V 檔案或漸進式 FLV 檔案接收資料
Flash Media Server、F4V 檔案及 FLV 檔案可以在串流或播放期間,在特定資料點傳送包含資料的事件物件。您可以透過以下兩種方式,在播放期間處理來自串流或 FLV 檔的資料:
-
將 client 屬性與事件處理常式進行關聯,以接收資料物件。使用
NetStream.client
屬性來指定物件呼叫特定的資料處理函數。指定給NetStream.client
屬性的物件可以偵聽下列資料點:onCuePoint()
、onImageData()
、onMetaData()
、onPlayStatus()
、onSeekPoint()
、onTextData()
及onXMPData()
。會在這些函數當中撰寫程序,處理在播放期間由串流傳回的資料物件。如需詳細資訊,請查看NetStream.client
屬性。 - 將 client 屬性與 NetStream 類別的子類別進行關聯,然後撰寫事件偵聽程式來接收資料物件。NetStream 是一個密封類別,表示您無法在執行階段將屬性或方法加入至 NetStream 物件。 不過,您可以建立 NetStream 的子類別,並在子類別定義您的事件處理常式。您也可以讓子類別成為動態,然後將事件處理常式加入至該子類別的實體。
使用物件複寫、直接路由或發表 API 之前,請等待接收 NetGroup.Neighbor.Connect
事件。
注意:若要透過音效檔 (如 MP3 檔) 傳送資料,請使用 Sound 類別將音效檔與 Sound 物件產生關聯。接著,使用 Sound.id3
屬性,讀取聲音檔中的中繼資料。
AIR for iOS 中對 H.264 編碼視訊的支援
對於 H.264 視訊,AIR 3.0 (及更新版本) for iOS 支援完整 NetStream API 的子集。下列表格列出 AIR for iOS 中不支援播放的 NetStream 成員:
不支援的屬性 | 不支援的方法 | 不支援的事件 |
---|---|---|
bufferTime | appendBytes() | onCuePoint (只能用於 FLV 檔) |
bufferLength | appendBytesAction() | onImageData |
backBufferTime | step() | onSeekPoint |
backBufferLength | onTextData | |
bufferTimeMax | onXMPData | |
bytesLoaded | drmError | |
currentFPS | drmStatus | |
inBufferSeek | onDRMContentData | |
info | drmAuthenticate | |
liveDelay | DRM.encryptedFLV 狀態事件代碼 | |
maxPauseBufferTime | ||
soundTransform | ||
所有說明 RTMFP 連線的屬性 |
如需有關使用 AIR for iOS 的詳細資訊,請參閱 NetStream.play()
方法。
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
audioReliable : Boolean
對於 RTMFP 連線,指定音訊是否以完整的可靠度傳送。 | NetStream | ||
audioSampleAccess : Boolean
針對 RTMFP 連線,指定在這個 NetStream 上對等式訂閱者是否允許擷取音訊串流。 | NetStream | ||
backBufferLength : Number [唯讀]
目前快取供倒轉或播放之先前顯示資料的秒數。 | NetStream | ||
backBufferTime : Number
指定 Flash Player 嘗試快取供倒轉或播放之先前顯示資料的數量,以秒為單位。 | NetStream | ||
bufferLength : Number [唯讀]
目前在緩衝區中的資料秒數。 | NetStream | ||
bufferTime : Number
指定串流開始顯示之前的緩衝資料時間長度。 | NetStream | ||
bufferTimeMax : Number
指定即時串流內容的最大緩衝長度,以秒為單位。 | NetStream | ||
bytesLoaded : uint [唯讀]
已經載入應用程式中的資料位元組數目。 | NetStream | ||
bytesTotal : uint [唯讀]
正在載入應用程式中的檔案位元組總數。 | NetStream | ||
checkPolicyFile : Boolean
指定應用程式是否在開始載入視訊檔案之前,嘗試從載入視訊檔案的伺服器,下載跨網域原則檔案。 | NetStream | ||
client : Object
指定要針對其叫用回呼方法的物件,以處理串流或 F4V/FLV 檔案資料。 | NetStream | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
currentFPS : Number [唯讀]
正在顯示的每秒影格數。 | NetStream | ||
dataReliable : Boolean
對於 RTMFP 連線,指定 NetStream.send() 呼叫是否以完整的可靠度傳送。 | NetStream | ||
farID : String [唯讀]
對於 RTMFP 連線,連接到這個 NetStream 實體的遠端識別名稱。 | NetStream | ||
farNonce : String [唯讀]
對於 RTMFP 與 RTMPE 連線,實際上由這個串流的另一端選擇的值,這個連線的唯一值。 | NetStream | ||
inBufferSeek : Boolean
指定顯示的資料是 (TRUE) 否 (FALSE) 為智慧型搜尋的快取。 | NetStream | ||
info : NetStreamInfo [唯讀]
傳回 NetStreamInfo 物件,其屬性包含服務品質的相關統計資料。 | NetStream | ||
liveDelay : Number [唯讀]
即時 (無緩衝) 模式下,訂閱串流緩衝區中的資料秒數。 | NetStream | ||
maxPauseBufferTime : Number
指定在暫停模式期間,訊息的緩衝時間長短,以秒為單位。 | NetStream | ||
multicastAvailabilitySendToAll : Boolean
針對 RTMFP 連線,指定是否將對等多點傳送片段可用訊息傳送給所有對等方,或只傳送給一個對等方。 | NetStream | ||
multicastAvailabilityUpdatePeriod : Number
針對 RTMFP 連線,指定訊息傳送至對等方,通告本機節點提供新的對等多點傳送媒體片段時,前後訊息傳送之間的間隔秒數。 | NetStream | ||
multicastFetchPeriod : Number
針對 RTMFP 連線,指定當本機節點察覺到可以取得對等多點傳送媒體片段,然後等候多久時間 (秒) 才開始從對等方取得媒體片段。 | NetStream | ||
multicastInfo : NetStreamMulticastInfo [唯讀]
針對 RTMFP連線,傳回 NetStreamMulticastInfo 物件,其屬性包含服務品質的相關統計資料。 | NetStream | ||
multicastPushNeighborLimit : Number
針對 RTMFP 連線,指定要將多點傳送媒體主動推送給最多多少個對等方。 | NetStream | ||
multicastRelayMarginDuration : Number
針對 RTMFP 連線,指定在對等多點傳送資料要保留多少時間後 (秒) 之後,才傳送至要求的對等方。 | NetStream | ||
multicastWindowDuration : Number
針對 RTMFP 連線,指定對等多點傳送重組視窗的持續時間 (秒)。 | NetStream | ||
nearNonce : String [唯讀]
針對 RTMFP 及 RTMPE 連線,實際上由串流這一端選擇的值,這個連線的唯一值。 | NetStream | ||
objectEncoding : uint [唯讀]
此 NetStream 物件的物件編碼 (AMF 版本)。 | NetStream | ||
peerStreams : Array [唯讀]
物件,保存正在偵聽此發佈 NetStream 實體的所有訂閱 NetStream 實體。 | NetStream | ||
soundTransform : flash.media:SoundTransform
會控制此 NetStream 物件中的聲音。 | NetStream | ||
time : Number [唯讀]
播放磁頭的位置,以秒為單位。 | NetStream | ||
useHardwareDecoder : Boolean
指定是否在串流上使用硬體加速解碼。 | NetStream | ||
useJitterBuffer : Boolean
將即時無緩衝串流 (bufferTime = 0) 的延遲降到最低。 | NetStream | ||
videoReliable : Boolean
針對 RTMFP 連線,指定傳送視訊時是否保證完全可靠。 | NetStream | ||
videoSampleAccess : Boolean
針對 RTMFP 連線,指定此 NetStream 上的對等訂閱者是否可以擷取視訊串流。 | NetStream | ||
videoStreamSettings : VideoStreamSettings
指定串流壓縮屬性。 | NetStream |
方法 | 定義自 | ||
---|---|---|---|
建立您可用以播放媒體檔案的串流,並透過 NetConnection 物件傳送資料。 | NetStream | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
將 ByteArray 傳遞至 NetStream 以供播出。 | NetStream | ||
指出時幅不連續,清除 FIFO,然後告訴位元組剖析器需要檔案檔頭或 FLV 標籤的開頭。 | NetStream | ||
將串流附加至新的 NetConnection 物件。 | NetStream | ||
會從當作來源傳遞的 Microphone 物件,附加音訊串流至 NetStream 物件。 | NetStream | ||
開始從攝影機擷取視訊,如果 theCamera 設定為 null,則停止擷取。 | NetStream | ||
停止播放串流上的所有資料、將 time 屬性設定為 0,並讓該串流可以用於其他用途。 | NetStream | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
釋放 NetStream 物件保留的所有資源。 | NetStream | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
當對等發佈串流符合對等訂閱串流時叫用。 | NetStream | ||
會暫停播放視訊串流。 | NetStream | ||
從本機目錄或網站伺服器播放媒體檔案;從 Flash Media Server 播放媒體檔案或即時串流。 | NetStream | ||
當連線中斷並重新連線時,以多重位元速率在檔案間順暢地切換,並且允許 NetStream 重新開始。 | NetStream | ||
從本機儲存的媒體檔擷取任何 DRM 中繼資料。 | NetStream | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
從用戶端傳送串流視訊、音訊及資料訊息到 Flash Media Server,在傳輸期間可以選擇性地錄製串流。 | NetStream | ||
指定收到的音效是否會在串流上播放。 | NetStream | ||
指定收到的視效是否會在串流上播放。 | NetStream | ||
指定收到的視訊之影格速率。 | NetStream | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
[靜態]
在 AIR 應用程式中,這會刪除所有本機快取的數位版權管理 (DRM) 憑證資料。 | NetStream | ||
會繼續播放已暫停的視訊串流。 | NetStream | ||
搜尋最接近指定位置的關鍵影格 (在視訊業界也稱為 I 影格)。 | NetStream | ||
在發佈的串流上傳送訊息給所有訂閱用戶端。 | NetStream | ||
設定必要的 DRM 驗證認證來檢視基本的加密內容。 | NetStream | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
前轉或倒轉指定的影格數字 (相對於目前顯示的影格)。 | NetStream | ||
暫停或繼續播放串流。 | NetStream | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
事件 | 摘要 | 定義自 | ||
---|---|---|---|---|
[廣播事件] 當 Flash Player 或 AIR 應用程式取得作業系統焦點並成為作用中時傳送。 | EventDispatcher | |||
會在以非同步方式 (亦即,從原生非同步程式碼) 擲出例外時傳送。 | NetStream | |||
[廣播事件] 當 Flash Player 或 AIR 應用程式失去作業系統焦點並成為非作用中時傳送。 | EventDispatcher | |||
當 NetStream 物件嘗試播放數位版權管理 (DRM) 加密內容且該內容在播放前需要使用者認證進行驗證時傳送。 | NetStream | |||
當 NetStream 物件嘗試播放數位版權管理 (DRM) 加密檔案而遇到 DRM 相關錯誤時傳送。 | NetStream | |||
當數位版權管理 (DRM) 加密內容開始播放時 (當使用者通過驗證並取得播放內容的授權時) 傳送。 | NetStream | |||
會在發生輸入或輸出錯誤,因而導致網路作業失敗時傳送。 | NetStream | |||
在播放視訊內容及處理特定類型訊息時傳送。 | NetStream | |||
在 NetStream 物件回報其狀態或錯誤情況時傳送。 | NetStream | |||
建立偵聽程式,以便在播放視訊檔期間到達內嵌的提示點時回應。 | NetStream | |||
建立偵聽程式,以便在 AIR 擷取內嵌於媒體檔的 DRM 內容中繼資料時回應。 | NetStream | |||
建立偵聽程式,以便在 Flash Player 收到以位元組陣列形式內嵌在媒體檔案,且正在播放的影像資料時回應。 | NetStream | |||
建立偵聽程式,以便在 Flash Player 收到內嵌於正在播放之視訊的說明資訊時回應。 | NetStream | |||
建立可在 NetStream 物件完整播放串流之後用來回應的偵聽程式。 | NetStream | |||
當附加位元組剖析器遇到它認為是可搜尋的點 (例如,視訊關鍵影格) 時,會從 appendBytes() 同步呼叫。 | NetStream | |||
建立偵聽程式,以便在 Flash Player 收到正在播放之媒體檔案中內嵌的文字資料時回應。 | NetStream | |||
建立偵聽程式,以便在 Flash Player 收到正在播放之視訊中內嵌的「Adobe 可延伸中繼資料平台」(XMP) 特定資訊時回應。 | NetStream | |||
當應用程式藉由叫用 NetStream.play() 方法,嘗試播放數位版權管理 (DRM) 加密內容時傳送。 | NetStream |
常數 | 定義自 | ||
---|---|---|---|
CONNECT_TO_FMS : String = "connectToFMS" [靜態]
靜態物件,做為 NetStream 實體建構函式的參數使用。 | NetStream | ||
DIRECT_CONNECTIONS : String = "directConnections" [靜態]
建立對等式發行者連線。 | NetStream |
audioReliable | 屬性 |
audioReliable:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
對於 RTMFP 連線,指定音訊是否以完整的可靠度傳送。當 TRUE 時,所有透過這個 NetStream 傳送的音訊是完全可靠的。當 FALSE,傳輸的音訊不是完全可靠,相對地會在有限時間內重新傳送然後捨棄。您可以使用 FALSE 值以減少延遲,但會犧牲音訊品質。
如果您嘗試在不支援部份可靠性的網路通訊協定上設定這個屬性為 FALSE,這個嘗試會被忽略,而且屬性設定為 TRUE。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get audioReliable():Boolean
public function set audioReliable(value:Boolean):void
相關 API 元素
audioSampleAccess | 屬性 |
audioSampleAccess:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
針對 RTMFP 連線,指定在這個 NetStream 上對等式訂閱者是否允許擷取音訊串流。若為 FALSE,訂閱者嘗試擷取音訊串流時,會顯示權限錯誤。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get audioSampleAccess():Boolean
public function set audioSampleAccess(value:Boolean):void
相關 API 元素
backBufferLength | 屬性 |
backBufferLength:Number
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
目前快取供倒轉或播放之先前顯示資料的秒數。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
這個屬性只有在資料從 Flash Media Server 3.5.3 或更新版本串流時才能使用;如需更多在 Flash Media Server 上的資訊,請參閱類別描述。
若要指定快取多少之前顯示的資料,請使用 Netstream.backBufferTime
屬性。
若不要資料被快取,請設定 Netstream.inBufferSeek
屬性為 FALSE。
實作
public function get backBufferLength():Number
相關 API 元素
backBufferTime | 屬性 |
backBufferTime:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
指定 Flash Player 嘗試快取供倒轉或播放之先前顯示資料的數量,以秒為單位。預設值是桌面應用程式 30 秒,及手機應用程式 3 秒。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
這個屬性只有在資料從 Flash Media Server 3.5.3 版或更新版本串流時才能使用;如需更多在 Flash Media Server 上的資訊,請參閱類別描述。
使用這個屬性改善倒轉作業的效能,因為已顯示的資料不需要再從伺服器擷取。取而代之,串流從緩衝區開始重新播放。在播放時,資料持續從伺服器串流直到緩衝區已填滿。
如果倒轉的位置比在快取中的資料還要更早,緩衝區會被清除;然後資料會從要求的位置,開始從伺服器串流。
若要使用這個屬性,設定 Netstream.inBufferSeek
屬性為 TRUE。
實作
public function get backBufferTime():Number
public function set backBufferTime(value:Number):void
相關 API 元素
bufferLength | 屬性 |
bufferTime | 屬性 |
bufferTime:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定串流開始顯示之前的緩衝資料時間長度。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
預設值為 0.1 (十分之一秒)。 若要判斷目前在緩衝區中有多少秒數,請使用 bufferLength
屬性。
若要播放伺服器端播放清單,請將 bufferTime
至少設為 1 秒。如果您遇到播放問題,請增加 bufferTime
的長度。
錄製的內容為了避免在串流播放預先錄製 (非即時) 的內容時發生扭曲的現象,請不要將 Netstream.bufferTime
設為 0。根據預設,應用程式會使用排在媒體資料佇列中預錄內容的輸入緩衝區,以正確播放媒體。若為預錄內容,請使用預設設定值或增加緩衝區時間。
即時內容當傳送即時內容串流時,請將 bufferTime
屬性設為 0。
自 Flash Player 9.0.115.0 開始,當呼叫 NetStream.pause()
時,Flash Player 不會再清除緩衝區。在 Flash Player 9.0.115.0 之前,Flash Player 會等待緩衝區填滿,然後再繼續播放,通常因此造成延遲。
針對單一暫停,NetStream.bufferLength
屬性的限制為 60 秒或 NetStream.bufferTime
值的兩倍 (取較高值)。例如,如果 bufferTime
是 20 秒,Flash Player 會進行緩衝,直到 NetStream.bufferLength
為 20*2 (40) 或 60 (兩者較高值);在此狀況下,它會進行緩衝直到 bufferLength
為 60。如果 bufferTime
是 40 秒,Flash Player 會進行緩衝,直到 bufferLength
是 40*2 (80) 或 60 (兩者較高值);在此狀況下,它會進行緩衝直到 bufferLength
為 80 秒。
bufferLength
屬性也有絕對限制。如果 pause()
的任何呼叫造成 bufferLength
增加大於 600 秒或 bufferTime
* 2 值 (取較高值),Flash Player 會清除緩衝區並將 bufferLength
重設為 0。例如,如果 bufferTime
是 120 秒,Flash Player 會在 bufferLength
達到 600 秒時清除緩衝區;如果 bufferTime
是 360 秒,Flash Player 會在 bufferLength
達到 720 秒時清除緩衝區。
技巧:您可以在程式碼中使用 NetStream.pause()
,以便在檢視者觀看廣告時緩衝資料,然後在主要視訊開始時解除暫停。
如需有關新暫停行為的詳細資訊,請參閱 http://www.adobe.com/go/learn_fms_smartpause_tw。
Flash Media Server. 緩衝行為須視緩衝時間設定在發佈串流上或在訂閱串流上而定。 對於發佈串流,bufferTime
會指定在應用程式開始丟棄影格之前,播出緩衝可繼續成長多久的時間。在高速連線上,您不必擔心緩衝時間,因為資料傳送速度幾乎與應用程式緩衝處理速度一樣快。但是在慢速連線上,應用程式緩衝處理資料的速度快慢,以及資料傳送到用戶端的速度快慢,兩者可能相差甚巨。
對於訂閱串流,bufferTime
會指定在開始顯示串流之前,要繼續緩衝處理收到的資料多久的時間。
播放錄製的串流時,如果 bufferTime
是 0,Flash 會將它設為相當小的值 (大約 10 毫秒)。 如果稍後播放即時串流 (例如,從播放清單),這個緩衝時間仍會持續。 也就是,對串流而言,bufferTime
仍舊不是零。
實作
public function get bufferTime():Number
public function set bufferTime(value:Number):void
相關 API 元素
bufferTimeMax | 屬性 |
bufferTimeMax:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
指定即時串流內容的最大緩衝長度,以秒為單位。預設值為 0。 由於網路及裝置問題,緩衝區長度會隨著時間而增加 (例如寄件者及收件者之間的時間偏移)。設定這個屬性對即時應用程式 (例如會議和監視) 增加緩衝區長度。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
當 bufferTimeMax > 0
且 bufferLength >= bufferTimeMax
時,音訊播放會加快,直到 bufferLength
達到 bufferTime
。如果即時串流僅有視訊,視訊會播放得更快,直到 bufferLength
達到 bufferTime
。
根據播放延遲的長度 (bufferLength
與 bufferTime
之間的差異),Flash Player 控制追上速率 (Catch-Up) 在 1.5% 及 6.25% 之間。如果串流包含音訊,頻率領域會縮減取樣以最小化音訊扭曲,達到更快速的播放。
設定 bufferTimeMax
屬性,在下列範例中啟用即時緩衝串流追上:
- 串流處理來自 Flash Media Server 的即時媒體。
- 串流處理資料產生模式的即時媒體 (
NetStream.appendBytes()
)。
實作
public function get bufferTimeMax():Number
public function set bufferTimeMax(value:Number):void
相關 API 元素
bytesLoaded | 屬性 |
bytesTotal | 屬性 |
checkPolicyFile | 屬性 |
checkPolicyFile:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
指定應用程式是否在開始載入視訊檔案之前,嘗試從載入視訊檔案的伺服器,下載跨網域原則檔案。在漸進式視訊下載使用此屬性,並載入在所呼叫 SWF 檔案自己網域之外的檔案。使用 RTMP 時會忽略此屬性。
將此屬性設定為 true
,以便在所呼叫 SWF 之外的網域載入的視訊檔案上,呼叫 BitmapData.draw()
。BitmapData.draw()
方法提供對視訊的像素層級存取。如果您在載入時呼叫 BitmapData.draw()
,但並未將 checkPolicyFile
屬性設定為 true
,就會收到 SecurityError
例外,因為尚未下載所需的原則檔。
請勿將此屬性設定為 True,除非您要以像素層級的方式存取要載入的視訊。檢查原則檔會耗用網路頻寬,而且會延遲開始下載的時間。
當您呼叫 NetStream.play()
方法,並將 checkPolicyFile
設定為 true
時,Flash Player 或 AIR 執行階段必須先順利下載相關的跨網域原則檔,或判斷沒有這類原則檔存在,然後再開始下載。為了確認原則檔是否存在,Flash Player 或 AIR 執行階段會依此順序執行下列動作:
- 應用程式會考量已經下載的原則檔。
- 應用程式會嘗試下載
Security.loadPolicyFile()
方法之呼叫中指定的任何擱置原則檔。 - 應用程式會嘗試從對應至您傳遞給
NetStream.play()
之 URL 的預設位置 (與該 URL 位於相同伺服器上的/crossdomain.xml
) 下載原則檔。
在所有情況下,Flash Player 或 Adobe AIR 都會要求在該視訊的伺服器上必須存在正確的原則檔、根據原則檔的位置存取位於傳入 play()
之 URL 的物件,以及允許呼叫程式碼檔案的網域透過一個或多個 <allow-access-from>
標籤存取視訊。
如果您將 checkPolicyFile
設定為 true
,應用程式就會等候原則檔確認後,才下載視訊。從 NetStream 物件收到 onMetaData
或 NetStatus
事件之前,請等候針對視訊資料執行任何像素層級作業,例如呼叫 BitmapData.draw()
。
如果您將 checkPolicyFile
設定為 true
,但沒有找到相關的原則檔,則會等到執行需要原則檔的作業時,才會收到錯誤,然後應用程式會擲回 SecurityError 例外。
如果您要從可能使用伺服器端 HTTP 重新導向的 URL 下載檔案,請謹慎使用 checkPolicyFile
。 應用程式會嘗試擷取與您在 NetStream.play()
中指定的初始 URL 相對應的原則檔。如果因為 HTTP 重新導向,使得最終的檔案來自於不同的 URL,則初始下載的原則檔案就可能不適用於該檔的最終 URL,也就是在安全性決定中最重要的 URL。
如需原則檔的詳細資訊,請參閱「ActionScript 3.0 開發人員指南」中的「網站控制 (原則檔)」及「Flash Player 開發人員中心」主題:「安全性」。
實作
public function get checkPolicyFile():Boolean
public function set checkPolicyFile(value:Boolean):void
相關 API 元素
client | 屬性 |
client:Object
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定要針對其叫用回呼方法的物件,以處理串流或 F4V/FLV 檔案資料。預設物件為 this
,也就是所建立的 NetStream 物件。如果您將 client
屬性設為其他物件,就會叫用該物件的回呼方法。NetStream.client
物件可以呼叫下列函數並接收關聯的資料物件:onCuePoint()
、onImageData()
、onMetaData()
、onPlayStatus()
、onSeekPoint()
、onTextData()
以及 onXMPData()
。
若要將 client
屬性與事件偵聽程式進行關聯:
- 建立物件並將其指定給 NetStream 物件的
client
屬性:var customClient:Object = new Object(); my_netstream.client = customClient;
- 針對所需的 data 事件指定處理常式函數,以做為 client 物件的屬性:
customClient.onImageData = onImageDataHandler;
- 撰寫處理常式函數以接收資料事件物件,例如:
public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); }
一旦資料透過串流或在播放期間傳遞,資料事件物件 (在此情況下為 imageData
物件) 就會填滿資料。請參閱 onImageData
說明,其中包含指定給 client
屬性之物件的完整範例。
若要將 client
屬性與子類別進行關聯:
- 建立包含處理常式函數的子類別,以接收資料事件物件:
class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " framerate=" + info.framerate); }
- 將子類別的實體指定給 NetStream 物件的
client
屬性:my_netstream.client = new CustomClient();
一旦資料透過串流或在播放期間傳遞,資料事件物件 (在此情況下為 info
物件) 就會填滿資料。請參閱 NetStream 類別結尾的類別範例,該範例會示範如何將子類別實體指定給 client
屬性。
實作
public function get client():Object
public function set client(value:Object):void
擲回值
TypeError — client 屬性必須設定為非 null 物件。
|
相關 API 元素
currentFPS | 屬性 |
dataReliable | 屬性 |
dataReliable:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
對於 RTMFP 連線,指定 NetStream.send()
呼叫是否以完整的可靠度傳送。當 TRUE,透過這個 NetStream 傳輸的 NetStream.send()
呼叫是完全可靠的。當 FALSE,NetStream.send()
呼叫不是以完全可靠度傳輸,相對地會在有限時間內重新傳送然後捨棄。您可以使用 FALSE 值以減少延遲,但會犧牲資訊品質。
如果您嘗試在不支援部份可靠性的網路通訊協定上設定這個屬性為 FALSE,這個嘗試會被忽略,而且屬性設定為 TRUE。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get dataReliable():Boolean
public function set dataReliable(value:Boolean):void
相關 API 元素
farID | 屬性 |
farNonce | 屬性 |
inBufferSeek | 屬性 |
inBufferSeek:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
指定顯示的資料是 (TRUE
) 否 (FALSE
) 為智慧型搜尋的快取。預設值是 FALSE。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
Flash Media Server 3.5.3 及 Flash Player 10.1 共同運作以支援智慧型搜尋。智慧型搜尋使用倒轉及快轉緩衝區進行搜尋,而不需要從伺服器要求資料。標準搜尋會清除緩衝區的資料,並要求伺服器根據搜尋時間傳送新的資料。
呼叫 NetStream.step()
逐步快轉及倒轉指定的影格數量。呼叫 NetStream.seek()
搜尋快轉及倒轉指定的秒數。
智慧型搜尋減少伺服器負載,並且改善搜尋效能。設定 inBufferSeek=true
並呼叫 step()
及 seek()
以建立:
- 用戶端 DVR 功能。在用戶端緩衝區內搜尋,取代到伺服器要求傳遞新的視訊。
- 秘訣模式。建立可以逐格前進後退、快轉、倒轉及慢動作前進的播放程式。
當 inBufferSeek=true
及呼叫 NetStream.seek()
成功時, NetStatusEvent info.description
屬性包含字串 "client-inBufferSeek"
。
當呼叫 NetStream.step()
成功時,NetStatusEvent info.code
屬性包含字串 "NetStream.Step.Notify"
。
實作
public function get inBufferSeek():Boolean
public function set inBufferSeek(value:Boolean):void
相關 API 元素
info | 屬性 |
info:NetStreamInfo
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
傳回 NetStreamInfo 物件,其屬性包含服務品質的相關統計資料。此物件是目前狀態的快照。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get info():NetStreamInfo
相關 API 元素
liveDelay | 屬性 |
liveDelay:Number
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
即時 (無緩衝) 模式下,訂閱串流緩衝區中的資料秒數。 這個屬性會指定目前的網路傳輸延遲 (延遲時間)。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
這個屬性的主要用途是要搭配 Flash Media Server 等伺服器使用。如需詳細資訊,請參閱類別的說明。
您可以取得這個屬性值,以概略估計串流的傳輸品質並傳達給使用者。
實作
public function get liveDelay():Number
maxPauseBufferTime | 屬性 |
maxPauseBufferTime:Number
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
指定在暫停模式期間,訊息的緩衝時間長短,以秒為單位。這個屬性可用來限制暫停模式期間的緩衝處理量。一旦 NetStream.bufferLength
的值到達此上限,就會停止緩衝處理。
如果未設定這個值,上限將預設為 60 秒,或每次暫停的 NetStream.bufferTime
值的兩倍,取兩者中較大者。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get maxPauseBufferTime():Number
public function set maxPauseBufferTime(value:Number):void
相關 API 元素
multicastAvailabilitySendToAll | 屬性 |
multicastAvailabilitySendToAll:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
針對 RTMFP 連線,指定是否將對等多點傳送片段可用訊息傳送給所有對等方,或只傳送給一個對等方。值為 TRUE 表示將訊息在每個指定的間隔中,傳送到所有對等方一次。值為 FALSE 表示將訊息在每個指定的間隔中,僅傳送到一個對等方。間隔由 multicastAvailabilityUpdatePeriod
屬性決定。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get multicastAvailabilitySendToAll():Boolean
public function set multicastAvailabilitySendToAll(value:Boolean):void
相關 API 元素
multicastAvailabilityUpdatePeriod | 屬性 |
multicastAvailabilityUpdatePeriod:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
針對 RTMFP 連線,指定訊息傳送至對等方,通告本機節點提供新的對等多點傳送媒體片段時,前後訊息傳送之間的間隔秒數。較大的值可以增加批次處理效能並減少控制負荷,但是因為減少在片段在超過範圍之前,可以擷取的時間,導致接收端的品質降低。較小的值可以減少延遲並增加品質,但是會增加控制負荷。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get multicastAvailabilityUpdatePeriod():Number
public function set multicastAvailabilityUpdatePeriod(value:Number):void
相關 API 元素
multicastFetchPeriod | 屬性 |
multicastFetchPeriod:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
針對 RTMFP 連線,指定當本機節點察覺到可以取得對等多點傳送媒體片段,然後等候多久時間 (秒) 才開始從對等方取得媒體片段。這個值可以在嘗試從對等擷取之前,讓片段有機會主動傳送到本機節點。它也可以讓一個以上的對等方宣佈片段的可用性,以同時向多個對等方進行擷取。
較大的值可以改善對等式網格中的負載平衡以及公平性,但是會減少可用的 multicastWindowDuration
並增加延遲。當需要進行擷取時,較小的值可以降低延遲,但是可能會增加重複資料的接收,並降低對等式網格的負載平衡。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get multicastFetchPeriod():Number
public function set multicastFetchPeriod(value:Number):void
相關 API 元素
multicastInfo | 屬性 |
multicastInfo:NetStreamMulticastInfo
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
針對 RTMFP連線,傳回 NetStreamMulticastInfo 物件,其屬性包含服務品質的相關統計資料。此物件是目前狀態的快照。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get multicastInfo():NetStreamMulticastInfo
相關 API 元素
multicastPushNeighborLimit | 屬性 |
multicastRelayMarginDuration | 屬性 |
multicastRelayMarginDuration:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
針對 RTMFP 連線,指定在對等多點傳送資料要保留多少時間後 (秒) 之後,才傳送至要求的對等方。期間由 multicastWindowDuration
屬性決定。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get multicastRelayMarginDuration():Number
public function set multicastRelayMarginDuration(value:Number):void
相關 API 元素
multicastWindowDuration | 屬性 |
multicastWindowDuration:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
針對 RTMFP 連線,指定對等多點傳送重組視窗的持續時間 (秒)。較短的值減少延遲,但因為不允許有足夠的時間擷取所有的片段,可能會導致品質降低。相反來說,較長的值提供更長的時間取得所有的片段,所以有較好的品質,但是也相對增加了延遲。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get multicastWindowDuration():Number
public function set multicastWindowDuration(value:Number):void
相關 API 元素
nearNonce | 屬性 |
objectEncoding | 屬性 |
objectEncoding:uint
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
此 NetStream 物件的物件編碼 (AMF 版本)。 NetStream 物件會從相關聯的 NetConnection 物件繼承 objectEncoding
值。 如果您的 ActionScript 3.0 SWF 檔需要與 Flash Player 9 之前版本的伺服器通訊,請務必了解這個屬性。 如需詳細資訊,請參閱 NetConnection 類別中的 objectEncoding
屬性說明。
這個屬性的值取決於串流是本機或遠端。 本機串流 (其中 null
會傳遞給 NetConnection.connect()
方法) 會傳回 NetConnection.defaultObjectEncoding
的值。 遠端串流 (連線至伺服器) 則會傳回伺服器連線的物件編碼。
如果您嘗試在未連線時讀取這個屬性,或者嘗試變更這個屬性,應用程式都會擲回例外。
實作
public function get objectEncoding():uint
相關 API 元素
peerStreams | 屬性 |
soundTransform | 屬性 |
soundTransform:flash.media:SoundTransform
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
會控制此 NetStream 物件中的聲音。 如需詳細資訊,請參閱 SoundTransform 類別。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
相關 API 元素
time | 屬性 |
time:Number
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
播放磁頭的位置,以秒為單位。
Flash Media Server 對於訂閱串流來說,這是串流已播放的秒數。 對於發佈串流來說,這是串流已發佈的秒數。 這個數字準確到千分之一小數位數,只要乘上 1000 就可以得到串流已播放的毫秒數。
對於訂閱串流來說,如果伺服器停止傳送資料,但串流仍保持開啟,則 time
屬性的值會停止前進。當伺服器重新開始傳送資料時,值會從 (伺服器停止傳送時的) 停止點繼續前進。
當串流從一個播放清單元素切換到另一個元素時,time
的值會繼續前進。以設定為 1
或 true
的 reset
呼叫 NetStream.play()
時,或是呼叫 NetStream.close()
時,這個屬性設定為 0。
實作
public function get time():Number
相關 API 元素
useHardwareDecoder | 屬性 |
useJitterBuffer | 屬性 |
useJitterBuffer:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 11.3, AIR 3.3 |
將即時無緩衝串流 (bufferTime = 0) 的延遲降到最低。音效訊息會放置在最適化快速變換緩衝區中,而非採用傳統的推送更新機制。當喇叭裝置需要音效時,訊息就會從快速變換緩衝區彈出並在解碼後播放。Speex 和 G.711 會忽略這個設定 (useJitterBuffer 針對 Speex/G.711 傳回 true),一律使用這個提取方式。在無緩衝模式中啟用時,所有的轉碼器都會使用快速變換緩衝區,例如 Speex、G.711、Nellymoser、MP3 和 AAC。這個屬性在緩衝模式 (bufferTime > 0) 中不會發揮作用,因此,useJitterBuffer 會傳回 false。
實作
public function get useJitterBuffer():Boolean
public function set useJitterBuffer(value:Boolean):void
videoReliable | 屬性 |
videoReliable:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
針對 RTMFP 連線,指定傳送視訊時是否保證完全可靠。當 TRUE 時,所有透過這個 NetStream 傳送的視訊是完全可靠的。當 FALSE 時,傳輸的視訊不是完全可靠,相對地會在有限時間內重新傳送然後捨棄。您可以使用 FALSE 值以減少延遲,但會犧牲視訊品質。
如果您嘗試在不支援部份可靠性的網路通訊協定上設定這個屬性為 FALSE,這個嘗試會被忽略,而且屬性設定為 TRUE。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get videoReliable():Boolean
public function set videoReliable(value:Boolean):void
相關 API 元素
videoSampleAccess | 屬性 |
videoSampleAccess:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
針對 RTMFP 連線,指定此 NetStream 上的對等訂閱者是否可以擷取視訊串流。當 FALSE 時,訂閱者嘗試擷視訊串流時,會顯示權限錯誤。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個屬性。
實作
public function get videoSampleAccess():Boolean
public function set videoSampleAccess(value:Boolean):void
相關 API 元素
videoStreamSettings | 屬性 |
videoStreamSettings:VideoStreamSettings
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 11/ConnectAddin, AIR 3 |
指定串流壓縮屬性。如需詳細資訊,請參閱 VideoStreamSettings
。沒有攝影機附加到您的系統時,會傳回 null。
實作
public function get videoStreamSettings():VideoStreamSettings
public function set videoStreamSettings(value:VideoStreamSettings):void
相關 API 元素
NetStream | () | 建構函式 |
public function NetStream(connection:NetConnection, peerID:String = "connectToFMS")
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
建立您可用以播放媒體檔案的串流,並透過 NetConnection 物件傳送資料。
它被視為無效,無法處理 NetStream 物件的 netStatus
事件。為避免錯誤,請在建立 NetStream 物件之後及呼叫其 play()
方法之前,為 netStatus
註冊偵聽程式。
connection:NetConnection — NetConnection 物件。
| |
peerID:String (default = "connectToFMS ") — 這個選擇性參數可以在 Flash Player 10 及較新的版本中使用,搭配 RTMFP 連線使用。(如果 NetConnection.protocol 屬性的值不是 "rtmfp" ,將忽略這個參數。)使用下列其中一個值:
在大部份的情況下, 如果您在建構函式陳述式中加入這個參數,但傳送 |
擲回值
ArgumentError — NetConnection 實體尚未連線。
|
相關 API 元素
DIRECT_CONNECTIONS
farID
flash.media.Video.attachCamera()
flash.net.GroupSpecifier
flash.net.GroupSpecifier.groupspecWithAuthorizations()
flash.net.GroupSpecifier.groupspecWithoutAuthorizations()
flash.net.GroupSpecifier.multicastEnabled
flash.net.NetConnection
flash.net.NetConnection.nearID
flash.net.NetConnection.protocol
flash.net.NetGroup
flash.events.NetStatusEvent.info.code="NetStream.Connect.Rejected"
flash.events.NetStatusEvent.info.code="NetStream.Connect.Success"
範例 ( 如何使用本範例 )
videoURL
的視訊:
var my_video:Video = new Video(); addChild(my_video); var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_video.attachNetStream(my_ns); my_ns.play(videoURL);
connect()
命令中指定的遠端 Flash Media Server 實體上串流及顯示視訊 (指定給變數 videoURL
):
var my_video:Video = new Video(); addChild(my_video); var my_nc:NetConnection = new NetConnection(); my_nc.connect("rtmp://www.yourfmsserver.com/someappname"); var my_ns:NetStream = new NetStream(my_nc, NetStream.CONNECT_TO_FMS); my_video.attachNetStream(my_ns); my_ns.play(videoURL);
appendBytes | () | 方法 |
public function appendBytes(bytes:ByteArray):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
將 ByteArray 傳遞至 NetStream 以供播出。在「資料產生模式」的 NetStream 上呼叫此方法。若要將 NetStream 置於「資料產生模式」,請在連線至 null
的 NetConnection 上所建立的 NetStream 上,呼叫 NetStream.play(null)
。在不處於「資料產生模式」的 NetStream 上呼叫 appendBytes()
是一種錯誤,並且會引發例外。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個方法。
位元組剖析器可以辨識有檔頭的 FLV 檔案。在剖析檔頭後,appendBytes()
會預期所有未來的呼叫,是連續來自相同的真正檔案或虛擬檔案。除非呼叫 appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN)
,否則不會預期另一個檔頭。
NetStream 物件具有兩個緩衝區:從 appendBytes()
到 NetStream 的 FIFO,以及播出緩衝區。FIFO 是部分 FLV 標籤重組緩衝區,並且包含不超過一個的不完整 FLV 標籤。呼叫 NetStream.seek()
會清除這兩個緩衝區。在呼叫 seek()
後,會呼叫 appendBytesAction()
,以便將時幅重設成在下一個附加訊息的時間戳記開始。
每次對 appendBytes()
的呼叫,都會將位元組加入 FIFO,直到 FLV 標籤完成為止。在 FLV 標籤完成時,它會移動到播出緩衝區。對 appendBytes()
的呼叫可以撰寫多個 FLV 標籤。第一個位元組會完成現有的 FLV 標籤 (這將會移到播出緩衝區)。完整的 FLV 標籤會移到播出緩衝區。未構成完整 FLV 標籤的其餘位元組會進入 FIFO。在 FIFO 中的位元組會透過呼叫 appendBytes()
來完成,或是呼叫 appendBytesAction()
加上 RESET_SEEK
或 RESET_BEGIN
引數來清除。
注意:位元組剖析器無法將對 appendBytes()
的呼叫完整地解碼,除非之後再呼叫 appendBytes()
。
參數
bytes:ByteArray |
相關 API 元素
appendBytesAction | () | 方法 |
public function appendBytesAction(netStreamAppendBytesAction:String):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
指出時幅不連續,清除 FIFO,然後告訴位元組剖析器需要檔案檔頭或 FLV 標籤的開頭。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個方法。
呼叫 NetStream.seek()
會清除 NetStream 緩衝區。在您呼叫 appendBytesAction()
並傳遞 RESET_BEGIN
或 RESET_SEEK
引數之前,位元組剖析器會一直處於清除模式。擷取 "NetStream.Seek.Notify"
事件,以便在搜尋後呼叫 appendBytesAction()
。新的檔案檔頭可以支援播放清單以及不呼叫 NetStream.seek()
的搜尋。
您也可以呼叫此方法以重設 onSeekPoint()
) 回呼的位元組計數器。
參數
netStreamAppendBytesAction:String |
相關 API 元素
attach | () | 方法 |
public function attach(connection:NetConnection):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
將串流附加至新的 NetConnection 物件。在中斷連線並重新連線之後,呼叫這個方法將 NetStream 附加到新的 NetConnection 物件。當連線遺失時,Flash Player 和 AIR 會從播放點繼續進行串流處理。您也可以使用這個方法實作負載平衡。
這個方法需要 Flash Media Server 版本 3.5.3 或更新版本。
若要使用這個方法實作串流重新連線,請參閱 Flash Media Server 3.5.3 文件。
若要使用這個方法實作負載平衡,請執行下列工作:
- 將連線的串流附加到在另一個伺服器上的 NetConnection 物件。
- 在串流成功附加到新的連線後,呼叫在先前連線的
NetConnection.close()
以避免資料遺漏。 - 呼叫
NetStream.play2()
並設定NetStreamPlayOptions.transition
的值為 RESUME。以您原先呼叫NetStream.play()
或NetStream.play2()
,以開始串流時所使用的相同值,設定 NetStreamPlayOptions 屬性的其餘部份。
參數
connection:NetConnection |
相關 API 元素
attachAudio | () | 方法 |
public function attachAudio(microphone:Microphone):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
會從當作來源傳遞的 Microphone 物件,附加音訊串流至 NetStream 物件。這個方法僅適用於指定之串流的發行者。
搭配 Flash Media Server 使用此方法,將即時音訊傳送至伺服器。在您呼叫 publish()
方法之前或之後,呼叫此方法。
將 Microphone.rate
屬性設成符合聲音擷取裝置的速率。呼叫 setSilenceLevel()
以設定靜音等級臨界值。若要控制音效串流的聲音屬性 (音量和左右相位),請使用 Microphone.soundTransform
屬性。
var nc:NetConnection = new NetConnection(); nc.connect("rtmp://server.domain.com/app"); var ns:NetStream = new NetStream(nc); var live_mic:Microphone = Microphone.get(); live_mic.rate = 8; live_mic.setSilenceLevel(20,200); var soundTrans:SoundTransform = new SoundTransform(); soundTrans.volume = 6; live_mic.soundTransform = soundTrans; ns.attachAudio(live_mic); ns.publish("mic_stream","live")
若要聆聽音效,請呼叫 NetStream.play()
方法並呼叫 DisplayObjectContainer.addChild()
,將音效遞送到顯示清單上的物件。
參數
microphone:Microphone — 要傳輸之音效串流的來源。
|
相關 API 元素
attachCamera | () | 方法 |
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
開始從攝影機擷取視訊,如果 theCamera
設定為 null
,則停止擷取。 這個方法僅適用於指定之串流的發行者。
這個方法的用途是要搭配 Flash Media Server 使用。如需詳細資訊,請參閱類別的說明。
在附加視訊來源之後,您必須呼叫 NetStream.publish()
才能開始傳輸。 想要顯示此視訊的訂閱者必須呼叫 NetStream.play()
和 Video.attachCamera()
方法,在舞台上顯示此視訊。
您可以使用 snapshotMilliseconds
傳送單一快照 (透過提供 0 這個值) 或一連串快照—實際上,就是延時連續鏡頭—透過提供正數,以便將指定之毫秒數的結尾加入至視訊內容。 結尾會延長視訊訊息的顯示時間。透過使用正值的 snapshotMilliseconds
重複呼叫 attachCamera()
,交替的快照和結尾的序列就會建立延時連續鏡頭。例如,您可以每天捕捉一個影格,然後將它附加至視訊檔。 當訂閱者播放此檔案時,各個影格會持續呈現在畫面上,直到經過指定的毫秒數,再顯示下一個影格。
snapshotMilliseconds
參數的用途與您可以使用 Camera.setMode()
來設定的 fps
參數不同。 指定 snapshotMilliseconds
,您可以控制已錄製影格之間經過的時間。 使用 Camera.setMode()
指定 fps
,則是可以控制錄製和播放期間所經過的時間。
例如,假設您想要每隔 5 分鐘拍攝一張快照,總共拍攝 100 張快照。 您可以用兩種方式來達成:
- 您可以發出
NetStream.attachCamera(myCamera, 500)
命令 100 次,每隔 5 分鐘發出一次。 如此便需要 500 分鐘來進行錄製,不過產生的檔案會在 50 秒內播放完畢 (影格間距 500 毫秒的 100 個影格)。 - 您可以發出
Camera.setMode()
命令並將fps
值設為 1/300 (每 300 秒一次,或每隔 5 分鐘一次),然後發出NetStream.attachCamera(source)
命令,讓攝影機連續捕捉 500 分鐘 產生的檔案將會在 500 分鐘 (與錄製所花費的時間相同) 內播放完畢,而且每個影格會顯示 5 分鐘。
這兩種技術都會捕捉相同的 500 個影格,而且兩種方法都很有用。所使用的方法主要取決於您的播放需求。 例如,在第二種方式中,您可以完整錄製音效。 此外,這兩個檔案的大小幾乎相同。
參數
theCamera:Camera — 視訊傳輸的來源。 有效值為 Camera 物件 (會開始捕捉視訊) 和 null 。 如果您傳遞 null ,應用程式就會停止擷取視訊,而且會忽略您傳送的任何其他參數。
| |
snapshotMilliseconds:int (default = -1 ) — 指定視訊串流是連續影格、單一影格或用來建立延時攝影的一連串單一影格。
|
close | () | 方法 |
public function close():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會停止播放串流上的所有資料、將 time
屬性設為 0,並讓該串流可以用於其他用途。 這個方法也會刪除先前透過 HTTP 下載之視訊檔案的本機副本。 雖然應用程式會刪除它建立的本機檔案副本,但副本還是可能持續存在快取目錄中。如果您必須完全防止快取或於本機儲存視訊檔案,請使用 Flash Media Server。
使用 Flash Media Server 時,當您從發佈串流呼叫 NetStream.play()
時,或從訂閱串流呼叫 NetStream.publish()
時,都會以隱含的方式叫用這個方法。請注意:
-
如果從發佈串流呼叫
close()
,串流會停止發佈,而且發佈者可以立即使用串流於其他用途。 訂閱者不會再接收到於串流上發佈的任何內容,因為串流已停止發佈。 -
如果從訂閱串流呼叫
close()
,串流會停止為訂閱者播放,而且訂閱者可以使用串流於其他用途。 其他訂閱者不受影響。 -
如果要讓訂閱串流停止播放,但不要關閉串流或變更串流類型,請使用
flash.net.NetStream.play(false)
。
相關 API 元素
dispose | () | 方法 |
public function dispose():void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 11, AIR 3.0 |
釋放 NetStream 物件保留的所有資源。
dispose()
方法和 close
方法類似。兩種方法的主要差異在於,dispose()
會釋放使用的記憶體來顯示目前的視訊影格。如果該影格目前顯示在螢幕上,顯示將變空白。因為 close()
方法不會釋放此記憶體,所以不會讓顯示變空白。
onPeerConnect | () | 方法 |
public function onPeerConnect(subscriber:NetStream):Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
當對等發佈串流符合對等訂閱串流時叫用。在訂閱者連接至發行者之前,呼叫這個方法,讓 ActionScript 程式碼針對對等式發佈進行更細微的存取控制。下列程式碼範例會示範如何建立這個方法的回呼函數:
var c:Object = new Object; c.onPeerConnect = function(subscriber:NetStream):Boolean { if (accept) return true; else return false; }; m_netStream.client = c;
如果對等發行者未實作這個方法,便會允許所有對等播放任何發佈的內容。
參數
subscriber:NetStream |
Boolean |
pause | () | 方法 |
public function pause():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會暫停播放視訊串流。 如果視訊已經暫停,則這個方法不會執行任何動作。 若要繼續播放暫停的視訊,請呼叫 resume()
。 若要切換暫停和播放 (先暫停視訊,然後繼續播放),請呼叫 togglePause()
。
自 Flash Player 9.0.115.0 開始,當呼叫 NetStream.pause()
時,Flash Player 不會再清除緩衝區。此行為稱為「智慧型暫停」。在 Flash Player 9.0.115.0 之前,Flash Player 會等待緩衝區填滿,然後再繼續播放,通常因此造成延遲。
注意:為了舊版相容性的考量,"NetStream.Buffer.Flush"
事件 (請參閱 NetStatusEvent.info
屬性) 仍然會觸發,但伺服器不會清除緩衝區。
針對單一暫停,NetStream.bufferLength
屬性的限制為 60 秒或 NetStream.bufferTime
值的兩倍 (取較高值)。例如,如果 bufferTime
是 20 秒,Flash Player 會進行緩衝,直到 NetStream.bufferLength
為 20*2 (40) 或 60 (兩者較高值);在此狀況下,它會進行緩衝直到 bufferLength
為 60。如果 bufferTime
是 40 秒,Flash Player 會進行緩衝,直到 bufferLength
是 40*2 (80) 或 60 (兩者較高值);在此狀況下,它會進行緩衝直到 bufferLength
是 80 秒。
bufferLength
屬性也有絕對限制。如果 pause()
的任何呼叫造成 bufferLength
增加大於 600 秒或 bufferTime
* 2 值 (取較高值),Flash Player 會清除緩衝區並將 bufferLength
重設為 0。例如,如果 bufferTime
是 120 秒,Flash Player 會在 bufferLength
達到 600 秒時清除緩衝區;如果 bufferTime
是 360 秒,Flash Player 會在 bufferLength
達到 720 秒時清除緩衝區。
技巧:您可以在程式碼中使用 NetStream.pause()
,以便在檢視者觀看廣告時緩衝資料,然後在主要視訊開始時解除暫停。
相關 API 元素
play | () | 方法 |
public function play(... arguments):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
從本機目錄或網站伺服器播放媒體檔案;從 Flash Media Server 播放媒體檔案或即時串流。傳送 NetStatusEvent
物件以報告狀態和錯誤訊息。
如需有關支援的轉碼器與檔案格式的細詳資訊,請參閱下列主題:
- Flash Media Server 文件
- Exploring Flash Player support for high-definition H.264 video and AAC audio (探索 Flash Player 對高畫質 H.264 視訊和 AAC 音效的支援)
- FLV/F4V open specification documents (FLV/F4V 開放的規格文件)
播放檔案或即時串流的工作流程
- 建立將顯示視訊並呼叫
addChild()
以加入至舞台的 Video 物件。 建立 NetConnection 物件並呼叫
NetConnection.connect()
。若要從本機目錄或網站伺服器播放檔案,請傳遞 null。
若要從 Flash Media Server 播放錄製的檔案或即時串流,請傳遞 Flash Media Server 應用程式的 URI。
- 呼叫 NetConnection 物件的
addEventListener()
方法,以偵聽netStatus
(NetStatusEvent.NET_STATUS
) 事件。 - 在
"NetConnection.Connect.Success"
上,建立 NetStream 物件,並將 NetConnection 物件傳遞至建構函式。 - 呼叫 Viceo 物件的
attachNetStream()
方法並傳遞 NetStream 物件。 呼叫 NetStream 物件的
play()
方法。若要播放即時串流,請將串流名稱傳遞至
NetStream.publish()
方法。若要播放錄製的檔案,請傳遞檔案名稱。
注意: 就最佳作法而言,您應永遠將 Video 物件加入舞台,接著將 NetStream 附加到物件,然後呼叫 NetStream 物件的 play()
方法。
啟用資料產生模式
呼叫 play(null)
以啟用「資料產生模式」。在此模式下,請呼叫 appendBytes()
方法以傳遞資料至 NetStream。使用「資料產生模式」可透過 HTTP 從 Apache HTTP Server 上的 Adobe HTTP 動態串流原始模組串流內容。HTTP 動態串流可讓用戶端快速搜尋檔案中的任何一點。開放原始碼媒體架構 (OSMF) 支援 vod 與即時串流的 HTTP 動態串流。如需如何使用 NetStream 資料產生模式的範例,請下載 OSMF 原始碼。如需有關「HTTP 動態串流」的詳細資訊,請參閱「HTTP 動態串流」。
當您在沒有 Flash Media Server 的情況下使用這個方法時,請考慮安全性。「本機信任」或「具有網路連線的本機」安全執行程序中的檔案可載入和播放來自遠端安全執行程序的視訊檔案,但無法存取遠端檔案的資料,除非具有 URL 原則檔案形式的明確權限。您也可以避免 Flash Player 中執行的 SWF 檔使用這個方法,方法是在包含 SWF 內容的 HTML 頁面中設定 object
和 embed
標籤的 allowNetworking
參數即可。如需安全性詳細資訊,請參閱「Flash Player 開發人員中心」主題:安全性。
參數
... arguments — 播放本機檔案
媒體檔案的位置。引數可以是 String、 從 Flash Media Server 播放檔案
您可以播放下表所述的檔案格式。語法會因檔案格式而異。
啟用資料產生模式
若要啟用「資料產生模式」,請將值 AIR 3.0 for iOS 中有關 H.264 視訊的特殊考量 對於 H.264 視訊,用於視訊播放的 iOS API 只接受檔案或串流的 URL。您無法將要解碼的 H264 視訊資料傳入緩衝區。根據您的視訊來源而定,請將適當的引數傳遞至
|
事件
status: — 當嘗試播放數位版權管理 (DRM) 加密內容時傳送。code 屬性的值為 "DRM.encryptedFLV" 。
|
擲回值
SecurityError — 本機不受信任的 SWF 檔無法與網際網路進行通訊。 您可以透過將此 SWF 檔重新分類為「具有網路連線的本機」或受信任,解決此限制。
| |
ArgumentError — 至少必須指定一個參數。
| |
Error — NetStream 物件無效。 這可能是失敗的 NetConnection 所致。
|
相關 API 元素
範例 ( 如何使用本範例 )
play()
方法必須指定副檔名。
ns.play("mp4:samples/record1.f4v", 0, 100, true);
ns.play("livestream");
var MyVideo:Video = new Video(); addChild(MyVideo); var MyNC:NetConnection = new NetConnection(); MyNC.connect(null); var MyNS:NetStream = new NetStream(MyNC); MyVideo.attachNetStream(MyNS); MyNS.play("http://www.helpexamples.com/flash/video/clouds.flv"); //the clouds.flv video has metadata we're not using, so create //an error handler to ignore the message generated by the runtime //about the metadata MyNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); function asyncErrorHandler(event:AsyncErrorEvent):void { //ignore metadata error message }
play2 | () | 方法 |
public function play2(param:NetStreamPlayOptions):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
當連線中斷並重新連線時,以多重位元速率在檔案間順暢地切換,並且允許 NetStream 重新開始。
這個方法是 NetStream.play()
的增強版本。如同 play()
方法,play2()
方法會開始播放媒體檔或將媒體檔排入佇列以建立播放清單。與 Flash Media Server 搭配使用時,此方法也會要求伺服器切換至不同的媒體檔。轉場便能在用戶端應用程式中順暢地進行。下列功能使用 play2()
串流切換。
動態串流
動態串流 (在 Flash Media Server 3.5 及更新版本中支援) 允許您提供多重位元速率編碼的串流。當檢視者的網路條件改變,他們會收到提供最佳檢視體驗的位元速率。使用 NetStreamInfo
類別監視網路狀況,並根據資料切換串流。您也可以針對具有不同功能的用戶端切換串流。如需更多資訊,請參閱「Adobe Flash Media Server 開發人員指南」中的「動態串流」。
Adobe 藉由擴充 NetStream 類別,建立了名為 DynamicStream 的自訂 ActionScript 類別。您的應用程式可以使用 DynamicStream 類別實作動態串流,而不需要自行撰寫程式碼偵測網路狀況。即使您選擇要自行撰寫動態串流程式碼,請使用 DynamicStream 類別做為參考實作。在「Flash Media Server 工具及下載」頁面下載類別及類別文件。
串流重新連線
串流重新連線 (在 Flash Media Server 3.5.3 及更新版本中支援) 可以讓使用者即使在中斷連線時,也不會感受到媒體中斷。在您的 ActionScript Logic 重新連線到 Flash Media Server 時,媒體使用緩衝區播放。重新連線後,呼叫 NetStream.attach()
利用新的 NetConnection,使用相同的 NetStream 物件。使用 NetStream.attach()
、NetStreamPlayTransitions.RESUME
和 NetStreamPlayTrasitions.APPEND_AND_WAIT
API 重新連線串流。如需更多資訊,請參閱「Flash Media Server 3.5.3 文件」。
參數
param:NetStreamPlayOptions |
相關 API 元素
preloadEmbeddedData | () | 方法 |
public function preloadEmbeddedData(param:NetStreamPlayOptions):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.5, Flash Lite 4 |
從本機儲存的媒體檔擷取任何 DRM 中繼資料。
使用 preloadEmbeddedMetaData()
開始著手下載與快取離線播放所需的 DRM 憑證。一旦偵測到媒體檔內嵌的 DRM 中繼資料,便會將 DRMContentData 物件傳遞給 NetStream 用戶端 onDRMContentData
函數。這個 DRMContentData 物件包含了取得憑證時所需的資訊,必須有此憑證才能播放內容。將 DRMContentData 物件傳遞給 DRMManager loadVoucher()
方法即可下載憑證。
預先載入 DRM 憑證的步驟包括:
-
建立新的 NetStream 物件,用以預先載入中繼資料。
- 指定回呼函數給 NetStream
client
的onDRMContentData
屬性。 - 建立新的 NetStreamPlayOptions 物件,並將其
streamName
屬性設定為本機視訊檔案的 URL 字串。 - 傳遞 NetStreamPlayOptions 物件給
preloadEmbeddedMetadata()
以呼叫該方法。 - 傳遞 DRMContentData 物件以呼叫 DRMManager
loadVoucher()
方法,用於回應onDRMContentData
回呼。如果 DRMContentData 物件的authenticationMethod
屬性值為userNameAndPassWord
,請先在媒體權限伺服器上驗證使用者,再下載憑證。 - 關閉用以預先載入的 NetStream。
注意:若要使用相同的 NetStream 物件來預先載入中繼資料和播放內容,請先等候預先載入作業所產生的 onPlayStatus
呼叫完成,再開始播放。
下載的憑證會儲存至本機快取。線上播放內容時也將下載與快取憑證。每當檢視由 DRM 保護的內容檔案,即自動從本機儲存區擷取已快取的憑證。使用 DRMManager 可管理憑證快取。
注意:不支援透過 HTTP、HTTPS 或 RTMP 連線預先載入 DRM 中繼資料。您只能預先載入由檔案系統上儲存的檔案所提供的中繼資料。
參數
param:NetStreamPlayOptions — NetStreamPlayOptions 描述了處理內容檔案時所使用的選項。
|
相關 API 元素
publish | () | 方法 |
public function publish(name:String = null, type:String = null):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
從用戶端傳送串流視訊、音訊及資料訊息到 Flash Media Server,在傳輸期間可以選擇性地錄製串流。這個方法連同串流資訊傳送 NetStatusEvent 物件。在您呼叫 NetStream.publish()
之前,請擷取 "NetConnection.Connect.Success"
事件來驗證應用程式是否已經成功連線至 Flash Media Server。
在發佈時,您可以用 FLV 或 F4V 格式來錄製檔案。若將檔案錄製成 F4V 格式,您必須使用平面化工具編輯,或在其他應用程式中播放檔案。若要下載工具,請參閱 www.adobe.com/go/fms_tools_tw。
注意:請勿使用此方法來播放串流。若要播放串流,請呼叫 NetStream.play()
方法。
發佈串流的工作流程
- 建立 NetConnection 物件並呼叫
NetConnection.connect()
。 - 呼叫
NetConnection.addEventListener()
以偵聽 NetStatusEvent 事件。 - 在
"NetConnection.Connect.Success"
事件上,建立 NetStream 物件,並將 NetConnection 物件傳遞至建構函式。 - 若要擷取音訊及視訊,呼叫
NetStream.attachAudio()
方法以及NetStream.attachCamera()
方法。 - 若要發佈串流,呼叫
NetStream.publish()
方法。您可以在要發佈時錄製資料,讓使用者可以在稍後播放。
注意:NetStream 可以發佈串流或播放串流,但是它無法同時執行這兩項動作。若要發佈串流並從伺服器檢視播放,請建立兩個 NetStream 物件。您可以透過一個 NetConnection 物件傳送多個 NetStream 物件。
Flash Media Server 錄製串流時,會建立一個檔案。根據預設,伺服器會使用傳遞至 NetConnection.connect()
的應用程式實體名稱來建立目錄,然後將檔案儲存在該目錄中。例如,以下程式碼會連接到「lectureseries」應用程式的預設實體,並錄製名為「lecture」的串流。檔案「lecture.flv」在 applications/lectureseries/streams/_definst_ directory 中錄製:
var nc:NetConnection = new NetConnection(); nc.connect("rtmp://fms.example.com/lectureseries"); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); function netStatusHandler(event:NetStatusEvent):void { if (event.info.code == "NetConnection.Connect.Success") { var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }
以下範例會連線至相同應用程式的「monday」實體。檔案「lecture.flv」在 directory /applications/lectureseries/streams/monday 中錄製
var nc:NetConnection = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); nc.connect("rtmp://fms.example.com/lectureseries/monday"); function netStatusHandler(event:NetStatusEvent):void { if (event.info.code == "NetConnection.Connect.Success") { var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }
參數
name:String (default = null ) — 可識別串流的字串。當呼叫 NetStream.play() 時,訂閱這個串流的用戶端會傳送這個名稱。串流名稱後面不要接著 "/"。 例如,不要使用串流名稱 "bolero/" 。
您可以使用下列表格所述的格式來錄製檔案 (
| |||||||||||||
type:String (default = null ) — 指定如何發佈串流的字串。 有效值為 "record "、"append "、"appendWithGap " 與 "live "。預設值為 "live "。
|
相關 API 元素
範例 ( 如何使用本範例 )
若要執行此範例,請將相機連接至您的電腦。您也需要將一個 Button 組件以及 Label 組件新增至 Library。
應用程式有一個按鈕,它只有在應用程式成功連線至伺服器後,才會發佈串流 (傳送至 Flash Media Server)。 只有在已經成功發佈串流之後,應用程式才會從伺服器播放串流。 NetStatusEvent
會傳回 info
物件並具有指定這些情況的 code
屬性。 netStatusHandler
函數會為 NetConnection 和 NetStream 類別處理這些事件。
package { import flash.display.Sprite; import flash.events.*; import flash.media.Video; import flash.media.Camera; import flash.net.NetConnection; import flash.net.NetStream; import fl.controls.Button; import fl.controls.Label; public class NetStream_publish extends Sprite { private var connectionURL:String = "rtmp://localhost/live/"; private var videoURL:String = "liveVideo"; private var nc:NetConnection; private var ns_publish:NetStream; private var ns_playback:NetStream; private var video_publish:Video; private var video_playback:Video; private var cam:Camera; private var b:Button; private var l:Label; public function NetStream_publish() { setUpUI(); nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Add bandwidth detection handlers on the NetConnection Client to // prevent Reference Errors at runtime when using the "live" and "vod" applications. var clientObj:Object = new Object(); clientObj.onBWDone = onBWDone; clientObj.onBWCheck = onBWCheck; nc.client = clientObj; // Connect to the "live" application on Flash Media Server. nc.connect(connectionURL); } private function netStatusHandler(event:NetStatusEvent):void { trace(event.info.code + " | " + event.info.description); switch (event.info.code) { case "NetConnection.Connect.Success": // Enable the "Publish" button after the client connects to the server. b.enabled = true; break; case "NetStream.Publish.Start": playbackVideo(); break; } } private function publishVideo(event:MouseEvent):void{ // Disable the button so that you can only publish once. b.enabled = false; // Create a NetStream to send video to FMS. ns_publish = new NetStream(nc); ns_publish.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Publish (send) the video to FMS. cam = Camera.getCamera(); ns_publish.attachCamera(cam); ns_publish.publish(videoURL); } private function playbackVideo():void { // Create the Video object to show the video on the stage video_playback = new Video(cam.width, cam.height); video_playback.x = cam.width + 20; video_playback.y = 10; addChild(video_playback); // Create a NetStream to receive the video from FMS. ns_playback = new NetStream(nc); ns_playback.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Display the video that was published to FMS. video_playback.attachNetStream(ns_playback); ns_playback.play(videoURL); } private function setUpUI():void { b = new Button(); b.addEventListener(MouseEvent.CLICK, publishVideo); b.width = 150; b.label = "Publish video to server"; b.move(10, 150); b.enabled = false; l = new Label(); l.width = 150; l.text = "Playing back from server" l.move(190, 150); addChild(b); addChild(l); } // Handlers called by the Flash Media Server "live" and "vod" applications. public function onBWDone(... rest):Boolean { return true; } public function onBWCheck(... rest):Number { return 0; } } }
receiveAudio | () | 方法 |
public function receiveAudio(flag:Boolean):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定收到的音效是否會在串流上播放。這個方法僅適用於訂閱指定串流的用戶端。它不適用於串流的發行者。在您呼叫 NetStream.play()
方法之前或之後,請呼叫此方法。例如,附加此方法至按鈕,讓使用者將音訊靜音或取消靜音。在 Flash Media Server 播放的單點傳送串流上,才能使用此方法。RTMFP 多點傳送串流或使用 NetStream.appendBytes()
方法的時候,此方法無法運作。
參數
flag:Boolean — 指定收到的音效會 (true ) 不會 (false ) 在串流上播放。 預設值是 true 。若指定的串流僅包含音訊資料,當您傳送 false 時,NetStream.time 將停止遞增。
|
receiveVideo | () | 方法 |
public function receiveVideo(flag:Boolean):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定收到的視效是否會在串流上播放。這個方法僅適用於訂閱指定串流的用戶端。它不適用於串流的發行者。在您呼叫 NetStream.play()
方法之前或之後,請呼叫此方法。例如,附加此方法至按鈕,讓使用者顯示或隱藏視訊。在 Flash Media Server 播放的單點傳送串流上,才能使用此方法。RTMFP 多點傳送串流或使用 NetStream.appendBytes()
方法的時候,此方法無法運作。
參數
flag:Boolean — 指定收到的視訊會 (true ) 不會 (false ) 在這個串流上播放。 預設值是 true 。若指定的串流僅包含視訊資料,當您傳送 false 時,NetStream.time 將停止遞增。
|
receiveVideoFPS | () | 方法 |
public function receiveVideoFPS(FPS:Number):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定收到的視訊之影格速率。這個方法僅適用於訂閱指定串流的用戶端。它不適用於串流的發行者。在您呼叫 NetStream.play()
方法之前或之後,請呼叫此方法。例如,呼叫此方法以允許使用者設定視訊影格速率。若要判斷目前的影格速率,請使用 NetStream.currentFPS
。若要停止接收視訊,請傳送 0
。
當您傳遞值給 FPS 參數以限制視訊的影格速率,Flash Media Server 會嘗試降低影格速率,同時保持視訊的完整性。在每兩個關鍵影格之間,伺服器會傳送滿足此指定速率所需的最小數目的影格。請注意,I-frame (或稱為中間影格) 必須連續傳送,否則視訊將會中斷。因此,在關鍵影格後面的所需影格數會立即連續傳送。因為影格不是平均傳送,移動在一再被拖延打斷的段落中看來流暢。
在 Flash Media Server 播放的單點傳送串流上,才能使用此方法。RTMFP 多點傳送串流或使用 NetStream.appendBytes()
方法的時候,此方法無法運作。
參數
FPS:Number — 指定收到的視訊播放的每秒影格速率。
|
resetDRMVouchers | () | 方法 |
public static function resetDRMVouchers():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 11.8, Flash Lite 4 |
在 AIR 應用程式中,這會刪除所有本機快取的數位版權管理 (DRM) 憑證資料。對於瀏覽器類型應用程式,這只在 3322 錯誤期間提供使用,並且使用方式類似受保護內容播放設定面板。
應用程式必須從媒體權限伺服器重新下載任何必要的證書,使用者才能存取受保護的內容。呼叫此函數等同於呼叫 DRMManager 物件的 resetDRMVouchers()
函數。
擲回值
IOError — 無法刪除憑證資料。
|
相關 API 元素
範例 ( 如何使用本範例 )
NetStream.resetDRMVouchers();
resume | () | 方法 |
public function resume():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會繼續播放已暫停的視訊串流。 如果視訊已經在播放,呼叫這個方法就不會有任何動作。
相關 API 元素
seek | () | 方法 |
public function seek(offset:Number):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
搜尋最接近指定位置的關鍵影格 (在視訊業界也稱為 I 影格)。 關鍵影格會放置在與串流開始處相距某個偏移值 (以秒為單位) 處。
視訊串流通常以兩種影格類型編碼:關鍵影格 (或稱 I 影格) 和 P 影格。 關鍵影格包含完整影像,而 P 影格則是中間影格,在關鍵影格之間提供額外的視訊資訊。 視訊串流通常是每隔 10 到 50 個影格有一個關鍵影格。
Flash Media Server 有數種搜尋行為:加強型搜尋及智慧型搜尋。
加強型搜尋
預設是啟動加強型搜尋。若要停用加強型搜尋,請在 Flash Media Server 上,將 Application.xml
組態設定檔中的 EnhancedSeek
元素設定為 false
。
如果啟用加強型搜尋,伺服器會根據前一個關鍵影格和任何中介的 P 影格,於 offset
產生新的關鍵影格。但是產生的關鍵影格會在伺服器上產生極高的處理負載,而且產生的關鍵影格中可能會發生扭曲。 如果視訊轉碼器是 On2,就會將搜尋點之前的關鍵影格,以及關鍵影格與搜尋點之間的任何 P 影格傳送給用戶端。
如果停用加強型搜尋,伺服器會從最近的關鍵影格開始處理串流。例如,假設視訊在第 0 秒與在第 10 秒具有關鍵影格。搜尋至第 4 秒會使得播放使用在第 0 秒的關鍵影格於第 4 秒開始。視訊會保持停格狀態,直到到達位於 10 秒的下一個關鍵影格為止。 若要得到較好的搜尋經驗,您必須縮小關鍵影格間隔。 在正常搜尋模式下,您無法從關鍵影格之間的點開始播放視訊。
智慧型搜尋
若要啟用智慧型搜尋,請將 NetStream.inBufferSeek
設定為 true
。
智慧型搜尋允許 Flash Player 在現有的倒轉緩衝區和快轉緩衝區內進行搜尋。當智慧型搜尋停用時,Flash Player 會在每次呼叫 seek()
時清除緩衝區並從伺服器要求資料。如需詳細資訊,請參閱 NetStream.inBufferSeek
。
在資料產生模式中搜尋
當您在「資料產生模式」中呼叫 seek()
時,除非呼叫 appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN)
或 appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK)
以重設剖析器,否則會捨棄所有傳遞至 appendBytes()
的位元組 (未放置在緩衝區中,在部分訊息 FIFO 中累積,或是為搜尋點剖析)。如需有關「資料產生模式」的詳細資訊,請參閱 NetStream.play()
。
參數
offset:Number — 指定您想要在視訊檔案中移動到哪個時間值 (近似值),以秒為單位。 使用 Flash Media Server 時,如果 Application.xml 設定檔中的 <EnhancedSeek> 設定為 true (這是預設值),伺服器會在 offset 位置產生關鍵影格。
|
相關 API 元素
send | () | 方法 |
public function send(handlerName:String, ... arguments):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
在發佈的串流上傳送訊息給所有訂閱用戶端。 這個方法僅適用於指定之串流的發行者。這個方法僅適用於 Flash Media Server。若要處理和回應這個訊息,請在 NetStream
物件上建立處理常式,例如 ns.HandlerName
。
Flash Player 或 AIR 不會序列化方法或其資料、物件原型變數或非可列舉變數。若為顯示物件,Flash Player 或 AIR 就會序列化路徑,但不會序列化任何資料。
您可以呼叫 send()
方法,在發佈到 Flash Media Server 的即時串流上加入資料關鍵影格。資料關鍵影格是發佈者加至即時串流的訊息。 資料關鍵影格通常用來將中繼資料加入即時串流,然後再從攝影機和麥克風擷取串流的資料。 發佈者可以在正在發佈的即時串流中隨時加入資料關鍵影格。 只要發佈者保持連線到伺服器的狀態,資料關鍵影格會一直儲存在伺服器的記憶體中。
用戶端如果在資料關鍵影格加入之前訂閱即時串流,之後只要關鍵影格一加入,該用戶端會立即接收到關鍵影格。 用戶端如果在資料關鍵影格加入之後訂閱即時串流,則會在訂閱時接收到關鍵影格。
若要將中繼資料的關鍵影格加入至傳送到 Flash Media Server 的即時串流,請使用 @setDataFrame
做為處理常式名稱,後面接著兩個其他引數,例如:
var ns:NetStream = new NetStream(nc); ns.send("@setDataFrame", "onMetaData", metaData);
@setDataFrame
引數會參考到 Flash Media Server 內建的特殊處理常式。 onMetaData
引數是您用戶端應用程式中的回呼函數名稱,用於偵聽 onMetaData
事件和擷取中繼資料。 第三個項目 (metaData
) 是 Object
的實體,或以屬性定義中繼資料值的 Array
。
使用 @clearDataFrame
可清除串流中已經設定的中繼資料關鍵影格:
ns.send("@clearDataFrame", "onMetaData");
參數
handlerName:String — 要傳送的訊息,以及要接收該訊息之 ActionScript 處理常式的名稱。處理常式名稱只能有單一階層的深度 (亦即,無法使用父/子的格式) 而且會相對於串流物件。 請勿使用內建的詞彙做為處理常式名稱。 例如,使用 "close " 做為處理常式名稱會導致方法失敗。使用 Flash Media Server 時,可以用 @setDataFrame 在即時串流中加入中繼資料的關鍵影格,或用 @clearDataFrame 移除關鍵影格。
| |
... arguments — 可為任何類型的選用引數。 這些引數會序列化並透過連線傳送,而且接收的處理常式會按照相同的順序接收這些引數。 如果某個參數是圓形物件 (例如,圓形的連結清單),序列化程式就會正確地處理參照。 使用 Flash Media Server 時,如果 @setDataFrame 是第一個引數,請使用 onMetaData 做為第二個引數,第三個引數則請傳遞 Object 的實體或是將中繼資料設定為屬性的 Array 。 請參閱「Flash Media Server 開發人員指南」建議的屬性名稱清單。以 @clearDataFrame 做為第一個引數時,請使用 onMetaData 做為第二個引數,不用第三個引數。
|
相關 API 元素
範例 ( 如何使用本範例 )
NetStream
物件。一個用來發佈即時串流到伺服器,另一個用來訂閱串流。
package { import flash.display.Sprite; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.NetStatusEvent; import flash.media.Video; import flash.utils.setTimeout; public class TestExample extends Sprite { var nc:NetConnection = new NetConnection(); var ns1:NetStream; var ns2:NetStream; var vid:Video = new Video(300,300); var obj:Object = new Object(); public function TestExample() { nc.objectEncoding = 0; nc.addEventListener("netStatus", onNCStatus); nc.connect("rtmp://localhost/FlashVideoApp"); addChild(vid); } function onNCStatus(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": trace("You've connected successfully"); ns1 = new NetStream(nc); ns2 = new NetStream(nc); ns1.client = new CustomClient(); ns1.publish("dummy", "live"); ns2.client = new CustomClient(); vid.attachNetStream(ns2); ns2.play("dummy"); setTimeout(sendHello, 3000); break; case "NetStream.Publish.BadName": trace("Please check the name of the publishing stream" ); break; } } function sendHello():void { ns1.send("myFunction", "hello"); } } } class CustomClient { public function myFunction(event:String):void { trace(event); } }
private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetStream.Publish.Start": var metaData:Object = new Object(); metaData.title = "myStream"; metaData.width = 400; metaData.height = 200; ns.send("@setDataFrame", "onMetaData", metaData); ns.attachCamera( Camera.getCamera() ); ns.attachAudio( Microphone.getMicrophone() ); } }
onMetaData
事件處理常式。 onMetaData
事件處理常式不在 addEventListener()
上註冊,而是名稱為 onMetaData
的回呼函數,例如:
public function onMetaData(info:Object):void { trace("width: " + info.width); trace("height: " + info.height); }
// Create a NetStream for playing var my_ns:NetStream = new NetStream(my_nc); my_video.attachNetStream(my_ns); // Play the stream record1 my_ns.play("record1", 0, -1, true); // Switch to the stream live1 and play for 5 seconds. // Since reset is false, live1 will start to play after record1 is done. my_ns.play("live1", -1 , 5, false);
//To play at normal speed var my_ns:NetStream = new NetStream(my_nc); my_ns.play("log", 0, -1); //To get the data messages all at once my_ns.play("log", 0, -1, 3);
setDRMAuthenticationCredentials | () | 方法 |
public function setDRMAuthenticationCredentials(userName:String, password:String, type:String):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Lite 4 |
設定必要的 DRM 驗證認證來檢視基本的加密內容。
setDRMAuthenticationCredentials()
方法提供的認證必須與內容提供者或 Proxy 伺服器已知且接受的認證相符。此認證是使用者取得檢視內容的權利時所使用的認證。
參數
userName:String — 有效的使用者名稱認證。
| |
password:String — 對應於所提供使用者名稱的密碼認證。
| |
type:String — 字串,指定提供了哪種類型的驗證認證。有效值為 "drm" 和 "proxy" 。預設值為 "drm" 。
|
相關 API 元素
step | () | 方法 |
public function step(frames:int):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2 |
前轉或倒轉指定的影格數字 (相對於目前顯示的影格)。指定正數為前轉,負數為倒轉。呼叫此方法可建立真正快速前進或倒帶功能。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個方法。
只有資料是從 Flash Media Server 3.5.3 或更新的版本傳送串流,且當 NetStream.inBufferSeek
為 true
時,才能夠使用此方法。 另外,目標影格必須位於緩衝區中。 例如,如果目前顯示的影格是影格號碼 120 ,且您指定 1000 的值,如果影格號碼 1120 不在緩衝區中,則方法失敗。
此方法須配合 pause()
或 togglePause()
方法一起使用。 如果您在播放時,在未暫停的情況下往前或往回播放 10 個影格,可能不會注意到畫面的逐格播放或者它們看起來像是出了小小的干擾而已。另外,當您呼叫 pause()
或 togglePause
時,會進行消音處理。
如果 NetStream.step()
的呼叫是成功的,NetStatusEvent 會連同做為 info 物件 code
屬性值的 "NetStream.Step.Notify" 一起傳送。
參數
frames:int |
相關 API 元素
togglePause | () | 方法 |
asyncError | 事件 |
flash.events.AsyncErrorEvent
屬性 AsyncErrorEvent.type =
flash.events.AsyncErrorEvent.ASYNC_ERROR
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會在以非同步方式 (亦即,從原生非同步程式碼) 擲回例外時傳送。 當伺服器針對用戶端呼叫未定義的方法時,就會傳送這個事件。
AsyncErrorEvent.ASYNC_ERROR
常數會定義 asyncError
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
target | 傳送該事件的物件。 |
error | 觸發事件的錯誤。 |
相關 API 元素
drmAuthenticate | 事件 |
flash.events.DRMAuthenticateEvent
屬性 DRMAuthenticateEvent.type =
flash.events.DRMAuthenticateEvent.DRM_AUTHENTICATE
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Lite 4 |
當 NetStream 物件嘗試播放數位版權管理 (DRM) 加密內容且該內容在播放前需要使用者認證進行驗證時傳送。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個事件。
使用 NetStream 物件的 setDRMAuthenticationCredentials()
方法來驗證使用者。如果使用者驗證失敗,應用程式將重新嘗試驗證,並為 NetStream 物件傳送新的 DRMAuthenticateEvent 事件。
DRMAuthenticateEvent.DRM_AUTHENTICATE
常數會定義 DRMAuthenticateEvent 物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
authenticationType | 指出提供的憑證是針對 Flash Media Rights Management Server (FMRMS) 還是 Proxy 伺服器進行驗證。 |
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
header | 伺服器所提供的加密內容檔案檔頭。 |
netstream | 起始此事件的 NetStream 物件。 |
passwordPrompt | 由伺服器提供,要求提供密碼憑證的提示。 |
target | NetStream 物件。 |
urlPrompt | 由伺服器提供,要求顯示 URL 的提示。 |
usernamePrompt | 由伺服器提供,要求提供使用者名稱憑證的提示。 |
相關 API 元素
drmError | 事件 |
flash.events.DRMErrorEvent
屬性 DRMErrorEvent.type =
flash.events.DRMErrorEvent.DRM_ERROR
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
當 NetStream 物件嘗試播放數位版權管理 (DRM) 加密檔案而遇到 DRM 相關錯誤時傳送。例如,當使用者授權失敗時會傳送 DRMErrorEvent 物件。這可能是因為使用者尚未購買檢視內容的使用權或是內容提供者不支援檢視應用程式。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個事件。
DRMErrorEvent.DRM_ERROR
常數會定義 drmError
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
errorID | 指定給此問題的數值錯誤碼。 |
subErrorID | 錯誤碼,指出根本問題的詳細相關資訊。 |
target | NetStream 物件。 |
相關 API 元素
drmStatus | 事件 |
flash.events.DRMStatusEvent
屬性 DRMStatusEvent.type =
flash.events.DRMStatusEvent.DRM_STATUS
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 10.1, Flash Lite 4 |
當數位版權管理 (DRM) 加密內容開始播放時 (當使用者通過驗證並取得播放內容的授權時) 傳送。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個事件。
DRMStatusEvent 物件包含憑證相關資訊,例如是否可以離線使用內容,或者當憑證過期之後,使用者便無法再繼續檢視內容。
DRMStatusEvent.DRM_STATUS
常數會定義 drmStatus
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
detail | 用來說明狀態事件內容的字串 |
isAnonymous | 指出使用者是否能存取受保護 (利用 DRM 加密) 的內容,而不需提供驗證憑證。 |
isAvailableOffline | 指出受保護 (利用 DRM 加密) 的內容是否可供離線檢視。 |
offlineLeasePeriod | 內容可供離線檢視的剩餘天數。 |
policies | DRM 狀態事件的自訂物件。 |
target | NetStream 物件。 |
voucherEndDate | 憑證到期的絕對日期,此時使用者將無法繼續檢視其內容。 |
contentData | 內容的 DRMContentData |
voucher | 內容的 DRMVoucher 物件。 |
isLocal | 指出內容是否儲存在本機檔案系統上 |
相關 API 元素
ioError | 事件 |
flash.events.IOErrorEvent
屬性 IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會在發生輸入或輸出錯誤,因而導致網路作業失敗時傳送。
定義ioError
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
errorID | 與特定錯誤相關聯的參考號碼 (僅限 AIR)。 |
target | 遭遇輸入/輸出錯誤的網路物件。 |
text | 要顯示為錯誤訊息的文字。 |
mediaTypeData | 事件 |
flash.events.NetDataEvent
屬性 NetDataEvent.type =
flash.events.NetDataEvent
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.3, AIR 2.7 |
在播放視訊內容及處理特定類型訊息時傳送。
出現下列訊息時會傳送 NetDataEvent:
- onCuePoint
- onImageData
- onMetaData
- onPlayStatus (適用於程式碼 NetStream.Play.Complete)
- onTextData
- onXMPData
注意:在 Android 或 Blackberry Tablet OS 瀏覽器之 Flash Player 中執行的內容,或 iOS 上 AIR 中執行的內容都不會傳送此事件。
netStatus | 事件 |
flash.events.NetStatusEvent
屬性 NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
在 NetStream 物件回報其狀態或錯誤情況時傳送。 netStatus
事件含有 info
屬性,而此屬性是含有事件相關特定資訊 (例如,嘗試連線成功或失敗) 的資訊物件。
type
屬性值 (netStatus
事件物件)。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
info | 物件,其中包含描述該物件狀態或錯誤情況的屬性。 |
target | 回報其狀態的 NetConnection 或 NetStream 物件。 |
相關 API 元素
onCuePoint | 事件 |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
建立偵聽程式,以便在播放視訊檔期間到達內嵌的提示點時回應。當視訊到達特定提示點時,您就可以使用此偵聽程式來觸發程式碼中的動作,以便同步化應用程式中的其他動作與視訊播放事件。如需有關由 Flash Media Server 支援的視訊檔案格式,請參閱 www.adobe.com/go/learn_fms_fileformats_tw。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個事件。
onCuePoint
事實上是 NetStream.client
物件的屬性。 此屬性列在 Events 區段中,因為它會在使用 Flash Media Server 串流處理媒體時,或是在 FLV 檔案播放期間回應資料事件。如需詳細資訊,請查看 NetStream 類別說明。您無法使用 addEventListener()
方法或任何其他 EventDispatcher 方法,將 onCuePoint
當做事件加以偵聽或處理。定義回呼函數,並將它附加至下列其中一個物件:
- NetStream 實體之
client
屬性所參照的物件。 - NetStream 子類別的實體。 NetStream 是一個密封類別,表示您無法在執行階段將屬性或方法加入至 NetStream 物件。 建立 NetStream 的子類別,並在子類別定義您的事件處理常式。您也可以讓子類別成為動態,然後將事件處理常式函數加入至該子類別的實體。
關聯的事件偵聽程式會在呼叫 NetStream.play()
方法之後以及視訊播放磁頭前進之前觸發。
您可以在視訊檔案中內嵌下列類型的提示點:
- 瀏覽提示點會指定視訊檔案中的關鍵影格,而且該提示點的
time
屬性會對應至確切的關鍵影格。 瀏覽提示點通常是當做書籤或輸入點使用,讓使用者逐一瀏覽視訊檔。 - 事件提示點會指定時間。時間可以對應或不對應至特定關鍵影格。事件提示點通常表示視訊中發生某些事件 (可用來觸發其他應用程式事件) 的時間。
onCuePoint
事件物件具有下列屬性:
屬性 | 說明 |
---|---|
name | 於提示點內嵌至視訊檔案時,提供給提示點的名稱。 |
parameters | 指定給此提示點之名稱與值配對字串的關聯陣列。任何有效的字串都可以用於參數名稱或值。 |
time | 播放時,視訊檔中出現提示點的時間,以秒為單位。 |
type | 到達的提示點類型 (瀏覽或事件)。 |
當您首次編碼檔案,或使用「視訊匯入」精靈在 Flash 編寫工具中匯入視訊片段時,就可以在視訊檔案中定義提示點。
onMetaData
事件也會擷取視訊檔中提示點的相關資訊。 不過,onMetaData
事件會在視訊開始播放之前,取得所有提示點的相關資訊。 onCuePoint
事件會在播放時,於指定給單一提示點的時間收到該提示點的相關資訊。
一般而言,若要讓程式碼在出現特定提示點時回應該提示點,請使用 onCuePoint
事件來觸發程式碼中的某些動作。
您可以使用提供給 onMetaData
事件的提示點清單,讓使用者在視訊串流的預先定義點開始播放視訊。 請將提示點的 time
屬性值傳遞給 NetStream.seek()
方法,以便從該提示點播放視訊。
範例 ( 如何使用本範例 )
var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; video.attachNetStream(ns); ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
相關 API 元素
onDRMContentData | 事件 |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.5, Flash Lite 4 |
建立偵聽程式,以便在 AIR 擷取內嵌於媒體檔的 DRM 內容中繼資料時回應。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個事件。
DRMContentData 物件包含了取得憑證時所需的資訊,必須有此憑證才能播放由 DRM 保護的媒體檔。使用 DRMManager 類別以提供這項資訊即可下載憑證。
onDRMContentData
是 NetStream.client
物件的屬性。此屬性列在 Events 區段中,因為其作用是回應從本機媒體檔預先載入內嵌資料時的資料事件。如需詳細資訊,請查看 NetStream 類別說明。您無法使用 addEventListener()
方法或任何其他 EventDispatcher 方法,將 onDRMContentData
當做事件加以偵聽或處理。您必須定義單一回呼函數,並將它直接附加至下列其中一個物件:
- NetStream 實體之
client
屬性所參照的物件。 - NetStream 子類別的實體。 NetStream 是一個密封類別,表示您無法在執行階段將屬性或方法加入至 NetStream 物件。 不過,您可以建立 NetStream 的子類別,並在該子類別中定義事件處理常式,或讓該子類別成為動態,然後將事件處理常式函數加入至該子類別的實體。
相關 API 元素
onImageData | 事件 |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
建立偵聽程式,以便在 Flash Player 收到以位元組陣列形式內嵌在媒體檔案,且正在播放的影像資料時回應。影像資料可能會產生 JPEG、PNG 或 GIF 內容。您可以使用 flash.display.Loader.loadBytes()
方法,將位元組陣列載入顯示物件中。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個事件。
onImageData
事實上是 NetStream.client
物件的屬性。 屬性列在 Events 區段中,因為它會在使用 Flash Media Server 串流處理媒體時,或是在 FLV 檔案播放期間回應資料事件。如需詳細資訊,請查看 NetStream 類別說明。您無法使用 addEventListener()
方法或任何其他 EventDispatcher 方法來將 onImageData
做為事件來偵聽或處理。定義單一回呼函數,並將它直接附加至下列其中一個物件:
- NetStream 實體之
client
屬性所參照的物件。 - NetStream 子類別的實體。 NetStream 是一個密封類別,表示您無法在執行階段將屬性或方法加入至 NetStream 物件。 建立 NetStream 的子類別,並在子類別定義您的事件處理常式。您也可以讓子類別成為動態,然後將事件處理常式函數加入至該子類別的實體。
關聯的事件偵聽程式會在呼叫 NetStream.play()
方法之後以及視訊播放磁頭前進之前觸發。
onImageData 事件物件包含以位元組陣列的形式透過 AMF0 資料通道傳送的影像資料。
範例 ( 如何使用本範例 )
Netstream.client
屬性來處理 onTextData
和 onImageData
的回呼函數。onImageDataHandler()
函數會使用 onImageData 事件物件 imageData
來儲存此位元組陣列。而且,onTextDataHandler()
函數會使用 onTextData 事件物件 textData
來儲存文字資料片段 (每一段資料都是一個 textData
物件的屬性)。
您必須使用含有文字或影像中繼資料之媒體檔案的實際位置來替代程式碼中的位置 "yourURL"
。
您也可以使用自訂類別來處理影像和文字資料。如需詳細資訊和範例,請參閱文件:「處理 Flash 視訊中的中繼資料和提示點」。
package { import flash.display.*; import flash.net.*; import flash.media.*; import flash.system.*; import flash.events.*; public class OnTextDataExample extends Sprite { public function OnTextDataExample():void { var my_video:Video = new Video(); addChild(my_video); var customClient:Object = new Object(); customClient.onImageData = onImageDataHandler; customClient.onTextData = onTextDataHandler; var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_ns.client = customClient; my_video.attachNetStream(my_ns); my_ns.play("yourURL"); } public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); var imageloader:Loader = new Loader(); imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object. addChild(imageloader); } public function onTextDataHandler(textData:Object):void { trace("--- textData properties ----"); var key:String; for (key in textData) { trace(key + ": " + textData[key]); } } } }
相關 API 元素
onMetaData | 事件 |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
建立偵聽程式,以便在 Flash Player 收到內嵌於正在播放之視訊的說明資訊時回應。如需有關由 Flash Media Server 支援的視訊檔案格式,請參閱 www.adobe.com/go/learn_fms_fileformats_tw。
onMetaData
事實上是 NetStream.client
物件的屬性。 屬性列在 Events 區段中,因為它會在使用 Flash Media Server 串流處理媒體時,或是在 FLV 檔案播放期間回應資料事件。如需詳細資訊,請查看 NetStream 類別說明與 NetStream.client
屬性。您無法使用 addEventListener()
方法或任何其他 EventDispatcher 方法來將 onMetaData
做為事件來偵聽或處理。定義單一回呼函數,並將它直接附加至下列其中一個物件:
- NetStream 實體之
client
屬性所參照的物件。 - NetStream 子類別的實體。 NetStream 是一個密封類別,表示您無法在執行階段將屬性或方法加入至 NetStream 物件。 您可以建立 NetStream 的子類別,並在子類別定義您的事件處理常式。您也可以讓子類別成為動態,然後將事件處理常式函數加入至該子類別的實體。
Flash Video Exporter 公用程式 (1.1 或更新版本) 會在視訊檔案本身中嵌入視訊長度、建立日期、資料速率和其他資訊。不同的視訊編碼器會嵌入不同的中繼資料組合。
關聯的事件偵聽程式會在呼叫 NetStream.play()
方法之後以及視訊播放磁頭前進之前觸發。
在許多情況下,內嵌於串流中繼資料中的長度值僅為實際長度的估計值,並非實際值。 換句話說,當播放磁頭到達視訊串流的結尾時,此長度並不一定會符合 NetStream.time
屬性值。
傳遞至 onMetaData 事件處理常式的事件物件內含每個資料片段的屬性。
範例 ( 如何使用本範例 )
var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; video.attachNetStream(ns); ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
相關 API 元素
onPlayStatus | 事件 |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
建立可在 NetStream 物件完整播放串流之後用來回應的偵聽程式。除了 netStatus
事件所提供的資訊以外,關聯的事件物件還會提供其他資訊。當 NetStream 物件已經從播放清單中的某個串流切換至另一個串流 (如資訊物件 NetStream.Play.Switch
所指出) 或者 NetStream 物件已經播放至結尾 (如資訊物件 NetStream.Play.Complete
所指出) 時,您就可以使用此屬性來觸發程式碼中的動作。
onPlayStaus
事實上是 NetStream.client
物件的屬性。屬性列在 Events 區段中,因為它會在使用 Flash Media Server 串流處理媒體時,或是在 FLV 檔案播放期間回應資料事件。如需詳細資訊,請查看 NetStream 類別說明。您無法使用 addEventListener()
方法或任何其他 EventDispatcher 方法,將 onPlayStatus
當做事件加以偵聽或處理。定義回呼函數,並將它附加至下列其中一個物件:
- NetStream 實體之
client
屬性所參照的物件。 - NetStream 子類別的實體。 NetStream 是一個密封類別,表示您無法在執行階段將屬性或方法加入至 NetStream 物件。 建立 NetStream 的子類別,並在子類別定義您的事件處理常式。您也可以讓子類別成為動態,然後將事件處理常式函數加入至該子類別的實體。
這個事件可以傳回具有下列屬性的資訊物件:
Code 屬性 | Level 屬性 | 意義 |
---|---|---|
NetStream.Play.Switch | "status" | 訂閱者將會從播放清單中的某個串流切換至另一個串流。 |
NetStream.Play.Complete | "status" | 播放已經完成。 |
NetStream.Play.TransitionComplete | "status" | 由於串流位元速率切換,訂閱者正在切換至新的串流。 |
相關 API 元素
onSeekPoint | 事件 |
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 2, Flash Lite 4 |
當附加位元組剖析器遇到它認為是可搜尋的點 (例如,視訊關鍵影格) 時,會從 appendBytes()
同步呼叫。使用此事件來建構搜尋點表格。byteCount
會對應至在該搜尋點之可剖析訊息第一位元組的 byteCount
,而且會依照上述來重設為零。若要搜尋,請在事件 NetStream.Seek.Notify
尋找在可搜尋點開始的位元組,並呼叫 appendBytes(bytes)
。如果 bytes
引數是由在可搜尋點開始之位元組所組成的 ByteArray
,視訊會在搜尋點播放。
注意:從此回呼中呼叫 appendBytes()
會被忽略。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個事件。
onSeekPoint
屬性是 NetStream.client
物件的屬性。此屬性會在 Events 區段中列出,因為它會回應進入 appendBytes()
方法的資料。如需詳細資訊,請查看 NetStream 類別說明與 NetStream.client
屬性。您無法使用 addEventListener()
方法或任何其他 EventDispatcher 方法來將 onSeekPoint
做為事件來偵聽或處理。若要使用 onSeekPoint
,請定義回呼函數,並將它直接附加至下列其中一個物件:
- NetStream 實體之
client
屬性所參照的物件。 - NetStream 子類別的實體。 NetStream 是一個密封類別,表示您無法在執行階段將屬性或方法加入至 NetStream 物件。 不過,您可以建立 NetStream 的子類別,並在子類別定義您的事件處理常式。您也可以讓子類別成為動態,然後將事件處理常式函數加入至該子類別的實體。
相關 API 元素
onTextData | 事件 |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4 |
建立偵聽程式,以便在 Flash Player 收到正在播放之媒體檔案中內嵌的文字資料時回應。此文字資料採用 UTF-8 格式,而且可能包含根據 3GP 定時文字規格進行格式化的相關資訊。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個事件。
onTextData
事實上是 NetStream.client
物件的屬性。屬性列在 Events 區段中,因為它會在使用 Flash Media Server 串流處理媒體時,或是在 FLV 檔案播放期間回應資料事件。如需詳細資訊,請查看 NetStream 類別說明。您無法使用 addEventListener()
方法或任何其他 EventDispatcher 方法,將 onTextData
當做事件加以偵聽或處理。定義回呼函數,並將它附加至下列其中一個物件:
- NetStream 實體之
client
屬性所參照的物件。 - NetStream 子類別的實體。 NetStream 是一個密封類別,表示您無法在執行階段將屬性或方法加入至 NetStream 物件。 建立 NetStream 的子類別,並在子類別定義您的事件處理常式。您也可以讓子類別成為動態,然後將事件處理常式函數加入至該子類別的實體。
關聯的事件偵聽程式會在呼叫 NetStream.play()
方法之後以及視訊播放磁頭前進之前觸發。
onTextData 事件物件會針對每一段文字資料包含一個屬性。
範例 ( 如何使用本範例 )
Netstream.client
屬性來處理 onTextData
和 onImageData
的回呼函數。onImageDataHandler()
函數會使用 onImageData 事件物件 imageData
來儲存此位元組陣列。而且,onTextDataHandler()
函數會使用 onTextData 事件物件 textData
來儲存文字資料片段 (每一段資料都是一個 textData
物件的屬性)。
您必須使用含有文字或影像中繼資料之媒體檔案的實際位置來替代程式碼中的位置 "yourURL"
。
您也可以使用自訂類別來處理影像和文字資料。如需詳細資訊和範例,請參閱文件:「處理 Flash 視訊中的中繼資料和提示點」。
package { import flash.display.*; import flash.net.*; import flash.media.*; import flash.system.*; import flash.events.*; public class OnTextDataExample extends Sprite { public function OnTextDataExample():void { var my_video:Video = new Video(); addChild(my_video); var customClient:Object = new Object(); customClient.onImageData = onImageDataHandler; customClient.onTextData = onTextDataHandler; var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_ns.client = customClient; my_video.attachNetStream(my_ns); my_ns.play("yourURL"); } public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); var imageloader:Loader = new Loader(); imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object. addChild(imageloader); } public function onTextDataHandler(textData:Object):void { trace("--- textData properties ----"); var key:String; for (key in textData) { trace(key + ": " + textData[key]); } } } }
相關 API 元素
onXMPData | 事件 |
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
建立偵聽程式,以便在 Flash Player 收到正在播放之視訊中內嵌的「Adobe 可延伸中繼資料平台」(XMP) 特定資訊時回應。如需有關由 Flash Media Server 支援的視訊檔案格式,請參閱 www.adobe.com/go/learn_fms_fileformats_tw。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個事件。
onXMPData
事實上是 NetStream.client
物件的屬性。屬性列在 Events 區段中,因為它會在使用 Flash Media Server 串流處理媒體時,或是在 FLV 檔案播放期間回應資料事件。如需詳細資訊,請查看 NetStream 類別說明與 NetStream.client
屬性。您無法使用 addEventListener()
方法或任何其他 EventDispatcher 方法來將 onMetaData
做為事件來偵聽或處理。定義回呼函數,並將它附加至下列其中一個物件:
- NetStream 實體之
client
屬性所參照的物件。 - NetStream 子類別的實體。 NetStream 是一個密封類別,表示您無法在執行階段將屬性或方法加入至 NetStream 物件。 不過,您可以建立 NetStream 的子類別,並在子類別定義您的事件處理常式。您也可以讓子類別成為動態,然後將事件處理常式函數加入至該子類別的實體。
關聯的事件偵聽程式會在呼叫 NetStream.play()
方法之後以及視訊播放磁頭前進之前觸發。
傳遞至 onXMPData()
事件處理函數的物件有一個 data
屬性 (此屬性為字串)。此字串是從最上層 UUID 方塊產生 (最上層方塊的 128 位元 UUID 為 BE7ACFCB-97A9-42E8-9C71-999491E3AFAC
)。這個最上層 UUID 方塊只包含一個以 null 結尾、UTF-8 字串表示的 XML 文件。
相關 API 元素
status | 事件 |
flash.events.StatusEvent
屬性 StatusEvent.type =
flash.events.StatusEvent.STATUS
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10.1, AIR 1.0, Flash Lite 4 |
當應用程式藉由叫用 NetStream.play()
方法,嘗試播放數位版權管理 (DRM) 加密內容時傳送。狀態碼屬性的值將是 "DRM.encryptedFLV"
。
注意:AIR 3.0 for iOS 中的 H.264 視訊不支援這個事件。
定義status
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
code | 物件狀態的說明。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
level | 訊息的類別,例如 "status" 、"warning" 或 "error" 。 |
target | 回報其自身狀態的物件。 |
相關 API 元素
CONNECT_TO_FMS | 常數 |
public static const CONNECT_TO_FMS:String = "connectToFMS"
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
靜態物件,做為 NetStream 實體建構函式的參數使用。它是 NetStream 建構函式中第二個參數的預設值,漸進式媒體播放的應用程式無法使用它。使用時,這個參數會讓建構函式建立與 Flash Media Server 實體的連線。
DIRECT_CONNECTIONS | 常數 |
public static const DIRECT_CONNECTIONS:String = "directConnections"
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 10, AIR 1.5, Flash Lite 4 |
建立對等式發行者連線。將第二個 (選擇性) 參數的這個字串傳遞至 NetStream 實體的建構函式。使用這個字串,應用程式可以建立 NetStream 連線,做為發佈音效和視訊至用戶端之用。
在這個範例中,是將建立 Video 和 NetStream 物件的程式碼與呼叫 Video.attachNetStream()
和 NetStream.play()
方法置入處理常式函數中。 只有在嘗試連線至 NetConnection 物件成功後才會呼叫處理常式;也就是 netStatus
事件傳回的 info
物件中含有表示成功的 code
屬性。 建議您先等候連線成功,然後再呼叫 NetStream.play()
。
package { import flash.display.Sprite; import flash.events.NetStatusEvent; import flash.events.SecurityErrorEvent; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.Event; public class NetConnectionExample extends Sprite { private var videoURL:String = "http://www.helpexamples.com/flash/video/cuepoints.flv"; private var connection:NetConnection; private var stream:NetStream; private var video:Video = new Video(); public function NetConnectionExample() { connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.connect(null); } private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": connectStream(); break; case "NetStream.Play.StreamNotFound": trace("Stream not found: " + videoURL); break; } } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function connectStream():void { addChild(video); var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.client = new CustomClient(); video.attachNetStream(stream); stream.play(videoURL); } } } class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate); } public function onCuePoint(info:Object):void { trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type); } }
mdata
來設定視訊實體 video
的寬度與長度:
//Place the following in the connectStream() function //in the NetConnectionExample code var metaSniffer:Object=new Object(); stream.client=metaSniffer; //stream is the NetStream instance metaSniffer.onMetaData=getMeta; // Add the following function within the NetConnectionExample class private function getMeta (mdata:Object):void { video.width=mdata.width/2; video.height=mdata.height/2; }
Tue Jun 12 2018, 03:47 PM Z