套件 | flash.media |
類別 | public class StageVideo |
繼承 | StageVideo EventDispatcher Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5, Flash Player 10.2 |
AIR 描述檔支援:在 AIR 3 中,所有 AIR for TV 裝置和某些行動裝置都支援此項功能。iOS 版 AIR 3 會針對具備硬體解碼及有限 NetStream 功能支援的 H.264 視訊使用 StageVideo 物件。此外,iOS 版 AIR 3 還透過 StageVideo 物件支援 On2 和 Sorenson 轉碼器。這項支援不使用硬體解碼,也不限制 NetStream 功能。在 AIR 2.5 中,只有 AIR for TV 裝置支援此項功能。再者,在 AIR 2.5 for TV 中,此項功能的 ActionScript 不同於 AIR 3 或 Flash Player 10.2 的 ActionScript。這些差異已在 ActionScript 說明中註明。如需有關跨多個描述檔之 API 支援的詳細資訊,請參閱 AIR 描述檔支援。AIR 桌上型電腦或 extendedDesktop 描述檔不支援 StageVideo 類別。
StageVideo 物件顯示的視訊永遠會出現在舞台上所有 Flash 顯示清單物件後面的矩形區域中。因此,StageVideo 物件在支援最常見顯示視訊的案例之際 (視訊控制項重疊於上的矩形區域),可發揮硬體加速的優勢。
使用 StageVideo 物件取代 Video 物件的優點:
- 使用硬體加速,因而改善視訊顯示效能。
- CPU 使用量降低。
- 內容開發的彈性與創造力,例如出現在 StageVideo 物件之前的視訊控制項。
因為裝置的硬體會顯示視訊,所以相較於 Video 物件,StageVideo 物件受限於下列限制:
- 針對每個 SWF 檔案,Flash Player 會將可同時顯示視訊的 StageVideo 物件數目限制為四個。不過,視裝置硬體資源而定,實際限制有可能會更低。在 AIR for TV 裝置上,同一時間只有一個 StageVideo 物件可以顯示視訊。
- 視訊時間未與執行階段顯示的 Flash 內容時間同步。
- 視訊顯示區域僅能為矩形。您無法使用較為進階的顯示區域,像是橢圓形或不規則形狀。
- 您無法旋轉視訊。
- 您無法以點陣圖快取視訊或使用 BitmapData 存取它。
- 您無法對視訊套用濾鏡。
- 您無法對視訊套用顏色變化。
- 您無法對視訊套用 Alpha 值。
- 對視訊前顯示物件套用的混合模式,不會套用於視訊。
- 您只能將視訊置於完整像素邊界。
- 雖然會以指定裝置硬體可使用的最佳品質顯示,但不同裝置間並不一定會以 100% 「相同的像素」來顯示。會因驅動程式與平台的差異而有些微的差異。
- 有些裝置不支援所有需要的顏色空間。例如,部分裝置不支援 BT.709 和 H.264 標準。在這種情況下,您可以使用 BT.601 進行快速顯示。
- 您無法以 WMODE 設定 (例如,
normal
、opaque
或transparent
) 使用舞台視訊。舞台視訊不是全螢幕模式時,僅支援WMODE=direct
。WMODE 對 Safari 4 或更新版本、IE 9 或更新版本,或者是 AIR for TV 沒有作用。 - 在 AIR for Android 應用程式中使用 StageVideo 時,請將應用程式描述器中的
colorDepth
設定為「32 位元」。搭配 16 位元顏色深度使用 StageVideo 並不受支援。 - 在 Android 上,只有執行 Android 3 (Honeycomb) 及更新版本的裝置才支援 StageVideo。若要讓應用程式能在最廣種類範圍的 Android 裝置上執行,請務必提供當 StageVideo 無法使用時改用 Video 物件顯示視訊的邏輯。
下列步驟摘要說明如何使用 StageVideo 物件來播放視訊:
- 偵聽 StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY 事件,以瞭解變更 Stage.stageVideos 向量的時間。(AIR 2.5 for TV 不支援)。
- 如果 StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY 事件報告有舞台視訊,請使用事件處理常式中的
Stage.stageVideos
Vector 物件來存取 StageVideo 物件。在 AIR 2.5 for TV 中,請在顯示第一個 SWF 影格之後存取Stage.stageVideos
。注意:您無法建立 StageVideo 物件。 - 使用
StageVideo.attachNetStream()
來附加 NetStream 物件。 - 使用
NetStream.play()
來播放視訊。 - 偵聽 StageVideo 物件上的
StageVideoEvent.RENDER_STATE
事件,以判斷播放視訊的狀態。收到這個事件也表示此視訊的寛度與高度屬性已經初始化或變更。 - 偵聽 Video 物件上的
VideoEvent.RENDER_STATE
事件。此事件與 StageVideoEvent.RENDER_STATE 提供的狀態相同,因此您可以用它來判斷 GPU 加速是否可用。收到這個事件也表示此視訊的寛度與高度屬性已經初始化或變更。(AIR 2.5 for TV 不支援)。
若 StageVideoEvent.RENDER_STATE
事件指示無法播放視訊,您可以回復使用 Video 物件來取代 StageVideo 物件。將視訊附加至 NetStream 物件並播放後,便會傳送此事件。此外,根據平台而異,播放狀態的任何變更可能導致傳送事件。處理 StageVideoEvent.RENDER_STATE
事件,確認應用程式播放視訊或妥善處理不播放視訊的情形。
如果執行中的視訊從不支援舞台視訊的 WMODE 進入全螢幕模式,則現在便可使用舞台視訊。同樣地,如果使用者結束全螢幕模式,舞台視訊可能會變成無法使用。在這些情況下,會變更 Stage.stageVideos 向量。若要收到此變更的通知,請偵聽 StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABITY 事件。注意:AIR 2.5 for TV 中沒有此通知可用。
詳細資訊
相關 API 元素
flash.events.StageVideoAvailabilityEvent
flash.events.VideoEvent
flash.display.Stage.stageVideos
flash.media.Video
flash.net.NetStream
屬性 | 定義自 | ||
---|---|---|---|
colorSpaces : Vector.<String> [唯讀]
傳回此視訊表面可用顏色空間的名稱。 | StageVideo | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
depth : int
相對於其他 StageVideo 物件的 StageVideo 物件深度階層。 | StageVideo | ||
pan : Point
顯示指定為 Point 物件之視訊的平移設定。 | StageVideo | ||
videoHeight : int [唯讀]
指定視訊串流高度的整數,以像素為單位。 | StageVideo | ||
videoWidth : int [唯讀]
指定視訊串流寬度的整數,以像素為單位。 | StageVideo | ||
viewPort : Rectangle
視訊表面的絕對位置與大小 (以像素為單位)。 | StageVideo | ||
zoom : Point
指定為 Point 物件之視訊的縮放設定。 | StageVideo |
方法 | 定義自 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
指定來自攝影機的視訊串流,將利用 GPU 來顯示在應用程式中的 StageVideo 物件邊界範圍內。 | StageVideo | ||
指定即將在應用程式中 StageVideo 物件邊界範圍內顯示的視訊串流。 | StageVideo | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
事件 | 摘要 | 定義自 | ||
---|---|---|---|---|
[廣播事件] 當 Flash Player 或 AIR 應用程式取得作業系統焦點並成為作用中時傳送。 | EventDispatcher | |||
[廣播事件] 當 Flash Player 或 AIR 應用程式失去作業系統焦點並成為非作用中時傳送。 | EventDispatcher | |||
當 StageVideo 物件的顯示狀態變更時,由 StageVideo 物件所傳送。 | StageVideo |
colorSpaces | 屬性 |
depth | 屬性 |
depth:int
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5, Flash Player 10.2 |
相對於其他 StageVideo 物件的 StageVideo 物件深度階層。
StageVideo 物件永遠都會顯示在舞台上其他物件的後面。若平台支援一個以上的 StageVideo 物件,則 depth
屬性指示 StageVideo 物件的深度階層。底端 StageVideo 物件的 depth
屬性具有最小的值。若多個 StageVideo 物件具有相同的深度設定,則這些物件在 stage,stageVideos
Vector 中出現的順序,將決定它們的相對深度。
注意:AIR for TV 裝置僅支援一個 StageVideo 物件。因此,此屬性不適用於這些裝置。
實作
public function get depth():int
public function set depth(value:int):void
相關 API 元素
pan | 屬性 |
pan:Point
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5, Flash Player 10.2 |
顯示指定為 Point 物件之視訊的平移設定。
根據預設,pan
的值為 (0,0)
。此預設值會將視訊置於 StageVideo.viewPort
指定的矩形中央。
只有當 zoom
屬性值不是預設值 (1.0, 1.0)
的時候,pan
值才會有作用。使用預設 zoom
值在 StageVideo.viewPort
矩形中顯示視訊時,平台會調整視訊大小,使它確實符合矩形。因此,便能顯示完整的視訊。不過,若指定了縮放係數,將無法看到整個視訊。在此狀況下,您可以設定 pan
值,指定要在 StageVideo.viewPort
矩形中顯示的視訊子矩形。
pan
屬性的有效值範圍從 (-1.0, -1.0)
至 (1.0, 1.0)
。明確說明如下:
-
pan
值為(-1.0, -1.0)
時,會將視訊的左上方像素置於StageVideo.viewPort
矩形的左上方位置。 -
pan
值為(1.0, 1.0)
時,會將視訊的右下方像素置於StageVideo.viewPort
矩形的右下方位置。 -
pan
值為(1.0, -1.0)
時,會將視訊的右上方像素置於StageVideo.viewPort
矩形的右上方位置。 -
pan
值為(-1.0, 1.0)
時,會將視訊的左下方像素置於StageVideo.viewPort
矩形的左下方位置。
根據縮放介於 -1.0 與 1.0 之間的平移值。
若將 pan
屬性設定為有效範圍以外的值,將擲回 RangeError
例外。執行階段會將值重設為最後有效值。
此外,若要使用 StageVideo 物件,請指派 Stage.stageVideos
Vector 物件的元素給 StageVideo 變數。設定 StageVideo 變數的 pan
屬性時,底層的 Stage.stageVideos
Vector 元素也會變更。若稍後指派該元素給其他 StageVideo 變數以播放其他視訊,請重設 pan
屬性。
實作
public function get pan():Point
public function set pan(value:Point):void
擲回值
RangeError — Point 值無效。
|
相關 API 元素
videoHeight | 屬性 |
videoWidth | 屬性 |
viewPort | 屬性 |
viewPort:Rectangle
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5, Flash Player 10.2 |
視訊表面的絕對位置與大小 (以像素為單位)。
相對於舞台左上角的視訊相對位置。
viewPort
Rectangle 物件的 x
與 y
屬性的有效範圍為 -8192 至 8191。因此,您可以將視訊全部或部分置於舞台之外。若使 viewPort
屬性的 width
與 height
屬性大於舞台,則視訊將會大於舞台。
實作
public function get viewPort():Rectangle
public function set viewPort(value:Rectangle):void
擲回值
RangeError — Rectangle 值無效。
|
zoom | 屬性 |
zoom:Point
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5, Flash Player 10.2 |
指定為 Point 物件之視訊的縮放設定。
縮放 Point 為縮放比例係數。根據預設,zoom
的值為 (1.0, 1.0)
。此預設值會在 StageVideo.viewPort
矩形中顯示整個視訊。
zoom
屬性有效值的範圍從 (1.0, 1.0)
至 (8.0, 8.0)
。縮放 Point 物件的 x
屬性指定水平像素的縮放值,而 y 屬性指定垂直像素的縮放值。
例如,zoom
值若為 (2.0, 2.0)
,在 StageVideo.viewPort
矩形中將只顯示一半的水平像素與一半的垂直像素。亦即,視訊仍然會填滿 StageVideo.viewPort
矩形,但只會顯示一半的視訊,建立 2x 縮放效果。同理,zoom
值若為 (8.0, 8.0)
,在 StageVideo.viewPort
矩形中將只顯示 1/8 的水平像素與 1/8 的垂直像素,放大至最大量的 8x。
設定 zoom
屬性時,請設定 pan
屬性,讓 StageVideo.viewPort
矩形顯示視訊適當的子矩形。
以下列情況為例,可為 zoom
Point 物件的 x
與 y
屬性設定不同的值。首先,請注意當使用預設 zoom
值在 StageVideo.viewPort
矩形中顯示視訊時,平台會調整視訊大小,使它確實符合矩形。若視訊的矩形無法均等縮放為 StageVideo.viewPort
矩形,將會扭曲視訊顯示。亦即,視訊的外觀比例與 StageVideo.viewPort
不相等。例如,若視訊長寬不相等,但是 StageVideo.viewPort
屬性指定正方形,便會發生此狀況。若要解決扭曲的問題,可為 zoom
Point 物件的 x
與 y
屬性設定不同的值。然後,設定 pan
屬性,確認讓 StageVideo.viewPort
矩形顯示適當的視訊子矩形。
若將 zoom
屬性設定為有效範圍以外的值,將擲回 RangeError
例外。執行階段會將值重設為最後有效值。
此外,若要使用 StageVideo 物件,請指派 Stage.stageVideos
Vector 物件的元素給 StageVideo 變數。設定 StageVideo 變數的 zoom
屬性時,底層的 Stage.stageVideos
Vector 元素也會變更。若稍後指派該元素給其他 StageVideo 變數以播放其他視訊,請重設 zoom
屬性。
實作
public function get zoom():Point
public function set zoom(value:Point):void
擲回值
RangeError — Point 值無效。
|
相關 API 元素
attachCamera | () | 方法 |
public function attachCamera(theCamera:Camera):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 11.4, AIR 3.4 |
指定來自攝影機的視訊串流,將利用 GPU 來顯示在應用程式中的 StageVideo 物件邊界範圍內。
注意:Android 不支援攝影機的 StageVideo。
使用這個方法可將使用者捕捉的即時視訊附加至 StageVideo 物件。若要丟棄 StageVideo 物件的連線,請傳遞 null
。
參數
theCamera:Camera — 正在捕捉視訊資料的 Camera 物件。
|
相關 API 元素
attachNetStream | () | 方法 |
public function attachNetStream(netStream:NetStream):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5, Flash Player 10.2 |
指定即將在應用程式中 StageVideo 物件邊界範圍內顯示的視訊串流。視訊串流是以 NetStream.play() 播放的視訊檔案或為 null
。視訊檔案可以儲存在本機檔案系統或 Flash Media Server 上。如果 netStream
引數的值是 null
,則視訊便不會於 StageVideo 物件中播放。
第二次呼叫 attachNetStream()
之前,呼叫目前附加之 NetStream 物件的 close()
方法。呼叫 close()
可釋出所有的資源,包括與播放視訊有關的硬體解碼器。之後,可以使用其他 NetStream 物件或 null
來呼叫 attachNetStream()
方法。
如果視訊檔案只包含音效,您就不必使用這個方法;呼叫 NetStream.play()
時,就會自動播放視訊檔案的音效部分。若要控制與視訊檔案關聯的音效,請使用播放視訊檔案之 NetStream 物件的 soundTransform
屬性。
參數
netStream:NetStream — NetStream 物件。 若要丟棄 StageVideo 物件的連線,請傳遞 null 。
|
renderState | 事件 |
flash.events.StageVideoEvent
屬性 StageVideoEvent.type =
flash.events.StageVideoEvent.RENDER_STATE
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 2.5, Flash Player 10.2 |
當 StageVideo 物件的顯示狀態變更時,由 StageVideo 物件所傳送。
StageVideoEvent.RENDER_STATE
常數定義 renderState
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
colorSpace | 顯示視訊可用的顏色空間。 |
currentTarget | 正主動使用事件偵聽程式處理 StageVideoEvent 物件的物件。 |
status | 指示視訊正由硬體或軟體顯示 (解碼與顯示),或不顯示。 |
target | 變更狀態的 StageVideo 物件。 |
Tue Jun 12 2018, 03:47 PM Z