MIX09: Silverlight Media End-to-End

這次的 MIX09 我關注的重點之一就是 Silverlight Media,這場 Session 內容主要說明如何製作 Silverlight Media 解決方案。Silverlight Media 的組成元件包括使用Silverlight 技術的播放介面、影片編碼、與在網路上提供影片的伺服器技術。

Alex 用三個案例說明如何建立 Silverlight Media 解決方案:

  1. 簡易版: Expression Encoder 2
  2. 進階版: CTV.ca HD, 使用 Silverlight2 + Expression Encoder 2 + IIS Media Service Smooth Stream
  3. 高級版: Accenture Business TV, 使用 Expression Blend + Visual Studio 開發複雜的 Silverlight 應用程式

Expression Encoder 2 可以將影片編碼成 WMV VC-1 格式,並提供了許多 Silverlight 播放器範本。只要使用 Expression Encoder 2 匯入影片,選擇 Silverlight 播放器範本就可以很快製作出 Silverlight Media 解決方案。

Encoder Silverlight 2

Expression Encoder 2 SP1 增加了 H.264 (640x480 1.5Mbps 和 320x240 400Kbps 兩種) 與 Smooth Stream 編碼格式。Smooth Stream 的檔案附檔名是 .ismv,是使用 ISO MP4 標準的檔案。Smooth Stream 的由來是因為去年 NBC 轉播 2008 北京奧運時,為了在 Internet 上能夠順利的播放 HD 高畫質影片所開發出來的技術。當時是將影片分割成很多 2秒大小的片段檔案,並在 Silverlight 內使用 .Net 程式開發下載與播放邏輯。在去年成功的讓 NBC 轉播 2008 北京奧運並創下同時 13萬影片播放 Session 的紀錄。IIS Team 重新包裝為 NBC 開發的技術成 Smooth Stream,包含 Expression Encoder 2 SP1 加入將影片編碼成 .ismv 格式的 MP4 檔案與在 Silverlgith 2 播放器範本內加入 Adaptive Streaming 程式碼,開發 IIS 7 Smooth Stream 模組來處理與提供檔案片段給 Silverlight 2 播放器的 Adaptive Streaming 程式使用。

Smooth Stream 技術最主要的目的就是要大幅改善網路影片播放的使用者介面,大家在網路上看影片最常碰到的狀況就是影片無法順暢的播放,在開始撥放影片時必須要等待、撥放中途因為網路突然變慢等問題導致影片播放中斷,以及選擇撥放片段時需等待影片片段下載。還有因為使用者網路頻寬種類不同,影片編碼時必須要考慮一般使用者的頻寬提供普通畫質的影片,以及給高速網路使用者的 HD 高畫質影片,使用者在撥放時要進行選擇高畫質或是普通畫質。

Smooth Stream 透過 Silverlight 中的 Adative Streaming 程式與 IIS Media Service Smooth Stream 模組如使用解決撥放流暢度問題方法如下:

  • 影片開始撥放時使用最低的編碼確保影片可以快速開始撥放,之後依照撥放狀況下載更高畫質的影片
  • 在影片播放中,Adative Stream 程式會持續監控使用者 PC 的網路與 CPU 狀況動態調整下載的影片品質
  • 在使用者選擇撥放片段時使用最低的編碼確保影片可以快速的開始撥放

編碼影片時使用 Expression Encoder 2 SP1 將影片編碼成 Smooth Stream 格式,並由最低的使用者網路速度與最高影片畫質來決定最低與最高影片格式,並以250K 到 500K 的間隔增加影片編碼流量,舉例來說如果最低使用者網路速度為 300Kbps,最高的影片畫質為 720p 2.4Mbps,則影片編碼時使用 300Kbps, 600Kbps, 1Mbps, 1.5Mbps, 2.4Mbps 五種編碼流量,Expression Encoder 2 SP1 會編碼產生 5 個 .ismv 檔然後部屬到安裝 IIS Media Service Smooth Stream 的 IIS 7.0 網站上。

Silverlight 中的 Adative Streaming 程式會使用 RESTful 的方式向 IIS 要求影片片段

https://video.abc.com/Big_Buck_Bunny.ism/QualityLevels(240000)/Fragments(video=12345)

https://video.abc.com/Big_Buck_Bunny.ism/QualityLevels(64000)/Fragments(audio=67890)

這個要求會由 IIS Smooth Stream 模組接到後把對應的編碼檔案與時間片段取出後給用戶端

使用 Smooth Stream 的好處可分為兩部分:

對使用者而言:

  • 更快速流暢的影片播放,不會再有撥放停止重新 buffer 的狀況發生
  • 依照網路速度和 CPU 狀況自動調整影片品質確保影片撥放順暢
  • 選擇撥放片段時不需要再等待

對影片提供者而言:

  • 由於 Smooth Stream 使用 HTTP,可以使用既有的 HTTP Proxy 來增加部署彈性
  • 不用考慮使用者網路速度和 CPU 的撥放能力都能自動調整確保影片流暢播放
  • 不再需要提供普通畫質與高畫質的播放選項,簡化使用者操作

Smooth Stream 技術目前正在 Beta 階段未來會成為 IIS Media Service 3.0 的一部份,在 MIX09 上發表了 Live Smooth Stream Beta,可以在 Live 轉播上 Smooth Stream 技術,可以到 iis.net/media 上有更詳細的介紹與安裝步驟

要體驗 Smooth Stream 技術,可以上 https://www.smoothhd.com 這個與 Akamai 合作的網站體驗。