輔助功能*

目錄

將檔案物件用於隨選視訊及 MP3 播放

檢查用戶端設定

用戶端設定比較簡單, 因為這是運用已有元件和基本 OOP 原理建立而成。用戶端架構由下列位於 OnDemandPlayer 資料夾的檔案組成:

  • OnDemandPlayer.fla
  • OnDemandPlayer.as

FLA 元件

FLA 有三個基本控制項:

  • FLVPlayback: 用來串流 FLV (Flash Professional 8 的新功能)
  • MediaPlayback: MP3 控制器
  • DataGrid: 用來將 FLV 和 MP3 與基礎架構連接
  • OnDemandPlayer: 這個影片是用來指向 ActionScript 的第一個畫格 (檢查「圖庫 (Library)」)

連接這些用戶端元件相當簡單。下面是幾個關鍵要點。

ActionScript 2.0 與 MovieClip 類別

運用 OOP 原理建立可擴充的應用程式時, 一般的最佳做法是將影片以類別的形式附加 (請參閱圖 2)。這可以很容易將 ActionScript 類別整理清楚, 也方便附加到舞台。 Peldi* 是 Breeze 的架構設計師, 將這種方法描述為最佳實務。所以如果您在想 OnDemandPlayer.as 要如何附加到 OnDemandPlayer.fla, 那麼請查看「圖庫 (Library)」。

將 ActionScript 連結到影片

圖 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 能一切順利。