由於項目的需要,最近一段時間在研究如何使用Silverlight實現媒體播放。
一. 基本概念
1. Smooth Streaming
Smooth Streaming是IIS Media Services的擴充,它使得Silverlight用戶端可以通過HTTP來適應流媒體的頻寬,通過對視頻源檔案(如wmv等常用視頻檔案格式)的特殊處理,會在伺服器上按照不同頻寬要求產生多個不同版本的視頻檔案副本,IIS在接收到Silverlight用戶端請求後再決定將哪個視頻檔案副本通過流媒體發送到用戶端,這個過程是完全動態,也就是說當用戶端的頻寬發生變化時,傳送流媒體的視頻檔案副本也會相應地改變。
2. Adaptive streaming
Adaptive Streaming由AdaptiveStreaming.DLL提供,是微軟提供的平滑流ApsaraVideo for Media Processing技術的根本。在安裝Expression Encoder並具有完全著作權(注意:不是試用版本)的情況下,可以把各種格式的媒體檔案轉化成Adaptive Streaming能夠處理的格式,其統一檔案格式是fMP4。我們也可能輕鬆地得到AdaptiveStreaming.DLL。
3. IIS Media Services
IIS Media Services是IIS的一個外掛程式。
二.Smooth Streaming分析
1. 儲存格式:採用MPEG-4格式,尾碼名.fMP4;
2. 傳輸格式:在傳輸過程中會把整個媒體檔案分割成多個媒體塊,媒體塊的格式採用MPEG-4,尾碼名為.ISMV(視頻媒體),.ISMA(音頻媒體);
3. 伺服器端說明檔案:主要是描述Media Tracks,Bit Rates等,尾碼名.ISM;
4. 用戶端說明檔案:主要是描述用到的轉碼器,尾碼名.ISMC;
5. 傳輸協議:完全基於HTTP;
三. 使用Silverlight 實現媒體播放
1. 直接在Media Element控制項中指定Source為媒體檔案的uri,可以是本地工程檔案夾中的媒體檔案,也可以是IIS伺服器上的媒體檔案;
2. 使用Adaptive Streaming指定Source,Source必須是經過Expression Encoder處理過的媒體檔案的uri。步驟如下:
1) 把IIS 7.0部署在Web Server上;
2) 部署Smooth Streaming Services for IIS 7.0,它負責把Smooth Streaming媒體塊傳輸到用戶端;
3) 安裝Expression Encoder(必須是正式版,因為我在做Demo的時候用到的是試用版的軟體,結果VS2010提示找不到AdaptiveStreaming命名空間),Expression Encoder主要負責把各種格式的媒體檔案轉換成Smooth Streaming支援的格式,其尾碼名是.ism。
4) 使開發人員開發的Silverlight應用程式中支援Smooth streaming Playback,一是安裝IIS Media Service 3.0,並添加SmoothStreaming.dll和PlugInMssCrtl.dll;二是使用開源PlugIn:Open Video Player For Silverlight(我沒有驗證這種方法時候奏效)。
5)對於最終的使用者來講,他們不需要安裝任何的外掛程式,就能播放視頻。