用戶端設定比較簡單, 因為這是運用已有元件和基本 OOP 原理建立而成。用戶端架構由下列位於 OnDemandPlayer 資料夾的檔案組成:
FLA 有三個基本控制項:
連接這些用戶端元件相當簡單。下面是幾個關鍵要點。
運用 OOP 原理建立可擴充的應用程式時, 一般的最佳做法是將影片以類別的形式附加 (請參閱圖 2)。這可以很容易將 ActionScript 類別整理清楚, 也方便附加到舞台。 Peldi* 是 Breeze 的架構設計師, 將這種方法描述為最佳實務。所以如果您在想 OnDemandPlayer.as 要如何附加到 OnDemandPlayer.fla, 那麼請查看「圖庫 (Library)」。
圖 2. 將 ActionScript 連結到影片
這跟使用 #include 檔的效果一樣, 但從「圖庫 (Library)」附加影片要容易管理得多:
attachMovie("OnDemandPlayer","mc",0);
與伺服器的檔案存取信號交換是由基本的 makeConnection 函數設定:
public function makeConnection():Void {
nc = new NetConnection();
nc.connect("rtmp://"+serverName+"/"+appName);
nc.owner = this;
nc.onStatus = function(info) {
if (info.code == "NetConnection.Connect.Success") {
owner.dir();
}
};
}
這會連線到 Flash Media Server 並傳送要取得 FLV 和 MP3 的來源資料夾名稱:
nc.call("createFileObj", null, foldername);
這會與 Flash Media Server 連線, 取得 FLV 與 MP3 的長度:
var streamlength = owner.nc.call("getStreamLength", null, stream_name);
FLVPlayback 元件有內建的串流長度。若要設定 MediaPlayback 中的 MP3 長度, 並在資料表格顯示長度, 就必須從 FileObj main.asc 檔案擷取資訊。
在用戶端, 您必須以陣列蒐集「檔案物件」的串流名稱以及其他資訊。這時可以使用 dirResult 函數:
private function dirResult(folderName, owner):Void {
this.onResult = function(retVal) {
for (var i = 0; i<retVal.length; i++) {
var flv_name = (retVal[i].name).substr((retVal[i].name).lastIndexOf("/")+1);
var index = flv_name.lastIndexOf(".");
var stream_name = flv_name.substring(index + 1, flv_name.length) + ":" + owner.folderName + "/" + flv_name.substring(0, index);
var streamlength = owner.nc.call("getStreamLength", null, stream_name);
owner.myDP_array.addItem({Name:flv_name, Length:retVal[i].streamlength, CreationTime:retVal[i].creationTime, LastModified:retVal[i].lastModified, Size:retVal[i].length});
}
};
請注意, 物件 retVal 不只有串流名稱而已。其中還有建立時間 (creationTime)、上次修改時間 (lastModified) 以及長度 (檔案大小)。
這些只是部分可使用 List 指令從伺服器上取得的資訊。如需更完整的檔案物件清單, 請參閱 Flash Media Server LiveDocs 中的「檔案類別的屬性摘要 (Property Summary for File Class*)」。
使用 Flash Media Server 中的檔案存取和「檔案物件」功能可以很容易顯示內容, 是代替 XML 資料清單的另一種方法。本文中的範例只是簡單的使用範例, 可顯示伺服器上所有的媒體資產。此外, 您可以將 XML 的延伸性和組織性與「檔案存取」的易用性結合, 便是可供 Flash Media Sever 隨選應用程式運用的完美方法。利用這個應用程式, 您可以很容易將整個 Flash 視訊和 MP3 媒體集合放到伺服器上串流。
在瞭解 Flash Media Server 開發時如遇到問題, 請試試看 Chattyfig* 名錄。這是 Flash Media Server 開發人員的主要名錄, 常有針對開發的精彩討論。每當在開發時遇到困難的問題, 我都會從這個寶貴的資源尋求解決之道。不過發問時請慎選問題, 因為如果從 Google 就可以搜尋到答案, 那可是會慘遭修理。
我希望本文有助您瞭解 Flash Media Server 新增的檔案存取功能。希望您未來使用 Flash Media Server 能一切順利。