套件 | flash.media |
類別 | public class Video |
繼承 | Video DisplayObject EventDispatcher Object |
子類別 | VideoPlayer |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
與 Flash Media Server 搭配使用時,Video 物件可讓您傳送使用者擷取的即時視訊到伺服器,然後從伺服器廣播給其他使用者。您可以利用這些功能開發媒體應用程式,例如簡單的視訊播放程式、從一部伺服器多點發佈到其它伺服器的視訊播放程式,以及使用者社群的視訊共用應用程式。
Flash Player 9 和更新版本支援發佈和播放以 Sorenson Spark 或 On2 VP6 轉碼器編碼的 FLV 檔,另外也支援 Alpha 色版。相較於以往的技術,On2 VP6 視訊轉碼器使用較少的頻寬,並提供額外的消除馬賽克和消除環狀色斑濾鏡程式。如需有關視訊播放與支援格式的詳細資訊,請參閱「flash.net.NetStream 類別」。
Flash Player 9.0.115.0 和更新版本支援 Mip 映射 (Mipmapping),使執行階段顯示品質和效能達到最佳化。如果您將 Video 物件的 smoothing
屬性設定為 true
,Flash Player 會在播放視訊時使用 Mip 映射 (Mipmapping) 最佳化。
從 AIR 25 開始, app.xml 中為 Android 引進了名為 disableMediaCodec
的新標籤。將這個標籤設定為 true
會停用 mediacodec,且視訊會使用 OpenMax AL 進行解碼。否則,會啟用 mediacodec。根據預設,這個標籤的值為 false
。
就像顯示清單上的其它顯示物件一樣,您可以控制 Video 物件的許多屬性。 例如,您可以使用 Video 物件的 x
和 y
屬性,將它移動到「舞台」上的各個位置,並使用它的 height
和 width
屬性來變更大小,依此類推。
若要播放視訊串流,請使用 attachCamera()
或 attachNetStream()
將視訊附加至 Video 物件。 然後使用 addChild()
將 Video 物件加入顯示清單。
如果您使用的是 Flash Professional,您也可以將 Video 物件置於「舞台」上,而不是用 addChild()
加入它,例如:
- 如果看不見「元件庫」面板,請選取「視窗 > 元件庫」來顯示它。
- 將嵌入的 Video 物件新增到元件庫,按一下「元件庫」面板標題列右方的「選項」選單,並選取「新增視訊」。
- 在「視訊屬性」對話方塊中,為內嵌的 Video 物件命名以供元件庫使用,然後按一下「確定」。
- 將 Video 物件拖曳到「舞台」上,並使用「屬性」檢測器賦予它唯一的實體名稱,例如
my_video
。 (請勿將它命名為 Video)。
在桌面的 AIR 應用程式中,以全螢幕模式播放視訊會停用任何省電或螢幕保護功能 (若作業系統允許)。
注意:由於 Video 類別並非 InteractiveObject 類別的子類別,所以無法傳送滑鼠事件。 但是您可以對包含 Video 物件的顯示物件容器呼叫 addEventListener()
方法。
詳細資訊
相關 API 元素
attachNetStream()
flash.media.Camera.getCamera()
flash.net.NetConnection
flash.net.NetStream
flash.display.DisplayObjectContainer.addChild()
flash.display.Stage.addChild()
屬性 | 定義自 | ||
---|---|---|---|
accessibilityProperties : AccessibilityProperties
此顯示物件的目前輔助功能選項。 | DisplayObject | ||
alpha : Number
指出所指定物件的 Alpha 透明度值。 | DisplayObject | ||
blendMode : String
來自 BlendMode 類別的值,會指定要使用何種混合模式。 | DisplayObject | ||
blendShader : Shader [唯寫]
設定用來混合前景和背景的著色器。 | DisplayObject | ||
cacheAsBitmap : Boolean
如果設定為 true,Flash 執行階段會快取顯示物件的內部點陣圖表示法。 | DisplayObject | ||
cacheAsBitmapMatrix : Matrix
如果為非 null,當 cacheAsBitmap 設定為 true 時,這個 Matrix 物件會定義顯示物件的顯示方法。 | DisplayObject | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
deblocking : int
指出套用到解碼視訊做為後置處理之一部份的濾鏡類型。 | Video | ||
filters : Array
索引的陣列,其中包含目前和顯示物件相關的每個濾鏡物件。 | DisplayObject | ||
height : Number
會指出顯示物件的高度,以像素為單位。 | DisplayObject | ||
loaderInfo : LoaderInfo [唯讀]
會傳回 LoaderInfo 物件,其中包含關於載入此顯示物件所屬之檔案的資訊。 | DisplayObject | ||
mask : DisplayObject
呼叫之顯示物件會以指定的 mask 物件遮蓋。 | DisplayObject | ||
metaData : Object
如果中繼資料是透過 PlaceObject4 標籤與 SWF 檔案中的這個 DisplayObject 實體一同儲存,則會取得 DisplayObject 實體的中繼資料物件。 | DisplayObject | ||
mouseX : Number [唯讀]
指出滑鼠或使用者輸入裝置位置的 x 座標,以像素為單位。 | DisplayObject | ||
mouseY : Number [唯讀]
指出滑鼠或使用者輸入裝置位置的 y 座標,以像素為單位。 | DisplayObject | ||
name : String
指出 DisplayObject 的實體名稱。 | DisplayObject | ||
opaqueBackground : Object
會指定顯示物件是否不透明,並具有特定背景顏色。 | DisplayObject | ||
parent : DisplayObjectContainer [唯讀]
指出包含此顯示物件的 DisplayObjectContainer 物件。 | DisplayObject | ||
root : DisplayObject [唯讀]
對載入之 SWF 檔案的顯示物件而言,root 屬性就是該 SWF 檔案所呈現之顯示清單樹狀結構部分的最上層顯示物件。 | DisplayObject | ||
rotation : Number
指出 DisplayObject 實體的旋轉度數 (從該物件原本方向算起)。 | DisplayObject | ||
rotationX : Number
表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 x 軸旋轉 (以度數為單位)。 | DisplayObject | ||
rotationY : Number
表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 y 軸旋轉 (以度數為單位)。 | DisplayObject | ||
rotationZ : Number
表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 z 軸旋轉 (以度數為單位)。 | DisplayObject | ||
scale9Grid : Rectangle
目前產生效用的縮放格線。 | DisplayObject | ||
scaleX : Number
指出從註冊點套用的物件水平縮放 (百分比)。 | DisplayObject | ||
scaleY : Number
指出從物件註冊點套用的物件垂直縮放 (百分比)。 | DisplayObject | ||
scaleZ : Number
指出從物件註冊點套用的物件深度縮放 (百分比)。 | DisplayObject | ||
scrollRect : Rectangle
顯示物件的捲動矩形範圍。 | DisplayObject | ||
smoothing : Boolean
指定是否需要在視訊縮放時進行平滑處理 (漸變影格)。 | Video | ||
stage : Stage [唯讀]
顯示物件的「舞台」。 | DisplayObject | ||
transform : flash.geom:Transform
這是一個物件,具有和顯示物件的矩陣、顏色轉換和像素邊界有關的屬性。 | DisplayObject | ||
videoHeight : int [唯讀]
指定視訊串流高度的整數,以像素為單位。 | Video | ||
videoWidth : int [唯讀]
指定視訊串流寬度的整數,以像素為單位。 | Video | ||
visible : Boolean
不管是否看得見顯示物件。 | DisplayObject | ||
width : Number
會指出顯示物件的寬度,以像素為單位。 | DisplayObject | ||
x : Number
指出 DisplayObject 實體相對於父輩 DisplayObjectContainer 之區域座標的 x 座標。 | DisplayObject | ||
y : Number
指出 DisplayObject 實體相對於父輩 DisplayObjectContainer 之區域座標的 y 座標。 | DisplayObject | ||
z : Number
表示 DisplayObject 實體相對於 3D 父輩容器的 z 座標位置 (沿著 z 軸)。 | DisplayObject |
方法 | 定義自 | ||
---|---|---|---|
會建立新的 Video 實體。 | Video | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
指定來自攝影機且即將在應用程式中 Video 物件邊界範圍內顯示的視訊串流。 | Video | ||
指定即將在應用程式中 Video 物件邊界範圍內顯示的視訊串流。 | Video | ||
清除目前顯示在 Video 物件 (而非視訊串流) 中的影像。 | Video | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
傳回可定義顯示物件區域 (相對於 targetCoordinateSpace 物件的座標系統) 的矩形。 | DisplayObject | ||
根據 targetCoordinateSpace 參數所定義的座標系統,並排除形狀上的任何筆畫,傳回可定義顯示物件邊界的矩形。 | DisplayObject | ||
將 point 物件從「舞台」(全域) 座標轉換成顯示物件的 (區域) 座標。 | DisplayObject | ||
將二維點從「舞台」(全域) 座標轉換為三維顯示物件的 (區域) 座標。 | DisplayObject | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
評估顯示物件的範圍框,看它是否與 obj 顯示物件的範圍框重疊或相交。 | DisplayObject | ||
評估顯示物件,看它是否與 x 和 y 參數所指定的點重疊或相交。 | DisplayObject | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
將三維顯示物件的 (區域) 座標的三維點轉換為「舞台」(全域) 座標中的二維點。 | DisplayObject | ||
將 point 物件從顯示物件的 (區域) 座標轉換成「舞台」(全域) 座標。 | DisplayObject | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
deblocking | 屬性 |
deblocking:int
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指出套用到解碼視訊做為後置處理之一部份的濾鏡類型。 預設值為 0,可讓視訊壓縮程式視需要套用消除馬賽克的濾鏡。
視訊的壓縮可能會產生不想要的雜訊。 您可以使用 deblocking
屬性來設定濾鏡,以便減少馬賽克和環狀色斑 (針對使用 On2 轉碼器壓縮的視訊)。
「馬賽克」是指組成每個視訊影格的區塊邊界之間的可見瑕疵。 「環狀色斑」是指視訊影像內各元素周圍的扭曲邊緣。
您可以使用兩種消除馬賽克濾鏡: 一種是在 Sorenson 轉碼器中,而另一種則在 On2 VP6 轉碼器中。 此外,當您使用 On2 VP6 轉碼器時,可以使用消除環狀色斑濾鏡。 若要設定濾鏡,請使用下列其中一個值:
- 0 - 讓視訊壓縮程式視需要套用消除馬賽克濾鏡。
- 1 - 不使用消除馬賽克濾鏡。
- 2 - 使用 Sorenson 消除馬賽克濾鏡。
- 3 - (僅適用於 On2 視訊) 使用 On2 消除馬賽克濾鏡,但不使用消除環狀色斑濾鏡。
- 4 - (僅適用於 On2 視訊) 使用 On2 消除馬賽克和消除環狀色斑濾鏡。
- 5 - (僅適用於 On2 視訊) 使用 On2 消除馬賽克和消除環狀色斑濾鏡。
如果使用 Sorenson 轉碼器時為視訊選取 2 以上的值,Sorenson 解碼器會預設為 2。
使用消除馬賽克濾鏡會影響整體的播放效果,因此高頻寬的視訊通常都不會用到。 如果使用者的系統功能不夠強,在啟用消除馬賽克濾鏡時,可能會遇到播放視訊方面的困難。
實作
public function get deblocking():int
public function set deblocking(value:int):void
smoothing | 屬性 |
smoothing:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定是否需要在視訊縮放時進行平滑處理 (漸變影格)。 如果要讓平滑處理作業發揮作用,執行階段就必須處於高品質的模式中 (預設)。預設值是 false
(不平滑處理)。
若要使用 Flash Player 9.0.115.0 和更新版本播放視訊,請將此屬性設定為 true
,以便利用 Mip 映射影像最佳化。
實作
public function get smoothing():Boolean
public function set smoothing(value:Boolean):void
videoHeight | 屬性 |
videoHeight:int
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定視訊串流高度的整數,以像素為單位。 對於即時串流來說,這個值和 Camera 物件的 Camera.height
屬性相同,此 Camera 物件指的是正在捕捉視訊串流的 Camera 物件。 針對錄製的視訊檔案,此值為視訊的高度。若是錄製的視訊,則當此值變更時就會傳送 NetStream.Video.DimensionChange 事件。
例如,若您要確保不論 Video 物件在舞台上實際的大小如何,使用者所看到的視訊和它們被擷取時大小相同,則您可能要使用這個屬性。
實作
public function get videoHeight():int
相關 API 元素
videoWidth | 屬性 |
videoWidth:int
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定視訊串流寬度的整數,以像素為單位。 對於即時串流來說,這個值和 Camera 物件的 Camera.width
屬性相同,此 Camera 物件指的是正在捕捉視訊串流的 Camera 物件。 針對錄製的視訊檔案,此值為視訊的寬度。若是錄製的視訊,則當此值變更時就會傳送 NetStream.Video.DimensionChange 事件。
例如,若您要確保不論 Video 物件在舞台上實際的大小如何,使用者所看到的視訊和它們被擷取時大小相同,則您可能要使用這個屬性。
實作
public function get videoWidth():int
相關 API 元素
Video | () | 建構函式 |
public function Video(width:int = 320, height:int = 240)
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
會建立新的 Video 實體。 如果沒有提供 width
和 height
參數的值,就會使用預設值。 您也可以在初始建構之後,使用 Video.width
和 Video.height
設定 Video 物件的寬度和高度屬性。 建立新的 Video 物件後,寬度或高度就不允許輸入零這個值。如果您傳遞零,就會套用預設值。
建立 Video 後,請呼叫 DisplayObjectContainer.addChild()
或 DisplayObjectContainer.addChildAt()
方法,將 Video 物件加入父 DisplayObjectContainer 物件。
width:int (default = 320 ) — 視訊的寬度,以像素為單位。
| |
height:int (default = 240 ) — 視訊的高度,以像素為單位。
|
範例 ( 如何使用本範例 )
var MyVideo:Video = new Video(); addChild(MyVideo); var MyNC:NetConnection = new NetConnection(); MyNC.connect(null); var MyNS:NetStream = new NetStream(MyNC); MyNS.play("http://www.helpexamples.com/flash/video/clouds.flv"); MyVideo.attachNetStream(MyNS); //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 }
attachCamera | () | 方法 |
public function attachCamera(camera:Camera):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
指定來自攝影機且即將在應用程式中 Video 物件邊界範圍內顯示的視訊串流。
使用這個方法附加使用者擷取的即時視訊至 Video 物件。您可以在擷取即時視訊的相同本機電腦或裝置上播放,也可以將它傳到 Flash Media Server 並使用伺服器將它串流給其他使用者。
注意:在 iOS AIR 應用程式中,當應用程式使用 GPU 顯示模式時,無法顯示攝影機視訊。
參數
camera:Camera — 正在捕捉視訊資料的 Camera 物件。 若要丟棄 Video 物件的連線,請傳遞 null 。
|
相關 API 元素
範例
如何使用本範例
請參閱 Camera.getCamera() 方法的範例,以取得使用此方法的詳細指示。
attachNetStream | () | 方法 |
public function attachNetStream(netStream:NetStream):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定即將在應用程式中 Video 物件邊界範圍內顯示的視訊串流。 視訊串流是以 NetStream.play()
播放的視訊檔案、Camera 物件或 null
。如果您使用視訊檔案,它可以儲存在本機檔案系統或 Flash Media Server 上。如果 netStream
引數的值是 null
,則視訊便不會於 Video 物件中播放。
如果視訊檔案只包含音效,您就不必使用這個方法;呼叫 NetStream.play()
時,就會自動播放視訊檔案的音效部分。若要控制與視訊檔案關聯的音效,請使用播放視訊檔案之 NetStream 物件的 soundTransform
屬性。
參數
netStream:NetStream — NetStream 物件。 若要丟棄 Video 物件的連線,請傳遞 null 。
|
相關 API 元素
clear | () | 方法 |
public function clear():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
清除目前顯示在 Video 物件 (而非視訊串流) 中的影像。這個方法有助於處理目前的影像。例如,您可以清除上一個影像或顯示待用資訊,而不必隱藏 Video 物件。
相關 API 元素
videoURL
的變數相符,在這個範例中,名為 Video.flv 的 FLV 檔是與 SWF 檔位於相同的目錄中。
在這個範例中,是將建立 Video 和 NetStream 物件的程式碼與呼叫 Video.attachNetStream()
和 NetStream.play()
置入處理常式函數中。 只有在嘗試連線至 NetConnection 物件成功後才會呼叫處理常式,也就是 netStatus
事件傳回的 info 物件中含有表示成功的 code
屬性。 建議您先等候連線成功,然後再呼叫 NetStream.play()
。
package { import flash.display.Sprite; import flash.events.*; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; public class VideoExample extends Sprite { private var videoURL:String = "Video.flv"; private var connection:NetConnection; private var stream:NetStream; public function VideoExample() { 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("Unable to locate video: " + videoURL); break; } } private function connectStream():void { stream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); var video:Video = new Video(); video.attachNetStream(stream); stream.play(videoURL); addChild(video); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function asyncErrorHandler(event:AsyncErrorEvent):void { // ignore AsyncErrorEvent events. } } }
Tue Jun 12 2018, 03:47 PM Z