採用ActionScript3.0指令碼實現flv視頻的播放,需要用一系列類的協作:
你需要一個NetStream對象來載入視頻和控制視頻的播放;
然而NetStream類只處理流動資料,它並不處理資料的顯示,因此需要一個Video對象使用NetStream資料在螢幕上顯示視頻。
NetStream類的建構函式需要一個NetConnection對象作為參數,該對象決定視頻資料的來源,如果Flash Video來自一個Flash Communication Server或Flash Media Server,則NetConnection對象要指向對應的伺服器。但是,如果是邊下載邊播放,那麼用一個null連接字串即可。
建立連線物件:
var videoConnection:NetConnection = new NetConnection( );
videoConnection.connect(null);
建立資料流管理對象:
var videoStream:NetStream = new NetStream(videoConnection);
建立video對象並顯示:
var video:Video = new Video( );
addChild(video);
關聯資料流:
video.attachNetStream(videoStream);
開始播放:
videoStream.play("example.flv");
調整音量:
用NetStream對象的soundTransform屬性來調整音量;
播放時間:
用NetStream對象的time屬性來擷取視頻已經播放的時間,從開始播放開始經過的時間,以秒為單位,並且該屬性是唯讀,不能修改。
讀取視頻時間長度:
在NetStream中不提供直接的時間長度屬性,而在flv檔案的檔案中有duration資料區段提供時間長度資訊。在NetStream對象載入flv檔案時會自動調用onMetaData()方法,然後一般在onMetaData方法中讀取flv檔案中的相關資訊。下面代碼用trace語句在調試視窗輸出時間長度資訊。
控制播放點:
用NetStream對象的seek()方法,根據提供的參數定位視頻的播放位置,但是在即時下載過程中設定的參數不能超過緩衝的資料長度。
縮放視頻:
Video對象的videoWidth和videoHeight是唯讀屬性,返回當前視頻的顯示大小,要修改其大小可以通過改變Video對象的width和height屬性來實現。
設定緩衝:
用NetStream對象的bufferTime屬性來設定視頻播放前應該緩衝的視頻長度,即必須在緩衝夠bufferTime的資料後才會開始播放。如果不設定,則預設設定為0.1s。bufferLength是NetStream的一個唯讀屬性,返回已經緩衝的資料長度,因此用bufferLenght/bufferTime來顯示已經緩衝的比率。NetStream對象的bytesLoaded和bytesTotal屬性來顯示視頻檔案已經下載的總長。
添加濾鏡效果:
用Video對象的filters屬性來設定視頻的顯示效果。
暫停:
用NetStream對象的pause()函數來暫停播放。
停止:
用NetStream對象的close()函數來停止播放,預設會清楚緩衝,如果要再次播放就要再次下載,然而如果瀏覽器緩衝有資料則可能播放的是瀏覽器緩衝的內容,如果要重新下載播放可以採用如下方法:
videoStream.play("video.flv?uniqueIndex=" + (new Date( )).getTime( ));
清除顯示:
當你關閉一個NetStream對象時,video對象並不會自動清除螢幕顯示而會一直保留最後一幀映像,只有在刪除Video對象或調用Video對象的clear()方法後才會清除螢幕。
var client:Object = new Object( );client.onMetaData = function(metadata:Object):void { trace(metadata.duration);};videoStream.client = client;