IIS7 Smooth Streaming技術在Silverlight 3中的應用_第1頁
IIS7 Smooth Streaming技術在Silverlight 3中的應用_第2頁
IIS7 Smooth Streaming技術在Silverlight 3中的應用_第3頁
IIS7 Smooth Streaming技術在Silverlight 3中的應用_第4頁
IIS7 Smooth Streaming技術在Silverlight 3中的應用_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、微軟的全新一代操作系統將IIS 7(Internet Information Services 7)引入到人們的視線中,作為IIS 6.0的一個升級版本,IIS 7在很多地方都做了改進,諸如模塊化服務功能,與.NET的無縫集成,簡單的操作和部署,改進的管理功能,以及安全性、過程改進、錯誤診斷、兼容性等很多新特性,要想全面了解IIS 7所帶來的更多新特性,可以查看“探索用于Windows Vista的Web服務器和更多內容”一文。IIS 7的很多功能都是作為模塊(插件)被集成到服務器上的,默認安裝的IIS 7上已經集成了很多常用的功能,下圖展示了IIS 7上的一些常用模塊。 IIS 7支持很多的

2、插件,The Offical Microsoft IIS Site上列出了當前IIS 7上的所有擴展,如SEO(Search Engine Optimization Toolkit,搜索引擎優化),Web Platform Installer(如上圖中已安裝在Management分類下),Application Request Routing,URL Rewrite Module(我在“使用URL Rewriter進行URL重寫失效”和“ASP.NET URL雙向改寫的實現”中詳細介紹過在非IIS 7的環境寫如何通過ASP.NET實現URL的重寫,現在IIS 7已經將這個功能集成了),Smoo

3、th Streaming(這個功能是本文即將要介紹的)等。IIS 7的這些插件在很大程度上給站點開發人員帶來了便利性,可能以前我們需要在Web程序中添加許多很復雜的代碼才能實現的功能,現在借助于IIS 7和插件,幾乎不用修改任何代碼就可以搞定。是不是讓人覺得很興奮呢?先別著急,要想了解或掌握IIS 7的這些插件,還是需要耗費點時間的,The Offical Microsoft IIS Site官方網站上有許多詳細的介紹和示例,可供我們學習和研究。在本文中,我想重點介紹下Smooth Streaming技術的應用。 什么是Smooth Streaming?官方站點上有詳細的介紹和示例,

4、相信也有許多人已經見過了,還記得那個生動的動畫短片Big Buck Bunny嗎?那個有趣的影片很好地展現了Smooth Streaming技術在Silverlight 3中的應用。那么,究竟什么是Smooth Streaming技術呢?一個很好的解釋就是,Smooth Streaming是IIS Media Services的擴展,它使得Silverlight客戶端可以通過HTTP來適應流媒體的帶寬,通過對視頻源文件(如wmv等常用視頻文件格式)的特殊處理,會在服務器上按照不同帶寬要求生成多個不同版本的視頻文件副本,IIS在接收到Silverlight客戶端請求后再決定將哪個視頻文件副本通過

5、流媒體發送到客戶端,這個過程是完全動態的,也就是說當客戶端的帶寬發生變化時,傳送流媒體的視頻文件副本也會相應地改變。如當前客戶端的帶寬在300kbps以下,則當前的流媒體文件副本可能為280kbps的那個;當客戶端的帶寬上升到1mbps時,當前的流媒體文件副本就可能變成1.5mbps的那個了。是不是覺得很神奇啊?當然,所有這些都是需要IIS 7和Silverlight 3.0的支持。 需要些什么?事實上,我在研究Smooth Streaming技術之前,已經有很多人介紹過它了,看來它也不是那么陌生!這里是我在網上搜集到得一些資料,大家可以先了解一下:基本上,我們在開始Smooth S

6、treaming之前,有些工具是必備的,否則將無法進行后面的工作。1. IIS 7。據我所知,在Vista之后的Windows操作系統中基本上都支持IIS 7,如果你在操作系統的“管理工具”中沒有發現“Internet Information Services(IIS) Manager”,則你需要通過添加Windows Feature來添加它。我的系統環境是Windows 7,下面是截圖。IIS 7的安裝在Vista和Windows 2008上可能會有所不同,注意在Windows 2008上安裝IIS 7需要在服務器管理界面中添加服務器角色來完成。2. Smooth Streaming插件。也

7、就是IIS Media Services 3.0,在官方站點上有下載。在頁面右上角的Download Extension部分下載或安裝Smooth Streaming,注意32位機器和64位機器的版本不同,如果你選擇“Using the Microsoft Web Platform Installer”進行安裝,則會先在IIS 7中安裝Web Platform Installer,然后通過它在線安裝Smooth Streaming,安裝成功后需要重新打開IIS 7的管理界面,點擊站點,右邊的功能視圖中會多出來一個Media Services的分類,下面會多出來三個插件,分別是Bit Rate

8、Throttling,Live Smooth Streaming,Smooth Streaming。這里我已經安裝過IIS Media Services 3.0,所以在Web Platform Installer中選擇和安裝IIS Media Services 3.0的選項都被灰掉了。另外,通過Web Platform Installer你還可以安裝許多其它的IIS 7插件,它本身也是IIS 7的一個插件,安裝之后會出現在IIS 7管理界面的Management分類中,如本文一開始的截圖中。除了通過Web Platform Installer安裝Smooth Streaming外,你還可以直接

9、下載安裝包進行安裝,下載后的Smooth Streaming插件是一個msi包,叫IISMedia32.msi(64位版本應該叫IISMedia64.msi)。3. Microsoft Expression Encoder 3。其實Encoder 2也完全可以,不過我個人推薦使用Encoder 3,這樣可以省去你很多的麻煩,而且功能也更豐富。4. Visual Studio 2008和Silverlight 3.0。這個基本上都是必備,如果你是作為一個Silverlight開發人員的話,這里就不多說了。好了,準備工作完成后,下面就讓我們開始體驗在Silverlight 3中使用Smooth S

10、treaming吧。 如何開始?我們都知道,要想在Silverlight中播放影片,需要MediaElement控件的支持,在以往的應用中,我們只需要給這個控件指定一個Source屬性,將本地或遠程的視頻文件(或視頻服務)地址告訴MediaElement控件就可以了,然后我們通過Media Template(這個可以通過Encoder自動生成或完全自定義)中的按鈕、進度條等控制視頻的播放。這個過程是比較簡單的,當然,如果你想做一些很酷的效果可能就要費掉周折了。要想通過Smooth Streaming播放影片,對影片的格式是有要求的,這就是我們為什么需要Microsoft Expres

11、sion Encoder的原因。通過Encoder,我們可以將視頻源文件轉換成Smooth Streaming所支持的文件格式,這個步驟在上面我給出的兩篇文章中都有詳細的介紹(見“需要些什么”那一節),其實我也是參考了其中的內容。這里我再簡單做下介紹吧。打開Encoder,導入要轉換的視頻文件,選擇右邊的Encoder面板,將Output Format選擇為IIS Smooth Streaming。 然后你還可以做一些其它的設置,如在Clip面板中設置影片的起止時間,Audio的設置(模式、比特率、聲道等),展開Video節點,你還可以在其中增減Smooth Streaming需要的

12、影片副本數量,這些影片副本將各自對應于一個客戶端帶寬范圍。   最好在Output面板中設置輸出模板,這樣Encoder在轉換完視頻后會自動按照你所選擇的模板生成一個Silverlight示例以播放轉換后的視頻,其中自動生成的xap文件我們在后面會用到。注意輸出路徑,轉換完成后我們需要到這個目錄下拷貝相應的文件。 轉換的時間視你所選擇的影片文件大小而定,一般情況下都會比較長,所以你可能需要有點耐心了。轉換完成后轉到Encoder的輸出目錄,如果你沒有修改這個路徑的話,它應該會在“我的文檔-Expression”下面。如下圖,這是在我的機器上的轉換結果:  按照你在

13、Encoder中的設定,視頻文件被轉換成按帶寬范圍所命名的文件,并且以.ismv作為后綴。另外還有一個ism文件和一個ismc文件,這兩個文件都是xml文件,可以用記事本將它們打開,你會看到其實都是一些配置信息,ism文件是服務器解析文件,用于描述在硬盤上的不同碼率文件之間的關系,而ismc文件是客戶端解析文件,它用來決定給客戶端下載哪個碼率的解釋性文件,其中包括描述可用的碼率視頻、采用什么解碼器、視頻分辨率等等。我們不用太去研究這兩個文件究竟是怎么回事,因為它們都是Smooth Streaming使用的。因為我們在用Encoder轉換視頻時選擇了輸出的Template,所以Encoder還為

14、我們生成了預覽要用的一些文件,如Default.html、MediaPlayerTemplate.xap、SmoothStreaming.xap等,其中SmoothStreaming.xap文件中就有我們要用的東西,稍后再來介紹。 另外,為了能夠快速演示Smooth Streaming,我們可以直接下載并安裝IIS Smooth Streaming Player Development Kit,它會提供演示要用的xap文件也頁面。  創建站點當然了,要讓Smooth Streaming能工作,我們需要在服務器上架設一個Smooth Streaming的站點。很簡單!首先將前面Enco

15、der轉換的文件中的全部ismv文件以及ism、ismc文件復制到你要創建的網站的物理目錄下。按照官方網站向導上的介紹(你可以去官方網站上下載pdf或doc的向導文檔,不過都是英文的),一共有兩種Smooth Streaming方案可供選擇,打開IIS 7,點擊我們所創建的站點,在右邊功能視圖的Media Services分類下會看到Live Smooth Streaming和Smooth Streaming兩個插件,事實上它們就是向導上所說的Serving On-Demand Smooth Streaming(按需Smooth Streaming)和Serving Live Smooth S

16、treaming(實時Smooth Streaming),向導上對這兩種方案的架設說得都很詳細,包括如何通過Encoder轉換視頻文件,如何發布視頻文件等,讓人覺得整個過程很繁瑣,事實上沒有這么麻煩!首先,視頻文件的發布在Encoder中可以通過WebDAV完成,但是這個需要在IIS上配置權限和認證,比較麻煩,我們可以通過手動將轉換文件復制到網站下(僅僅就是復制而已,沒有別的)。然后就是發布Smooth Streaming了。先說說發布Live Smooth Streaming。在IIS中打開Live Smooth Streaming,點擊“Add”,在彈出的窗口中輸入你想要創建的Live S

17、mooth Streaming的文件的名字,并選擇Live Source Type為Push,其它的選項如Title、Estimated duration等都可以完全不用填寫。確定后在右邊的Actions中點擊Start Publishing Point就OK了,這時在網站的物理目錄下會生成一個你所命名的isml文件。還記得之前你下載的IIS Smooth Streaming Player Development Kit嗎?現在將它安裝后的全部文件復制到你的網站根目錄下,一共是5個文件,事實上有用的就3個,Default.html、pushencoder.exe、SmoothStreaming

18、SamplePlayer.xap。 然后切換到Windows的command方式下,并且轉到網站所在的目錄,執行下面的命令: pushencoder <url-of-publishingpoint> <ism-file>如圖,在我的機器上的執行過程是這樣的: 你可能要稍微等一會兒,因為命令的執行過程需要一點時間,一定要等命令完全執行完成。好了,現在打開瀏覽器,輸入你的站點的地址,然后后面跟上/LiveSmoothStream.isml/manifest,你會看到Live Smooth Streaming服務器解析文件已經生成好了。  好了,基本上已經

19、成功了,當你看到上面這個畫面時表示你的Live Smooth Streaming已經架設成功了,接下來就是在Default.html文件中設置播放地址讓影片播放起來。用記事本打開Default.html,找到Silverlight控件的mediaSource屬性,將后面的地址修改為“http:/localhost:77/livesmoothstream.isml/manifest”,注意“localhost:77”是我機器上的網站地址,可能跟你的不一樣,“livesmoothstreaming.isml”為你創建的Live Smooth Streaming服務器解析文件的名稱。現在你應該可以在

20、瀏覽器中看到你所發布的影片了,因為我們直接使用了IIS Smooth Streaming Player Development Kit提供的播放器,所以我們只需要修改地址就能直接播放影片,在這個播放器中,你會看到隨著客戶端帶寬的變化影片的質量也會發生改變,這正是Live Smooth Streaming所提供的功能。  恩,我不知道你是不是也跟我一樣成功架設好了站點,如果你沒有成功那你可能就要再仔細檢查檢查了,也許哪個環節出了問題,如果你也可以觀看到影片,那么恭喜你,你已經學會了如何發布Live Smooth Streaming了。還記得我在前面說Live Smooth Stream

21、ing是“實時平滑流媒體”嗎?不錯,這種方式可以在線提供實時視頻播放,但是存在一個問題,當我們重啟IIS時(最糟糕的是當我們重啟機器時)我們需要重新發布isml解析文件,也就是通過pushencoder命令重新生成isml文件的內容,我不太清楚為什么非要這么做,但這樣確實帶來不少麻煩。下面我們看看Smooth Streaming(按需平滑流媒體)吧。這個就比較簡單了,不需要在IIS上創建任何文件,我們只需要將Default.html文件中的Silverlight Source屬性指定為這個地址就行了,“http:/localhost:77/Wildlife.ism/manifest”,同樣,根

22、據需要你可能要修改“localhost:77”和“Wildlife.ism”。現在,你同樣可以在瀏覽器中看到影片,基本上沒有區別,不過這種方式不是實時的。 打造自己的Smooth Streaming播放器上面我們都是用IIS Smooth Streaming Player Development Kit提供的播放器做的演示,如果你的Silverlight工程中已經有了一個播放器,你如何才能讓它播放Smooth Streaming提供的視頻流呢?也許你覺得直接將MediaElement控件的Source屬性指向上面我們介紹的那個地址就可以了,但事實上我試過了這樣行不通,看來需要在代碼方

23、面做些改動。確實如此,這里有一些資料可供參考:其實也不是很麻煩,但有些準備工作要做。首先你需要在你的Silverlight工程中使用AdaptiveStreamingSource對象,而這個對象在Silverlight 3.0的標準類庫中是不存在的,怎么辦呢?還記得前面我讓你將Encoder生成的文件中的xap文件復制到網站根目錄中嗎?那個SmoothStreamingSamplePlayer.xap現在有用了,將這個文件的后綴改為zip(事實上xap文件就是一個壓縮包),打開它,看到了吧?里面包含了我們要用的兩個類庫,PlugInMssCtrl.dll和SmoothStreaming.dll

24、,將它們引用到你的Silverlight工程中。好了,現在你可以放心大膽地修改你的Silverlight代碼了。下面是我給出的例子,你應該不難看懂!<UserControl x:Class="SmoothStreamingTest.MainPage"     xmlns=""      xmlns:x=""     xmlns:d="" xmlns:mc=""   

25、60;  mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">   <Grid x:Name="LayoutRoot">     <MediaElement x:Name="mediaElement" Loaded="mediaElement_Loaded"/>     </Grid> <

26、;/UserControl> using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Expression.Encoder.AdaptiveStreaming; namespace SmoothStreamingTest  &

27、#160;  public partial class MainPage : UserControl             private string uriString = "http:/localhost:77/Wildlife.ism/manifest"         private AdaptiveStreamingSource MainSrc

28、 = new AdaptiveStreamingSource();         public MainPage()                     InitializeComponent();            

29、MainSrc.MediaElement = mediaElement;             MainSrc.ManifestUrl = new Uri(uriString);                 private void mediaElement_Loaded(object sender, RoutedEven

30、tArgs e)                     MainSrc.StartPlayback();             我們構造一個AdaptiveStreamingSource對象,將它的ManifestUrl屬性指向我們的Smooth Streaming的發布地址,并將它的MediaElement屬性指

31、向MediaElement控件的實例,然后通過它的StartPlayback方法就可以播放視頻了,是不是很簡單呢?但有一個問題你需要注意,那就是平常我們在Visual Studio中可以直接啟動并調試Silverlight工程,如果你將影片的地址指向Smooth Streaming的發布地址,這時你在Visual Sutdio中調試的時候是看不到影片的,而必須將網站發布到IIS上才可以。這個我也覺得很奇怪,明明接收請求的只是Smooth Streaming影片的發布站點,和請求站點應該沒有關系啊,但是必須這么做你才能看到影片。 跨域訪問的問題這里還有一個問題,如果你的站點發布地址和S

32、mooth Streaming的發布地址不是一個站點,或者說不在同一臺Server上,Smooth Streaming的請求會失敗。其實這個并不是Smooth Streaming本身的問題,這個是Silverlight所帶來的問題。如果你有遇到這樣的問題,可以在Smooth Streaming的發布站點的物理根目錄下創建一個名為clientaccesspolicy.xml的文件,在其中寫入下列內容:<?xml version="1.0" encoding="utf-8"?> <access-policy>   <c

33、ross-domain-access>     <policy>       <allow-from http-request-headers="*">         <domain uri="http:/sitename"/>       </allow-from>       <grant-to>         <resource path="/" include-subpaths="true"/>       </grant-to&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論